SIP balancer

From Kolmisoft Wiki
Jump to navigationJump to search
Warning.pngIMPORTANT! Asterisk handles non-RFC compliant SIP call flow, local IPs in the SIP/SDP packets, wrong ports in SDP media, etc. The SIP proxy does not handle all such cases and expects traffic to comply with the RFC SIP standards. So there could be problems if your endpoints send malformed SIP traffic.



Also called "SIP Proxy"

SIP balancer is available starting from MOR X4 and is available only with multiple Asterisk server solutions. Technology of SIP balancer is based on the OpenSIPS


Benefits

  • Provide one unique hostname or IP for your providers/clients
  • Handle multiple DID numbers from different providers by sending them to one IP address
  • Distribute calls evenly to servers depending on the load each server can handle
  • Scalable architecture - you can add new Asterisk servers at any time or remove them

Features

  • Handle incoming calls from DIDs, trunks, providers
  • Monitoring of Asterisk server capacity - allows to set how many calls a certain Asterisk server can handle
  • If one Asterisk server becomes unresponsive or reached call limit, no more calls are sent to that server
  • A simple GUI to manage the SIP balancer.

Architecture

Possible implementation scenarios can be found here

Logic

  • All registrations and register requests are sent to the SIP balancer directly
  • In order to call any device it must be called through a DID (DID can be fake inside the system), otherwise calls

between devices will not work. When a call is made through a DID to device, that call is sent to proxy as it handles the SIP registrations. Same applies to trunks, so trunks should authorize calls from the proxy IP.

  • Outgoing call set-up is done by Proxy.
  • Incoming calls from providers should be sent to Proxy.
  • All media requests are handled by Asterisk servers

Recommended hardware

It should be similar to Recommended hardware for MOR server with minimum 2 GB RAM.

Such solution would be suitable to load the balance between 2-3 asterisk servers.

For more servers you should use more powerful hardware.

Limitations

  • Only RFC2833 DTMF is supported when Proxy is in use;
  • Proxy balances SIP traffic only (IAX and H323 does not go through Proxy at all);
  • Only one Domain name can be used.
  • If you have a system with a [SIP_balancer | SIP proxy], Spy functionality will not work.

What else you should know

  • Customizing system configuration files and data on the database, may affect system security and integrity. Please use only MOR GUI to manage the system.




How does the call flow change after connecting SIP proxy?

With SIP proxy added, all SIP traffic goes through SIP Proxy, while Asterisks handle RTP media.

Customers only need to know SIP proxy IP.

If Proxy is added to an already running system, there are two approaches:

a) Update customers with new SIP proxy IP so that they would send traffic to this new IP

b) After SIP proxy installation, assign Asterisk IP to the SIP proxy server. This way, nothing will change from the customers' Perspective.

After the SIP proxy is added, all SIP communication is handled by Opensips, not Asterisk, so some SIP-related dialogs might be a bit different in subtle ways.

The advantage of adding a SIP proxy instead of simply adding a separate Asterisk is flexibility and convenience in the long run.

Once the SIP proxy is added, customers send calls to one IP, and calls are dynamically routed to Asterisks, so it is possible to add (or remove) additional Asterisks without downtime and without any changes for the customer.

Adding a separate Asterisk without Proxy will require statically assigning one or other Asterisk to each device, updating customers with new Asterisk IP.




Configuration

Accept calls from any port

When SIP balancer is in use and Device/Provider type is SIP and it is IP Authenticated then near to Port input you can find "Accept calls from any port" setting.

1. By default pressed No and you can type any port you want

2. When Yes is pressed, you are not able to type any port and calls will be accepted from any port.

Allow calls from any port.png

See also