How to build your own 10GbE Load Balancer

Overview

As we all know, bandwidth demands are more and more increasing. In December 2019 the world largest IXP, DE-CIX, measured a peak transfer rate of 8.1 Tbit/sec, that has been a new world record.

10GbE networking becomes more and more widespread, the infrastructure components as switches, routers and NICs are now in an affordable price range, even for smaller companies that have limited budget.

But there’s a critical infrastructure component, the load balancer, which obviously needs to follow this trend at the same time.

If you make a quick market analysis trying to determine which 10GbE capable load balancer to buy, you probably will get frustrated among our competitors. Their pricing is far away from being acceptable and any testing data is kept hidden in almost all cases.

The solution: BalanceNG allows you to build your own enterprise class 10GbE load balancer at an unbeatable price/performance ratio. This is what this article is about: It points you to the right direction with no risk of spending any money in vain. Just consider the following: If you decide not to use BalanceNG for whatever reason, the hardware that you selected and may be the 10GbE NICs that you have purchased will never become wasted money. You also don’t need to purchase any licenses within 30 days of your testing.

With over 1000 installations worldwide, BalanceNG is proven technology. The major part is deployed with Telco installations, but also larger hosting companies, satellite operators, medical data centers and even the NASA rely on it.

Hardware Selection

Whether you are planning to use already existing machines or if you are purchasing a new one, there are several guidelines that can be recommended:

  • A good choice is the Intel 10GbE PCIe card family (see Recommended 10GbE NICs). Just make sure that a PCIe slot with 8 lanes (“x8”) is available without restrictions.
  • The latest Supermicro Motherboards with 4 10GbE on board and Intel controllers are also good choice (when purchasing new).
  • Gigabyte has also several motherboards available with Intel X550 controllers (we haven’t tested them yet, data looks perfect).
  • If in doubt, choose either an Intel Xeon or Intel i7/i9 CPU.

When selecting a machine, focus on Intel NICs and the PCIe x8 availability. Select a modern CPU with a minimum of 4 available cores, more are better. Intel Xeon is a good choice, but also Intel Core i7 and i9 CPUs are perfect. Keep in mind that the Xeon family provides ECC RAM support (which the i7/i9 does not). Which Linux distribution you prefer does not matter at all, just operate the system without a graphical frontend.

Testing

When testing your machine, focus on the number of threads started for the packet processing 10GbE interface. You need to find the optimal value for your specific machine. BalanceNG can be configured to run a maximum of 8 processing threads per physical interface. Keep an eye on the cooling airflow inside the case and examine the syslog regarding PCI messages and especially in case of problems.

BalanceNG HA Network Topology for 10GbE Load Balancing

As soon as you are satisfied with your test results, you can now setup an HA BalanceNG configuration with two identical nodes.

  • Stay with a DSR setup. A general dual node DSR application example to adapt is available here.
  • Separate the 10GbE main network traffic from the VRRP and session table synchronisation traffic by operating two networks, one for each purpose. An application example to adapt is available here (just take a look at the network separation and the use of VRRP tracking).
  • Establish session table synchronisation with the bngsync protocol as explained here. By choosing the addresses out of the VRRP network the synchronisation packets are separated from the main 10GbE traffic.

Don’t hesitate to contact at support@inlab.de, even if it is just for double checking your final configuration. Usually we will ask you to provide a BalanceNG snapshot of each of both nodes, this is easily generated with “snapshot /tmp/snapshot.txt” in the “bng control” CLI (for example).