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

William Tu u9012063 at gmail.com
Mon Jul 15 17:44:52 UTC 2019


On Mon, Jul 15, 2019 at 7:12 AM Ilya Maximets <i.maximets at samsung.com> wrote:
>
> 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/
>

Hi Ilya,

Thanks for finding out the root cause.
I tested and acked to the above patch.

> 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])
>

OK, I will send out another patch
Regards,
William

> 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