yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #52453
[Bug 1495433] Re: IPv6 packets from non-EUI-64 addresses dropped on SLAAC subnets
** Changed in: neutron
Status: New => Opinion
** Tags added: ipv6
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1495433
Title:
IPv6 packets from non-EUI-64 addresses dropped on SLAAC subnets
Status in neutron:
Opinion
Bug description:
A newly created instance on an IPv6 subnet is provisioned with the
following ip6tables chain on the hypervisor:
tore@node-a3-02:~$ sudo ip6tables -vL neutron-openvswi-sb6a851ba-e
Chain neutron-openvswi-sb6a851ba-e (1 references)
pkts bytes target prot opt in out source destination
8869 1298K RETURN all any any 2001:db8:200:f020:f816:3eff:fea7:b27d anywhere MAC FA:16:3E:A7:B2:7D /* Allow traffic from defined IP/MAC pairs. */
23 1820 DROP all any any anywhere anywhere /* Drop traffic without an IP/MAC allow rule. */
This blocks outbound traffic from the instance sourced from addresses
other than the one mentioned in the RETURN rule. (Inbound traffic does
work fine though, and can can be observed in a tcpdump session on the
VM. Also ICMPv6 appears to be allowed elsewhere, so ping6 works.)
The logic appears to be based on a faulty assumption, namely that an
IPv6 node on a SLAAC subnet will only have a single IPv6 address, and
that this address has an EUI-64 based Interface ID.
That is, however, quite simply not how IPv6 works; when a host
receives an ICMPv6 Router Advertisement containing a /64 Prefix
Information Option with the Autonomous flag set, this essentially
informs the host that it can freely use *any* arbitrary address inside
that /64 (provided that it performs the Duplicate Address Detection
algorithm). The host is under no obligation to use the EUI-64
algorithm in order to constructs its Interface ID. Even if it does use
EUI-64, there is no requirement that prevents it from at the same time
self-configuring other addresses using a different Interface ID
generation algorithm.
This bug breaks the algorithms defined in RFC4941, RFC6877, RFC7217,
I-D.ietf-v6ops-siit-dc-2xlat, as well as any other application or use
case that requires multiple IPv6 addresses. See also I-D.ietf-v6ops-
host-addr-availability.
The fix should be trivial, namely to mask the source address in the
RETURN rule with a /64. (In the example above, it should have been
2001:db8:200:f020::/64 rather than
2001:db8:200:f020:f816:3eff:fea7:b27d. (Note that the ip6tables binary
will do so automatically if it is being given an address such as
"2001:db8:200:f020:f816:3eff:fea7:b27d/64".)
Tore
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1495433/+subscriptions
References