Selecting one or multiple peers to relay voice calls is a critical component of large-scale peer-to-peer (P2P) voice-over-IP (VoIP) systems, such as Skype. The challenge is to determine good relay paths for a given voice call in a practical manner. We study different VoIP relay path selection schemes which are usually instantiated during the call session initiation and refreshed periodically. This not only allows end hosts behind Network Address Translations (NATs) or firewalls to establish voice calls but also allows communication in periods of poor performance to be switched to alternate relay paths quickly.
We propose an enhanced version of existing algorithms for selecting VoIP relay paths and demonstrate that it improves voice quality. Then, we provide a series of simulations and analytical discussions on the correspondences of relay path performance to overlay network scenarios. We show that there are more opportunities for P2P VoIP systems to obtain good relay paths when selecting relay nodes located at highly connected Transit domains. For better relay path performance, we recommend to select relay nodes whose distances are less than four hops from the source. We also show that, in general, increasing relay node density can reduce relay path length but generate more hop overlaps to the default path due to the breadth first search manner in existing algorithms. Finally, we fully address the problem of selecting VoIP relay path by taking a new approach, including the development of overall formulation, a new network model to effectively identify the optimal solution space, and a new heuristic algorithm for selecting VoIP relay paths.