All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick McHardy <kaber@trash.net>
To: Simon Horman <horms@verge.net.au>
Cc: lvs-devel@vger.kernel.org, netdev@vger.kernel.org,
	netfilter-devel@vger.kernel.org, "Julian Anastasov" <ja@ssi.bg>,
	"Julius Volz" <juliusv@google.com>,
	"Wensong Zhang" <wensong@linux-vs.org>,
	"Hans Schillström" <hans.schillstrom@ericsson.com>
Subject: Re: [patch v4.1] ipvs: IPv6 tunnel mode
Date: Tue, 19 Oct 2010 10:40:24 +0200	[thread overview]
Message-ID: <4CBD5978.7020108@trash.net> (raw)
In-Reply-To: <20101016075837.GB2027@verge.net.au>

Am 16.10.2010 09:58, schrieb Simon Horman:
> From: Hans Schillstrom <hans.schillstrom@ericsson.com>
> 
> ipvs: IPv6 tunnel mode
> 
> IPv6 encapsulation uses a bad source address for the tunnel.
> i.e. VIP will be used as local-addr and encap. dst addr.
> Decapsulation will not accept this.
> 
> Example
> LVS (eth1 2003::2:0:1/96, VIP 2003::2:0:100)
>    (eth0 2003::1:0:1/96)
> RS  (ethX 2003::1:0:5/96)
> 
> tcpdump
> 2003::2:0:100 > 2003::1:0:5:
> IP6 (hlim 63, next-header TCP (6) payload length: 40)
>  2003::3:0:10.50991 > 2003::2:0:100.http: Flags [S], cksum 0x7312
> (correct), seq 3006460279, win 5760, options [mss 1440,sackOK,TS val
> 1904932 ecr 0,nop,wscale 3], length 0
> 
> In Linux IPv6 impl. you can't have a tunnel with an any cast address
> receiving packets (I have not tried to interpret RFC 2473)
> To have receive capabilities the tunnel must have:
>  - Local address set as multicast addr or an unicast addr
>  - Remote address set as an unicast addr.
>  - Loop back addres or Link local address are not allowed.
> 
> This causes us to setup a tunnel in the Real Server with the
> LVS as the remote address, here you can't use the VIP address since it's
> used inside the tunnel.
> 
> Solution
> Use outgoing interface IPv6 address (match against the destination).
> i.e. use ip6_route_output() to look up the route cache and
> then use ipv6_dev_get_saddr(...) to set the source address of the
> encapsulated packet.
> 
> Additionally, cache the results in new destination
> fields: dst_cookie and dst_saddr and properly check the
> returned dst from ip6_route_output. We now add xfrm_lookup
> call only for the tunneling method where the source address
> is a local one.
> 
> Signed-off-by:Hans Schillstrom <hans.schillstrom@ericsson.com>
> 
> ---
> 
> Original patch by Hans Schillstrom.
> Check dst state and cache results for IPv6 by Julian Anastasov.
> Subsequent revisions made by Hans Schillstrom:
> 
> * v1
>     
>   This is Julian's patch with a slightly edited version of the description
>   from Hans's original patch.
> 
> * v2
>     
>   Updated changelog as per commends from Julian
> 
> * v3
>     
>   Flowi dest address used as destination instead of rt6_info in
> +ip_vs_tunnel_xmit_v6()
>   rt6_info somtimes contains a netw address insted of a tunnel
> 
> * v4
>     
>   Update destination as recommended from Julian
>   i.e. use &cp->daddr.in6
> 
> * v4.1 Simon Horman
>   Fix patch corruption
> 
> Patrick, please consider this for nf-next-2.6

Applied, thanks.


  reply	other threads:[~2010-10-19  8:40 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-16  7:58 [patch v4.1] ipvs: IPv6 tunnel mode Simon Horman
2010-10-19  8:40 ` Patrick McHardy [this message]
  -- strict thread matches above, loose matches on Subject: below --
2010-10-08 10:17 Simon Horman
2010-10-09 11:37 ` Julian Anastasov
2010-10-08  9:02 Hans Schillström

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=4CBD5978.7020108@trash.net \
    --to=kaber@trash.net \
    --cc=hans.schillstrom@ericsson.com \
    --cc=horms@verge.net.au \
    --cc=ja@ssi.bg \
    --cc=juliusv@google.com \
    --cc=lvs-devel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=wensong@linux-vs.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.