• Ville Nuorvala's avatar
    ipv6_tunnel: Allow receiving packets on the fallback tunnel if they pass sanity checks · d0087b29
    Ville Nuorvala authored
    At Facebook, we do Layer-3 DSR via IP-in-IP tunneling. Our load balancers wrap
    an extra IP header on incoming packets so they can be routed to the backend.
    In the v4 tunnel driver, when these packets fall on the default tunl0 device,
    the behavior is to decapsulate them and drop them back on the stack. So our
    setup is that tunl0 has the VIP and eth0 has (obviously) the backend's real
    address.
    
    In IPv6 we do the same thing, but the v6 tunnel driver didn't have this same
    behavior - if you didn't have an explicit tunnel setup, it would drop the
    packet.
    
    This patch brings that v4 feature to the v6 driver.
    
    The same IPv6 address checks are performed as with any normal tunnel,
    but as the fallback tunnel endpoint addresses are unspecified, the checks
    must be performed on a per-packet basis, rather than at tunnel
    configuration time.
    
    [Patch description modified by phil@ipom.com]
    Signed-off-by: default avatarVille Nuorvala <ville.nuorvala@gmail.com>
    Tested-by: default avatarPhil Dibowitz <phil@ipom.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d0087b29
ip6_tunnel.c 37.2 KB