yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #19133
[Bug 1357097] [NEW] IPv6 Addresses Should not Send Gratuitous ARP
Public bug reported:
If you create an IPv6 subnet and attach it to a router, the router will
attempt to send a gratuitous ARP for the IPv6 address, resulting in an
error:
2014-08-14 20:45:40.348 13428 ERROR neutron.agent.l3_agent [-] Failed sending gratuitous ARP:
Command: ['sudo', 'ip', 'netns', 'exec', 'qrouter-22fce1ff-a44d-4772-8538-3c2c2bbe0878', 'arping', '-A', '-U', '-I', 'qr-9b96bcfa-5d', '-c', '3', 'da00::1']
Exit code: 2
Stdout: ''
Stderr: 'arping: unknown host da00::1\n'
This is because IPv6 does not use ARP, but instead uses NDP (Neighbor
Discovery Protocol).
If a subnet is IPv6 we should not try to arping.
The offending code is in neutron/agent/l3_agent.py here:
487 def _send_gratuitous_arp_packet(self, ri, interface_name, ip_address):
488 if self.conf.send_arp_for_ha > 0:
489 arping_cmd = ['arping', '-A', '-U',
490 '-I', interface_name,
491 '-c', self.conf.send_arp_for_ha,
492 ip_address]
493 try:
494 if self.conf.use_namespaces:
495 ip_wrapper = ip_lib.IPWrapper(self.root_helper,
496 namespace=ri.ns_name())
497 ip_wrapper.netns.execute(arping_cmd, check_exit_code=True)
498 else:
499 utils.execute(arping_cmd, check_exit_code=True,
500 root_helper=self.root_helper)
501 except Exception as e:
502 LOG.error(_("Failed sending gratuitous ARP: %s"), str(e))
I've not looked closely enough at it to know for sure, but we can
probably key off of ip_version for the subnet in ex_gw_port and skip
_send_gratuitous_arp_packet if it's not 4.
** Affects: neutron
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1357097
Title:
IPv6 Addresses Should not Send Gratuitous ARP
Status in OpenStack Neutron (virtual network service):
New
Bug description:
If you create an IPv6 subnet and attach it to a router, the router
will attempt to send a gratuitous ARP for the IPv6 address, resulting
in an error:
2014-08-14 20:45:40.348 13428 ERROR neutron.agent.l3_agent [-] Failed sending gratuitous ARP:
Command: ['sudo', 'ip', 'netns', 'exec', 'qrouter-22fce1ff-a44d-4772-8538-3c2c2bbe0878', 'arping', '-A', '-U', '-I', 'qr-9b96bcfa-5d', '-c', '3', 'da00::1']
Exit code: 2
Stdout: ''
Stderr: 'arping: unknown host da00::1\n'
This is because IPv6 does not use ARP, but instead uses NDP (Neighbor
Discovery Protocol).
If a subnet is IPv6 we should not try to arping.
The offending code is in neutron/agent/l3_agent.py here:
487 def _send_gratuitous_arp_packet(self, ri, interface_name, ip_address):
488 if self.conf.send_arp_for_ha > 0:
489 arping_cmd = ['arping', '-A', '-U',
490 '-I', interface_name,
491 '-c', self.conf.send_arp_for_ha,
492 ip_address]
493 try:
494 if self.conf.use_namespaces:
495 ip_wrapper = ip_lib.IPWrapper(self.root_helper,
496 namespace=ri.ns_name())
497 ip_wrapper.netns.execute(arping_cmd, check_exit_code=True)
498 else:
499 utils.execute(arping_cmd, check_exit_code=True,
500 root_helper=self.root_helper)
501 except Exception as e:
502 LOG.error(_("Failed sending gratuitous ARP: %s"), str(e))
I've not looked closely enough at it to know for sure, but we can
probably key off of ip_version for the subnet in ex_gw_port and skip
_send_gratuitous_arp_packet if it's not 4.
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1357097/+subscriptions
Follow ups
References