05-07-2013, 03:12 PM
Design, Implementation, and Performance of a Load Balancer for SIP Server Clusters
SIP Server.pdf (Size: 976.85 KB / Downloads: 45)
Abstract
This paper introduces several novel load-balancing
algorithms for distributing Session Initiation Protocol (SIP) requests
to a cluster of SIP servers. Our load balancer improves
both throughput and response time versus a single node while exposing
a single interface to external clients.We present the design,
implementation, and evaluation of our system using a cluster of
Intel x86 machines running Linux.We compare our algorithms to
several well-known approaches and present scalability results for
up to 10 nodes. Our best algorithm, Transaction Least-Work-Left
(TLWL), achieves its performance by integrating several features:
knowledge of the SIP protocol, dynamic estimates of back-end
server load, distinguishing transactions from calls, recognizing
variability in call length, and exploiting differences in processing
costs for different SIP transactions. By combining these features,
our algorithm provides finer-grained load balancing than standard
approaches, resulting in throughput improvements of up
to 24% and response-time improvements of up to two orders of
magnitude. We present a detailed analysis of occupancy to show
how our algorithms significantly reduce response time.
INTRODUCTION
THE SESSION Initiation Protocol (SIP) is a general-purpose
signaling protocol used to control various types of
media sessions. SIP is a protocol of growing importance, with
uses inVoice over IP (VoIP), instantmessaging, IPTV, voice conferencing,
and video conferencing. Wireless providers are standardizing
on SIP as the basis for the IPMultimedia System (IMS)
standard for the Third Generation Partnership Project (3GPP).
Third-party VoIP providers use SIP (e.g., Vonage, Gizmo), as do
digital voice offerings fromexisting legacy telecommunications
companies (telcos) (e.g., AT&T, Verizon) as well as their cable
competitors (e.g., Comcast, Time-Warner).
Overview of the Protocol
SIP is a signaling (control-plane) protocol designed to establish,
modify, and terminate media sessions between two or
more parties. The core IETF SIP specification is given in RFC
3261 [31], although there are many additional RFCs that enhance
and refine the protocol. Several kinds of sessions can be
used, including voice, text, and video, which are transported
over a separate data-plane protocol. SIP does not allocate and
manage network bandwidth as does a network resource reservation
protocol such as RSVP [38]; that is considered outside
the scope of the protocol.
Novel Algorithms
A key aspect of our load balancer is that requests corresponding
to the same call are routed to the same server. The
load balancer has the freedom to pick a server only on the first
request of a call. All subsequent requests corresponding to
the call must go to the same server. This allows all requests
corresponding to the same session to efficiently access state
corresponding to the session.
Our new load-balancing algorithms are based on assigning
calls to servers by picking the server with the (estimated) least
amount of work assigned but not yet completed.While the concept
of assigning work to servers with the least amount of work
left to do has been applied in other contexts [16], [32], the
specifics of how to do this efficiently for a real application are
often not at all obvious. The system needs some method to reliably
estimate the amount of work that a server has left to do at
the time load-balancing decisions are made.
EXPERIMENTAL ENVIRONMENT
We describe here the hardware and software that we use, our
experimental methodology, and the metrics we measure.
SIP Software: For client-side workload generation, we use
the the open source [13] tool, which is the de facto standard
for generating SIP load. is a configurable packet generator,
extensible via a simple XML configuration language. It
uses an efficient event-driven architecture, but is not fully RFC
compliant (e.g., it does not do full packet parsing). It can thus
emulate either a client (UAC) or server (UAS), but at many
times, the capacity of a standard SIP end-host. We use the Subversion
revision 311 version of . For the back-end server,
we use a commercially available SIP server.
RELATED WORK
A load balancer for SIP is presented in [35]. In this paper, requests
are routed to servers based on the receiver of the call. A
hash function is used to assign receivers of calls to servers. A
key problem with this approach is that it is difficult to come up
with an assignment of receivers to servers that results in even
load balancing. This approach also does not adapt itself well to
changing distributions of calls to receivers. Our study considers
a wider variety of load-balancing algorithms and shows scalability
to a larger number of nodes. The paper [35] also addresses
high availability and how to handle failures.
A number of products are advertising support for SIP load
balancing, including Nortel Networks’ Layer 2–7 Gigabit
Ethernet Switch Module for IBM BladeCenter [18], Foundry
Networks’ ServerIron [23], and F5’s BIG-IP [9]. Publicly
available information on these products does not reveal the
specific load-balancing algorithms that they employ.
A considerable amount of work has been done in the area of
load balancing for HTTP requests [5]. One of the earliest papers
in this area describes how NCSA’s Web site was scaled
using round-robin DNS [20]. Advantages of using an explicit
load balancer over round-robin DNS were demonstrated in [8].
Their load balancer is content-unaware because it does not examine
the contents of a request. Content-aware load balancing,
in which the load balancer examines the request itself to make
routing decisions, is described in [3], [4], and [27]. Routingmultiple
requests from the same client to the same server for improving
the performance of SSL in clusters is described in [14].
Load balancing at highly accessed real Web sites is described
in [6] and [19]. Client-side techniques for load balancing and
assigning requests to servers are presented in [10] and [21]. A
method for load balancing in clusteredWeb servers in which request
size is taken into account in assigning requests to servers
is presented in [7].
SUMMARY AND CONCLUSION
This paper introduces three novel approaches to load balancing
in SIP server clusters.We present the design, implementation,
and evaluation of a load balancer for cluster-based SIP
servers. Our load balancer performs session-aware request assignment
to ensure that SIP transactions are routed to the proper
back-end node that contains the appropriate session state. We
presented three novel algorithms: CJSQ, TJSQ, and TLWL.
The TLWL algorithms result in the best performance, both
in terms of response time and throughput, followed by TJSQ.
TJSQ has the advantage that no knowledge is needed of relative
overheads of different transaction types. The most significant
performance differences were in response time. Under light to
moderate loads, TLWL-1.75, TLWL-2, and TJSQ achieved response
times for INVITE transactions that were at least five
times smaller than the other algorithms we tested. Under heavy
loads, TLWL-1.75, TLWL-2, and TJSQ have response times
two orders of magnitude smaller than the other approaches. For
SIP applications that require good quality of service, these dramatically
lower response times are significant.