netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Julius R. Volz" <juliusv@google.com>
To: lvs-devel@vger.kernel.org, netdev@vger.kernel.org
Cc: horms@verge.net.au, davem@davemloft.net, vbusam@google.com
Subject: [PATCH 00/26] IPVS: Add first IPv6 support to IPVS.
Date: Wed, 11 Jun 2008 19:11:43 +0200	[thread overview]
Message-ID: <1213204329-10973-1-git-send-email-juliusv@google.com> (raw)

Hi,

This patch series adds first experimental IPv6 support to IPVS. I have
already posted it to the LVS mailing list as one huge patch a while ago,
so here's the split-up version, although it is still very big. I don't see
an easy way of breaking up the series into truly independent chunks though,
since most of it seems very interdependent. I'm still a kernel newbie, so
any advice is welcome :)

- Full kernel patch in one file against davem's net-2.6:
http://www-user.tu-chemnitz.de/~volz/ipvs_ipv6/ipvs_ipv6.patch

- It depends on this patch that moves the "ipvs" directory to "net/netfilter":
http://www-user.tu-chemnitz.de/~volz/ipvs_ipv6/move_ipvs_to_netfilter.patch
(this patch really only moves files from one directory to another, so
no real content changes in there)

While not all IPv6 features are working or tested, existing IPv4 features
should still work as before. However, as these changes break the
kernel<->userspace interface, you need a new version of ipvsadm to use
these patches, even for IPv4-only operation:

- ipvsadm patch and tar.gz (by Vince Busam):
http://www-user.tu-chemnitz.de/~volz/ipvs_ipv6/ipvsadm-1.25-ipv6-1.patch
http://www-user.tu-chemnitz.de/~volz/ipvs_ipv6/ipvsadm-1.25-ipv6-1.tar.gz

While I have mainly been working on the kernel part, Vince Busam has been
converting ipvsadm to support the new kernel features from userspace.

To enable IPv6 support in IPVS, set CONFIG_IP_VS_IPV6.

Short overview:

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

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

Since fragmentation and extension headers should not occur very often,
things should "mostly" work. I 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.

I copied and changed many IPv4 methods into corresponding IPv6
versions, so the duplication is quite high. I chose to go that way in
order to not break too much of the existing IPv4 code. The upside of
this is that v4 should hopefully still work exactly as before. All
relevant data structures have an added 'af' field for specifying the
address family and use a union of both a v4 and v6 address for specifying
IP addresses.

Feel free to comment, question, criticize, ridicule... this is our first
big kernel project though, so please don't be too hard on us! ;)

 include/net/ip_vs.h                  |  267 +++++++++--
 net/netfilter/ipvs/Kconfig           |    8 +
 net/netfilter/ipvs/ip_vs_conn.c      |  406 ++++++++++++++--
 net/netfilter/ipvs/ip_vs_core.c      |  865 +++++++++++++++++++++++++++++++++-
 net/netfilter/ipvs/ip_vs_ctl.c       |  565 ++++++++++++++++++++---
 net/netfilter/ipvs/ip_vs_dh.c        |    3 +
 net/netfilter/ipvs/ip_vs_ftp.c       |   34 +-
 net/netfilter/ipvs/ip_vs_lblc.c      |    3 +
 net/netfilter/ipvs/ip_vs_lblcr.c     |    3 +
 net/netfilter/ipvs/ip_vs_lc.c        |   20 +-
 net/netfilter/ipvs/ip_vs_nq.c        |   15 +-
 net/netfilter/ipvs/ip_vs_proto.c     |   67 +++-
 net/netfilter/ipvs/ip_vs_proto_ah.c  |  122 +++++-
 net/netfilter/ipvs/ip_vs_proto_esp.c |  121 +++++-
 net/netfilter/ipvs/ip_vs_proto_tcp.c |  320 ++++++++++++-
 net/netfilter/ipvs/ip_vs_proto_udp.c |  294 +++++++++++-
 net/netfilter/ipvs/ip_vs_rr.c        |    3 +
 net/netfilter/ipvs/ip_vs_sed.c       |   22 +-
 net/netfilter/ipvs/ip_vs_sh.c        |    3 +
 net/netfilter/ipvs/ip_vs_sync.c      |    6 +-
 net/netfilter/ipvs/ip_vs_wlc.c       |   22 +-
 net/netfilter/ipvs/ip_vs_wrr.c       |   22 +-
 net/netfilter/ipvs/ip_vs_xmit.c      |  467 ++++++++++++++++++-
 23 files changed, 3401 insertions(+), 257 deletions(-)

Julius Volz

             reply	other threads:[~2008-06-11 17:11 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-11 17:11 Julius R. Volz [this message]
2008-06-11 17:11 ` [PATCH 01/26] IPVS: Add CONFIG_IP_VS_IPV6 option for IPv6 support Julius R. Volz
2008-06-11 17:11 ` [PATCH 02/26] IPVS: Change IPVS data structures to support IPv6 addresses Julius R. Volz
2008-06-11 17:12   ` Patrick McHardy
     [not found]     ` <f4845fc0806111041u2a9a197fseefe300ffbbda3c3@mail.gmail.com>
     [not found]       ` <485010E9.6000506@trash.net>
2008-06-11 18:08         ` Julius Volz
2008-06-12  1:54   ` Brian Haley
2008-06-12  9:47     ` Julius Volz
2008-06-11 17:11 ` [PATCH 03/26] IPVS: Use new address family fields in IPVS structs Julius R. Volz
2008-06-11 17:11 ` [PATCH 04/26] IPVS: Add address family specific debugging macros Julius R. Volz
2008-06-11 17:11 ` [PATCH 05/26] IPVS: Use new " Julius R. Volz
2008-06-11 17:14   ` Patrick McHardy
2008-06-11 17:11 ` [PATCH 06/26] IPVS: Add IPv6-specific function pointers to struct ip_vs_protocol Julius R. Volz
2008-06-11 17:11 ` [PATCH 07/26] IPVS: Add IPv6 handler functions to AH protocol handler Julius R. Volz
2008-06-11 17:11 ` [PATCH 08/26] IPVS: Add IPv6 handler functions to ESP " Julius R. Volz
2008-06-11 17:11 ` [PATCH 09/26] IPVS: Add IPv6 handler functions to TCP " Julius R. Volz
2008-06-11 17:11 ` [PATCH 10/26] IPVS: Add IPv6 handler functions to UDP " Julius R. Volz
2008-06-11 17:18   ` Patrick McHardy
2008-06-11 17:11 ` [PATCH 11/26] IPVS: Add supports_ipv6 flag to schedulers Julius R. Volz
2008-06-11 17:11 ` [PATCH 12/26] IPVS: Extend proto handler debug functions to handle IPv6 Julius R. Volz
2008-06-11 17:17   ` Patrick McHardy
2008-06-11 17:11 ` [PATCH 13/26] IPVS: Turn off FTP application helper for IPv6 Julius R. Volz
2008-06-11 17:11 ` [PATCH 14/26] IPVS: Extend xmit routing cache to support IPv6 Julius R. Volz
2008-06-11 17:11 ` [PATCH 15/26] IPVS: Modify IP_VS_XMIT() " Julius R. Volz
2008-06-11 17:11 ` [PATCH 16/26] IPVS: Add IPv6 xmit forwarding functions Julius R. Volz
2008-06-12  1:55   ` Brian Haley
2008-06-11 17:12 ` [PATCH 17/26] IPVS: Add connection hashing function for IPv6 entries Julius R. Volz
2008-06-11 17:12 ` [PATCH 18/26] IPVS: Add functions for getting/creating IPv6 connections Julius R. Volz
2008-06-12  1:55   ` Brian Haley
2008-06-11 17:12 ` [PATCH 19/26] IPVS: Add scheduling functions for " Julius R. Volz
2008-06-11 17:12 ` [PATCH 20/26] IPVS: Add IPv6 Netfilter hooks and add/modify support functions Julius R. Volz
2008-06-12  1:55   ` Brian Haley
2008-06-11 17:12 ` [PATCH 21/26] IPVS: Make proc/net files output IPv6 entries correctly Julius R. Volz
2008-06-11 17:12 ` [PATCH 22/26] IPVS: Add function to find out if IPv6 address is local Julius R. Volz
2008-06-11 17:12 ` [PATCH 23/26] IPVS: Add hash functions for IPv6 services and real servers Julius R. Volz
2008-06-11 17:12 ` [PATCH 24/26] IPVS: Add IPv6 support to userspace interface Julius R. Volz
2008-06-12  1:55   ` Brian Haley
2008-06-12  9:46     ` Julius Volz
2008-06-11 17:12 ` [PATCH 25/26] IPVS: Add support for IPv6 entry output in procfs files Julius R. Volz
2008-06-11 17:12 ` [PATCH 26/26] IPVS: Add some blame/credits for IPv6 version Julius R. Volz
2008-06-11 17:23 ` [PATCH 00/26] IPVS: Add first IPv6 support to IPVS Patrick McHardy
2008-06-11 18:23   ` Julius Volz
2008-06-11 18:42     ` Patrick McHardy
2008-06-11 19:05       ` Julius Volz
2008-06-11 19:10         ` Patrick McHardy
2008-06-11 19:29           ` Julius Volz
2008-06-11 19:31             ` Patrick McHardy
2008-06-11 19:53               ` Julius Volz
2008-06-11 20:14                 ` Julius Volz
2008-06-11 20:55                   ` Vince Busam
2008-06-11 21:30                     ` Ben Greear
2008-06-11 22:26                       ` Vince Busam
2008-06-12  1:45                         ` Simon Horman
2008-06-12 13:31                           ` Julius Volz
2008-06-12 13:38                             ` Patrick McHardy
2008-06-12 15:34                               ` Julius Volz
2008-06-12 15:41                                 ` Julius Volz
2008-06-12 15:46                                 ` Patrick McHardy
2008-06-12 19:33                                   ` Julius Volz
2008-06-13  6:26                                     ` Simon Horman
2008-06-13 14:17                                       ` Julius Volz
2008-06-13 15:14                                         ` Patrick McHardy
2008-06-16  0:14                                           ` Julius Volz
2008-06-16 11:47                                             ` Patrick McHardy
2008-06-16 12:13                                               ` Julius Volz
2008-06-16 23:19                                               ` Julius Volz
2008-06-17 11:52                                                 ` Patrick McHardy
2008-06-17 17:18                                                   ` Julius Volz
2008-06-17 20:08                                                     ` Patrick McHardy
2008-06-17 22:47                                                       ` Julius Volz
2008-06-18  8:57                                                         ` Patrick McHardy
2008-06-18 14:17                                                           ` Julius Volz
2008-06-18 14:19                                                             ` Patrick McHardy
2008-06-18 14:27                                                               ` Julius Volz
2008-06-18 14:30                                                                 ` Patrick McHardy
2008-06-18 14:36                                                                   ` Julius Volz
2008-06-30 12:01                                               ` Julius Volz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1213204329-10973-1-git-send-email-juliusv@google.com \
    --to=juliusv@google.com \
    --cc=davem@davemloft.net \
    --cc=horms@verge.net.au \
    --cc=lvs-devel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=vbusam@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).