15. IPv6 SLB (Server Load-Balancing) in DSR mode

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.

The sessionid declaration can be set to “src” if the session should base only on the IPv6 source address (“server 1 sessionid src”).

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
          targets 1,2
}         
register  server 1
enable    server 1
target    1 {
          ipaddr6 2001:db8::1:1
          port 80
          protocol tcp
          ping6 3,10
          dsr enable
}         
target    2 {
          ipaddr6 2001:db8::1:2
          port 80
          protocol tcp
          ping6 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
          targets 1,2
}         
register  server 1
enable    server 1
target    1 {
          ipaddr6 2001:db8::1:1
          port 80
          protocol tcp
          ping6 3,10
          dsr enable
}         
target    2 {
          ipaddr6 2001:db8::1:2
          port 80
          protocol tcp
          ping6 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