[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [linux-4.1 test] 63030: regressions - FAIL
On Thu, 2015-10-22 at 15:41 +0100, Ian Jackson wrote: > Ian Campbell writes ("Re: [Xen-devel] [linux-4.1 test] 63030: regressions > - FAIL"): > > On Thu, 2015-10-22 at 12:03 +0100, Wei Liu wrote: > > > No, vif-bridge script has two runes for off-lining a vif > > > brctl delif $bridge $vif > > > ifconfig $vif down > > > > > > Neither of these causes cache entry to be flushed. > > > > $vif disappearing when netback finally deletes the device will though. > > Or > > it should/used to. > > > > Maybe this is happening after the new guest has started and confusing > > things somewhere? > > > There is confusion here. Someone used the phrase `arp cache'. But > there are actually two relevant runtime of MAC addresses: > > * Each host has a neighbour database mapping IPv4 addresses to MAC > addresses. This is used when trying to pass on an IPv4 datagram to > a host on the same ethernet (same broadcast domain). This database > is normally referred to as an `ARP cache'. Addresses are added to > the table by both ARP requests and responses, and also in many > implementations entries are refreshed by ordinary traffic. > > In the test colo, the osstest VM is on the same (bridged) ethernet > as the test box so, the relevant arp cache is the one in the > osstest controller's kernel: the osstest controller wants to send > an ssh SYN to the guest, and needs to construct an ethernet frame > with the guest's MAC address. This is done using the osstest > controller's ARP cache entry. > > The osstest controller's ARP cache is unaffected by the migration. > ARP cache entries do time out but only after a number of minutes, > and the guest will have been spoken to recently by the controller. > I have no reason to think that lack of an entry for the guest's > IPv4 address in the osstest controller's ARP cache is relevant. I was talking about this kind of ARP cache, but the one in the (single, since it is localhost migrate) dom0. That's because I had misread Wei's earlier script as sshing to the guest from dom0, not from his workstation (the "controller" in his scenario). Sorry for the confusion. FWIW I believe the source dom0's ARP entry will be dropped when the VIF device is destroyed. > * Each bridge has a forwarding database mapping MAC addresses to its > outbound links. This is normally referred to as the bridge > (switch) `learning', and the table as the `MAC address table'. MAC > addresses are learned when switch sees incoming frames. When the > bridge receives a frame for a destination MAC address for which it > has no entry, it forwards the frame out of all its ports. Special > considerations apply to broadcast and multicast MAC addresses. > None of this involves IPv4 or IPv6 addresses. > > In the test colo in the migration test case, there are up to four > relevant bridges: > > * The source test box's dom0's software bridge. > This has (logically speaking) three `ports': > - the test box's physical network interface > - the dom0 itself > - the vif corresponding to the outbound guest > - in a single-host test, the vif corresponding to > the inbound guest > > * The physical switch connecting the test boxes and the VM host > (newcastle.test-lab.xenproject.org). This has two or three > relevant physical ports, for the two or three relevant > physical machines. (In fact there are VLANs involved but this > is not relevant.) > > * The software bridge in newcastle. This has two relevant > ports: > - newcastle's physical interface > - the vif serving the osstest VM > > * In a two-machine test, rather than a localhost test, the > destination test box's dom0's software bridge, which parallels > the source test box's. > > When the guest stops running on the source (with its vif torn > down), and starts running on the destination: > > (a) The source test box software bridge should lose its MAC > address table entry for the guest, because the corresponding > port (the vif) is removed. However I am not sure whether this > actually happens immediately in Linux. For Linux bridging I believe it happens at the latest when the vif device is deleted, or possibly when it is removed from the bridge (i.e. earlier). IOW I do not believe that Linux bridge remembers old ports. openvswitch might, I don't recall, but I don't think that is in the picture here. > It may be that instead the MAC address table entry for the > guest remains present but points to the dead vif. In this > case incoming frames from the wire, the for the guest will be > dropped. > > (b) The destination test box (if different) will come up without a > MAC address entry for the guest. Given the above I think even if it is the same as the source box, since it will have been forgotten by the "source" box when the original VIF disappeared. > If a frame for the guest's > MAC address arrives at the physical interface, it will be > forwarded to all of the other interfaces enslaved to the > bridge: ie, to the dom0 (which will ignore it because it has > the wrong destination MAC address) and to the newly-created > guest. > > (c) In a two-host test, the physical switch connecting the two > test boxes will retain the wrong learnt switch port. It will > forward frames for the guest (only) to the source test box, > rather than the destination test box, where they will be > discarded. > > It is (a) and (c) that the gratuitous ARP is supposed to fix. > > The guest is supposed to send, when its interface comes up after > migration, a single broadcast gratuitous ARP response containing > its own IPv4 and MAC addresses. > > The IPv4 address in this message is irrelevant. > > The purpose is to update the MAC address tables in all the switches > in the network. Each switch which receives the gratuitous ARP > updates its MAC address table to map the guest's MAC address to the > port on which the gratuitous ARP was recevied. > > If this happens, then frames from everywhere on the ethernet, to > the guest, will be properly delivered. If it doesn't then there > may be lost packets and/or low-level timeouts of various kinds. > > > Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |