16. IPv6 SLB (Server Load-Balancing) in DSR mode with agent feedback

Protecting against unwanted ARP replies on Linux targets is not necessary for IPv6. The VRRP mastership is left unspecified with both nodes having the same VRRP priority below 255. This example is a variation of Example 15 and adds agent feedback based loadbalancing. The differences are shown in bold below.

The BalanceNG agent “bngagent” needs to be started on both target servers before as follows:

# bngagent -6 10000

The IPv6 configuration and loopback alias is setup in /etc/network/interfaces on the Debian based target servers as follows:

IPv6 configuration in /etc/network/interfaces on Target 1

iface eth0 inet6 static
  address 2001:DB8::1:1
  netmask 32

iface lo inet6 static
  address 2001:db8::2:4
  netmask 128

IPv6 configuration in /etc/network/interfaces on Target 2

iface eth0 inet6 static
  address 2001:DB8::1:2
  netmask 32

iface lo inet6 static
  address 2001:db8::2:4
  netmask 128

Node 1 configuration file

//        configuration taken ...
//        BalanceNG ...
modules   vrrp,arp,ping,hc,master,slb
interface 1 {
          name eth0
}         
register  interface 1
enable    interface 1
vrrp      {
          vrid 40
          priority 200
          network 1
}         
network   1 {
          addr 10.1.0.0
          mask 255.255.0.0
          real 10.1.0.1
          mask6 32
          real6 2001:db8::2:1
          virt6 2001:db8::2:3
          interface 1
}         
register  network 1
enable    network 1
server    1 {
          ipaddr6 2001:db8::2:4
          sessionid src+port
          port 80
          protocol tcp
          method rndagent
          targets 1,2
}         
register  server 1
enable    server 1
target    1 {
          ipaddr6 2001:db8::1:1
          port 80
          protocol tcp
          ping6 3,10
          agent6 10000,3,10
          dsr enable
}         
target    2 {
          ipaddr6 2001:db8::1:2
          port 80
          protocol tcp
          ping6 3,10
          agent6 10000,3,10
          dsr enable
}         
register  targets 1,2
enable    targets 1,2
//        end of configuration

Node 2 configuration file

//        configuration taken ...
//        BalanceNG ...
modules   vrrp,arp,ping,hc,master,slb
interface 1 {
          name eth0
}         
register  interface 1
enable    interface 1
vrrp      {
          vrid 40
          priority 200
          network 1
}         
network   1 {
          addr 10.1.0.0
          mask 255.255.0.0
          real 10.1.0.2
          mask6 32
          real6 2001:db8::2:2
          virt6 2001:db8::2:3
          interface 1
}         
register  network 1
enable    network 1
server    1 {
          ipaddr6 2001:db8::2:4
          sessionid src+port
          port 80
          protocol tcp
          method rndagent
          targets 1,2
}         
register  server 1
enable    server 1
target    1 {
          ipaddr6 2001:db8::1:1
          port 80
          protocol tcp
          ping6 3,10
          agent6 10000,3,10
          dsr enable
}         
target    2 {
          ipaddr6 2001:db8::1:2
          port 80
          protocol tcp
          ping6 3,10
          agent6 10000,3,10
          dsr enable
}         
register  targets 1,2
enable    targets 1,2
//        end of configuration

Testing Dialog in “bng control” Mode

bng# sh vrrp
  state     MASTER
  vrid      40
  priority  200
  ipaddr0   2001:db8::2:3
  ipaddr1   2001:db8::2:4

bng# sh sessions
  7 sessions
  srv tgt  age timeout session-id
  --- --- ---- ------- ------------------
    1   1    7     600 2001:db8::1:6.46354
    1   2    8     600 2001:db8::1:6.46353
    1   1    9     600 2001:db8::1:6.46352
    1   2   11     600 2001:db8::1:6.46351
    1   1   12     600 2001:db8::1:6.46350
    1   2   26     600 2001:db8::1:6.46349
    1   1   57     600 2001:db8::1:6.46341

bng# show targets
#   ipaddr ipaddr6      port prt net net6 srv sessions status      info
--- ------ ----------------- --- --- ---- --- -------- ----------- ------------------------
  1 n.a.   2001:db8::1:1  80 tcp   0    1   1        0 operational nd6:up,ping6:up,agent6:1
  2 n.a.   2001:db8::1:2  80 tcp   0    1   1        0 operational nd6:up,ping6:up,agent6:1