On Sun, May 4, 2014 at 3:53 PM, Stephen Hemminger <step...@networkplumber.org> wrote: > On Mon, 5 May 2014 07:29:34 +1000 > Jon Maxwell <jmaxwel...@gmail.com> wrote: > >> There has been a number incidents recently where customers running KVM have >> reported that VM hosts on different Hypervisors are unreachable. Based on >> pcap traces we found that the bridge was broadcasting the ARP request out >> onto the network. However some NICs have an inbuilt switch which on >> occasions were broadcasting the VMs ARP request back through the physical >> NIC on the Hypervisor. This resulted in the bridge flapping ports and >> incorrectly learning that the VMs mac address was external. As a result the >> ARP reply was directed back onto the external network and VM never updated >> it's ARP cache. This patch will detect port flapping and log a message so >> that this condition can be detected earlier. >> >> Signed-off-by: Jon Maxwell <jmaxw...@redhat.com> >> --- >> net/bridge/br_fdb.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c >> index 9203d5a..c08607b 100644 >> --- a/net/bridge/br_fdb.c >> +++ b/net/bridge/br_fdb.c >> @@ -507,6 +507,13 @@ void br_fdb_update(struct net_bridge *br, struct >> net_bridge_port *source, >> source->dev->name); >> } else { >> /* fastpath: update of existing entry */ >> + if (source->port_no != fdb->dst->port_no && >> + net_ratelimit()) >> + br_warn(br, "Port flapping detected source >> entry dev = %s mac = %pM, port_no = %d\n existing entry dev = %s mac = %pM, >> port_no = %d\n", >> + source->dev->name, >> + addr, source->port_no, >> + fdb->dst->dev->name, addr, >> + fdb->dst->port_no); >> fdb->dst = source; >> fdb->updated = jiffies; >> if (unlikely(added_by_user)) > > Ok, but please shorten the message to a single line without excess wordage. > Plus flapping to mean means link going up and down. Maybe use same message > as BSD?
Isn't this normal mac move? Any message will be confusing. VMs can spoof their src macs and trigger this warning. I don't think it's worth adding it just to debug the learning on the external interface. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/