[ovs-discuss] surprising effects with exit v's drop

O Mahony, Billy billy.o.mahony at intel.com
Tue Jun 30 14:46:59 UTC 2015


Hi All,

I am getting very surprising (to me at least) effects with the following
flows installed.

I am seeing packets forwarded when I expect them to be dropped and dropped 
when I expect them to be forwarded.

Here is my flow table:

[14:22 ]$ ovs-ofctl -O OpenFlow13 dump-flows br0
OFPST_FLOW reply (OF1.3) (xid=0x2):
 cookie=0x0, duration=2.860s, table=0, n_packets=0, n_bytes=0, priority=1 actions=goto_table:1
 cookie=0x0, duration=2.845s, table=1, n_packets=0, n_bytes=0, priority=1,in_port=1 actions=write_actions(output:2),write_metadata:0x2,goto_table:2
 cookie=0x0, duration=2.834s, table=1, n_packets=0, n_bytes=0, priority=1,in_port=2 actions=write_actions(output:1),write_metadata:0x1,goto_table:2
 cookie=0x0, duration=2.815s, table=2, n_packets=0, n_bytes=0, priority=1 actions=exit

For a packet ingressing on port1 I'm expecting it to be egressed on port2.
This does not happen however (using a hardware traffic generator) and the 
packet is dropped. ofproto/trace seems to expect this to happen as it says 
"Datapath actions: drop" at the end of its output:

[14:22 ]$ ovs-appctl  -t /usr/local/var/run/openvswitch/ovs-vswitchd.61474.ctl ofproto/trace br0  in_port=1
Bridge: br0
Flow: in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:00,dl_dst=00:00:00:00:00:00,dl_type=0x0000

Rule: table=0 cookie=0 priority=1
OpenFlow actions=goto_table:1

        Resubmitted flow: in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:00,dl_dst=00:00:00:00:00:00,dl_type=0x0000
        Resubmitted regs: reg0=0x0 reg1=0x0 reg2=0x0 reg3=0x0 reg4=0x0 reg5=0x0 reg6=0x0 reg7=0x0
        Resubmitted  odp: drop
        Resubmitted megaflow: recirc_id=0,in_port=1,dl_type=0x0000
        Rule: table=1 cookie=0 priority=1,in_port=1
        OpenFlow actions=write_actions(output:2),write_metadata:0x2,goto_table:2

                Resubmitted flow: metadata=0x2,in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:00,dl_dst=00:00:00:00:00:00,dl_type=0x0000
                Resubmitted regs: reg0=0x0 reg1=0x0 reg2=0x0 reg3=0x0 reg4=0x0 reg5=0x0 reg6=0x0 reg7=0x0
                Resubmitted  odp: drop
                Resubmitted megaflow: recirc_id=0,in_port=1,dl_type=0x0000
                Rule: table=2 cookie=0 priority=1
                OpenFlow actions=exit

Final flow: metadata=0x2,in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:00,dl_dst=00:00:00:00:00:00,dl_type=0x0000
Megaflow: recirc_id=0,in_port=1,dl_type=0x0000
Datapath actions: drop      <<<< SURPRISE!

If I then replace the action in table 2 to 'exit', packets from port1 are indeed
egressed on port2 (again verified by hardware packet generator) and apparently
as predicted by ofproto/trace.

[14:22 ]$ ovs-ofctl -O OpenFlow13  add-flow br0 "table=2,priority=1 actions=drop"
[14:25 ]$ ovs-appctl  -t /usr/local/var/run/openvswitch/ovs-vswitchd.61474.ctl ofproto/trace br0  in_port=1
Bridge: br0
Flow: in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:00,dl_dst=00:00:00:00:00:00,dl_type=0x0000

Rule: table=0 cookie=0 priority=1
OpenFlow actions=goto_table:1

        Resubmitted flow: in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:00,dl_dst=00:00:00:00:00:00,dl_type=0x0000
        Resubmitted regs: reg0=0x0 reg1=0x0 reg2=0x0 reg3=0x0 reg4=0x0 reg5=0x0 reg6=0x0 reg7=0x0
        Resubmitted  odp: drop
        Resubmitted megaflow: recirc_id=0,in_port=1,dl_type=0x0000
        Rule: table=1 cookie=0 priority=1,in_port=1
        OpenFlow actions=write_actions(output:2),write_metadata:0x2,goto_table:2

                Resubmitted flow: metadata=0x2,in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:00,dl_dst=00:00:00:00:00:00,dl_type=0x0000
                Resubmitted regs: reg0=0x0 reg1=0x0 reg2=0x0 reg3=0x0 reg4=0x0 reg5=0x0 reg6=0x0 reg7=0x0
                Resubmitted  odp: drop
                Resubmitted megaflow: recirc_id=0,in_port=1,dl_type=0x0000
                Rule: table=2 cookie=0 priority=1
                OpenFlow actions=drop

Final flow: metadata=0x2,in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:00,dl_dst=00:00:00:00:00:00,dl_type=0x0000
Megaflow: recirc_id=0,in_port=1,dl_type=0x0000
Datapath actions: 3


This is all pretty surprising to me though obviously there could be some
subtleties I am missing. I'd appreciate and thoughts or tips from the
community.

Finally, I am using dpdk enabled NICs.

[14:25 ]$ ovs-ofctl show br0
OFPT_FEATURES_REPLY (xid=0x2): dpid:000090e2ba69d620
n_tables:254, n_buffers:256
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst
 1(dpdk0): addr:90:e2:ba:69:d6:20
     config:     0
     state:      0
     current:    10GB-FD
     supported:  1GB-HD 1GB-FD 10GB-FD COPPER FIBER AUTO_PAUSE
     speed: 10000 Mbps now, 10000 Mbps max
 2(dpdk1): addr:90:e2:ba:69:d6:21
     config:     0
     state:      0
     current:    10GB-FD
     supported:  1GB-HD 1GB-FD 10GB-FD COPPER FIBER AUTO_PAUSE
     speed: 10000 Mbps now, 10000 Mbps max
 LOCAL(br0): addr:90:e2:ba:69:d6:20
     config:     PORT_DOWN
     state:      LINK_DOWN
     current:    10MB-FD COPPER
     speed: 10 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0
[14:38 ]$ ovs-vsctl show
290a84b5-431a-4f1f-ac17-df82abd72bba
    Bridge "br0"
        Port "dpdk0"
            Interface "dpdk0"
                type: dpdk
        Port "br0"
            Interface "br0"
                type: internal
        Port "dpdk1"
            Interface "dpdk1"
                type: dpdk
[14:38 ]$                                                                                                                  


Thanks,
Billy O'Mahony.



More information about the discuss mailing list