Session Initiation Protocol (SIP) is a communication protocol used for signaling and controlling sessions for VoIP and instant messaging applications. SIP is used for establishing unicast or multicast sessions between the users and also for setting up and terminating voice or video calls.

The SIP protocol is independent of the underlying transport protocol and supports SIP load balancing using TCP proxy and UDP proxy. For secure transmissions, SIP is encrypted using TLS. Session Description Protocol (SDP) in SIP specifies the media format. The media streams use either Real-time Transport Protocol (RTP) or Secure RTP (SRTP).

User agent (UA) is a logical network endpoint used to create or receive SIP messages. In most implementations, the setup involves user agents and a proxy, such as Session Border Controller (SBC).

A SIP client uses the following four-way mechanism to register with the server:

  1. The UA client (UAC), which is the SIP client, initiates a request. The requests are always keywords such as, REGISTER, INVITE, or BYE.

  2. The UA server (UAS) responds with a challenge.

  3. The client responds with a request and the token (depending on the public or private key encryption model).

  4. The server authenticates using the token and respond with an OK.

For more information on SIP and associated call flow, see SIP RFC.

The following sections discuss the configuration required on NSX Advanced Load Balancer for supporting SIP applications.

Integrating NSX Advanced Load Balancer with SIP Applications

The following is a call workflow when a user agent (UA1) tries to establish a call with another user agent (UA2):

  1. UA1 ——> (INVITE) ——–> Proxy

  2. Proxy —-> (100 TRYING) —-> UA1

  3. Proxy —-> (INVITE) ——–> UA2

  4. UA2 ——> (180 RINGING) —> Proxy

  5. Proxy —-> (180 RINGING) —> UA1

  6. UA2 ——> (Off hook) ——> Proxy

  7. UA2 ——> (200 OK) ——–> Proxy

  8. Proxy —-> (200 OK) ——–> UA1

The NSX Advanced Load Balancer is deployed between the proxy and the value added services (VAS), where the SIP request and the response are transmitted through a parser and the call ID is hashed. The NSX Advanced Load Balancer also monitors the server health and so, the invite need not be re-transmitted.

Supported Features

Currently, SIP implementation has been validated on OpenStack No-Access and VMware clouds, but it is not restricted to a specific cloud type. The following are the features supported for this integration:

  • Load balancing SIP over IPV4.

  • Interoperability over UDP which translates to interoperability with CSCF and the application servers.

  • UDP proxy network profile.

  • SIP virtual service application profile, which uses either UDP proxy network profile or TCP proxy network profile.

  • SIP virtual service over UDP proxy.

  • Consistent-hash load balancing based on unique call ID.

  • SIP health monitor to detect SIP server failures.

SIP-related configuration is currently supported only on the CLI.

Limitations

Currently the following features are not supported for SIP:

  • Preserve client IP for SIP virtual service and application profile

  • Inline health monitoring

  • SIP TLS and encryption

  • Record route option

  • IPv6