[ovs-dev] [PATCH] userspace: Fix nsh test failures.

Ilya Maximets i.maximets at samsung.com
Mon Jul 15 14:11:54 UTC 2019


On 13.07.2019 17:25, William Tu wrote:
> When doing
>  $ make check-kmod TESTSUITEFLAGS='-k nsh'
> 
> every test passes, but when doing
>  $ make check-system-userspace TESTSUITEFLAGS='-k nsh'
> 
> All test fails due to
>  odp_util(revalidator7)|WARN| OVS_NSH_KEY_ATTR_MD1 present but \
>  declared mdtype 0 is not 1 (NSH_M_TYPE1)
>  odp_util(revalidator7)|WARN| the flow mask in error is: \
>  skb_priority(0),tunnel(ttl=0,flags(0)),skb_mark(0),ct_state(0),ct_zone(0),ct_mark(0),ct_label(0),recirc_id(0xffffffff),dp_hash(0),in_port(4294967295),packet_type(ns=65535,id=0xffff),eth(src=00:00:00:00:00:00,dst=00:00:00:00:00:00),eth_type(0xffff),nsh(flags=0ttl=0,mdtype=0,np=255,spi=0xffffff,si=255), for the following flow key: in_port=2,vlan_tci=0x0000,dl_src=f2:ff:00:00:00:01,dl_dst=f2:ff:00:00:00:02,dl_type=0x894f,nsh_flags=0,nsh_ttl=8,nsh_mdtype=1
> 
> The patch adds '-n' option to tcpdump, to avoid the delay of
> coverting address add more sleep time after the tcpdump starts
> to capture packets. But I don't know why more sleep time makes
> the revalidator warning disappears.

Hi.
Thanks for working on this!

I re-checked the code and found a bug that causes revalidator failures:
    https://patchwork.ozlabs.org/patch/1132013/

So, the additional sleep seems not needed with above patch applied.

Regarding the '-n', I think it's a good enhancement.
I'd suggest passing '-n -xx' directly to the first tcpdump like this:
    tcpdump -n -xx -U -i ovs-p1 > ovs-p1.pcap &

And use simple checking with 'cat' and 'OVS_WAIT_UNTIL', like all other
tests does:
    OVS_WAIT_UNTIL([cat ovs-p1.pcap 2>&1 | egrep "0x0000: *f2ff *0000 *0002 *f2ff *0000 *0001 *894f *0fc6" 2>&1 1>/dev/null])

This way tests should be more reliable.

Best regards, Ilya Maximets.

> 
> Signed-off-by: William Tu <u9012063 at gmail.com>
> --->  tests/system-traffic.at | 64 ++++++++++++++++++++++++-------------------------
>  1 file changed, 32 insertions(+), 32 deletions(-)
> 
> diff --git a/tests/system-traffic.at b/tests/system-traffic.at
> index 8ea450887076..84e73b82bd4f 100644
> --- a/tests/system-traffic.at
> +++ b/tests/system-traffic.at
> @@ -5873,7 +5873,7 @@ AT_CHECK([ovs-ofctl -Oopenflow13 add-flow br0 "table=0,priority=100,in_port=ovs-
>  
>  rm ovs-p1.pcap
>  tcpdump -U -i ovs-p1 -w ovs-p1.pcap &
> -sleep 1
> +sleep 2
>  
>  dnl The hex dump is a TCP syn packet. pkt=eth/ip/tcp
>  dnl The packet is sent from p0(at_ns0) interface directed to
> @@ -5883,12 +5883,12 @@ NS_CHECK_EXEC([at_ns0], [$PYTHON $srcdir/sendpkt.py p0 f2 00 00 00 00 02 f2 00 0
>  sleep 1
>  
>  dnl Check the expected nsh encapsulated packet on the egress interface
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0000: *f2ff *0000 *0002 *f2ff *0000 *0001 *894f *0fc6" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0010: *0103 *0012 *34ff *1122 *3344 *0000 *0000 *0000" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0020: *0000 *0000 *0000 *f200 *0000 *0002 *f200 *0000" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0030: *0001 *0800 *4500 *0028 *0001 *0000 *4006 *b013" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0040: *c0a8 *000a *0a00 *000a *0400 *0800 *0000 *00c8" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0050: *0000 *0000 *5002 *2000 *b85e *0000" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0000: *f2ff *0000 *0002 *f2ff *0000 *0001 *894f *0fc6" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0010: *0103 *0012 *34ff *1122 *3344 *0000 *0000 *0000" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0020: *0000 *0000 *0000 *f200 *0000 *0002 *f200 *0000" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0030: *0001 *0800 *4500 *0028 *0001 *0000 *4006 *b013" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0040: *c0a8 *000a *0a00 *000a *0400 *0800 *0000 *00c8" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0050: *0000 *0000 *5002 *2000 *b85e *0000" 2>&1 1>/dev/null])
>  
>  
>  OVS_TRAFFIC_VSWITCHD_STOP
> @@ -5908,7 +5908,7 @@ AT_CHECK([ovs-ofctl -Oopenflow13 add-flow br0 "table=0,priority=100,in_port=ovs-
>  
>  rm ovs-p1.pcap
>  tcpdump -U -i ovs-p1 -w ovs-p1.pcap &
> -sleep 1
> +sleep 2
>  
>  dnl The hex dump is NSH packet with TCP syn payload. pkt=eth/nsh/eth/ip/tcp
>  dnl The packet is sent from p0(at_ns0) interface directed to
> @@ -5918,10 +5918,10 @@ NS_CHECK_EXEC([at_ns0], [$PYTHON $srcdir/sendpkt.py p0 f2 ff 00 00 00 02 f2 ff 0
>  sleep 1
>  
>  dnl Check the expected de-capsulated TCP packet on the egress interface
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0000: *f200 *0000 *0002 *f200 *0000 *0001 *0800 *4500" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0010: *0028 *0001 *0000 *4006 *b013 *c0a8 *000a *0a00" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0020: *000a *0400 *0800 *0000 *00c8 *0000 *0000 *5002" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0030: *2000 *b85e *0000" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0000: *f200 *0000 *0002 *f200 *0000 *0001 *0800 *4500" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0010: *0028 *0001 *0000 *4006 *b013 *c0a8 *000a *0a00" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0020: *000a *0400 *0800 *0000 *00c8 *0000 *0000 *5002" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0030: *2000 *b85e *0000" 2>&1 1>/dev/null])
>  
>  
>  OVS_TRAFFIC_VSWITCHD_STOP
> @@ -5943,7 +5943,7 @@ AT_CHECK([ovs-ofctl -Oopenflow13 add-flow br0 "table=0,priority=100,in_port=ovs-
>  
>  rm ovs-p1.pcap
>  tcpdump -U -i ovs-p1 -w ovs-p1.pcap &
> -sleep 1
> +sleep 2
>  
>  dnl The hex dump is NSH packet with TCP syn payload. pkt=eth/nsh/eth/ip/tcp
>  dnl The nsh_ttl is 8, nsh_spi is 0x100 and nsh_si is 3
> @@ -5954,12 +5954,12 @@ NS_CHECK_EXEC([at_ns0], [$PYTHON $srcdir/sendpkt.py p0 f2 ff 00 00 00 02 f2 ff 0
>  sleep 1
>  
>  dnl Check the expected NSH packet with new fields in the header
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0000: *f2ff *0000 *0002 *f2ff *0000* 0001 *894f *01c6" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0010: *0103 *0001 *0104 *100f *0e0d *0c0b *0a09 *0807" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0020: *0605 *0403 *0201 *f200 *0000 *0002 *f200 *0000" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0030: *0001 *0800 *4500 *0028 *0001 *0000 *4006 *b013" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0040: *c0a8 *000a *0a00 *000a *0400 *0800 *0000 *00c8" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0050: *0000 *0000 *5002 *2000 *b85e *0000" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0000: *f2ff *0000 *0002 *f2ff *0000* 0001 *894f *01c6" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0010: *0103 *0001 *0104 *100f *0e0d *0c0b *0a09 *0807" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0020: *0605 *0403 *0201 *f200 *0000 *0002 *f200 *0000" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0030: *0001 *0800 *4500 *0028 *0001 *0000 *4006 *b013" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0040: *c0a8 *000a *0a00 *000a *0400 *0800 *0000 *00c8" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0050: *0000 *0000 *5002 *2000 *b85e *0000" 2>&1 1>/dev/null])
>  
>  OVS_TRAFFIC_VSWITCHD_STOP
>  AT_CLEANUP
> @@ -5985,7 +5985,7 @@ rm ovs-p1.pcap
>  rm ovs-p2.pcap
>  tcpdump -U -i ovs-p1 -w ovs-p1.pcap &
>  tcpdump -U -i ovs-p2 -w ovs-p2.pcap &
> -sleep 1
> +sleep 2
>  
>  dnl First send packet from at_ns0 --> OVS with SPI=0x100 and SI=2
>  NS_CHECK_EXEC([at_ns0], [$PYTHON $srcdir/sendpkt.py p0 f2 ff 00 00 00 02 f2 ff 00 00 00 01 89 4f 02 06 01 03 00 01 00 02 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 f2 00 00 00 00 02 f2 00 00 00 00 01 08 00 45 00 00 28 00 01 00 00 40 06 b0 13 c0 a8 00 0a 0a 00 00 0a 04 00 08 00 00 00 00 c8 00 00 00 00 50 02 20 00 b8 5e 00 00 > /dev/null])
> @@ -5993,12 +5993,12 @@ NS_CHECK_EXEC([at_ns0], [$PYTHON $srcdir/sendpkt.py p0 f2 ff 00 00 00 02 f2 ff 0
>  sleep 1
>  
>  dnl Check for the above packet on ovs-p1 interface
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0000: *f2ff *0000 *0002 *f2ff *0000 *0001 *894f *0206" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0010: *0103 *0001 *0002 *0102 *0304 *0506 *0708 *090a" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0020: *0b0c *0d0e *0f10 *f200 *0000 *0002 *f200 *0000" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0030: *0001 *0800 *4500 *0028 *0001 *0000 *4006 *b013" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0040: *c0a8 *000a *0a00 *000a *0400 *0800 *0000 *00c8" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p1.pcap 2>&1 | egrep "0x0050: *0000 *0000 *5002 *2000 *b85e *0000" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0000: *f2ff *0000 *0002 *f2ff *0000 *0001 *894f *0206" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0010: *0103 *0001 *0002 *0102 *0304 *0506 *0708 *090a" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0020: *0b0c *0d0e *0f10 *f200 *0000 *0002 *f200 *0000" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0030: *0001 *0800 *4500 *0028 *0001 *0000 *4006 *b013" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0040: *c0a8 *000a *0a00 *000a *0400 *0800 *0000 *00c8" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p1.pcap 2>&1 | egrep "0x0050: *0000 *0000 *5002 *2000 *b85e *0000" 2>&1 1>/dev/null])
>  
>  
>  dnl Send the second packet from at_ns1 --> OVS with SPI=0x100 and SI=1
> @@ -6007,12 +6007,12 @@ NS_CHECK_EXEC([at_ns1], [$PYTHON $srcdir/sendpkt.py p1 f2 ff 00 00 00 02 f2 ff 0
>  sleep 1
>  
>  dnl Check for the above packet on ovs-p2 interface
> -AT_CHECK([tcpdump -xx -r ovs-p2.pcap 2>&1 | egrep "0x0000: *f2ff *0000 *0002 *f2ff *0000 *0001 *894f *01c6" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p2.pcap 2>&1 | egrep "0x0010: *0103 *0001 *0001 *0102 *0304 *0506 *0708 *090a" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p2.pcap 2>&1 | egrep "0x0020: *0b0c *0d0e *0f10 *f200 *0000 *0002 *f200 *0000" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p2.pcap 2>&1 | egrep "0x0030: *0001 *0800 *4500 *0028 *0001 *0000 *4006 *b013" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p2.pcap 2>&1 | egrep "0x0040: *c0a8 *000a *0a00 *000a *0400 *0800 *0000 *00c8" 2>&1 1>/dev/null])
> -AT_CHECK([tcpdump -xx -r ovs-p2.pcap 2>&1 | egrep "0x0050: *0000 *0000 *5002 *2000 *b85e *0000" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p2.pcap 2>&1 | egrep "0x0000: *f2ff *0000 *0002 *f2ff *0000 *0001 *894f *01c6" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p2.pcap 2>&1 | egrep "0x0010: *0103 *0001 *0001 *0102 *0304 *0506 *0708 *090a" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p2.pcap 2>&1 | egrep "0x0020: *0b0c *0d0e *0f10 *f200 *0000 *0002 *f200 *0000" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p2.pcap 2>&1 | egrep "0x0030: *0001 *0800 *4500 *0028 *0001 *0000 *4006 *b013" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p2.pcap 2>&1 | egrep "0x0040: *c0a8 *000a *0a00 *000a *0400 *0800 *0000 *00c8" 2>&1 1>/dev/null])
> +AT_CHECK([tcpdump -n -xx -r ovs-p2.pcap 2>&1 | egrep "0x0050: *0000 *0000 *5002 *2000 *b85e *0000" 2>&1 1>/dev/null])
>  
>  
>  
> 


More information about the dev mailing list