[ovs-discuss] why is ovs for forwarding my packet?

Ronald van der Pol Ronald.vanderPol at rvdp.org
Fri Sep 12 19:10:27 UTC 2014


This is my setup (part of OpenStack compute node):

   eth1    +---------+  phy-br-p2p2
A  --------+ br-p2p2 +---------------  B
           +---------+

The problem is this. B sends an ARP request to A, A answers with
an ARP reply. I see this reply packet on eth1, but not on phy-br-p2p2.
It is using VLAN 3810.

# ovs-vsctl show
cfac43e4-1473-4a44-9919-6c6e9e17e3c2
    Bridge "br-p2p2"
        Port "br-p2p2"
            Interface "br-p2p2"
                type: internal
        Port "eth1"
            trunks: [3810, 3811, 3812, 3813, 3814, 3815, 3816, 3817, 3818, 3819]
            Interface "eth1"
        Port "p2p2"
            Interface "p2p2"
        Port "phy-br-p2p2"
            Interface "phy-br-p2p2"

# tshark -c2 -n -i eth1 arp
Capturing on 'eth1'
  1   0.000000 fa:16:3e:6a:6f:77 -> ff:ff:ff:ff:ff:ff ARP 46 Who has 10.10.1.10?  Tell 10.10.130.100
  2   0.130105 00:22:19:2c:39:f1 -> fa:16:3e:6a:6f:77 ARP 64 10.10.1.10 is at 00:22:19:2c:39:f1

# tshark -c5 -n -i phy-br-p2p2 arp
Capturing on 'phy-br-p2p2'
  1   0.000000 fa:16:3e:6a:6f:77 -> ff:ff:ff:ff:ff:ff ARP 46 Who has 10.10.1.10?  Tell 10.10.130.100
1   2   1.001544 fa:16:3e:6a:6f:77 -> ff:ff:ff:ff:ff:ff ARP 46 Who has 10.10.1.10?  Tell 10.10.130.100
2   3   2.003346 fa:16:3e:6a:6f:77 -> ff:ff:ff:ff:ff:ff ARP 46 Who has 10.10.1.10?  Tell 10.10.130.100
3   4   3.999447 fa:16:3e:6a:6f:77 -> ff:ff:ff:ff:ff:ff ARP 46 Who has 10.10.1.10?  Tell 10.10.130.100
4   5   5.000971 fa:16:3e:6a:6f:77 -> ff:ff:ff:ff:ff:ff ARP 46 Who has 10.10.1.10?  Tell 10.10.130.100

The mac forwarding table looks OK:
# ovs-appctl fdb/show br-p2p2
 port  VLAN  MAC                Age
   19   101  fa:16:3e:36:56:3e  157
   19    12  fa:16:3e:84:c9:0c  137
    1    11  00:22:0d:84:88:00  131
   19    12  fa:16:3e:9b:96:d9   41
    1    12  fa:16:3e:93:c1:90    2
   19    12  fa:16:3e:d8:c9:62    2
   19  3810  fa:16:3e:6a:6f:77    1
    1    11  00:0e:39:d8:30:00    1
    1    11  00:00:0c:9f:f0:00    1
    1    11  00:05:73:a0:00:01    1


# ovs-ofctl show br-p2p2
OFPT_FEATURES_REPLY (xid=0x2): dpid:00000002c9ee01d0
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(p2p2): addr:00:25:90:c0:61:e1
     config:     0
     state:      0
     current:    1GB-FD COPPER AUTO_NEG
     advertised: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER AUTO_NEG AUTO_PAUSE
     supported:  10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER AUTO_NEG AUTO_PAUSE
     speed: 1000 Mbps now, 1000 Mbps max
 19(phy-br-p2p2): addr:f6:a7:68:64:ad:6c
     config:     0
     state:      0
     current:    10GB-FD COPPER
     speed: 10000 Mbps now, 0 Mbps max
 21(eth1): addr:00:02:c9:ee:01:d0
     config:     0
     state:      0
     current:    10GB-FD COPPER
     advertised: 10GB-FD COPPER
     supported:  10GB-FD COPPER
     speed: 10000 Mbps now, 10000 Mbps max
 LOCAL(br-p2p2): addr:00:02:c9:ee:01:d0
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0
root at lithium:~#

And a trace like right too:

# ovs-appctl ofproto/trace br-p2p2 in_port=21 fa163e6a6f770022192c39f181000ee2080600010800060400020022192c39f10a0a010afa163e6a6f770a0a8264000000190000000000000000000000000000
Packet: arp,metadata=0,in_port=0,dl_vlan=3810,dl_vlan_pcp=0,dl_src=00:22:19:2c:39:f1,dl_dst=fa:16:3e:6a:6f:77,arp_spa=10.10.1.10,arp_tpa=10.10.130.100,arp_op=2,arp_sha=00:22:19:2c:39:f1,arp_tha=fa:16:3e:6a:6f:77
Flow: arp,metadata=0,in_port=21,dl_vlan=3810,dl_vlan_pcp=0,dl_src=00:22:19:2c:39:f1,dl_dst=fa:16:3e:6a:6f:77,arp_spa=10.10.1.10,arp_tpa=10.10.130.100,arp_op=2,arp_sha=00:22:19:2c:39:f1,arp_tha=fa:16:3e:6a:6f:77
Rule: table=0 cookie=0 priority=1
OpenFlow actions=NORMAL
forwarding to learned port

Final flow: unchanged
Relevant fields: skb_priority=0,arp,in_port=21,dl_vlan=3810,dl_src=00:22:19:2c:39:f1,dl_dst=fa:16:3e:6a:6f:77,nw_frag=no
Datapath actions: 7
root at lithium:~#

# ovs-dpctl show
system at ovs-system:
	lookups: hit:120650924 missed:1003049 lost:0
	flows: 25
	port 0: ovs-system (internal)
	port 1: p2p2
	port 2: br-p2p2 (internal)
	port 5: br-int (internal)
	port 6: int-br-p2p2
	port 7: phy-br-p2p2
	port 8: qvoee503507-d4
	port 9: qvoec91ac92-65
	port 10: qvof3111da3-1e
	port 11: qvo91458f1d-7f
	port 12: qvo3104d398-a1
	port 13: qvoede027d2-a9
	port 14: qvo0e6ce64d-e7
	port 17: eth1
	port 22: qvo38feb2e2-e7
	port 23: qvoa516227f-71
	port 24: qvob354b801-2d
	port 26: int-br-eth1


# ovs-ofctl dump-flows br-p2p2
NXST_FLOW reply (xid=0x4):
 cookie=0x0, duration=79713.54s, table=0, n_packets=1299, n_bytes=448854, idle_age=201, hard_age=65534, priority=4,in_port=19,dl_vlan=4 actions=mod_vlan_vid:101,NORMAL
  cookie=0x0, duration=79715.629s, table=0, n_packets=0, n_bytes=0, idle_age=65534, hard_age=65534, priority=4,in_port=19,dl_vlan=3 actions=mod_vlan_vid:103,NORMAL
   cookie=0x0, duration=79717.208s, table=0, n_packets=57439, n_bytes=9955852, idle_age=0, hard_age=65534, priority=4,in_port=19,dl_vlan=1 actions=mod_vlan_vid:12,NORMAL
    cookie=0x0, duration=79716.751s, table=0, n_packets=12689, n_bytes=537550, idle_age=0, hard_age=65534, priority=4,in_port=19,dl_vlan=2 actions=mod_vlan_vid:3810,NORMAL
     cookie=0x0, duration=79718.735s, table=0, n_packets=8, n_bytes=648, idle_age=65534, hard_age=65534, priority=2,in_port=19 actions=drop
      cookie=0x0, duration=79719.402s, table=0, n_packets=1851946, n_bytes=368031158, idle_age=0, hard_age=65534, priority=1 actions=NORMAL

So it's looks like packets are forwarded to phy-br-p2p2, but I don't see
them with tshark on phy-br-p2p2 or the other side of that veth.

How can I further debug what is going on?

This is "Ubuntu 14.04.1 LTS" with:
# ovs-vswitchd -V
ovs-vswitchd (Open vSwitch) 2.0.1
Compiled Feb 23 2014 14:42:34
OpenFlow versions 0x1:0x1

	rvdp



More information about the discuss mailing list