diff mbox

[ovs-dev,2/2] tunnel-tests: Add test to match tunnel traffic.

Message ID 20170508181540.5002-3-joe@ovn.org
State Superseded
Headers show

Commit Message

Joe Stringer May 8, 2017, 6:15 p.m. UTC
From: William Tu <u9012063@gmail.com>

This test highlights a bug that was affecting master up until the
previous patch. Put simply, we have two bridges: an integration bridge
which contains a tunnel, and a physical bridge for underlay network
connectivity. This test simulates putting UDP traffic through the
integration bridge, with the intention to apply GRE tunnel headers and
send the packet through the underlay bridge. The underlay bridge should
observe GRE traffic.
---
 tests/tunnel-push-pop.at | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)

Comments

Gregory Rose May 8, 2017, 6:35 p.m. UTC | #1
On Mon, 2017-05-08 at 11:15 -0700, Joe Stringer wrote:
> From: William Tu <u9012063@gmail.com>
> 
> This test highlights a bug that was affecting master up until the
> previous patch. Put simply, we have two bridges: an integration bridge
> which contains a tunnel, and a physical bridge for underlay network
> connectivity. This test simulates putting UDP traffic through the
> integration bridge, with the intention to apply GRE tunnel headers and
> send the packet through the underlay bridge. The underlay bridge should
> observe GRE traffic.
> ---
>  tests/tunnel-push-pop.at | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 69 insertions(+)

No signature.  Please fix on push.  Otherwise...

Acked-by: Greg Rose <gvrose8192@gmail.com>

> 
> diff --git a/tests/tunnel-push-pop.at b/tests/tunnel-push-pop.at
> index 4eeac4154dbc..fe901525ea62 100644
> --- a/tests/tunnel-push-pop.at
> +++ b/tests/tunnel-push-pop.at
> @@ -225,3 +225,72 @@ OVS_WAIT_UNTIL([test `ovs-pcap p0.pcap | grep 50540000000a5054000000091235 | wc
>  
>  OVS_VSWITCHD_STOP
>  AT_CLEANUP
> +
> +AT_SETUP([tunnel_push_pop - matching on physical bridge])
> +
> +OVS_VSWITCHD_START([add-port br0 p0 -- set Interface p0 type=dummy ofport_request=1 other-config:hwaddr=aa:55:aa:55:00:00])
> +AT_CHECK([ovs-vsctl add-br int-br -- set bridge int-br datapath_type=dummy], [0])
> +AT_CHECK([ovs-vsctl add-port int-br t1 -- set Interface t1 type=gre \
> +                       options:remote_ip=1.1.2.92 options:key=456 ofport_request=3], [0])
> +
> +AT_CHECK([ovs-appctl dpif/show], [0], [dnl
> +dummy@ovs-dummy: hit:0 missed:0
> +	br0:
> +		br0 65534/100: (dummy-internal)
> +		p0 1/1: (dummy)
> +	int-br:
> +		int-br 65534/2: (dummy-internal)
> +		t1 3/3: (gre: key=456, remote_ip=1.1.2.92)
> +])
> +
> +AT_CHECK([ovs-appctl dpif/show], [0], [dnl
> +dummy@ovs-dummy: hit:0 missed:0
> +	br0:
> +		br0 65534/100: (dummy-internal)
> +		p0 1/1: (dummy)
> +	int-br:
> +		int-br 65534/2: (dummy-internal)
> +		t1 3/3: (gre: key=456, remote_ip=1.1.2.92)
> +])
> +
> +AT_CHECK([ovs-appctl netdev-dummy/ip4addr br0 1.1.2.88/24], [0], [OK
> +])
> +AT_CHECK([ovs-appctl ovs/route/add 1.1.2.92/24 br0], [0], [OK
> +])
> +AT_CHECK([ovs-ofctl add-flow br0 'priority=1,action=normal'])
> +
> +dnl Check ARP request
> +AT_CHECK([ovs-vsctl -- set Interface p0 options:pcap=p0.pcap])
> +AT_CHECK([ovs-appctl netdev-dummy/receive int-br 'in_port(2),eth(src=aa:55:aa:55:00:00,dst=f8:bc:12:ff:ff:ff),eth_type(0x0800),ipv4(src=1.1.3.92,dst=1.1.3.88,proto=1,tos=0,ttl=64,frag=no),icmp(type=0,code=0)'])
> +
> +dnl Check ARP Snoop
> +AT_CHECK([ovs-appctl netdev-dummy/receive br0 'recirc_id(0),in_port(100),eth(src=f8:bc:12:44:34:b6,dst=ff:ff:ff:ff:ff:ff),eth_type(0x0806),arp(sip=1.1.2.92,tip=1.1.2.88,op=2,sha=f8:bc:12:44:34:b6,tha=00:00:00:00:00:00)'])
> +
> +AT_CHECK([ovs-appctl tnl/neigh/show | tail -n+3 | sort], [0], [dnl
> +1.1.2.92                                      f8:bc:12:44:34:b6   br0
> +])
> +
> +AT_CHECK([ovs-appctl tnl/ports/show |sort], [0], [dnl
> +Listening ports:
> +gre_sys (3)
> +])
> +
> +AT_CHECK([ovs-ofctl add-flow br0 'priority=99,udp,action=normal'])
> +
> +dnl Check GRE tunnel push
> +AT_CHECK([ovs-ofctl add-flow int-br action=3])
> +
> +AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth_type(0x0800),ipv4(src=1.1.3.88,dst=1.1.3.112,proto=17,tos=0,ttl=64,frag=no),udp(src=51283,dst=4789)'], [0], [stdout])
> +AT_CHECK([tail -1 stdout], [0],
> +  [Datapath actions: tnl_push(tnl_port(3),header(size=42,type=3,eth(dst=f8:bc:12:44:34:b6,src=aa:55:aa:55:00:00,dl_type=0x0800),ipv4(src=1.1.2.88,dst=1.1.2.92,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x2000,proto=0x6558),key=0x1c8)),out_port(100))
> +])
> +
> +AT_CHECK([ovs-appctl netdev-dummy/receive int-br '50540000000a5054000000091234'])
> +AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl)
> + n_packets=3, n_bytes=140, priority=1 actions=NORMAL
> + priority=99,udp actions=NORMAL
> +NXST_FLOW reply:
> +])
> +
> +OVS_VSWITCHD_STOP
> +AT_CLEANUP
Joe Stringer May 8, 2017, 10:56 p.m. UTC | #2
On 8 May 2017 at 11:35, Greg Rose <gvrose8192@gmail.com> wrote:
> On Mon, 2017-05-08 at 11:15 -0700, Joe Stringer wrote:
>> From: William Tu <u9012063@gmail.com>
>>
>> This test highlights a bug that was affecting master up until the
>> previous patch. Put simply, we have two bridges: an integration bridge
>> which contains a tunnel, and a physical bridge for underlay network
>> connectivity. This test simulates putting UDP traffic through the
>> integration bridge, with the intention to apply GRE tunnel headers and
>> send the packet through the underlay bridge. The underlay bridge should
>> observe GRE traffic.
>> ---
>>  tests/tunnel-push-pop.at | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 69 insertions(+)
>
> No signature.  Please fix on push.  Otherwise...

Sorry, yeah. William submitted most of this earlier without sign-off
so looking for it from him. Thanks for looking it over.
William Tu May 9, 2017, midnight UTC | #3
Thanks. I will re-submit this test.
William

On Mon, May 8, 2017 at 3:56 PM, Joe Stringer <joe@ovn.org> wrote:
> On 8 May 2017 at 11:35, Greg Rose <gvrose8192@gmail.com> wrote:
>> On Mon, 2017-05-08 at 11:15 -0700, Joe Stringer wrote:
>>> From: William Tu <u9012063@gmail.com>
>>>
>>> This test highlights a bug that was affecting master up until the
>>> previous patch. Put simply, we have two bridges: an integration bridge
>>> which contains a tunnel, and a physical bridge for underlay network
>>> connectivity. This test simulates putting UDP traffic through the
>>> integration bridge, with the intention to apply GRE tunnel headers and
>>> send the packet through the underlay bridge. The underlay bridge should
>>> observe GRE traffic.
>>> ---
>>>  tests/tunnel-push-pop.at | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
>>>  1 file changed, 69 insertions(+)
>>
>> No signature.  Please fix on push.  Otherwise...
>
> Sorry, yeah. William submitted most of this earlier without sign-off
> so looking for it from him. Thanks for looking it over.
diff mbox

Patch

diff --git a/tests/tunnel-push-pop.at b/tests/tunnel-push-pop.at
index 4eeac4154dbc..fe901525ea62 100644
--- a/tests/tunnel-push-pop.at
+++ b/tests/tunnel-push-pop.at
@@ -225,3 +225,72 @@  OVS_WAIT_UNTIL([test `ovs-pcap p0.pcap | grep 50540000000a5054000000091235 | wc
 
 OVS_VSWITCHD_STOP
 AT_CLEANUP
+
+AT_SETUP([tunnel_push_pop - matching on physical bridge])
+
+OVS_VSWITCHD_START([add-port br0 p0 -- set Interface p0 type=dummy ofport_request=1 other-config:hwaddr=aa:55:aa:55:00:00])
+AT_CHECK([ovs-vsctl add-br int-br -- set bridge int-br datapath_type=dummy], [0])
+AT_CHECK([ovs-vsctl add-port int-br t1 -- set Interface t1 type=gre \
+                       options:remote_ip=1.1.2.92 options:key=456 ofport_request=3], [0])
+
+AT_CHECK([ovs-appctl dpif/show], [0], [dnl
+dummy@ovs-dummy: hit:0 missed:0
+	br0:
+		br0 65534/100: (dummy-internal)
+		p0 1/1: (dummy)
+	int-br:
+		int-br 65534/2: (dummy-internal)
+		t1 3/3: (gre: key=456, remote_ip=1.1.2.92)
+])
+
+AT_CHECK([ovs-appctl dpif/show], [0], [dnl
+dummy@ovs-dummy: hit:0 missed:0
+	br0:
+		br0 65534/100: (dummy-internal)
+		p0 1/1: (dummy)
+	int-br:
+		int-br 65534/2: (dummy-internal)
+		t1 3/3: (gre: key=456, remote_ip=1.1.2.92)
+])
+
+AT_CHECK([ovs-appctl netdev-dummy/ip4addr br0 1.1.2.88/24], [0], [OK
+])
+AT_CHECK([ovs-appctl ovs/route/add 1.1.2.92/24 br0], [0], [OK
+])
+AT_CHECK([ovs-ofctl add-flow br0 'priority=1,action=normal'])
+
+dnl Check ARP request
+AT_CHECK([ovs-vsctl -- set Interface p0 options:pcap=p0.pcap])
+AT_CHECK([ovs-appctl netdev-dummy/receive int-br 'in_port(2),eth(src=aa:55:aa:55:00:00,dst=f8:bc:12:ff:ff:ff),eth_type(0x0800),ipv4(src=1.1.3.92,dst=1.1.3.88,proto=1,tos=0,ttl=64,frag=no),icmp(type=0,code=0)'])
+
+dnl Check ARP Snoop
+AT_CHECK([ovs-appctl netdev-dummy/receive br0 'recirc_id(0),in_port(100),eth(src=f8:bc:12:44:34:b6,dst=ff:ff:ff:ff:ff:ff),eth_type(0x0806),arp(sip=1.1.2.92,tip=1.1.2.88,op=2,sha=f8:bc:12:44:34:b6,tha=00:00:00:00:00:00)'])
+
+AT_CHECK([ovs-appctl tnl/neigh/show | tail -n+3 | sort], [0], [dnl
+1.1.2.92                                      f8:bc:12:44:34:b6   br0
+])
+
+AT_CHECK([ovs-appctl tnl/ports/show |sort], [0], [dnl
+Listening ports:
+gre_sys (3)
+])
+
+AT_CHECK([ovs-ofctl add-flow br0 'priority=99,udp,action=normal'])
+
+dnl Check GRE tunnel push
+AT_CHECK([ovs-ofctl add-flow int-br action=3])
+
+AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth_type(0x0800),ipv4(src=1.1.3.88,dst=1.1.3.112,proto=17,tos=0,ttl=64,frag=no),udp(src=51283,dst=4789)'], [0], [stdout])
+AT_CHECK([tail -1 stdout], [0],
+  [Datapath actions: tnl_push(tnl_port(3),header(size=42,type=3,eth(dst=f8:bc:12:44:34:b6,src=aa:55:aa:55:00:00,dl_type=0x0800),ipv4(src=1.1.2.88,dst=1.1.2.92,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x2000,proto=0x6558),key=0x1c8)),out_port(100))
+])
+
+AT_CHECK([ovs-appctl netdev-dummy/receive int-br '50540000000a5054000000091234'])
+AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl)
+ n_packets=3, n_bytes=140, priority=1 actions=NORMAL
+ priority=99,udp actions=NORMAL
+NXST_FLOW reply:
+])
+
+OVS_VSWITCHD_STOP
+AT_CLEANUP