From: "Chen, Zhaoyan" <zhaoyan.chen@intel.com>
To: "Xu, HailinX" <hailinx.xu@intel.com>, "dts@dpdk.org" <dts@dpdk.org>
Cc: "Xu, HailinX" <hailinx.xu@intel.com>,
"Chen, Zhaoyan" <zhaoyan.chen@intel.com>
Subject: Re: [dts] [PATCH V1 1/2] test_plans:add new test plan
Date: Thu, 6 Aug 2020 01:27:34 +0000 [thread overview]
Message-ID: <DM6PR11MB3628C58A2675ACCD3F6E18E08B480@DM6PR11MB3628.namprd11.prod.outlook.com> (raw)
In-Reply-To: <1596183559-247699-1-git-send-email-hailinx.xu@intel.com>
Acked-by: Zhaoyan Chen <zhaoyan.chen@intel.com>
Regards,
Zhaoyan Chen
> -----Original Message-----
> From: dts <dts-bounces@dpdk.org> On Behalf Of Xu hailin
> Sent: Friday, July 31, 2020 4:19 PM
> To: dts@dpdk.org
> Cc: Xu, HailinX <hailinx.xu@intel.com>
> Subject: [dts] [PATCH V1 1/2] test_plans:add new test plan
>
> From: "Xu,Hailin" <hailinx.xu@intel.com>
>
> add cvl dcf new test plan:test_plans/cvl_dcf_date_path_test_plan.rst
>
> Signed-off-by: Xu,Hailin <hailinx.xu@intel.com>
> ---
> test_plans/cvl_dcf_date_path_test_plan.rst | 203
> +++++++++++++++++++++
> 1 file changed, 203 insertions(+)
> create mode 100755 test_plans/cvl_dcf_date_path_test_plan.rst
>
> diff --git a/test_plans/cvl_dcf_date_path_test_plan.rst
> b/test_plans/cvl_dcf_date_path_test_plan.rst
> new file mode 100755
> index 0000000..380090f
> --- /dev/null
> +++ b/test_plans/cvl_dcf_date_path_test_plan.rst
> @@ -0,0 +1,203 @@
> +
> +Common steps for launching DCF
> +==============================
> +
> +Generate 1 trust VF on 1 PF, and request 1 DCF on the trust VF.
> +PF should grant DCF mode to it.
> +
> +Generate 4 VFs on PF ::
> +
> + echo 4 > /sys/bus/pci/devices/0000:18:00.0/sriov_numvfs
> +
> +Set a VF as trust ::
> +
> + ip link set enp24s0f0 vf 0 trust on
> + ip link set enp27s0f0 vf 0 mac D2:6B:4C:EB:1C:26
> +
> +Launch dpdk on the VF, request DCF mode ::
> +
> + ./usertools/dpdk-devbind.py -b vfio-pci 18:01.0
> + ./x86_64-native-linuxapp-gcc/app/testpmd -l 6-10 -n 4 -w
> + 18:01.0,cap=dcf --file-prefix=vf -- -i
> +
> +
> +Test Case: Launch DCF and do macfwd
> +===================================
> +
> +Execute **common steps** to prepare DCF test environment
> +
> +Set macfwd ::
> +
> + set fwd mac
> + start
> +
> +Launch tcpdump to sniffer the packets from DCF ::
> +
> + tcpdump -i enp24s0f1 -vvv -Q in
> +
> +Send packets from tester(scapy) to the VF by MAC
> address(D2:6B:4C:EB:1C:26) ::
> +
> + p = Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="192.168.1.1",dst="192.168.1.3")/Raw('x'*6
> 4)
> + sendp(p, iface=intf, count=100)
> +
> +Expect tester can get packets which loopbacked by DCF.
> +
> +
> +Test Case: Check default rss for L3
> +===================================
> +
> +DCF data path support RSS packets by default. For L3 packets, input set is
> IP src/dst.
> +For tunneling packets, input set is inner IP src/dst.
> +
> +Execute **common steps** to prepare DCF test environment
> +
> +Set rxonly forward mode ::
> +
> + set fwd rxonly
> + set verbose 1
> + start
> +
> +Send a series packets to check if DCF RSS is correct for IPv4 ::
> +
> + intf="enp175s0f0"
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="192.168.1.1",
> dst="192.168.1.2")/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="192.168.1.1",
> dst="192.168.1.3")/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="192.168.1.3",
> dst="192.168.1.2")/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> + src="00:11:22:33:44:55")/IP(src="192.168.1.1",
> + dst="192.168.1.2")/Raw('x'*64), iface=intf)
> +
> +Expected: p1 hash value is not equal to p2 or p3, and should be same to
> p4.
> +
> +Send a series packets to check if DCF RSS is correct for IPv6 ::
> +
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IPv6(src="::22", dst="::11")/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IPv6(src="::22", dst="::12")/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IPv6(src="::21", dst="::11")/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> + src="00:11:22:33:44:55")/IPv6(src="::22", dst="::11")/Raw('x'*64),
> + iface=intf)
> +
> +Expected: p1 hash value is not equal to p2 or p3, and should be same to
> p4.
> +
> +Send a series packets to check if DCF RSS is correct for tunnelling packet
> (inner IPv4) ::
> +
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IP(src="192.168.1.1", dst="192.168.1.2")/Raw('x'*64),
> iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IP(src="192.168.1.1", dst="192.168.1.3")/Raw('x'*64),
> iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IP(src="192.168.1.3", dst="192.168.1.2")/Raw('x'*64),
> iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="11:22:33:44:55:77")/IP(src="1.1.1.2",
> dst="2.2.2.1")/GRE()/IP(src="192.168.1.1", dst="192.168.1.2")/Raw('x'*64),
> iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> + src="11:22:33:44:55:77")/IPv6(src="::11",
> + dst="::22")/GRE()/IP(src="192.168.1.1",
> + dst="192.168.1.2")/Raw('x'*64), iface=intf)
> +
> +
> +Expected: p1 hash value is not equal to p2 or p3. p1 hash value is equal
> to p4 and p5.
> +
> +
> +Send a series packets to check if DCF RSS is correct for tunnelling packet
> (inner IPv6) ::
> +
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IPv6(src="::22", dst="::11")/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IPv6(src="::22", dst="::12")/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IPv6(src="::21", dst="::11")/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="11:22:33:44:55:77")/IP(src="1.1.1.2",
> dst="2.2.2.1")/GRE()/IPv6(src="::22", dst="::11")/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> + src="11:22:33:44:55:77")/IPv6(src="::33",
> + dst="::44")/GRE()/IPv6(src="::22", dst="::11")/Raw('x'*64),
> + iface=intf)
> +
> +Expected: p1 hash value is not equal to p2 or p3. p1 hash value is equal
> to p4 and p5.
> +
> +
> +Test Case: Check default rss for L4
> +===================================
> +
> +DCF data path support RSS packets by default. For L3 packets, input set is
> IP src/dst.
> +For tunneling packets, input set is inner IP src/dst.
> +
> +Execute **common steps** to prepare DCF test environment
> +
> +Set rxonly forward mode ::
> +
> + set fwd rxonly
> + set verbose 1
> + start
> +
> +Send a series packets to check if DCF RSS is correct for IPv4 ::
> +
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="192.168.1.1",
> dst="192.168.1.2")/UDP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="192.168.1.1",
> dst="192.168.1.3")/UDP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="192.168.1.3",
> dst="192.168.1.2")/UDP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="192.168.1.1",
> dst="192.168.1.2")/UDP(sport=1235, dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="192.168.1.1",
> dst="192.168.1.2")/UDP(sport=1234, dport=5679)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> + src="00:22:33:44:55:77")/IP(src="192.168.1.1",
> + dst="192.168.1.2")/TCP(sport=1234, dport=5678)/Raw('x'*64),
> + iface=intf)
> +
> +Expected: p1 hash value is not equal to p2 or p3 or p4 or p5, and should
> be equal to p6.
> +
> +Send a series packets to check if DCF RSS is correct for IPv6 ::
> +
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IPv6(src="::22", dst="::11")/UDP(sport=1234,
> dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IPv6(src="::22", dst="::12")/UDP(sport=1234,
> dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IPv6(src="::21", dst="::11")/UDP(sport=1234,
> dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IPv6(src="::22", dst="::11")/UDP(sport=1235,
> dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IPv6(src="::22", dst="::11")/UDP(sport=1234,
> dport=5679)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> + src="11:22:33:44:55:77")/IPv6(src="::22", dst="::11")/TCP(sport=1234,
> + dport=5678)/Raw('x'*64), iface=intf)
> +
> +Expected: p1 hash value is not equal to p2 or p3 or p4 or p5, and should
> be equal to p6.
> +
> +Send a series packets to check if DCF RSS is correct for tunnelling packet
> (inner IPv4) ::
> +
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IP(src="192.168.1.1",
> dst="192.168.1.2")/UDP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IP(src="192.168.1.1",
> dst="192.168.1.3")/UDP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IP(src="192.168.1.3",
> dst="192.168.1.2")/UDP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IP(src="192.168.1.1",
> dst="192.168.1.2")/UDP(sport=1235, dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IP(src="192.168.1.1",
> dst="192.168.1.2")/UDP(sport=1234, dport=5679)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:22:33:44:55:77")/IP(src="1.1.1.2",
> dst="2.2.2.1")/GRE()/IP(src="192.168.1.1",
> dst="192.168.1.2")/UDP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> + src="00:22:33:44:55:77")/IPv6(src="::11",
> + dst="::22")/GRE()/IP(src="192.168.1.1",
> + dst="192.168.1.2")/TCP(sport=1234, dport=5678)/Raw('x'*64),
> + iface=intf)
> +
> +Expected: p1 hash value is not equal to p2 or p3 or p4 or p5, and should
> be equal to p6 and p7.
> +
> +
> +Send a series packets to check if DCF RSS is correct for tunnelling packet
> (inner IPv6) ::
> +
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IPv6(src="::22", dst="::11")/UDP(sport=1234,
> dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IPv6(src="::22", dst="::12")/UDP(sport=1234,
> dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IPv6(src="::21", dst="::11")/UDP(sport=1234,
> dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IPv6(src="::22", dst="::11")/UDP(sport=1235,
> dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:11:22:33:44:55")/IP(src="1.1.1.1",
> dst="2.2.2.2")/GRE()/IPv6(src="::22", dst="::11")/UDP(sport=1234,
> dport=5679)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> src="00:22:33:44:55:77")/IP(src="1.1.1.2",
> dst="2.2.2.1")/GRE()/IPv6(src="::22", dst="::11")/UDP(sport=1234,
> dport=5678)/Raw('x'*64), iface=intf)
> + sendp(Ether(dst="D2:6B:4C:EB:1C:26",
> + src="00:22:33:44:55:77")/IPv6(src="::33",
> + dst="::44")/GRE()/IPv6(src="::22", dst="::11")/UDP(sport=1234,
> + dport=5678)/Raw('x'*64), iface=intf)
> +
> +Expected: p1 hash value is not equal to p2 or p3 or p4 or p5, and should
> be equal to p6 and p7.
> +
> +
> +Test Case: Create rule with to original VF action
> +=================================================
> +
> +DCF data path support RSS packets by default. For L3 packets, input set is
> IP src/dst.
> +For tunneling packets, input set is inner IP src/dst.
> +
> +Execute **common steps** to prepare DCF test environment
> +
> +Set rxonly forward mode ::
> +
> + set fwd rxonly
> + set verbose 1
> + start
> +
> +Send a packet, check the DCF can't recieve the packet (Dest mac address
> is not DCF's mac) ::
> +
> +
> +
> sendp([Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:84
> + 75:1111:3900:1518",
> +
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dp
> ort
> + =23)/("X"*480)], iface=intf, count=1)
> +
> +Create a rule to DCF ::
> +
> + flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6
> + dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25
> + dst is 23 / end actions vf original 1 / end
> +
> +Send the packet again, check DCF can recieve the packet ::
> +
> +
> +
> sendp([Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:84
> + 75:1111:3900:1518",
> +
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dp
> ort
> + =23)/("X"*480)], iface=intf, count=1)
> +
> +Destory the rule on DCF ::
> +
> + flow destroy 0 rule 0
> +
> +Send the packet agiain, check DCF can't recieve the packet ::
> +
> +
> +
> sendp([Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:84
> + 75:1111:3900:1518",
> +
> dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dp
> ort
> + =23)/("X"*480)], iface=intf, count=1)
> +
> +
> +Test Case: Measure performance of DCF interface
> +===============================================
> +
> +The steps are same to iAVF performance test, a slight difference on
> +launching testpmd devarg. DCF need cap=dcf option.
> +Expect the performance is same to iAVF
> \ No newline at end of file
> --
> 2.17.1
prev parent reply other threads:[~2020-08-06 1:28 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-31 8:19 Xu hailin
2020-07-31 8:19 ` [dts] [PATCH V1 2/2] tests:add new suite Xu hailin
2020-07-31 8:19 ` [dts] [PATCH V1 0/2] test_plans: adds, tests: adds Xu hailin
2020-08-03 6:09 ` Xu, HailinX
2020-08-06 1:27 ` Chen, Zhaoyan
2020-08-12 8:00 ` Tu, Lijuan
2020-08-06 1:27 ` Chen, Zhaoyan [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DM6PR11MB3628C58A2675ACCD3F6E18E08B480@DM6PR11MB3628.namprd11.prod.outlook.com \
--to=zhaoyan.chen@intel.com \
--cc=dts@dpdk.org \
--cc=hailinx.xu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).