Read that IBM article you referenced, it made a lot of things clear to me.

Sent from my iPhone

On Aug 17, 2012, at 5:54 AM, "Matthew Patton" <mpat...@inforelay.com> wrote:

> 'cloudVirBr' is hard-coded in 
> /usr/lib[64]/cloud/agent/scripts/vm/network/vnet/modifyvlan.sh in function 
> addVlan().
> 
> What I don't understand is how the script is even working. It does
> 
> vconfig add ethN V
> brctl addbr brV
> brctl addif brV ethN.V
> 
> Furthermore, in scripts/storage/qcow2/modifyvlan.sh (anyone looked at why 
> there are 3 different copies of this shell script?!?) it does the same thing 
> but using bonds.
> 
> But when I run thru the sequence by hand (eth or bond) it doesn't pass 
> traffic. The only way I get it to work is:
> 
> brctl addbr br
> brctl addif br ethN
> vconfig add ethN V
> ifconfig ethN.V <ipaddr> <netmask>
> 
> And I can define as many ethN.[1..9] as I like with all different VLAN IDs 
> and attach them to the single bridge. My way also works when adding a bond to 
> the bridge and adding as many VLAN tagged bonds as I like.
> 
> But the guest isn't receiving response packets to things like ARP. When I 
> sniff bond0 on the hypervisor I see the VLAN tag in the frame AS LONG AS in 
> the guest I configure ethN.V; as would be logical. The ARP reply also gets as 
> far as bond0 on the way back. Using tcpdump on interface 'vnet0' doesn't show 
> any packets going in either direction though they are transiting bond0 just 
> fine. I can see the ARP replies on bond0.N which is again as expected.
> 
> If I can sniff bond0, how come I can't sniff vnet0?
> There is something odd in the 'brctl showmacs <bridge>' output which probably 
> explains why vnet0 sees no packets.
> 
> The guest's MAC is 52:54:00:c9:8d:d1. It's on port #2, marked local=no and 
> eventually ages out. But there is another MAC on port 2 that is the same 
> except it starts with 'fe'. This one is marked local=yes and doesn't age out. 
> It seems this is the MAC given to the host-side of the tap. So I can 
> understand it being semi-permanent. So then why is the the guest's 
> (?private?) MAC address showing up in the bridge? If the ARP response packets 
> have the wrong (guest's private MAC) in them (and they do) that would explain 
> why it can't return to the guest since it "missed" the on-ramp that is the 
> hypervisor's end of the TUN interface.
> 
> 
> Looks like a mistake in the tap code that's forgetting to rewrite the MAC 
> value? Maybe because there is a VLAN tag in the frame?
> 
> 
> At first there were no "QEMU networks" defined since I had undefined the 
> default one since I wasn't interested in NAT.
> [root@kvm1b ~]# virsh net-list
> Name                 State      Autostart
> -----------------------------------------
> 
> But seeing as that might be a problem I defined one for bridging.
> <network>
>  <name>bridge-shared</name>
>  <uuid>0824e08b-bb0e-452a-e2c9-dcca52af2341</uuid>
>  <forward mode='bridge'/>
>  <bridge name='shared' />
> </network>
> 
> 
> Now I have a network
> [root@kvm1b networks]# virsh net-list
> Name                 State      Autostart
> -----------------------------------------
> bridge-shared        active     yes
> 
> 
> This is the interface section from my guest's XML.
>    <interface type='bridge'>
>      <mac address='52:54:00:c9:8d:d1'/>
>      <source bridge='shared'/>
>      <model type='virtio'/>
>      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 
> function='0x0'/>
>    </interface>
> 
> [root@kvm1b ~]# virsh domiflist test
> Interface  Type       Source     Model       MAC
> -------------------------------------------------------
> vnet0      bridge     shared     virtio      52:54:00:c9:8d:d1
> 
> [root@kvm1b networks]# virsh iface-list
> Name                 State      MAC Address
> --------------------------------------------
> bond0.39             active     00:25:90:4c:ba:92
> bond0.398            active     00:25:90:4c:ba:92
> eth2                 active     90:e2:ba:04:f6:28
> eth3                 active     90:e2:ba:04:f6:29
> lo                   active     00:00:00:00:00:00
> shared               active     00:25:90:4c:ba:92
> 
> and for good measure
> 
> [root@kvm1b networks]# virsh iface-dumpxml shared
> <interface type='bridge' name='shared'>
>  <protocol family='ipv6'>
>    <ip address='fe80::225:90ff:fe4c:ba92' prefix='64'/>
>  </protocol>
>  <bridge>
>    <interface type='bond' name='bond0'>
>      <bond>
>        <interface type='ethernet' name='eth0'>
>          <mac address='00:25:90:4c:ba:92'/>
>        </interface>
>        <interface type='ethernet' name='eth1'>
>          <mac address='00:25:90:4c:ba:92'/>
>        </interface>
>      </bond>
>    </interface>
>    <interface type='ethernet' name='vnet0'>
>      <mac address='fe:54:00:c9:8d:d1'/>
>    </interface>
>  </bridge>
> </interface>
> 
> [root@kvm1b networks]# virsh domifstat test vnet0
> vnet0 rx_bytes 44592
> vnet0 rx_packets 847
> vnet0 rx_errs 0
> vnet0 rx_drop 0
> vnet0 tx_bytes 2150
> vnet0 tx_packets 35
> vnet0 tx_errs 0
> vnet0 tx_drop 0
> 
> So you'd think something was getting back to the guest. I just don't know 
> what. tcpdump running inside the guest on eth0 shows nothing at all, just 
> like sniffing vnet0.
> 
> The MAC hitting the wire on the hypervisor's bond0 is still the guest's 
> private MAC and it seems the response packets don't know where to go once 
> they come back to the bridge.
> 
> 
> On a different note I ran across this: 
> http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/topic/liaat/liaatbptap.htm
> So QEMU has it's own bastard redefinition of the term "VLAN"? WTF!

Reply via email to