Comment 16 for bug 1585165

Revision history for this message
Luan Nguyen (nguyenhuuluan434-w) wrote :

Hi all,
More info about this problem, we view the code in the function send GARP when finish move VM (migrate, live-migration or resize) the command arping using option -A

def _arping(ns_name, iface_name, address, count):
    # Pass -w to set timeout to ensure exit if interface removed while running
    arping_cmd = ['arping', '-A', '-I', iface_name, '-c', count,
                  '-w', 1.5 * count, address]
    try:
        ip_wrapper = IPWrapper(namespace=ns_name)
        ip_wrapper.netns.execute(arping_cmd, check_exit_code=True)
    except Exception:
        msg = _LE("Failed sending gratuitous ARP "
                  "to %(addr)s on %(iface)s in namespace %(ns)s")
        LOG.exception(msg, {'addr': address,
                            'iface': iface_name,
                            'ns': ns_name})

with this option the destination host and all l3 agent in system will send ARP REPLY packets same:
14:01:52.781722 ARP, Reply 62.28.227.53 is-at fa:16:3e:da:0f:b3 (oui Unknown), length 28

but with my physical switch don't update ARP.

I think the step after finished move VM, the l3 agent need send 2 type of ARP
 + the first with option -A of arping command to send ARP REPLY packets.
 + the second with option -U of arping command to send ARP REQUEST (broadcast).

because depend on physical switch that accept type of ARP to update ARP table.

This problem occurs when we do some step below:
 + one floating ip attach to instance A
 + ping to floating ip ok.
 + detach this floating IP
 + attach this floating IP to instance B (on another compute-host with instance A)
 + ping floating fail until physical switch update (by manual do arping command with option -U or arp table on switch expire)

Thanks for helping,
Luan.