[ovs-dev] [PATCH 6/8] system-traffic.at: Add erspan v2 tunnel test that doesn't depend on upstream gre module

Yifeng Sun pkusunyifeng at gmail.com
Thu Aug 9 19:52:13 UTC 2018


The above packet hex is supposed to be generated by linux native tunnel.
But since native tunnel conflicts with openvswitch kernel module, so we
don't add native tunnel but just send simulated packets to OVS.

The ERSPAN implementation of OVS is still tested on br0 and br-underlay.
In this test, br0 actually generate ERSPAN packets, which are captured on p0
through tcpdump.


On Thu, Aug 9, 2018 at 12:09 PM, William Tu <u9012063 at gmail.com> wrote:

>
>
> On Wed, Aug 8, 2018 at 11:32 AM, Yifeng Sun <pkusunyifeng at gmail.com>
> wrote:
>
>> Introduce a new test that doesn't setup native erspan v2 tunnels but sends
>> simulated raw packets.
>> This test is supposed to only run for kernel version from 4.4.x to 4.15.x.
>>
>> Signed-off-by: Yifeng Sun <pkusunyifeng at gmail.com>
>> ---
>>  tests/system-traffic.at | 44 ++++++++++++++++++++++++++++++
>> ++++++++++++++
>>  1 file changed, 44 insertions(+)
>>
>> diff --git a/tests/system-traffic.at b/tests/system-traffic.at
>> index 44669f8..64b37df 100644
>> --- a/tests/system-traffic.at
>> +++ b/tests/system-traffic.at
>> @@ -670,6 +670,50 @@ AT_CHECK([tcpdump -xx -r p0.pcap 2>&1 | egrep "IP
>> 172.31.1.100 > 172.31.1.1: GRE
>>  OVS_TRAFFIC_VSWITCHD_STOP
>>  AT_CLEANUP
>>
>> +AT_SETUP([datapath - ping over erspan v2 tunnel by simulated packets])
>> +OVS_CHECK_KERNEL(4, 4, 15)
>> +
>> +OVS_TRAFFIC_VSWITCHD_START()
>> +AT_CHECK([ovs-vsctl -- set bridge br0 other-config:hwaddr=\"f2:ff:00
>> :00:00:01\"])
>> +ADD_BR([br-underlay], [set bridge br-underlay
>> other-config:hwaddr=\"f2:ff:00:00:00:02\"])
>> +
>> +AT_CHECK([ovs-ofctl add-flow br0 "actions=normal"])
>> +AT_CHECK([ovs-ofctl add-flow br-underlay "actions=normal"])
>> +
>> +ADD_NAMESPACES(at_ns0)
>> +
>> +dnl Set up underlay link from host into the namespace using veth pair.
>> +ADD_VETH(p0, at_ns0, br-underlay, "172.31.1.1/24", f2:ff:00:00:00:03)
>> +AT_CHECK([ip addr add dev br-underlay "172.31.1.100/24"])
>> +AT_CHECK([ip link set dev br-underlay up])
>> +
>> +dnl Set up tunnel endpoints on OVS outside the namespace and simulate a
>> native
>> +dnl linux device inside the namespace.
>> +ADD_OVS_TUNNEL([erspan], [br0], [at_erspan0], [172.31.1.1], [
>> 10.1.1.100/24], [options:key=1 options:erspan_ver=2 options:erspan_dir=1
>> options:erspan_hwid=0x7])
>> +
>> +ip netns exec at_ns0 tcpdump -U -i p0 -w p0.pcap &
>> +sleep 1
>> +
>> +dnl First, check the underlay
>> +NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 172.31.1.100 |
>> FORMAT_PING], [0], [dnl
>> +3 packets transmitted, 3 received, 0% packet loss, time 0ms
>> +])
>> +
>> +dnl Okay, send raw arp request and icmp echo request.
>> +ovs-ofctl -O OpenFlow13 packet-out br-underlay "in_port=1
>> packet=f2ff00000002f2ff00000003080045000052373d4000402fa89ca
>> c1f0101ac1f0164100088be00000006200000016f54b41700008078fffff
>> ffffffff2ff0000000408060001080006040001f2ff000000040a0101010000000000000a010164
>> actions=normal"
>> +
>> +sleep 1
>> +AT_CHECK([tcpdump -xx -r p0.pcap 2>&1 | egrep "0806 0001 0800 0604 0002
>> f2ff 0000" 2>&1 1>/dev/null])
>> +AT_CHECK([tcpdump -xx -r p0.pcap 2>&1 | egrep "0a01 0164 f2ff 0000 0004
>> 0a01 0101" 2>&1 1>/dev/null])
>> +
>> +ovs-ofctl -O OpenFlow13 packet-out br-underlay "in_port=1
>> packet=f2ff00000002f2ff0000000308004500009287e14000402f57b8a
>> c1f0101ac1f0164100088be0000000520000001144cd5a400008078f2ff0
>> 0000001f2ff0000000408004500005c38d640004001eb640a0101010a010
>> 16408005e57585f0001df6c6b5b0000000045bc050000000000101112131
>> 415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
>> actions=normal"
>>
>
> The above packet hex is already encapsulated with ERSPAN
> (https://www.gasmi.net/hpd/ can help decode)
> So this packet does not exercise the ERSPAN implementation in OVS.
>
> Can we generate packet from br0 instead of br-underlay?
>
> Thanks
> William
>
>
>> +
>> +sleep 1
>> +AT_CHECK([tcpdump -xx -r p0.pcap 2>&1 | egrep "IP 172.31.1.100 >
>> 172.31.1.1: GREv0, .* length 126" 2>&1 1>/dev/null])
>> +
>> +OVS_TRAFFIC_VSWITCHD_STOP
>> +AT_CLEANUP
>> +
>>  AT_SETUP([datapath - clone action])
>>  OVS_TRAFFIC_VSWITCHD_START()
>>
>> --
>> 2.7.4
>>
>> _______________________________________________
>> dev mailing list
>> dev at openvswitch.org
>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>>
>
>


More information about the dev mailing list