News Column

Patent Issued for Load Balancing for SIP Services

July 22, 2014



By a News Reporter-Staff News Editor at Information Technology Newsweekly -- According to news reporting originating from Alexandria, Virginia, by VerticalNews journalists, a patent by the inventors Francis, Philip Lee (Plano, TX); Collins, David Allan (Garland, TX); Dubois, Gerald Richard (Dallas, TX); Bunch, James Lynn (Dallas, TX); Pokala, Naga Ratnam (Southlake, TX), filed on August 31, 2011, was published online on July 8, 2014.

The assignee for this patent, patent number 8775628, is Metaswitch Networks Ltd. (Enfield, GB).

Reporters obtained the following quote from the background information supplied by the inventors: "The Session Initiation Protocol (SIP) is a standardized signaling protocol for controlling communication sessions over a network. It enables sessions with one or more participants to be created, modified and/or terminated and it is widely used to control multimedia communications over Internet Protocol (IP) networks. For example, it can be used to control Voice over IP (VoIP) communications, instant messaging, chat, games and video communications between multiple entities, supporting both unicast and multicast sessions. It is also used as a signaling protocol in 3rd Generation Partnership Project (3GPP) standards such as the IP Multimedia Subsystem (IMS) architecture.

"SIP is an application layer protocol and as such is designed to be used independently of underlying transport protocols. Its syntax is text-based and is modeled on that of HyperText Transfer Protocol (HTTP). One or more SIP services are typically provided by a SIP server instance. A SIP server instance is used herein to refer to an entity that receives and processing SIP messages so as to provide a SIP service. A SIP server instance is typically implemented using computer program code that is loaded from a storage medium into one or more portions of memory so as to be processed by one or more processors. The computing platform that provides said one or more processors and/or memory is referred to herein as a SIP server node. Examples of SIP server instances comprise OpenSIPS for Linux platforms, Microsoft Lync Server provided by Microsoft Corporation, and those provided by the DC-SIP toolkit provided by Data Connection Limited. An exemplary SIP server node may comprise a SPARC server platform such as those supplied by Oracle Corporation. In some implementations the SIP server instance and the SIP server node may be tightly coupled in an integrated 'black-box' device ('a SIP server'), wherein some aspects of the SIP server instance may be implemented using dedicated hardware of the SIP server node. In other implementations, the SIP server instance and the SIP server node may be separable. The combination of one or more SIP server instances and a SIP server node is generally referred to herein as a SIP server.

"SIP messages comprise either a request or a response. A SIP transaction comprises a request that is sent to a SIP server node over a communications channel and that invokes a particular method or function on the SIP server instance. This method or function then results in a response which is sent by the SIP server node over a communications channel in reply to the request. SIP server instances may provide a number of different SIP services. For example, amongst others, provide a logical end-point, provide proxy services, provide redirect services, provide registration services, and/or provide gateway services. As such, the combination of one or more SIP server instances and a SIP server node may implement physical devices such as proxy servers, redirect servers, registration servers, media gateways and session border controllers.

"User agents create and/or receive SIP messages. User agents may be software-based, for example a so-called 'softphone' operating on a personal computer, or may comprise an embedded system forming part of a hardware device such as an IP phone. Proxy servers are typically used to route SIP requests from a first user agent to, for example, a second user agent. Redirect and registration servers support user mobility. Session border controllers control signaling between two networks. SIP servers may be coupled to a Plain Old Telephone Service (POTS) using a media gateway.

"SIP messages may comprise headers and values, all specified as strings. The body of a SIP message may contain a description of a session, for example using a format specified by the Session Description Protocol (SDP). Encryption may also be used, which is referred to as SIPS.

"A large scale communications system may manage thousands, if not millions, of communication sessions, for example VoIP calls, multimedia conversations or gaming sessions. Each of these sessions may comprise one or more SIP transactions or SIP 'dialogs', e.g. an on-going exchange of messages between two devices registered to two corresponding users. To cope with this level of SIP traffic a plurality of SIP server instances and/or SIP server nodes are typically required. A SIP server instance has a limitation on the number of SIP messages it can process per time period. This is typically based on underlying physical limitations of a SIP server node that is implementing the SIP server instance. To avoid overloading any one particular SIP server instance and/or SIP server node a load balancer is required. A load balancer has the function of distributing a processing load associated with the SIP traffic across a plurality of SIP server instances. If a first SIP server instance is near capacity, a load balancer can assign new SIP transactions or dialogs to a second SIP server instance with more capacity. SIP load balancers are thus used to provide SIP clients, such as user agents, with a centralized point of access for a scalable network of server instances supporting SIP services, known in the art as a cluster. A SIP load balancer may provide mechanisms to dynamically distribute SIP messages across SIP server instances in order to optimize the collective traffic handling capabilities of the cluster. In some cases they may additionally provide for improved availability of the SIP services provided by the SIP server instances.

"SIP server instances, such as SIP proxy instances, may be 'stateful' or 'stateless'. In these cases the 'state' may relate to a transaction, a dialog or a call. A transaction, a dialog or a call can be thought of as a SIP process, i.e. any process that uses the SIP protocol. Stateless systems do not maintain a record of the state of a transaction, dialog or call when processing the transaction, dialog or call. For example, a stateless SIP proxy instance would create no SIP transaction state data when forwarding a request. This results in retransmitted requests being indistinguishable from new requests and thus processed again to produce identical results to a first set of request processing. In comparison, stateful systems maintain, or keep track of, the state of a transaction, dialog or call. For example, a call-stateful SIP proxy instance may store or otherwise remember successful SIP INVITE messages relating to a call, keeping track of any dialogs that are created until the call and any dialogs are terminated with a SIP BYE message. Transaction-stateful proxy instances may generate state information while handling each SIP request, waiting for responses, and handling the responses that arrive so as to, amongst other tasks, recognize transmissions or failure conditions. The Internet Engineering Task Force (IETF) standards document RFC3261 sets out details of stateful SIP systems.

"Most SIP load balancers are designed to operate in a generic environment with little or no knowledge of the proxy instances they are distributing traffic to. While these load balancers are suited to distribute SIP traffic to stateless SIP server instances, they can lead to a number of problems when there is a requirement to distribute traffic to stateful SIP server instances. For example, when distributing traffic to stateful SIP server instances, it is necessary to ensure that all messages for a SIP process are routed to the same SIP server node, and the same SIP server instance operating on that SIP server node, for processing. This is because the SIP server instance maintains state information relating to the process; if SIP messages were sent to another SIP server instance it would not have the required state information to suitably process the messages.

"One solution to ensure that all messages for a SIP process are routed to the same SIP server instance is to store routing information at the SIP load balancer that correlates a SIP process with a serving SIP server instance. In certain examples, this is achieved using a mapping between a SIP process identifier, such as a call or transaction identifier, and the serving SIP server instance, for example a (virtual) IP address assigned to a SIP server node implementing the SIP server instance. For example, one known system provides a number of node servers that include a storage portion for storing node-session information that associates a SIP or HTTP session ID and a server node. However, if routing information is used then the SIP load balancer must maintain data associated with this information.

"In many SIP server cluster arrangements it is typically found that the SIP load balancer becomes the limiting factor with regard to scalability. For example, additional SIP server instances and/or SIP server nodes can be added to increase capacity, but additional SIP load balancers cannot be added without losing the benefits of a centralized point of access. There is thus a problem of increasing scalability for high volume SIP services, such as those provided by cluster architectures. This is compounded when using stateful SIP server instances as a requirement to maintain state information adds processing overheads."

In addition to obtaining background information on this patent, VerticalNews editors also obtained the inventors' summary information for this patent: "In accordance with a first exemplary embodiment, there is provided a method for balancing a processing load between a plurality of SIP server instances, a SIP server instance being mapped to a SIP process by a load balancer such that messages relating to the SIP process are passed between a communicating device and the SIP server instance, a SIP server instance actively processing in use a number of SIP processes, the method comprising: maintaining, at the load balancer, a data structure mapping one or more SIP processes to a SIP server instance from the plurality of SIP server instances; receiving, at the load balancer, state data for a set of SIP processes from the SIP server instance, the state data indicating one or more states of said SIP processes on the SIP server instance; and updating, at the load balancer, the data structure based on the received state data, including using said state data to remove SIP processes from the data structure that have an inactive state.

"In accordance with a second exemplary embodiment, there is provided an apparatus for balancing a processing load between a plurality of SIP server instances, a SIP server instance actively processing a number of SIP processes, the apparatus comprising: a data structure for mapping one or more SIP processes to at least one of the plurality of SIP server instances; an interface for receiving state data for a set of SIP processes from said at least one SIP server instance, the state data indicating one or more states of said SIP processes on said at least one SIP server instance; and an update manager for updating the data structure based on received state data, the update manager being arranged to use said state data to remove SIP processes from the data structure that have an inactive state.

"In accordance with a third exemplary embodiment, there is provided a method for communicating with a SIP load balancer, the method being performed by a SIP server instance that is arranged to receive one or more SIP messages from a communicating device, the one or more SIP messages forming part of a SIP process assigned to the SIP server instance by the SIP load balancer, the method comprising: determining whether a SIP processing update is required; if a SIP processing update is required, generating state data for a set of SIP processes, the state data indicating one or more states of SIP processes being processed by the SIP server instance; and sending said state data to the SIP load balancer.

"In accordance with a fourth exemplary embodiment, there is provided an apparatus for handling SIP messages comprising: a first interface for receiving one or more SIP messages from a communicating device; a processing component arranged to handle said received messages as part of a SIP process; a second interface for sending state data for a set SIP processes to a load balancer, the state data indicating a state of said SIP processes on said apparatus.

"In accordance with a fifth exemplary embodiment, there is provided a system for balancing a SIP processing load comprising a plurality of server nodes and a load balancer, wherein the plurality of server nodes collectively comprise: a first SIP server instance arranged to handle one or more SIP processes during normal operation; and a second SIP server instance arranged to act as a standby server instance during normal operation, the second SIP server instance being arranged to take over the handling of said one or more SIP processes responsive to failure of the first SIP server instance, and wherein the load balancer is arranged to assign a SIP process to a SIP server instance, and wherein, responsive to a second SIP server instance taking over the handling of one of more SIP processes previously handled by a first SIP server instance, the load balancer is arranged to assign new SIP processes to a group of SIP server instances that excludes said second SIP server instance.

"In accordance with a sixth exemplary embodiment, there is provided a system for balancing a SIP processing load comprising: a SIP server instance arranged to handle one or more SIP processes, said SIP server instance arranged to provide a single load factor value representative of its current resource usage; and a load balancer comprising: an interface for receiving said load factor value from said SIP server instance; a loading calculator to determine a first countdown value for the SIP server based on the load factor value, the first countdown value being decremented when a new SIP server is assigned to the SIP server; and a load assigner for assigning a SIP process to the SIP server according to a round-robin scheme if said first countdown value is above a predetermined threshold.

"In accordance with a seventh embodiment, there is provided a method for balancing a processing load comprising: assigning a SIP process to an active primary SIP proxy instance; on failure of the primary SIP proxy instance, activating said SIP process on a standby secondary SIP proxy instance, said secondary SIP proxy instance becoming an active secondary SIP proxy instance following said activation; recovering the failed primary SIP proxy instance, said primary SIP proxy instance becoming a standby primary SIP proxy instance on recovery, SIP processes on the active secondary SIP proxy instance being synchronised to the standby primary SIP proxy instance; and after a configurable time period has elapsed, activating SIP processes on the standby primary SIP proxy, such that the primary SIP proxy becomes the active primary SIP proxy and the secondary SIP proxy becomes the standby secondary SIP proxy.

"Further features and advantages of the invention will become apparent from the following description of preferred embodiments of the invention, given by way of example only, which is made with reference to the accompanying drawings."

For more information, see this patent: Francis, Philip Lee; Collins, David Allan; Dubois, Gerald Richard; Bunch, James Lynn; Pokala, Naga Ratnam. Load Balancing for SIP Services. U.S. Patent Number 8775628, filed August 31, 2011, and published online on July 8, 2014. Patent URL: http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=8775628.PN.&OS=PN/8775628RS=PN/8775628

Keywords for this news article include: Information Technology, Metaswitch Networks Ltd, Information and Data Architecture.

Our reports deliver fact-based news of research and discoveries from around the world. Copyright 2014, NewsRx LLC


For more stories covering the world of technology, please see HispanicBusiness' Tech Channel



Source: Information Technology Newsweekly


Story Tools






HispanicBusiness.com Facebook Linkedin Twitter RSS Feed Email Alerts & Newsletters