On 24 May 2022, at 7:40, Amber, Kumar wrote:
> Hi Eelco,
>
> Thanks again for reviews . Please find my replies inline.
>
> <Snip>
>
>>> + tcp = TCP(dport=RandShort(), sport=RandShort(), flags='S',
>>> + dataofs=random.randint(0, 15))
>>
>> Maybe a new line before the command, as it was before.
>>
>
> Fixed in next version.
>
>>> + # IPv4 packets with fuzzing
>>> + pkt.append(fuzz(eth / ipv4 / udp))
>>> + pkt.append(fuzz(eth / ipv4 / tcp))
>>> + pkt.append(fuzz(eth / vlan / ipv4 / udp))
>>> + pkt.append(fuzz(eth / vlan / ipv4 / tcp))
>>> +
>>> + # IPv6 packets with fuzzing
>>> + pkt.append(fuzz(eth / ipv6 / udp))
>>> + pkt.append(fuzz(eth / ipv6 / tcp))
>>> + pkt.append(fuzz(eth / vlan / ipv6 / udp))
>>> + pkt.append(fuzz(eth / vlan / ipv6 / tcp))
>>> +
>>> + else:
>>> + mac_addr = "52:54:00:FF:FF:%02x" % (random.randint(0, 255),)
>>> + src_port = random.randrange(600, 800)
>>> + dst_port = random.randrange(800, 1000)
>>
>> MAC and ports are still random, they should be fixed also for replication
>> purposes.
>>
>
> Have a fixed mac and l4 ports in next version.
>
>>> + eth = Ether(src=mac_addr, dst=mac_addr)
>>> + vlan = Dot1Q(vlan=random.randrange(1, 20))
>>
>> Should be a fixed range, not random.
>>
>
> Done something like that if this is what you expect:
> vlan = Dot1Q(vlan=(i % 10))
Yes, something that assures, each time you run the script you get the same pcap.
>>> + udp = UDP(dport=src_port, sport=dst_port)
>>> + ipv4 = IP(src=RandIP()._fix(), dst=RandIP()._fix())
>>> + ipv6 = IPv6(src=RandIP6()._fix(), dst=RandIP6()._fix())
>>
>> Why use _fix()? We should use fixed IP ranges, _fix to me sound like we are
>> using a private function?
>> You should build the src/dst using the i variable.
>
> Same as vlan:
>
> ipv4_addr = "192.168.150." + str((i % 255))
> ipv6_addr = "2001:0db8:85a3:0000:0000:8a2e:0370:" + str(i)
Yes, this looks good, with the note that this will limit the IPv4 addresses to
255 unique ones.
For IPv6 you also need to make sure you print hex with max 4 leading zero’s and
do an (i % 0xffff).
>>
>>> + tcp = TCP(dport=src_port, sport=dst_port, flags='S')
>>
>> Maybe a new line before the command, as it was before.
>>
>>> + # IPv4 packets
>>> + pkt.append(eth / ipv4 / udp)
>>> + pkt.append(eth / ipv4 / tcp)
>>> + pkt.append(eth / vlan / ipv4 / udp)
>>> + pkt.append(eth / vlan / ipv4 / tcp)
>>> +
>>> + # IPv6 packets
>>> + pkt.append(eth / ipv6 / udp)
>>> + pkt.append(eth / ipv6 / tcp)
>>> + pkt.append(eth / vlan / ipv6 / udp)
>>> + pkt.append(eth / vlan / ipv6 / tcp)
>>> +
>>> +pktdump.write(pkt)
>>> diff --git a/tests/pcap/mfex_test.pcap b/tests/pcap/mfex_test.pcap
>>> deleted file mode 100644 index
>>>
>> 1aac67b8d643ecb016c758cba4cc32212a80f52a..000000000000000000000000
>> 0000
>>> 000000000000
>>> GIT binary patch
>>> literal 0
>>> HcmV?d00001
>>>
>>> literal 416
>>>
>> zcmca|c+)~A1{MYw`2U}Qff2}Q<eHVR>K`M68ITRa|G@yFii5$Gfk6YL%z>@uY&
>> }o|
>>>
>> z2s4N<1VH2&7y^V87$)XGOtD~MV$cFgfG~zBGGJ2#YtF$<F=a4i;9x8Q*<ZrSM6
>> Ufz
>>> xK>KST_NTIwYriok6N4Vm)gX-
>> Q@<yO<!C`>c^{cp<7_5LgK^UuU{2>VS0RZ!RQ+EIW
>>>
>>> diff --git a/tests/system-dpdk.at b/tests/system-dpdk.at index
>>> 7d2715c4a..6b7d73a68 100644
>>> --- a/tests/system-dpdk.at
>>> +++ b/tests/system-dpdk.at
>>> @@ -226,17 +226,19 @@ dnl
>>> ----------------------------------------------------------------------
>>> ----
>>> dnl Add standard DPDK PHY port
>>> AT_SETUP([OVS-DPDK - MFEX Autovalidator])
>>> AT_KEYWORDS([dpdk])
>>> -
>>> +OVS_DPDK_PRE_CHECK()
>>> OVS_DPDK_START()
>>> -
>>> -dnl Add userspace bridge and attach it to OVS AT_CHECK([ovs-vsctl
>>> add-br br0 -- set bridge br0 datapath_type=netdev])
>>> -AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dpdk
>>> options:dpdk-
>> devargs=net_pcap1,rx_pcap=$srcdir/pcap/mfex_test.pcap,inf
>>> inite_rx=1], [], [stdout], [stderr]) -AT_CHECK([ovs-vsctl show], [],
>>> [stdout])
>>> -
>>> AT_SKIP_IF([! ovs-appctl dpif-netdev/miniflow-parser-get | sed 1,4d |
>>> grep "True"], [], [dnl
>>> ])
>>>
>>> +AT_SKIP_IF([! $PYTHON3 -c "import scapy"], [], [])
>>> +AT_CHECK([$PYTHON3 $srcdir/mfex_fuzzy.py $srcdir 2000], [], [stdout])
>>> +
>>> +dnl Add userspace bridge and attach it to OVS AT_CHECK([ovs-vsctl
>>> +add-port br0 p1 -- set Interface p1 type=dpdk
>>> +options:dpdk-devargs=net_pcap1,rx_pcap=$srcdir/pcap/fuzzy.pcap,infini
>>> +te_rx=1], [], [stdout], [stderr]) AT_CHECK([ovs-vsctl show], [],
>>> +[stdout])
>>> +
>>> AT_CHECK([ovs-appctl dpif-netdev/dpif-impl-set dpif_avx512], [0],
>>> [dnl DPIF implementation set to dpif_avx512.
>>> ])
>>> @@ -245,11 +247,15 @@ AT_CHECK([ovs-appctl
>>> dpif-netdev/miniflow-parser-set autovalidator], [0], [dnl Miniflow extract
>> implementation set to autovalidator.
>>> ])
>>>
>>> -OVS_WAIT_UNTIL([test `ovs-vsctl get interface p1 statistics | grep
>>> -oP 'rx_packets=\s*\K\d+'` -ge 1000])
>>> +OVS_WAIT_UNTIL([test `ovs-vsctl get interface p1 statistics | grep
>>> +-oP 'rx_packets=\s*\K\d+'` -ge 16000])
>>>
>>> dnl Clean up
>>> AT_CHECK([ovs-vsctl del-port br0 p1], [], [stdout], [stderr])
>>> -OVS_VSWITCHD_STOP("[SYSTEM_DPDK_ALLOWED_LOGS]")
>>> +OVS_VSWITCHD_STOP("m4_join([], [SYSTEM_DPDK_ALLOWED_LOGS], [
>>> +\@upcall: datapath reached the dynamic limit of .* flows.@d
>>> +\@received packet on unknown port .* on bridge bra while processing@d
>>> +\@upcall_cb failure: ukey installation fails@d
>>
>> Still not convinced we need these additional messages. I remember there
>> was an earlier discussion around these (I think with Ilya), can you point me
>> to
>> the conclusion on this?
>>
> The discussion was for the "MFEX-fuzzy " which experiences context changes on
> CPU
> Mentioned below.
>
> Sure the discussion are here :
> https://mail.openvswitch.org/pipermail/ovs-dev/2022-March/392374.html
>
> But I will remove these changes in fuzzy test for now as this patch holds
> importance for us for testing IPv6
> Patches and fuzzy topic can be delayed for now.
I’m not talking about the fuzzy topic, but about the error messages:
\@upcall: datapath reached the dynamic limit of .* flows.@d
\@received packet on unknown port .* on bridge bra while processing@d
\@upcall_cb failure: ukey installation fails@d
And the ones below:
\@received packet on unknown port .* on bridge br0 while processing@d
\@upcall_cb failure: ukey installation fails@d \@Unreasonably long .*
poll interval@d \@context switches: .* voluntary, .* involuntary@d
\@faults: .* minor, .* major@d
\@upcall_cb failure: ukey installation fails@d
Do we fully understand why they are generated? I can see some are due to
limited CPU availability, and the number of entries:
\@upcall: datapath reached the dynamic limit of .* flows.@d
\@context switches: .* voluntary, .* involuntary@d
\@Unreasonably long .* poll interval@d
\@faults: .* minor, .* major@d
But I do not understand the following (and I do not have a system to replicate
this):
\@received packet on unknown port .* on bridge bra while processing@d
\@upcall_cb failure: ukey installation fails@d
>>> +])")
>>> AT_CLEANUP
>>> dnl
>>> ----------------------------------------------------------------------
>>> ----
>>>
>>> @@ -257,18 +263,19 @@ dnl
>>> ----------------------------------------------------------------------
>>> ----
>>> dnl Add standard DPDK PHY port
>>> AT_SETUP([OVS-DPDK - MFEX Autovalidator Fuzzy])
>>> AT_KEYWORDS([dpdk])
>>> -AT_SKIP_IF([! $PYTHON3 -c "import scapy"], [], [])
>>> -AT_CHECK([$PYTHON3 $srcdir/mfex_fuzzy.py $srcdir], [], [stdout])
>>> +OVS_DPDK_PRE_CHECK()
>>> OVS_DPDK_START()
>>> +AT_CHECK([ovs-vsctl add-br br0 -- set bridge br0
>>> +datapath_type=netdev]) AT_SKIP_IF([! ovs-appctl
>>> +dpif-netdev/miniflow-parser-get | sed 1,4d | grep "True"], [], [dnl
>>> +])
>>> +
>>> +AT_SKIP_IF([! $PYTHON3 -c "import scapy"], [], [])
>>> +AT_CHECK([$PYTHON3 $srcdir/mfex_fuzzy.py $srcdir 2000 fuzzy], [],
>>> +[stdout])
>>>
>>> dnl Add userspace bridge and attach it to OVS -AT_CHECK([ovs-vsctl
>>> add-br br0 -- set bridge br0 datapath_type=netdev])
>>> AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dpdk
>>> options:dpdk-devargs=net_pcap1,rx_pcap=$srcdir/pcap/fuzzy.pcap,infinit
>>> e_rx=1], [], [stdout], [stderr]) AT_CHECK([ovs-vsctl show], [],
>>> [stdout])
>>>
>>> -AT_SKIP_IF([! ovs-appctl dpif-netdev/miniflow-parser-get | sed 1,4d |
>>> grep "True"], [], [dnl
>>> -])
>>> -
>>> AT_CHECK([ovs-appctl dpif-netdev/dpif-impl-set dpif_avx512], [0],
>>> [dnl DPIF implementation set to dpif_avx512.
>>> ])
>>> @@ -277,12 +284,18 @@ AT_CHECK([ovs-appctl
>>> dpif-netdev/miniflow-parser-set autovalidator], [0], [dnl Miniflow extract
>> implementation set to autovalidator.
>>> ])
>>>
>>> -OVS_WAIT_UNTIL([test `ovs-vsctl get interface p1 statistics | grep
>>> -oP 'rx_packets=\s*\K\d+'` -ge 100000])
>>> +OVS_WAIT_UNTIL([test `ovs-vsctl get interface p1 statistics | grep
>>> +-oP 'rx_packets=\s*\K\d+'` -ge 16000])
>>>
>>> dnl Clean up
>>> AT_CHECK([ovs-vsctl del-port br0 p1], [], [stdout], [stderr])
>>> OVS_VSWITCHD_STOP("m4_join([], [SYSTEM_DPDK_ALLOWED_LOGS], [
>>> \@upcall: datapath reached the dynamic limit of .* flows.@d
>>> +\@received packet on unknown port .* on bridge br0 while processing@d
>>> +\@upcall_cb failure: ukey installation fails@d \@Unreasonably long .*
>>> +poll interval@d \@context switches: .* voluntary, .* involuntary@d
>>> +\@faults: .* minor, .* major@d
>>> +\@upcall_cb failure: ukey installation fails@d
>>
>> See above…
>
> These warning were seen due to context changes on CPU CI.
> \@upcall_cb failure: ukey installation fails@d \@Unreasonably long .*
> poll interval@d \@context switches: .* voluntary, .* involuntary@d
> faults: .* minor, .* major@d
>
> Regards
> Amber
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev