On Tue, Jun 2, 2015 at 8:58 AM, Jiri Benc <jb...@redhat.com> wrote: > On Mon, 1 Jun 2015 14:40:41 -0700, Jesse Gross wrote: >> On Thu, May 14, 2015 at 11:10 AM, Jiri Benc <jb...@redhat.com> wrote: >> > diff --git a/include/uapi/linux/openvswitch.h >> > b/include/uapi/linux/openvswitch.h >> > index 4d26da40b01f..ba7ae3b05308 100644 >> > --- a/include/uapi/linux/openvswitch.h >> > +++ b/include/uapi/linux/openvswitch.h >> > @@ -267,6 +267,7 @@ enum { >> > OVS_TUNNEL_ATTR_UNSPEC, >> > OVS_TUNNEL_ATTR_DST_PORT, /* 16-bit UDP port, used by L4 tunnels. >> > */ >> > OVS_TUNNEL_ATTR_EXTENSION, >> > + OVS_TUNNEL_ATTR_OVER_IPV6,/* when present, tunneling over IPv6 */ >> >> This is perhaps a flaw in the existing interface but old kernels will >> silently ignore requests for v6 tunnels and create v4 ones instead, >> which seems like a bad thing. > > They'll refuse any flow, though, because they'll see empty ipv4 dst > address, thus nothing will really break.
That's true although it would be nice to handle it a little more gracefully. > I don't think there's a mechanism in place to query kernel data path > capabilities, thus there's no straightforward way to detect this. I think we will likely need to implement one at some point - this is particularly an issue with extensible tunnels if you need to do per-packet operations. However, it's probably not relevant at this point for the purposes of IPv6. >> I also think that it is important to figure out how to model >> simultaneous v4 and v6 tunnels on the same port as it seems like a >> reasonable thing to do, even if it is not supported initially. If they >> share the same vport in the kernel so they can bind at the same time >> then I guess this flag isn't really needed. > > Thinking about that more, one option is calling > kernel_setsockopt(IPV6_V6ONLY) in udp_sock_create6. Not sure it will be > acceptable but I don't see any reason against this. > >> However, perhaps this is all moot anyways assuming the that netdevice >> based model is accepted as the ports would presumably be configured >> directly through that. > > The kernel tunneling implementation differentiates ipv4 and ipv6 > tunnels, thus we'll still need different kind of ports. I agree that it currently differentiates but I'm not sure that it needs to. For device based tunnels, we already share sockets so why not open always open a single dual stack socket and then let individual devices or flows have addresses that are matched appropriately? I guess this seems fairly clean to me and would completely avoid the concerns you had earlier about using the right port type or switching port types. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev