From: Simon Horman Date: Wed, 5 Feb 2014 00:45:37 +0000 (+0900) Subject: tests: Add MPLS + VLAN tests. X-Git-Tag: sliver-openvswitch-2.1.90-1~7^2~7 X-Git-Url: http://git.onelab.eu/?p=sliver-openvswitch.git;a=commitdiff_plain;h=846e159a7a679b478853b6f96057a439a1bf215f tests: Add MPLS + VLAN tests. Originally part of "odp: Allow VLAN actions after MPLS actions" by Joe Stringer. Co-authored-by: Joe Stringer Signed-off-by: Simon Horman Signed-off-by: Ben Pfaff --- diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at index 2560e0bea..46a6b6759 100644 --- a/tests/ofproto-dpif.at +++ b/tests/ofproto-dpif.at @@ -1112,6 +1112,395 @@ done OVS_VSWITCHD_STOP AT_CLEANUP +AT_SETUP([ofproto-dpif - VLAN+MPLS handling]) +OVS_VSWITCHD_START([dnl + add-port br0 p1 -- set Interface p1 type=dummy +]) +ON_EXIT([kill `cat ovs-ofctl.pid`]) + +AT_CAPTURE_FILE([ofctl_monitor.log]) +AT_DATA([flows.txt], [dnl +cookie=0xa dl_src=40:44:44:44:54:50 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,set_vlan_vid:99,set_vlan_pcp:1,controller +cookie=0xa dl_src=40:44:44:44:54:51 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,set_vlan_vid:99,set_vlan_pcp:1,controller +cookie=0xa dl_src=40:44:44:44:54:52 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,load:99->OXM_OF_VLAN_VID[[]],set_vlan_pcp:1,controller +cookie=0xa dl_src=40:44:44:44:54:53 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,load:99->OXM_OF_VLAN_VID[[]],set_vlan_pcp:1,controller +cookie=0xa dl_src=40:44:44:44:54:54 actions=push_vlan:0x8100,set_vlan_vid:99,set_vlan_pcp:1,push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],controller +cookie=0xa dl_src=40:44:44:44:54:55 actions=push_vlan:0x8100,set_vlan_vid:99,set_vlan_pcp:1,push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],controller +cookie=0xa dl_src=40:44:44:44:54:56 actions=push_vlan:0x8100,load:99->OXM_OF_VLAN_VID[[]],set_vlan_pcp:1,push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],controller +cookie=0xa dl_src=40:44:44:44:54:57 actions=push_vlan:0x8100,load:99->OXM_OF_VLAN_VID[[]],set_vlan_pcp:1,push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],controller +cookie=0xa dl_src=40:44:44:44:54:58,vlan_tci=0x1000/0x1000 actions=load:99->OXM_OF_VLAN_VID[[]],set_vlan_pcp:1,push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],controller +cookie=0xa dl_src=40:44:44:44:54:59,vlan_tci=0x1000/0x1000 actions=push_mpls:0x8847,load:10->OXM_OF_MPLS_LABEL[[]],set_vlan_pcp:1,load:99->OXM_OF_VLAN_VID[[]],controller +]) +AT_CHECK([ovs-ofctl --protocols=OpenFlow12 add-flows br0 flows.txt]) + +dnl Modified MPLS controller action. +dnl In this test, we push the MPLS tag before pushing a VLAN tag, so we see +dnl both of these in the final flow +AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log]) + +for i in 1 2 3; do + ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:50,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no)' +done +OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) + +AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl +OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:50,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +00000040 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:50,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +00000040 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:50,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 50 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +00000040 00 00 00 00 +]) + +dnl Modified MPLS controller action. +dnl In this test, the input packet in vlan-tagged, which should be stripped +dnl before we push the MPLS and VLAN tags. +AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log]) + +for i in 1 2 3; do + ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:51,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=88,pcp=7),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no))' +done +OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6]) +ovs-appctl -t ovs-ofctl exit + +AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:51,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:51,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:51,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 51 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +]) + +dnl Modified MPLS controller action. +dnl In this test, we push the MPLS tag before pushing a VLAN tag, so we see +dnl both of these in the final flow +AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log]) + +for i in 1 2 3; do + ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:52,dst=52:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no)' +done +OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) + +AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl +OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:52,dl_dst=52:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +00000040 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:52,dl_dst=52:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +00000040 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:52,dl_dst=52:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 52 54 00 00 00 07 40 44-44 44 54 52 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +00000040 00 00 00 00 +]) + +dnl Modified MPLS controller action. +dnl In this test, the input packet in vlan-tagged, which should be stripped +dnl before we push the MPLS and VLAN tags. +AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log]) + +for i in 1 2 3; do + ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:53,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=88,pcp=7),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no))' +done +OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6]) +ovs-appctl -t ovs-ofctl exit + +AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:53,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:53,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:53,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 53 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +]) + +dnl Modified MPLS controller action. +dnl In this test, we push the VLAN tag before pushing a MPLS tag, but these +dnl actions are reordered, so we see both of these in the final flow. +AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log]) + +for i in 1 2 3; do + ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:54,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no)' +done +OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6]) +ovs-appctl -t ovs-ofctl exit + +AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl +OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:54,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +00000040 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:54,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +00000040 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:54,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 54 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +00000040 00 00 00 00 +]) + +dnl Modified MPLS controller action. +dnl In this test, the input packet in vlan-tagged, which should be stripped +dnl before we push the MPLS and VLAN tags. +AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log]) + +for i in 1 2 3; do + ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:55,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=88,pcp=7),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no))' +done +OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6]) +ovs-appctl -t ovs-ofctl exit + +AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:55,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:55,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:55,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 55 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +]) + +dnl Modified MPLS controller action. +dnl In this test, we push the VLAN tag before pushing a MPLS tag, but these +dnl actions are reordered, so we see both of these in the final flow. +AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log]) + +for i in 1 2 3; do + ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:56,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no)' +done +OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6]) +ovs-appctl -t ovs-ofctl exit + +AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl +OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:56,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +00000040 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:56,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +00000040 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=68 in_port=1 (via action) data_len=68 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:56,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 56 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +00000040 00 00 00 00 +]) + +dnl Modified MPLS controller action. +dnl In this test, the input packet in vlan-tagged, which should be stripped +dnl before we push the MPLS and VLAN tags. +AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 -m 65534 -P nxm --detach --pidfile 2> ofctl_monitor.log]) + +for i in 1 2 3; do + ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:57,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=88,pcp=7),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no))' +done +OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6]) +ovs-appctl -t ovs-ofctl exit + +AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:57,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:57,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:57,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 57 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +]) + +dnl Modified MPLS controller action. +dnl In this test, the input packet in vlan-tagged, which should be stripped +dnl before we push the MPLS and VLAN tags. +AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log]) + +for i in 1 2 3; do + ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:58,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=88,pcp=7),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no))' +done +OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6]) +ovs-appctl -t ovs-ofctl exit + +AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:58,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:58,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:58,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 58 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +]) + +dnl Modified MPLS controller action. +dnl In this test, the input packet in vlan-tagged, which should be modified +dnl before we push MPLS and VLAN tags. +AT_CHECK([ovs-ofctl --protocols=OpenFlow12 monitor br0 65534 -m -P nxm --detach --pidfile 2> ofctl_monitor.log]) + +for i in 1 2 3; do + ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=40:44:44:44:54:59,dst=50:54:00:00:00:07),eth_type(0x8100),vlan(vid=88,pcp=7),encap(eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=6,tos=0,ttl=64,frag=no))' +done +OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6]) +ovs-appctl -t ovs-ofctl exit + +AT_CHECK([cat ofctl_monitor.log | ofctl_strip], [0], [dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:59,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:59,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +dnl +OFPT_PACKET_IN (OF1.2): total_len=64 in_port=1 (via action) data_len=64 (unbuffered) +mpls,metadata=0,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:59,dl_dst=50:54:00:00:00:07,mpls_label=10,mpls_tc=0,mpls_ttl=64,mpls_bos=1 +00000000 50 54 00 00 00 07 40 44-44 44 54 59 81 00 20 63 +00000010 88 47 00 00 a1 40 45 00-00 28 00 00 00 00 40 06 +00000020 f9 7c c0 a8 00 01 c0 a8-00 02 00 00 00 00 00 00 +00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 +]) + +AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) +AT_CHECK([ovs-ofctl --protocols=OpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl + cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:50 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,set_field:4195->vlan_vid,set_field:1->vlan_pcp,CONTROLLER:65535 + cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:51 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,set_field:4195->vlan_vid,set_field:1->vlan_pcp,CONTROLLER:65535 + cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:52 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_field:1->vlan_pcp,CONTROLLER:65535 + cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:53 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_field:1->vlan_pcp,CONTROLLER:65535 + cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:54 actions=push_vlan:0x8100,set_field:4195->vlan_vid,set_field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535 + cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:55 actions=push_vlan:0x8100,set_field:4195->vlan_vid,set_field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535 + cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:56 actions=push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535 + cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:57 actions=push_vlan:0x8100,load:0x63->OXM_OF_VLAN_VID[[]],set_field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535 + cookie=0xa, n_packets=3, n_bytes=180, vlan_tci=0x1000/0x1000,dl_src=40:44:44:44:54:58 actions=load:0x63->OXM_OF_VLAN_VID[[]],set_field:1->vlan_pcp,push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],CONTROLLER:65535 + cookie=0xa, n_packets=3, n_bytes=180, vlan_tci=0x1000/0x1000,dl_src=40:44:44:44:54:59 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],set_field:1->vlan_pcp,load:0x63->OXM_OF_VLAN_VID[[]],CONTROLLER:65535 +OFPST_FLOW reply (OF1.2): +]) + +OVS_VSWITCHD_STOP +AT_CLEANUP + AT_SETUP([ofproto-dpif - fragment handling]) OVS_VSWITCHD_START ADD_OF_PORTS([br0], [1], [2], [3], [4], [5], [6], [90])