[ovs-discuss] OVS not forwarding packets to port

Chris Picton chris at picton.nom.za
Tue Mar 17 20:17:03 UTC 2015


Hi list

I have been using openvswitch very basically for a while, and am 
experiencing a problem (which surfaced after an upgrade from version 
1.2.2.10448 to 2.3.0) which only happens intermittently, often after 
migrating VMs or restarting VMS.

I have a KVM server running centos6, openvswitch 2.3.0  I have an issue 
where two VMs, both with interfaces tagged with vlan 3 are behaving 
differently.  OVS forwards packets to vm2, but not vm1.

When I ping from the guests to an external host (to initiate ARP 
packets), I see the following traffic flows.  Below, I am tcpdumping on 
the tap interface, the bond (bondV) connecting to a physical switch, and 
the destination physical server.

Non-working guest vm1 (host tap interface vnet0, attached to ovs with tag=3)
ovs vnet0: 21:40:06.853187 52:54:00:14:54:c6 > ff:ff:ff:ff:ff:ff, 
ethertype ARP (0x0806), length 42: Request who-has 10.202.3.250 tell 
10.202.3.201, length 28
ovs bondV: 21:40:06.853200 52:54:00:14:54:c6 > ff:ff:ff:ff:ff:ff, 
ethertype 802.1Q (0x8100), length 46: vlan 3, p 0, ethertype ARP, 
Request who-has 10.202.3.250 tell 10.202.3.201, length 28
phys vlan3: 21:40:06.859649 52:54:00:14:54:c6 > ff:ff:ff:ff:ff:ff, 
ethertype ARP (0x0806), length 56: arp who-has 10.202.3.250 tell 
10.202.3.201
phys vlan3: 21:40:06.859656 00:15:17:91:05:4c > 52:54:00:14:54:c6, 
ethertype ARP (0x0806), length 42: arp reply 10.202.3.250 is-at 
00:15:17:91:05:4c
ovs bondV: 21:40:06.853285 00:15:17:91:05:4c > 52:54:00:14:54:c6, 
ethertype 802.1Q (0x8100), length 60: vlan 3, p 0, ethertype ARP, Reply 
10.202.3.250 is-at 00:15:17:91:05:4c, length 42
ovs vnet0: NOTHING

Working guest vm2 (host tap interface veth-carbon1-3, attached to ovs 
with tag=3)
ovs veth-carbon1-3:  21:54:12.611041 52:54:00:60:29:8c > 
ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 
10.202.3.250 tell 10.202.3.91, length 28
ovs bondV: 21:54:12.611100 52:54:00:60:29:8c > ff:ff:ff:ff:ff:ff, 
ethertype 802.1Q (0x8100), length 46: vlan 3, p 0, ethertype ARP, 
Request who-has 10.202.3.250 tell 10.202.3.91, length 28
phys vlan3: 21:54:12.606258 52:54:00:60:29:8c > ff:ff:ff:ff:ff:ff, 
ethertype ARP (0x0806), length 56: arp who-has 10.202.3.250 tell 10.202.3.91
phys vlan3: 21:54:12.606264 00:15:17:91:05:4c > 52:54:00:60:29:8c, 
ethertype ARP (0x0806), length 42: arp reply 10.202.3.250 is-at 
00:15:17:91:05:4c
ovs bondV: 21:54:12.611189 00:15:17:91:05:4c > 52:54:00:60:29:8c, 
ethertype 802.1Q (0x8100), length 60: vlan 3, p 0, ethertype ARP, Reply 
10.202.3.250 is-at 00:15:17:91:05:4c, length 42
ovs veth-carbon1-3: 21:54:12.611242 00:15:17:91:05:4c > 
52:54:00:60:29:8c, ethertype ARP (0x0806), length 56: Reply 10.202.3.250 
is-at 00:15:17:91:05:4c, length 42

At layer3, I can use the 'ip route get *' commands to determine how the 
kernel will route a packet.  Is there any equivalent command to inspect 
the ovs behaviour.  I would like to ask ovs: 'If I send a packet with 
src mac 00:15:17:91:05:4c which came in on interface bondV tagged with 
vlan 3, destined to mac 52:54:00:60:29:8c, what port would it be 
forwarded to?'

I can see from the outputs below that the mac table is correct, and the 
mac address of vm1 is on ovs port 6, which is vnet0, which is the 
correct interface.  What else can I use to troubleshoot why the arp 
replies are actually not forwarding to vnet0?

Many Thanks

Chris


  # ovs-appctl fdb/show vbr0 | egrep 
'port|00:15:17:91:05:4c|52:54:00:14:54:c6|52:54:00:60:29:8c'
  port  VLAN  MAC                Age
     1     3  00:15:17:91:05:4c    1
     1     4  00:15:17:91:05:4c    1
     6     3  52:54:00:14:54:c6    1
     5     3  52:54:00:60:29:8c    1
     1     1  00:15:17:91:05:4c    0

# ovs-ofctl show vbr0 | sed -n '/^[^ ]/p; 
/\(vbr0\|vnet0\|veth-car\|bondV\)/,/speed/p'
OFPT_FEATURES_REPLY (xid=0x2): dpid:0000782bcb5ab160
n_tables:254, n_buffers:256
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: OUTPUT SET_VLAN_VID SET_VLAN_PCP STRIP_VLAN SET_DL_SRC 
SET_DL_DST SET_NW_SRC SET_NW_DST SET_NW_TOS SET_TP_SRC SET_TP_DST ENQUEUE
  1(bondV): addr:78:2b:cb:5a:b1:60
      config:     0
      state:      0
      current:    1GB-FD
      speed: 1000 Mbps now, 0 Mbps max
  5(veth-carbon1-3): addr:fe:54:00:60:29:8c
      config:     0
      state:      0
      current:    10MB-FD COPPER
      speed: 10 Mbps now, 0 Mbps max
  6(vnet0): addr:fe:54:00:14:54:c6
      config:     0
      state:      0
      current:    10MB-FD COPPER
      speed: 10 Mbps now, 0 Mbps max
  LOCAL(vbr0): addr:78:2b:cb:5a:b1:60
      config:     0
      state:      0
      speed: 0 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0

# I have removed many ports below which are not relevant to this problem
  # ovs-vsctl show
435fb9ac-5b13-4204-ad4a-e726aa5cd06b
     Bridge "vbr0"
         Port "vbr0"
             Interface "vbr0"
                 type: internal
         Port "vnet0"
             tag: 3
             Interface "vnet0"
         Port bondV
             Interface bondV
         Port "vlan1"
             tag: 1
             Interface "vlan1"
                 type: internal
         Port "veth-carbon1-3"
             tag: 3
             Interface "veth-carbon1-3"
     ovs_version: "2.3.0"





More information about the discuss mailing list