Difference between revisions of "IPv6 load balancing"

From LVSKB
Jump to: navigation, search
(What is not supported with IPv6)
m
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
IPv6 load balancing support was added to IPVS by Julius Volz and Vince Busam at Google. The kernel patches were mainly written by Julius Volz, the new ipvsadm version by Vince Busam. Please note IPv6 support is experimental and has only had limited testing.
+
IPv6 load balancing support was added to IPVS by Julius Volz and Vince Busam at Google. The kernel patches were mainly written by Julius, the new ipvsadm version by Vince. Please note that IPv6 support is experimental and has only had limited testing.
  
 
== Status ==
 
== Status ==
  
The first IPv6 support for IPVS load balancing was released in Linux kernel 2.6.28-rc3. Go to [http://www.linuxvirtualserver.org/software/ipvs.html the IPVS Software Page] to download the latest version of [[ipvsadm]], which is needed to use these new features.
+
The first IPv6 support for IPVS load balancing was released in Linux kernel 2.6.28-rc3. Go to [http://www.linuxvirtualserver.org/software/ipvs.html the IPVS Software Page] to download the latest version of [[ipvsadm]], which is needed to use these new features.  The [http://www.linux-ha.org/DownloadSoftware development branch] of Linux-HA contains a ping6 module for heartbeat and limited IPv6 support in ldirectord.
  
 
=== What works with IPv6 ===
 
=== What works with IPv6 ===
Line 11: Line 11:
 
* manipulation and inspection of both IPv4 and IPv6 entries with ipvsadm
 
* manipulation and inspection of both IPv4 and IPv6 entries with ipvsadm
 
* 6 out of 10 schedulers (10/10 in latest net-next dev tree)
 
* 6 out of 10 schedulers (10/10 in latest net-next dev tree)
 +
* ping6 monitor in heartbeat
 +
* ldirectord using external commands for monitoring
  
 
=== What is not supported with IPv6 ===
 
=== What is not supported with IPv6 ===
Line 18: Line 20:
 
* sync daemon (can be started, but only operates on v4)
 
* sync daemon (can be started, but only operates on v4)
 
* probably some incorrect handling of ICMPv6 or other corner cases
 
* probably some incorrect handling of ICMPv6 or other corner cases
 +
* Most built-in probes in ldirectord - use checkcommand
 +
* Real servers must be specified individually in ldirectord, address ranges are not supported
  
 
Since fragmentation and extension headers should not occur very often, things should "mostly" work. I (Julius) tested HTTP and DNS over NAT and DR with various supported schedulers without encountering any problems. But we didn't test any exotic situations. Also, there are some TODOs in the code for things that haven't been tested or implemented yet.
 
Since fragmentation and extension headers should not occur very often, things should "mostly" work. I (Julius) tested HTTP and DNS over NAT and DR with various supported schedulers without encountering any problems. But we didn't test any exotic situations. Also, there are some TODOs in the code for things that haven't been tested or implemented yet.
Line 33: Line 37:
 
  ipvsadm -A -f 1 -6
 
  ipvsadm -A -f 1 -6
 
  ipvsadm -A -f 1 -6 -r [fc00::2]:80 -m
 
  ipvsadm -A -f 1 -6 -r [fc00::2]:80 -m
 +
 +
ldirectord configuration
 +
 +
virtual = [fc00::1]:80
 +
        protocol = tcp
 +
        scheduler = wlc
 +
        quiescent = no
 +
        real = [fc00::3]:80 gate 1000
 +
        real = [fc00::4]:80 gate 1000
 +
        service = http
 +
        checktype = external
 +
        checkcommand = /usr/local/bin/my-custom-ipv6-http-test
 +
  
 
[[Category:IPVS]]
 
[[Category:IPVS]]
 +
[[Category:Load Balancing]]

Latest revision as of 12:58, 9 November 2008

IPv6 load balancing support was added to IPVS by Julius Volz and Vince Busam at Google. The kernel patches were mainly written by Julius, the new ipvsadm version by Vince. Please note that IPv6 support is experimental and has only had limited testing.

Status

The first IPv6 support for IPVS load balancing was released in Linux kernel 2.6.28-rc3. Go to the IPVS Software Page to download the latest version of ipvsadm, which is needed to use these new features. The development branch of Linux-HA contains a ping6 module for heartbeat and limited IPv6 support in ldirectord.

What works with IPv6

  • forwarding mechanisms: NAT, DR, maybe Tunnel (not fully tested yet)
  • protocols: TCP, UDP, ESP, AH (last two not tested)
  • manipulation and inspection of both IPv4 and IPv6 entries with ipvsadm
  • 6 out of 10 schedulers (10/10 in latest net-next dev tree)
  • ping6 monitor in heartbeat
  • ldirectord using external commands for monitoring

What is not supported with IPv6

  • handling fragmentation or other extension headers
  • FTP application helper (can be loaded, but only operates on v4)
  • sync daemon (can be started, but only operates on v4)
  • probably some incorrect handling of ICMPv6 or other corner cases
  • Most built-in probes in ldirectord - use checkcommand
  • Real servers must be specified individually in ldirectord, address ranges are not supported

Since fragmentation and extension headers should not occur very often, things should "mostly" work. I (Julius) tested HTTP and DNS over NAT and DR with various supported schedulers without encountering any problems. But we didn't test any exotic situations. Also, there are some TODOs in the code for things that haven't been tested or implemented yet.

Examples

Adding an IPv6 TCP service with two real servers:

ipvsadm -A -t [fc00::1]:80
ipvsadm -a -t [fc00::1]:80 -r [fc00::2]:80 -g
ipvsadm -a -t [fc00::1]:80 -r [fc00::3]:80 -g

Adding an IPv6 fwmark service with one real server:

ipvsadm -A -f 1 -6
ipvsadm -A -f 1 -6 -r [fc00::2]:80 -m

ldirectord configuration

virtual = [fc00::1]:80
       protocol = tcp
       scheduler = wlc
       quiescent = no
       real = [fc00::3]:80 gate 1000
       real = [fc00::4]:80 gate 1000
       service = http
       checktype = external
       checkcommand = /usr/local/bin/my-custom-ipv6-http-test