diff mbox

[ovs-dev,v2,12/12] work on packet aware test

Message ID AM2PR07MB1042F82DAA614263992EB1368AC50@AM2PR07MB1042.eurprd07.prod.outlook.com
State Superseded
Headers show

Commit Message

Zoltan Balogh June 20, 2017, 4:27 p.m. UTC
From: Jan Scheurich <jan.scheurich@ericsson.com>

Re-introduced packet-type-aware unit tests

Reverted test with triangular bridge setup to using patch ports to
avoid dependency on veth ports and root privilidges.

Adapted to changes in Ben's ptap series. Dependent on patches for
using port names in datapath flows.

Signed-off-by: Ben Pfaff <blp@ovn.org>
Signed-off-by: Jan Scheurich <jan.scheurich@ericsson.com>
---
 tests/packet-type-aware.at | 342 ++++++++++++++++++++-------------------------
 1 file changed, 155 insertions(+), 187 deletions(-)
diff mbox

Patch

diff --git a/tests/packet-type-aware.at b/tests/packet-type-aware.at
index 0aaeffa..49dcc60 100644
--- a/tests/packet-type-aware.at
+++ b/tests/packet-type-aware.at
@@ -33,10 +33,6 @@  AT_CLEANUP
 
 AT_SETUP([ptap - triangle bridge setup with L2 and L3 GRE tunnels])
 
-# Always skip this test, for now, until it is revised to use patch
-# ports in place of veth devices.
-AT_SKIP_IF([:])
-
 ########################
 # GRE tunneling test setup for PTAP bridge
 #
@@ -61,126 +57,108 @@  AT_SKIP_IF([:])
 #       +--------------------------------------------------------+
 #"
 #   GRE tunnel ports:
-#      No     Bridge      Name        Type        Remote bridge & ports
+#      No     Bridge      Name        Packet-type Remote bridge & ports
 #     -----------------------------------------------------------------------
-#      1020   br-in1      gre-12      l2          br-in2 2010 (versatile)
-#      1021   br-in1      gre-12_l3   l3                same
-#      1030   br-in1      gre-13      l2          br-in3 3010 (l2)
-#      2010   br-in2      gre-21      versatile   br-in1 1020 (l2), 1021 (l3)
-#      2030   br-in2      gre-13      versatile   br-in3 3020 (l2), 3021 (l3)
-#      3010   br-in1      gre-31      l2          br-in1 1030 (l2)
-#      3020   br-in1      gre-32      l2          br-in2 2010 (versatile)
-#      3021   br-in1      gre-32_l3   l3                same
-
-
-OVS_VSWITCHD_START([])
+#      1020   br-in1      gre-12      legacy-l2   br-in2 2010 (ptap)
+#      1021   br-in1      gre-12_l3   legacy-l3         same
+#      1030   br-in1      gre-13      legacy-l2   br-in3 3010 (l2)
+#      2010   br-in2      gre-21      ptap        br-in1 1020 (l2), 1021 (l3)
+#      2030   br-in2      gre-13      ptap        br-in3 3020 (l2), 3021 (l3)
+#      3010   br-in1      gre-31      legacy-l2   br-in1 1030 (l2)
+#      3020   br-in1      gre-32      legacy-l2   br-in2 2010 (ptap)
+#      3021   br-in1      gre-32_l3   legacy-l3         same
 
 HWADDR_BRP1=aa:55:00:00:00:01
 HWADDR_BRP2=aa:55:00:00:00:02
 HWADDR_BRP3=aa:55:00:00:00:03
 
-dnl Create veth ports to connect br0 with br-p1, br-p2 and br-p3
-AT_CHECK([ip link add p1-0 type veth peer name p0-1])
-AT_CHECK([ip link set p1-0 up])
-AT_CHECK([ip link set p0-1 up])
-AT_CHECK([ip link set dev p1-0 mtu 3300])
-AT_CHECK([ip link set dev p0-1 mtu 3300])
-on_exit 'ip link del p0-1'
-
-AT_CHECK([ip link add p2-0 type veth peer name p0-2])
-AT_CHECK([ip link set p2-0 up])
-AT_CHECK([ip link set p0-2 up])
-AT_CHECK([ip link set dev p2-0 mtu 3300])
-AT_CHECK([ip link set dev p0-2 mtu 3300])
-on_exit 'ip link del p0-2'
-
-AT_CHECK([ip link add p3-0 type veth peer name p0-3])
-AT_CHECK([ip link set p3-0 up])
-AT_CHECK([ip link set p0-3 up])
-AT_CHECK([ip link set dev p3-0 mtu 3300])
-AT_CHECK([ip link set dev p0-3 mtu 3300])
-on_exit 'ip link del p0-3'
+OVS_VSWITCHD_START([dnl
+    -- add-br br-in1 \
+    -- set bridge br-in1 datapath_type=dummy fail-mode=secure \
+    -- add-br br-in2 \
+    -- set bridge br-in2 datapath_type=dummy fail-mode=secure \
+    -- add-br br-in3 \
+    -- set bridge br-in3 datapath_type=dummy fail-mode=secure \
+    -- add-br br-p1 -- \
+    -- set bridge br-p1 datapath_type=dummy fail-mode=secure other-config:hwaddr=\"$HWADDR_BRP1\" \
+    -- add-br br-p2 -- \
+    -- set bridge br-p2 datapath_type=dummy fail-mode=secure other-config:hwaddr=\"$HWADDR_BRP2\" \
+    -- add-br br-p3 -- \
+    -- set bridge br-p3 datapath_type=dummy fail-mode=secure other-config:hwaddr=\"$HWADDR_BRP3\" \
+    -- add-port br-p1 p1-0 \
+    -- set interface p1-0 type=patch options:peer=p0-1 ofport_request=2 \
+    -- add-port br-p2 p2-0 \
+    -- set interface p2-0 type=patch options:peer=p0-2 ofport_request=2 \
+    -- add-port br-p3 p3-0 \
+    -- set interface p3-0 type=patch options:peer=p0-3 ofport_request=2 \
+    -- add-port br0 p0-1 \
+    -- set interface p0-1 type=patch options:peer=p1-0 ofport_request=10 \
+    -- add-port br0 p0-2 \
+    -- set interface p0-2 type=patch options:peer=p2-0 ofport_request=20 \
+    -- add-port br0 p0-3 \
+    -- set interface p0-3 type=patch options:peer=p3-0 ofport_request=30 \
+    -- add-port br-in1 gre12 \
+    -- set interface gre12 type=gre options:remote_ip=10.0.0.2 \
+                           ofport_request=1020 \
+    -- add-port br-in1 gre12_l3 \
+    -- set interface gre12_l3 type=gre options:remote_ip=10.0.0.2 \
+                           ofport_request=1021 options:packet_type=legacy_l3 \
+    -- add-port br-in1 gre13 \
+    -- set interface gre13 type=gre options:remote_ip=10.0.0.3 \
+                           ofport_request=1030 \
+    -- add-port br-in2 gre21 \
+    -- set interface gre21 type=gre options:remote_ip=20.0.0.1 \
+                           ofport_request=2010 options:packet_type=ptap \
+    -- add-port br-in2 gre23 \
+    -- set interface gre23 type=gre options:remote_ip=20.0.0.3 \
+                           ofport_request=2030 options:packet_type=ptap \
+    -- add-port br-in3 gre31 \
+    -- set interface gre31 type=gre options:remote_ip=30.0.0.1 \
+                           ofport_request=3010 \
+    -- add-port br-in3 gre32 \
+    -- set interface gre32 type=gre options:remote_ip=30.0.0.2 \
+                           ofport_request=3020 \
+    -- add-port br-in3 gre32_l3 \
+    -- set interface gre32_l3 type=gre options:remote_ip=30.0.0.2 \
+                           ofport_request=3021 options:packet_type=legacy_l3
+])
 
 # Setup bridge infrastructure
 AT_CHECK([
-    ovs-vsctl add-br br-in1 -- \
-        set bridge br-in1 datapath_type=dummy fail-mode=standalone
-    ovs-vsctl add-br br-in2 -- \
-        set bridge br-in2 datapath_type=dummy fail-mode=standalone other-config:packet-type-aware=true
-    ovs-vsctl add-br br-in3 -- \
-        set bridge br-in3 datapath_type=dummy fail-mode=standalone
-    ovs-vsctl add-br br-p1 -- \
-        set bridge br-p1 datapath_type=dummy fail-mode=standalone other-config:hwaddr=$HWADDR_BRP1
-    ovs-vsctl add-br br-p2 -- \
-        set bridge br-p2 datapath_type=dummy fail-mode=standalone other-config:hwaddr=$HWADDR_BRP2
-    ovs-vsctl add-br br-p3 -- \
-        set bridge br-p3 datapath_type=dummy fail-mode=standalone other-config:hwaddr=$HWADDR_BRP3
-
-    ovs-vsctl add-port br-p1 p1-0 -- set interface p1-0 ofport_request=2
-    ovs-vsctl add-port br-p2 p2-0 -- set interface p2-0 ofport_request=2
-    ovs-vsctl add-port br-p3 p3-0 -- set interface p3-0 ofport_request=2
-    ovs-vsctl add-port br0 p0-1 -- set interface p0-1 ofport_request=10
-    ovs-vsctl add-port br0 p0-2 -- set interface p0-2 ofport_request=20
-    ovs-vsctl add-port br0 p0-3 -- set interface p0-3 ofport_request=30
-
     # Populate the MAC table of br0
-    ovs-ofctl del-flows br0
-    ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP1,actions=10
-    ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP2,actions=20
-    ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP3,actions=30
-
-    ovs-ofctl del-flows br-in1
-    ovs-ofctl del-flows br-in2
-    ovs-ofctl del-flows br-in3
-    ovs-ofctl del-flows br-p1
-    ovs-ofctl del-flows br-p2
+    ovs-ofctl del-flows br0 &&
+    ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP1,actions=10 &&
+    ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP2,actions=20 &&
+    ovs-ofctl add-flow br0 dl_dst=$HWADDR_BRP3,actions=30 &&
+
+    ovs-ofctl del-flows br-in1 &&
+    ovs-ofctl del-flows br-in2 &&
+    ovs-ofctl del-flows br-in3 &&
+    ovs-ofctl del-flows br-p1 &&
+    ovs-ofctl del-flows br-p2 &&
     ovs-ofctl del-flows br-p3
 ], [0])
 
-# Get the MAC addresses of the tunnel end-point ports
-#HWADDR_BRP1=$(ovs-ofctl show br-p1 | grep LOCAL | sed 's/.*addr://')
-#HWADDR_BRP2=$(ovs-ofctl show br-p2 | grep LOCAL | sed 's/.*addr://')
-#HWADDR_BRP3=$(ovs-ofctl show br-p3 | grep LOCAL | sed 's/.*addr://')
-
 ### Setup GRE tunnels
 AT_CHECK([
-    ovs-vsctl add-port br-in1 gre12 -- \
-        set interface gre12 type=gre options:remote_ip=10.0.0.2 ofport_request=1020
-    ovs-vsctl add-port br-in1 gre12_l3 -- \
-        set interface gre12_l3 type=gre options:remote_ip=10.0.0.2 ofport_request=1021 options:layer3=true
-    ovs-vsctl add-port br-in1 gre13 -- \
-        set interface gre13 type=gre options:remote_ip=10.0.0.3 ofport_request=1030
-
-    ovs-vsctl add-port br-in2 gre21 -- \
-        set interface gre21 type=gre options:remote_ip=20.0.0.1 ofport_request=2010
-    ovs-vsctl add-port br-in2 gre23 -- \
-        set interface gre23 type=gre options:remote_ip=20.0.0.3 ofport_request=2030
-
-    ovs-vsctl add-port br-in3 gre31 -- \
-        set interface gre31 type=gre options:remote_ip=30.0.0.1 ofport_request=3010
-    ovs-vsctl add-port br-in3 gre32 -- \
-        set interface gre32 type=gre options:remote_ip=30.0.0.2 ofport_request=3020
-    ovs-vsctl add-port br-in3 gre32_l3 -- \
-        set interface gre32_l3 type=gre options:remote_ip=30.0.0.2 ofport_request=3021 options:layer3=true
-
-    ovs-appctl netdev-dummy/ip4addr br-p1 10.0.0.1/24
-    ovs-appctl ovs/route/add 10.0.0.0/24 br-p1
-    ovs-appctl tnl/arp/set br-p1 10.0.0.1 $HWADDR_BRP1
-    ovs-appctl tnl/arp/set br-p1 10.0.0.2 $HWADDR_BRP2
-    ovs-appctl tnl/arp/set br-p1 10.0.0.3 $HWADDR_BRP3
-
-    ovs-appctl netdev-dummy/ip4addr br-p2 20.0.0.2/24
-    ovs-appctl ovs/route/add 20.0.0.0/24 br-p2
-    ovs-appctl tnl/arp/set br-p2 20.0.0.1 $HWADDR_BRP1
-    ovs-appctl tnl/arp/set br-p2 20.0.0.2 $HWADDR_BRP2
-    ovs-appctl tnl/arp/set br-p2 20.0.0.3 $HWADDR_BRP3
-
-    ovs-appctl netdev-dummy/ip4addr br-p3 30.0.0.3/24
-    ovs-appctl ovs/route/add 30.0.0.0/24 br-p3
-    ovs-appctl tnl/arp/set br-p3 30.0.0.1 $HWADDR_BRP1
-    ovs-appctl tnl/arp/set br-p3 30.0.0.2 $HWADDR_BRP2
+    ovs-appctl netdev-dummy/ip4addr br-p1 10.0.0.1/24 &&
+    ovs-appctl ovs/route/add 10.0.0.0/24 br-p1 &&
+    ovs-appctl tnl/arp/set br-p1 10.0.0.1 $HWADDR_BRP1 &&
+    ovs-appctl tnl/arp/set br-p1 10.0.0.2 $HWADDR_BRP2 &&
+    ovs-appctl tnl/arp/set br-p1 10.0.0.3 $HWADDR_BRP3 &&
+
+    ovs-appctl netdev-dummy/ip4addr br-p2 20.0.0.2/24 &&
+    ovs-appctl ovs/route/add 20.0.0.0/24 br-p2 &&
+    ovs-appctl tnl/arp/set br-p2 20.0.0.1 $HWADDR_BRP1 &&
+    ovs-appctl tnl/arp/set br-p2 20.0.0.2 $HWADDR_BRP2 &&
+    ovs-appctl tnl/arp/set br-p2 20.0.0.3 $HWADDR_BRP3 &&
+
+    ovs-appctl netdev-dummy/ip4addr br-p3 30.0.0.3/24 &&
+    ovs-appctl ovs/route/add 30.0.0.0/24 br-p3 &&
+    ovs-appctl tnl/arp/set br-p3 30.0.0.1 $HWADDR_BRP1 &&
+    ovs-appctl tnl/arp/set br-p3 30.0.0.2 $HWADDR_BRP2 &&
     ovs-appctl tnl/arp/set br-p3 30.0.0.3 $HWADDR_BRP3
-], [0], [stdout])
+], [0], [ignore])
 
 AT_CHECK([
     ovs-appctl ovs/route/show | grep User:
@@ -192,7 +170,7 @@  User: 30.0.0.0/24 dev br-p3 SRC 30.0.0.3
 
 AT_CHECK([
     ovs-appctl tnl/neigh/show | grep br-p | sort
-], [0], [stdout])
+], [0], [ignore])
 
 ### Flows in br-p<x>to twist TEP IP addresses in tunnel IP headers
 AT_CHECK([
@@ -237,12 +215,16 @@  N2_OFPORT=20
 N3_OFPORT=30
 
 AT_CHECK([
-    ovs-vsctl add-port br-in1 n1 -- \
-        set interface n1 type=dummy ofport_request=$N1_OFPORT options:tx_pcap=n1.pcap
-    ovs-vsctl add-port br-in2 n2 -- \
-        set interface n2 type=dummy ofport_request=$N2_OFPORT options:tx_pcap=n2.pcap
-    ovs-vsctl add-port br-in3 n3 -- \
-        set interface n3 type=dummy ofport_request=$N3_OFPORT options:tx_pcap=n3.pcap
+ovs-vsctl \
+    -- add-port br-in1 n1 \
+    -- set interface n1 type=dummy ofport_request=$N1_OFPORT \
+                                   options:tx_pcap=n1.pcap \
+    -- add-port br-in2 n2 \
+    -- set interface n2 type=dummy ofport_request=$N2_OFPORT \
+                                   options:tx_pcap=n2.pcap \
+    -- add-port br-in3 n3 \
+    -- set interface n3 type=dummy ofport_request=$N3_OFPORT \
+                                   options:tx_pcap=n3.pcap
 ], [0])
 
 #N1_DPPORT=$(ovs-appctl dpif/show | grep "n1 10" | sed 's|.*/\([[0-9]]*\):.*|\1|')
@@ -251,39 +233,39 @@  AT_CHECK([
 
 ### Verify datapath configuration
 AT_CHECK([
-    ovs-appctl dpif/show | grep -v hit | sed 's/\t/    /g'
+    ovs-appctl dpif/show | grep -v hit | sed 's/\t/    /g' | sed 's./[[0-9]]\{1,\}..'
 ], [0], [dnl
     br-in1:
-        br-in1 65534/101: (dummy-internal)
-        gre12 1020/10: (gre: remote_ip=10.0.0.2)
-        gre12_l3 1021/10: (gre: layer3=true, remote_ip=10.0.0.2)
-        gre13 1030/10: (gre: remote_ip=10.0.0.3)
-        n1 10/11: (dummy)
+        br-in1 65534: (dummy-internal)
+        gre12 1020: (gre: remote_ip=10.0.0.2)
+        gre12_l3 1021: (gre: packet_type=legacy_l3, remote_ip=10.0.0.2)
+        gre13 1030: (gre: remote_ip=10.0.0.3)
+        n1 10: (dummy)
     br-in2:
-        br-in2 65534/102: (dummy-internal)
-        gre21 2010/10: (gre: remote_ip=20.0.0.1)
-        gre23 2030/10: (gre: remote_ip=20.0.0.3)
-        n2 20/12: (dummy)
+        br-in2 65534: (dummy-internal)
+        gre21 2010: (gre: packet_type=ptap, remote_ip=20.0.0.1)
+        gre23 2030: (gre: packet_type=ptap, remote_ip=20.0.0.3)
+        n2 20: (dummy)
     br-in3:
-        br-in3 65534/103: (dummy-internal)
-        gre31 3010/10: (gre: remote_ip=30.0.0.1)
-        gre32 3020/10: (gre: remote_ip=30.0.0.2)
-        gre32_l3 3021/10: (gre: layer3=true, remote_ip=30.0.0.2)
-        n3 30/13: (dummy)
+        br-in3 65534: (dummy-internal)
+        gre31 3010: (gre: remote_ip=30.0.0.1)
+        gre32 3020: (gre: remote_ip=30.0.0.2)
+        gre32_l3 3021: (gre: packet_type=legacy_l3, remote_ip=30.0.0.2)
+        n3 30: (dummy)
     br-p1:
-        br-p1 65534/1: (dummy-internal)
-        p1-0 2/4: (system)
+        br-p1 65534: (dummy-internal)
+        p1-0 2/none: (patch: peer=p0-1)
     br-p2:
-        br-p2 65534/2: (dummy-internal)
-        p2-0 2/5: (system)
+        br-p2 65534: (dummy-internal)
+        p2-0 2/none: (patch: peer=p0-2)
     br-p3:
-        br-p3 65534/3: (dummy-internal)
-        p3-0 2/6: (system)
+        br-p3 65534: (dummy-internal)
+        p3-0 2/none: (patch: peer=p0-3)
     br0:
-        br0 65534/100: (dummy-internal)
-        p0-1 10/7: (system)
-        p0-2 20/8: (system)
-        p0-3 30/9: (system)
+        br0 65534: (dummy-internal)
+        p0-1 10/none: (patch: peer=p1-0)
+        p0-2 20/none: (patch: peer=p2-0)
+        p0-3 30/none: (patch: peer=p3-0)
 ])
 
 ### Test L3 forwarding flows
@@ -314,9 +296,9 @@  AT_CHECK([
 AT_CHECK([
     ovs-ofctl dump-flows br-in2 | ofctl_strip | sort | grep actions
 ], [0], [dnl
- packet_type=(0,0),ip,nw_dst=192.168.10.10 actions=output:2010
- packet_type=(0,0),ip,nw_dst=192.168.10.20 actions=mod_dl_dst:aa:55:aa:55:00:02,output:20
- packet_type=(0,0),ip,nw_dst=192.168.10.30 actions=output:2010
+ ip,nw_dst=192.168.10.10 actions=output:2010
+ ip,nw_dst=192.168.10.20 actions=mod_dl_dst:aa:55:aa:55:00:02,output:20
+ ip,nw_dst=192.168.10.30 actions=output:2010
  packet_type=(1,0x800),nw_dst=192.168.10.10 actions=output:2010
  packet_type=(1,0x800),nw_dst=192.168.10.30 actions=output:2030
 ])
@@ -331,6 +313,8 @@  AT_CHECK([
 
 ### Inject ICMP Echo request test packets
 
+ovs-appctl vlog/set any:file:dbg
+
 # N1 to N3, via the L2 GRE tunnel between br-in1 and br-in3
 AT_CHECK([
     ovs-appctl netdev-dummy/receive n1 1e2ce92a669e3a6dd2099cab0800450000548a53400040011addc0a80a0ac0a80a1e08006f200a4d0001fc509a58000000002715020000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637
@@ -340,13 +324,11 @@  AT_CHECK([
 ovs-appctl time/warp 1000
 
 AT_CHECK([
-    ovs-appctl dpctl/dump-flows dummy@ovs-dummy | strip_used | grep -v ipv6 | sort
+    ovs-appctl dpctl/dump-flows --names dummy@ovs-dummy | strip_used | grep -v ipv6 | sort
 ], [0], [flow-dump from non-dpdk interfaces:
-recirc_id(0),in_port(1),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, used:0.0s, actions:4
-recirc_id(0),in_port(11),eth_type(0x0800),ipv4(dst=192.168.10.30,tos=0/0x3,frag=no), packets:1, bytes:98, used:0.0s, actions:tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:03,src=aa:55:00:00:00:01,dl_type=0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(1))
-recirc_id(0),in_port(6),eth(dst=aa:55:00:00:00:03),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,frag=no), packets:1, bytes:136, used:0.0s, actions:set(ipv4(src=30.0.0.1,dst=30.0.0.3)),tnl_pop(10)
-recirc_id(0),in_port(7),eth(dst=aa:55:00:00:00:03),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, used:0.0s, actions:9
-tunnel(src=30.0.0.1,dst=30.0.0.3,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=0,id=0),eth(dst=1e:2c:e9:2a:66:9e),eth_type(0x0800),ipv4(dst=192.168.10.30,frag=no), packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:03)),13
+recirc_id(0),in_port(br-p1),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:03),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,frag=no), packets:1, bytes:136, used:0.0s, actions:set(ipv4(src=30.0.0.1,dst=30.0.0.3)),tnl_pop(gre_sys)
+recirc_id(0),in_port(n1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.30,tos=0/0x3,frag=no), packets:1, bytes:98, used:0.0s, actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:03,src=aa:55:00:00:00:01,dl_type=0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(br-p1))
+tunnel(src=30.0.0.1,dst=30.0.0.3,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=0,id=0),eth(dst=1e:2c:e9:2a:66:9e),eth_type(0x0800),ipv4(dst=192.168.10.30,frag=no), packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:03)),n3
 ])
 
 # Clear up megaflow cache
@@ -361,13 +343,11 @@  AT_CHECK([
 ovs-appctl time/warp 1000
 
 AT_CHECK([
-    ovs-appctl dpctl/dump-flows dummy@ovs-dummy | strip_used | grep -v ipv6 | sort
+    ovs-appctl dpctl/dump-flows --names dummy@ovs-dummy | strip_used | grep -v ipv6 | sort
 ], [0], [flow-dump from non-dpdk interfaces:
-recirc_id(0),in_port(1),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, used:0.0s, actions:4
-recirc_id(0),in_port(11),eth_type(0x0800),ipv4(dst=192.168.10.20,tos=0/0x3,frag=no), packets:1, bytes:98, used:0.0s, actions:tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:02,src=aa:55:00:00:00:01,dl_type=0x0800),ipv4(src=10.0.0.1,dst=10.0.0.2,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(1))
-recirc_id(0),in_port(5),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.2,proto=47,frag=no), packets:1, bytes:136, used:0.0s, actions:set(ipv4(src=20.0.0.1,dst=20.0.0.2)),tnl_pop(10)
-recirc_id(0),in_port(7),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, used:0.0s, actions:8
-tunnel(src=20.0.0.1,dst=20.0.0.2,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=0,id=0),eth(dst=46:1e:7d:1a:95:a1),eth_type(0x0800),ipv4(dst=192.168.10.20,frag=no), packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:02)),12
+recirc_id(0),in_port(br-p1),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.2,proto=47,frag=no), packets:1, bytes:136, used:0.0s, actions:set(ipv4(src=20.0.0.1,dst=20.0.0.2)),tnl_pop(gre_sys)
+recirc_id(0),in_port(n1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.20,tos=0/0x3,frag=no), packets:1, bytes:98, used:0.0s, actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:02,src=aa:55:00:00:00:01,dl_type=0x0800),ipv4(src=10.0.0.1,dst=10.0.0.2,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(br-p1))
+tunnel(src=20.0.0.1,dst=20.0.0.2,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=0,id=0),eth(dst=46:1e:7d:1a:95:a1),eth_type(0x0800),ipv4(dst=192.168.10.20,frag=no), packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:02)),n2
 ])
 
 # Clear up megaflow cache
@@ -382,13 +362,11 @@  AT_CHECK([
 ovs-appctl time/warp 1000
 
 AT_CHECK([
-    ovs-appctl dpctl/dump-flows dummy@ovs-dummy | strip_used | grep -v ipv6 | sort
+    ovs-appctl dpctl/dump-flows --names dummy@ovs-dummy | strip_used | grep -v ipv6 | sort
 ], [0], [flow-dump from non-dpdk interfaces:
-recirc_id(0),in_port(12),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.10,tos=0/0x3,frag=no), packets:1, bytes:98, used:0.0s, actions:tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:01,src=aa:55:00:00:00:02,dl_type=0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(2))
-recirc_id(0),in_port(2),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, used:0.0s, actions:5
-recirc_id(0),in_port(4),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,frag=no), packets:1, bytes:136, used:0.0s, actions:set(ipv4(src=10.0.0.2,dst=10.0.0.1)),tnl_pop(10)
-recirc_id(0),in_port(8),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, used:0.0s, actions:7
-tunnel(src=10.0.0.2,dst=10.0.0.1,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=0,id=0),eth(dst=3a:6d:d2:09:9c:ab),eth_type(0x0800),ipv4(dst=192.168.10.10,frag=no), packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:01)),11
+recirc_id(0),in_port(br-p2),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,frag=no), packets:1, bytes:136, used:0.0s, actions:set(ipv4(src=10.0.0.2,dst=10.0.0.1)),tnl_pop(gre_sys)
+recirc_id(0),in_port(n2),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.10,tos=0/0x3,frag=no), packets:1, bytes:98, used:0.0s, actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:01,src=aa:55:00:00:00:02,dl_type=0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(br-p2))
+tunnel(src=10.0.0.2,dst=10.0.0.1,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=0,id=0),eth(dst=3a:6d:d2:09:9c:ab),eth_type(0x0800),ipv4(dst=192.168.10.10,frag=no), packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:01)),n1
 ])
 
 # Clear up megaflow cache
@@ -403,17 +381,13 @@  AT_CHECK([
 ovs-appctl time/warp 1000
 
 AT_CHECK([
-    ovs-appctl dpctl/dump-flows dummy@ovs-dummy | strip_used | grep -v ipv6 | sort
+    ovs-appctl dpctl/dump-flows --names dummy@ovs-dummy | strip_used | grep -v ipv6 | sort
 ], [0], [flow-dump from non-dpdk interfaces:
-recirc_id(0),in_port(1),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, used:0.0s, actions:4
-recirc_id(0),in_port(12),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.30,tos=0/0x3,frag=no), packets:1, bytes:98, used:0.0s, actions:tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:01,src=aa:55:00:00:00:02,dl_type=0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(2))
-recirc_id(0),in_port(2),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, used:0.0s, actions:5
-recirc_id(0),in_port(4),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,frag=no), packets:1, bytes:136, used:0.0s, actions:set(ipv4(src=10.0.0.2,dst=10.0.0.1)),tnl_pop(10)
-recirc_id(0),in_port(6),eth(dst=aa:55:00:00:00:03),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,frag=no), packets:1, bytes:136, used:0.0s, actions:set(ipv4(src=30.0.0.1,dst=30.0.0.3)),tnl_pop(10)
-recirc_id(0),in_port(7),eth(dst=aa:55:00:00:00:03),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, used:0.0s, actions:9
-recirc_id(0),in_port(8),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, used:0.0s, actions:7
-tunnel(src=10.0.0.2,dst=10.0.0.1,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.30,tos=0/0x3,frag=no), packets:1, bytes:98, used:0.0s, actions:tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:03,src=aa:55:00:00:00:01,dl_type=0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(1))
-tunnel(src=30.0.0.1,dst=30.0.0.3,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=0,id=0),eth(dst=1e:2c:e9:2a:66:9e),eth_type(0x0800),ipv4(dst=192.168.10.30,frag=no), packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:03)),13
+recirc_id(0),in_port(br-p1),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:03),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,frag=no), packets:1, bytes:136, used:0.0s, actions:set(ipv4(src=30.0.0.1,dst=30.0.0.3)),tnl_pop(gre_sys)
+recirc_id(0),in_port(br-p2),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,frag=no), packets:1, bytes:136, used:0.0s, actions:set(ipv4(src=10.0.0.2,dst=10.0.0.1)),tnl_pop(gre_sys)
+recirc_id(0),in_port(n2),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.30,tos=0/0x3,frag=no), packets:1, bytes:98, used:0.0s, actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:01,src=aa:55:00:00:00:02,dl_type=0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(br-p2))
+tunnel(src=10.0.0.2,dst=10.0.0.1,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.30,tos=0/0x3,frag=no), packets:1, bytes:98, used:0.0s, actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:03,src=aa:55:00:00:00:01,dl_type=0x0800),ipv4(src=10.0.0.1,dst=10.0.0.3,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(br-p1))
+tunnel(src=30.0.0.1,dst=30.0.0.3,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=0,id=0),eth(dst=1e:2c:e9:2a:66:9e),eth_type(0x0800),ipv4(dst=192.168.10.30,frag=no), packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:03)),n3
 ])
 
 # Clear up megaflow cache
@@ -428,17 +402,13 @@  AT_CHECK([
 ovs-appctl time/warp 1000
 
 AT_CHECK([
-    ovs-appctl dpctl/dump-flows dummy@ovs-dummy | strip_used | grep -v ipv6 | sort
+    ovs-appctl dpctl/dump-flows --names dummy@ovs-dummy | strip_used | grep -v ipv6 | sort
 ], [0], [flow-dump from non-dpdk interfaces:
-recirc_id(0),in_port(13),eth_type(0x0800),ipv4(dst=192.168.10.10,tos=0/0x3,frag=no), packets:1, bytes:98, used:0.0s, actions:pop_eth,tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:02,src=aa:55:00:00:00:03,dl_type=0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x800))),out_port(3))
-recirc_id(0),in_port(2),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:122, used:0.0s, actions:5
-recirc_id(0),in_port(3),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:122, used:0.0s, actions:6
-recirc_id(0),in_port(4),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,frag=no), packets:1, bytes:122, used:0.0s, actions:set(ipv4(src=10.0.0.2,dst=10.0.0.1)),tnl_pop(10)
-recirc_id(0),in_port(5),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,frag=no), packets:1, bytes:122, used:0.0s, actions:set(ipv4(src=20.0.0.3,dst=20.0.0.2)),tnl_pop(10)
-recirc_id(0),in_port(8),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:122, used:0.0s, actions:7
-recirc_id(0),in_port(9),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:122, used:0.0s, actions:8
-tunnel(src=10.0.0.2,dst=10.0.0.1,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=1,id=0x800),eth_type(0x0800),ipv4(dst=192.168.10.10,frag=no), packets:1, bytes:84, used:0.0s, actions:push_eth(src=00:00:00:00:00:00,dst=aa:55:aa:55:00:01),11
-tunnel(src=20.0.0.3,dst=20.0.0.2,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=1,id=0x800),eth_type(0x0800),ipv4(dst=192.168.10.10,tos=0/0x3,frag=no), packets:1, bytes:84, used:0.0s, actions:tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:01,src=aa:55:00:00:00:02,dl_type=0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x800))),out_port(2))
+recirc_id(0),in_port(br-p2),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:01),eth_type(0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,frag=no), packets:1, bytes:122, used:0.0s, actions:set(ipv4(src=10.0.0.2,dst=10.0.0.1)),tnl_pop(gre_sys)
+recirc_id(0),in_port(br-p3),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,frag=no), packets:1, bytes:122, used:0.0s, actions:set(ipv4(src=20.0.0.3,dst=20.0.0.2)),tnl_pop(gre_sys)
+recirc_id(0),in_port(n3),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.10,tos=0/0x3,frag=no), packets:1, bytes:98, used:0.0s, actions:pop_eth,tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:02,src=aa:55:00:00:00:03,dl_type=0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x800))),out_port(br-p3))
+tunnel(src=10.0.0.2,dst=10.0.0.1,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=1,id=0x800),eth_type(0x0800),ipv4(dst=192.168.10.10,frag=no), packets:1, bytes:84, used:0.0s, actions:push_eth(src=00:00:00:00:00:00,dst=aa:55:aa:55:00:01),n1
+tunnel(src=20.0.0.3,dst=20.0.0.2,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=1,id=0x800),eth_type(0x0800),ipv4(dst=192.168.10.10,tos=0/0x3,frag=no), packets:1, bytes:84, used:0.0s, actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:01,src=aa:55:00:00:00:02,dl_type=0x0800),ipv4(src=20.0.0.2,dst=20.0.0.1,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x800))),out_port(br-p2))
 ])
 
 # Clear up megaflow cache
@@ -453,13 +423,11 @@  AT_CHECK([
 ovs-appctl time/warp 1000
 
 AT_CHECK([
-    ovs-appctl dpctl/dump-flows dummy@ovs-dummy | strip_used | grep -v ipv6 | sort
+    ovs-appctl dpctl/dump-flows --names dummy@ovs-dummy | strip_used | grep -v ipv6 | sort
 ], [0], [flow-dump from non-dpdk interfaces:
-recirc_id(0),in_port(13),eth_type(0x0800),ipv4(dst=192.168.10.20,tos=0/0x3,frag=no), packets:1, bytes:98, used:0.0s, actions:tnl_push(tnl_port(10),header(size=38,type=3,eth(dst=aa:55:00:00:00:02,src=aa:55:00:00:00:03,dl_type=0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(3))
-recirc_id(0),in_port(3),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, used:0.0s, actions:6
-recirc_id(0),in_port(5),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,frag=no), packets:1, bytes:136, used:0.0s, actions:set(ipv4(src=20.0.0.3,dst=20.0.0.2)),tnl_pop(10)
-recirc_id(0),in_port(9),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:136, used:0.0s, actions:8
-tunnel(src=20.0.0.3,dst=20.0.0.2,flags(-df-csum)),recirc_id(0),in_port(10),packet_type(ns=0,id=0),eth(dst=46:1e:7d:1a:95:a1),eth_type(0x0800),ipv4(dst=192.168.10.20,frag=no), packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:02)),12
+recirc_id(0),in_port(br-p3),packet_type(ns=0,id=0),eth(dst=aa:55:00:00:00:02),eth_type(0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,frag=no), packets:1, bytes:136, used:0.0s, actions:set(ipv4(src=20.0.0.3,dst=20.0.0.2)),tnl_pop(gre_sys)
+recirc_id(0),in_port(n3),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(dst=192.168.10.20,tos=0/0x3,frag=no), packets:1, bytes:98, used:0.0s, actions:tnl_push(tnl_port(gre_sys),header(size=38,type=3,eth(dst=aa:55:00:00:00:02,src=aa:55:00:00:00:03,dl_type=0x0800),ipv4(src=30.0.0.3,dst=30.0.0.2,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x0,proto=0x6558))),out_port(br-p3))
+tunnel(src=20.0.0.3,dst=20.0.0.2,flags(-df-csum)),recirc_id(0),in_port(gre_sys),packet_type(ns=0,id=0),eth(dst=46:1e:7d:1a:95:a1),eth_type(0x0800),ipv4(dst=192.168.10.20,frag=no), packets:1, bytes:98, used:0.0s, actions:set(eth(dst=aa:55:aa:55:00:02)),n2
 ])
 
 ### Check the received packets