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 d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev