← Back to team overview

yahoo-eng-team team mailing list archive

[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