What is a SIP Load Balancer?

Large scale corporate VoIP and carriers requires the deployment of multiple VoIP servers to be able to handle the transactions from many clients concurrently.
SIP load balancer distributes workloads across multiple SIP devices (gateways/PBX's/proxies/servers). SIP load balancing optimizes resource usage, avoid overload of any single SIP server and increase SIP service reliability and availability.

 

MLB SIP Load Balancer Description

The Mizu SIP Load balancer (MLB) is a robust and efficient adaptive SIP Load balancer capable to max out a gigabit NIC with SIP signaling traffic (which means millions of simultaneous calls). It can be used with any SIP server, gateway, softswitch, SBC or proxy such as Asterisk or the mizu softswitch.

Reason to use:

  • distribute incoming VoIP traffic among your existing SIP servers/softswitches
  • mitigate software/hardware/network failures (the MLB will automatically adjust the traffic depending on your servers health based on responsivity/ASR/ACD/load/health reports)
  • optimize server use and avoiding overload of any single server
  • protect your network (dynamic firewall, rate-limiter, intrusion detection)
  • MLB is a cost effective solution using minimal resources while providing exceptional stability under high load

 

Download webphone package

Features

  • portable (xcopy install) with a simple clear text configuration file
  • very fast packet handling and routing (optimized network access, packet processing and hash map lookups)
  • stable and robust (no stops, no crashes)
  • transparent for the servers and clients (works as a lightweight stateless SIP proxy)
  • priority/weight routing
  • intelligent prioritization based on servers health and load
  • automatic server failover and retry/recovery
  • rules
  • admin access (settings, stats)
  • built-in dynamic firewall for rate-limits and malicious traffic filtering (to handle DoS, DDoS and other attacks)
  • detailed configuration with optimized defaults
  • runs as a standalone app (also from command line) or as a NT service
  • port forwarder for other ports (API/web/others)
  • can be used as a stateless sip proxy
  • no any external dependencies (xcopy install)

Performance on a 8 core Xeon server with 8 GB RAM:

  • 100 000 PPS (packets per second)
  • 20 000 CPS (calls per second)
  • 2 000 000 CC (concurrent call count: 2 millions)
  • 1 gbits SIP signaling

 

 

Requirements

The MLB operates with minimal hardware resource consumtion.
For less than 20000 PPS/100000+ simultaneous calls: a cheap server with 4 cpu core and 4 GB RAM is more than enough.

More details:
A common 8 core Xeon single cpu (with 8000 passport points) with 8 GB RAM is enough to fulfill the highest load demands.
Most important is CPU cache, bus bandwidth, RAM speed/bandwidth and NIC performance. Add a quality motherboard (with high bus speed) and quality NIC (ethernet controller).
Disk usage: The MLB requires only a few MB free space however for detailed logs you might add some more space like 50 GB. Add any disk (a slow disk if fine. just be it stable. you might consider raid 1 for better stability).
Make sure to have a backup if the hardware fails with the possibility to easily flip the hardware/ethernet cable or you can use dynamic IP (so you can turn off the crashed server and assign it’s IP for the backup server).
Multi CPU systems are a waste for this application, since a modern 4-8 core Xeon can handle more than a full gigabit.
RAM above 8 GB are wasteful. Faster is better.
Windows OS (Both 32 and 64 bit versions are supported).
Disable all unneeded services on the OS (disable IIS). Don't install/run unneeded software to the server (no extra firewall or virus scanner is needed). Disable automatic updates to prevent restarts.
Your server will be secured since it will not use any of the windows components (only core and tcp/ip stack) and on the built-in firewall enable incoming only for the MLB service.

 

Setup

Download the portable version from here.
All the settings are stored in the mlb.ini file (Which can also be changed remotely with the MLBCfg)
Change the admin key (used if you wish to login to your server remotely with the MLBCfg)
Just add your server in server1, server2, ... serverN section and start (You can specify priority and weight. The MLB will automatically balance the traffic after your servers load and health statistics)
By default it will listen on port UDP 5060 all interfaces. You can change this with the bindip and bindport settings.
If you have a (sub) domain name set for the MLB IP, then set this also with the “localdomain” configuration.
Extract and copy the files to a folder after your preference.
Make sure that the exe has write right to its own directory
Install service (MLBSrv.exe -install) or run MLBApp (service recommended)

Traffic from the same user/IP/transaction/dialog are prioritized to the same server (unless serious issues with that server). Otherwise the traffic is distributed based on settings and server health.
The MLB doesn't handle RTP routing (RTP will be handled by the endpoints regarding to SIP SDP negotiation).

Configuration might have to be changed depending on how exactly your SIP server is able to handle the SIP signaling (Via rewrite, Record-Route, Transparent). The Mizutech support will setup and fine-tune your software for free of charge.

Files
mlb.ini: config file
MLBApp.exe: MLB as standalone app
MLBSrv.exe: MLB as NT service
MLBCfg.exe: admin client
TLSProxy.exe: helper process for SSL/TLS forward if needed
srv_*.bat: service install/uninstall/start/stop
mlb_fwd_*.exe: helper processes created automatically