This example shows the implementation of an HA switch with location analysis and filtering capabilities. The HA switch on Layer 2 is implemented by the “haswitch” BalanceNG module, the location filtering by the “lswitch” module. Both modules are available with BalanceNG V4 release 4.071 (and higher).
As hardware devices we are using a pair of “LES network+” mini Servers from Thomas Krenn, klick here for further details and availability.
Both machines have 16GB Ram and a 64 GB SSD disk and come preinstalled with Ubuntu Linux (Kernel 4.4.0-101).
As a very first step it is necessary to identify the physical NIC ports (and their correspondence to the Linux interfaces eth0-eth5). This can be quite easily done with ethtool and the -p option: The command “ethtool -l eth2 10” lets a physical LED on interface eth2 blink for 10 seconds, for example (see also this for more details and check the manual page of ethtool).
This schematic drawing shows the cabling and network setup of the BNG pair:

The installation of BalanceNG is quite simple and done with the “dpkg -i” command, here’s a typical dialog:
root@bng1:~# ls -l total 2336 -rw-r--r-- 1 root root 2390304 Dec 20 12:14 balanceng_4.072_amd64.deb root@bng1:~# dpkg -i balanceng_4.072_amd64.deb (Reading database ... 158037 files and directories currently installed.) Preparing to unpack balanceng_4.072_amd64.deb ... Unpacking balanceng (4.072) over (4.072) ... Setting up balanceng (4.072) ... Updating startup-links... ...done! Please restart BalanceNG as soon as possible to use the updated version Processing triggers for systemd (229-4ubuntu21) ... Processing triggers for ureadahead (0.100.0-19) ... root@bng1:~#
For later licensing you may now retrieve the nodeid with the command “bng -N”:
root@bng1:~# bng -N ab:d7:fb:27:28:94 root@bng1:~#
The following configuration directives are important:
// configuration taken ...
// BalanceNG ...
hostname [BNG1]
license INTEST-01 15a45385cea25d41c6246b5831cd8186
modules vrrp,arp,master,lfilter,haswitch
set sessiondlimit 50
interface 1 {
name eth2
access raw
switching enablae
}
interface 2 {
name eth3
access raw
switching enable
scope external
}
interface 3 {
name eth4
access raw
}
interface 4 {
name eth5
access raw
}
register interfaces 1,2,3,4
enable interfaces 1,2,3,4
vrrp {
vrid 5
priority 200
network 1
}
network 1 {
addr 10.10.10.0
mask 255.255.255.0
real 10.10.10.5
virt 10.10.10.1
syncpeer 10.10.10.6
interfaces 3,4
}
register network 1
enable network 1
ipdb "/opt/BalanceNG/IpToCountry.csv"
ipdb6 "/opt/BalanceNG/IpToCountry.6R.csv"
lgrp X "*"
// end of configuration
// configuration taken ...
// BalanceNG ...
hostname [BNG2]
license INTEST-02 a06de72515bcb3aee3ce5f99c70655b4
modules vrrp,arp,master,lfilter,haswitch
set sessiondlimit 50
interface 1 {
name eth2
access raw
switching enable
}
interface 2 {
name eth3
access raw
switching enable
scope external
}
interface 3 {
name eth4
access raw
}
interface 4 {
name eth5
access raw
}
register interfaces 1,2,3,4
enable interfaces 1,2,3,4
vrrp {
vrid 5
priority 200
network 1
}
network 1 {
addr 10.10.10.0
mask 255.255.255.0
real 10.10.10.6
virt 10.10.10.1
syncpeer 10.10.10.5
interfaces 3,4
}
register network 1
enable network 1
ipdb "/opt/BalanceNG/IpToCountry.csv"
ipdb6 "/opt/BalanceNG/IpToCountry.6R.csv"
lgrp X "*"
// end of configuration
The location based communication statistics may be shown on the current VRRP master with the “show module lfilter” command, a typical dialog looks like this:
root@bng2:~# bng control
BalanceNG: connected to PID 4260
[BNG2]-MASTER# show module lfilter
general communication statistics:
udp4 (in) udp4(out) tcp4 (in) tcp4(out) udp6 (in) udp6(out) tcp6 (in) tcp6(out)
AT 3020 2549 Austria
CA 33563 36080 Canada
CH 588 456 Switzerland
CZ 10 12 Czech Republic
DE 137 137 120609 92067 1209 Germany
DK 116 154 Denmark
EU 5100 4185 73 73 European Union
FI 1825 1117 Finland
FR 741 794 France
GB 12420 12550 9 10 12 United Kingdom
IE 29262 29064 24587 10233 Ireland
JP 46 Japan
NL 1 1 751 888 Netherlands
NO 7100 1946 Norway
PL 16 18 16 19 Poland
RU 136 147 Russian Federation
US 230 245 498454 438116 2707 4075 United States
VG 6 14 Virgin Islands (BRITISH)
ZZ 9620 6116638 84 126 Reserved
- 59 828 *** NOT FOUND PSEUDO ENTRY ***
packets dropped (not in location group X):
0 IPv4 packets dropped
0 IPv6 packets dropped
location group settings:
lgrp X "*"
[BNG2]-MASTER#
The keyword “out” means here means that a packet has been received on an interface with scope internal (checking the destination address), the keyword “in” refers to packets received on “scope external” interface (thus checking the source address). Please note that the communication statisctics are available on the current VRRP master only.
This is done by configuring the special location group X, packets that belong to this location group are passed by the “lfilter” module.
The following setting allows only packets to and from Germany and Austria to be forwarded (all others would be dropped), for example:
lgrp X "DE,AT"
The following setting allows packets from and to all locations to be forwarded except those from Germany and Austria, for example:
lgrp {
X "*,!Y"
Y "DE,AT"
}
As soon as packets are being dropped by a location group X setting, the “packet dropped” counters are being updated accordingly.
Please have also a look at the BalanceNG User and Reference Manual for further information about the “lgrp” configuration command.