* [dts] [PATCH v3]test plan: add ddp gtp qregion test plan @ 2018-03-08 2:54 Xueqin Lin 2018-03-08 8:59 ` Liu, Yong 0 siblings, 1 reply; 3+ messages in thread From: Xueqin Lin @ 2018-03-08 2:54 UTC (permalink / raw) To: dts; +Cc: Xueqin Lin --- test_plans/ddp_gtp_qregion_test_plan.rst | 700 +++++++++++++++++++++++++++++++ 1 file changed, 700 insertions(+) create mode 100644 test_plans/ddp_gtp_qregion_test_plan.rst diff --git a/test_plans/ddp_gtp_qregion_test_plan.rst b/test_plans/ddp_gtp_qregion_test_plan.rst new file mode 100644 index 0000000..0e845bd --- /dev/null +++ b/test_plans/ddp_gtp_qregion_test_plan.rst @@ -0,0 +1,700 @@ +.. Copyright (c) <2017>, Intel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + - Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. + +=============== +DDP GTP Qregion +=============== + +DDP profile 0x80000008 adds support for GTP with IPv4 or IPv6 payload. +The test case plan focus on more DDP GTP requirements as below. For DDP +GTP introduction, please refer to DDP GTP test plan. + +Requirements +============ +1. GTP-C distributed to control plane queues region using outer IP + destination address as hash input set (there is no inner IP headers + for GTP-C packets) +2. GTP-U distributed to data plane queues region using inner IP source + address as hash input set. +3. GTP-C distributed to control plane queues region using TEID as hash + input set. +4. GTP-U distributed to data plane queues region using TEID and inner + packet 5-tuple as hash input set. + +FVL supports queue regions configuration for RSS, so different traffic +classes or different packet classification types can be separated to +different queue regions which includes several queues. Support to set +hash input set info for RSS flexible payload, then enable new +protocols' RSS. +Dynamic flow type feature introduces GTP pctype and flow type, design +and add queue region/queue range mapping as below table. For more detailed +and relative information, please refer to dynamic flow type and queue +region test plan:: + + +-------------+------------+------------+--------------+-------------+ + | Packet Type | PCTypes | Flow Types | Queue region | Queue range | + +-------------+------------+------------+--------------+-------------+ + | GTP-U IPv4 | 22 | 26 | 0 | 1~8 | + +-------------+------------+------------+--------------+-------------+ + | GTP-U IPv6 | 23 | 23 | 1 | 10~25 | + +-------------+------------+------------+--------------+-------------+ + | GTP-U PAY4 | 24 | 24 | 2 | 30~37 | + +-------------+------------+------------+--------------+-------------+ + | GTP-C PAY4 | 25 | 25 | 3 | 40~55 | + +-------------+------------+------------+--------------+-------------+ + +Prerequisites +============= + +1. Host PF in DPDK driver:: + + ./tools/dpdk-devbind.py -b igb_uio 81:00.0 + +2. Start testpmd on host, set chained port topology mode, add txq/rxq to + enable multi-queues. In general, PF's max queue is 64:: + + ./testpmd -c f -n 4 -- -i --port-topology=chained --txq=64 --rxq=64 + +Load/delete dynamic device personalization +========================================== + +1. Stop testpmd port before loading profile:: + + testpmd > port stop all + +2. Load gtp.pkgo file to the memory buffer, save original configuration + and return in the same buffer to the gtp.bak file:: + + testpmd > ddp add (port_id) /tmp/gtp.pkgo,/tmp/gtp.bak + +3. Remove profile from the network adapter and restore original + configuration:: + + testpmd > ddp del (port_id) /tmp/gtp.bak + +4. Start testpmd port:: + + testpmd > port start all + +Note: + +1. Gtp.pkgo profile is not released by ND yet, only have engineer version for + internal use so far. Plan to keep public reference profiles at Intel + Developer Zone, release versions of profiles and supply link later. + +2. Loading DDP is the prerequisite for below GTP relative cases. Load + profile again once restarting testpmd to let software detect this + event, although has “profile has already existed” reminder. Operate + global reset or lanconf tool to recover original setting. Global reset + trigger reg is 0xb8190, first cmd is core reset, second cmd is global + reset:: + + testpmd > write reg 0 0xb8190 1 + testpmd > write reg 0 0xb8190 2 + + +Flow type and queue region mapping setting +========================================== +1. As above mapping table, set queue region on a port:: + + testpmd> set port 0 queue-region region_id 0 queue_start_index 1 queue_num 8 + testpmd> set port 0 queue-region region_id 1 queue_start_index 10 queue_num 16 + testpmd> set port 0 queue-region region_id 2 queue_start_index 30 queue_num 8 + testpmd> set port 0 queue-region region_id 3 queue_start_index 40 queue_num 16 + +2. Set the mapping of flow type to region index on a port:: + + testpmd> set port 0 queue-region region_id 0 flowtype 26 + testpmd> set port 0 queue-region region_id 1 flowtype 23 + testpmd> set port 0 queue-region region_id 2 flowtype 24 + testpmd> set port 0 queue-region region_id 3 flowtype 25 + testpmd> set port 0 queue-region flush on + +3. flush all queue regions:: + + testpmd> set port 0 queue-region flush off + + +Test Case: Outer IPv6 dst controls GTP-C queue in queue region +============================================================== + +1. Check flow ptype to pctype mapping:: + + testpmd> show port 0 pctype mapping + +2. Update GTP-C flow type id 25 to pcytpe id 25 mapping item:: + + testpmd> port config 0 pctype mapping update 25 25 + +3. Check flow ptype to pctype mapping adds 25 this mapping + +4. Reset GTP-C hash configure:: + + testpmd> port config 0 pctype 25 hash_inset clear all + +5. Outer dst address words are 50~57, enable hash input set for outer dst:: + + testpmd> port config 0 pctype 25 hash_inset set field 50 + testpmd> port config 0 pctype 25 hash_inset set field 51 + testpmd> port config 0 pctype 25 hash_inset set field 52 + testpmd> port config 0 pctype 25 hash_inset set field 53 + testpmd> port config 0 pctype 25 hash_inset set field 54 + testpmd> port config 0 pctype 25 hash_inset set field 55 + testpmd> port config 0 pctype 25 hash_inset set field 56 + testpmd> port config 0 pctype 25 hash_inset set field 57 + +6. Enable flow type id 25's RSS:: + + testpmd> port config all rss 25 + +7. Start testpmd, set fwd rxonly, enable output print + +8. Send outer dst GTP-C packet, check RSS could work, verify the queue is + between 40 and 55, print PKT_RX_RSS_HASH:: + + p=Ether()/IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP(dport=2123)/ + GTP_U_Header()/Raw('x'*20) + +9. Send different outer dst GTP-C packet, check pmd receives packet from + different queue but between 40 and 55:: + + p=Ether()/IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0002")/UDP(dport=2123)/ + GTP_U_Header()/Raw('x'*20) + +10. Send different outer src GTP-C packet, check pmd receives packet from + same queue:: + + p=Ether()/IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0002", + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/ + UDP(dport=2123)/GTP_U_Header()/Raw('x'*20) + + +Test Case: TEID controls GTP-C queue in queue region +==================================================== + +1. Check flow ptype to pctype mapping:: + + testpmd> show port 0 pctype mapping + +2. Update GTP-C flow type id 25 to pcytpe id 25 mapping item:: + + testpmd> port config 0 pctype mapping update 25 25 + +3. Check flow ptype to pctype mapping adds 25 this mapping + +4. Reset GTP-C hash configure:: + + testpmd> port config 0 pctype 25 hash_inset clear all + +5. Teid words are 44 and 45, enable hash input set for teid:: + + testpmd> port config 0 pctype 25 hash_inset set field 44 + testpmd> port config 0 pctype 25 hash_inset set field 45 + +6. Enable flow type id 25's RSS:: + + testpmd> port config all rss 25 + +7. Start testpmd, set fwd rxonly, enable output print + +8. Send teid GTP-C packet, check RSS could work, verify the queue is + between 40 and 55, print PKT_RX_RSS_HASH:: + + p=Ether()/IPv6()/UDP(dport=2123)/GTP_U_Header(teid=0xfe)/Raw('x'*20) + +9. Send different teid GTP-C packet, check receive packet from different + queue but between 40 and 55:: + + p=Ether()/IPv6()/UDP(dport=2123)/GTP_U_Header(teid=0xff)/Raw('x'*20) + + +Test Case: TEID controls GTP-U IPv4 queue in queue region +========================================================= +1. Check flow type to pctype mapping:: + + testpmd> show port 0 pctype mapping + +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: + + testpmd> port config 0 pctype mapping update 22 26 + +3. Check flow ptype to pctype mapping adds 26 this mapping:: + + testpmd> show port 0 pctype mapping + +4. Reset GTP-U IPv4 hash configure:: + + testpmd> port config 0 pctype 22 hash_inset clear all + +5. Teid words are 44 and 45, enable hash input set for teid:: + + testpmd> port config 0 pctype 22 hash_inset set field 44 + testpmd> port config 0 pctype 22 hash_inset set field 45 + +6. Enable flow type id 26's RSS:: + + testpmd> port config all rss 26 + +7. Start testpmd, set fwd rxonly, enable output print + +8. Send teid GTP-U IPv4 packet, check RSS could work, verify the queue is + between 1 and 8, print PKT_RX_RSS_HASH:: + + p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/IP()/Raw('x'*20) + +9. Send different teid GTP-U IPv4 packet, check receive packet from different + queue but between 1 and 8:: + + p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=0xff)/IP()/Raw('x'*20) + + +Test Case: Sport controls GTP-U IPv4 queue in queue region +========================================================== +1. Check flow type to pctype mapping:: + + testpmd> show port 0 pctype mapping + +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: + + testpmd> port config 0 pctype mapping update 22 26 + +3. Check flow ptype to pctype mapping adds 26 this mapping:: + + testpmd> show port 0 pctype mapping + +4. Reset GTP-U IPv4 hash configure:: + + testpmd> port config 0 pctype 22 hash_inset clear all + +5. Sport words are 29 and 30, enable hash input set for sport:: + + testpmd> port config 0 pctype 22 hash_inset set field 29 + testpmd> port config 0 pctype 22 hash_inset set field 30 + +6. Enable flow type id 26's RSS:: + + testpmd> port config all rss 26 + +7. Start testpmd, set fwd rxonly, enable output print + +8. Send sport GTP-U IPv4 packet, check RSS could work, verify the queue is + between 1 and 8, print PKT_RX_RSS_HASH:: + + p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=30)/IP()/ + UDP(sport=100,dport=200)/Raw('x'*20) + +9. Send different sport GTP-U IPv4 packet, check pmd receives packet from + different queue but between 1 and 8:: + + p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=30)/IP()/ + UDP(sport=101,dport=200)/Raw('x'*20) + + +Test Case: Dport controls GTP-U IPv4 queue in queue region +========================================================== +1. Check flow type to pctype mapping:: + + testpmd> show port 0 pctype mapping + +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: + + testpmd> port config 0 pctype mapping update 22 26 + +3. Check flow ptype to pctype mapping adds 26 this mapping:: + + testpmd> show port 0 pctype mapping + +4. Reset GTP-U IPv4 hash configure:: + + testpmd> port config 0 pctype 22 hash_inset clear all + +5. Dport words are 29 and 30, enable hash input set for dport:: + + testpmd> port config 0 pctype 22 hash_inset set field 29 + testpmd> port config 0 pctype 22 hash_inset set field 30 + +6. Enable flow type id 26's RSS:: + + testpmd> port config all rss 26 + +7. Start testpmd, set fwd rxonly, enable output print + +8. Send dprot GTP-U IPv4 packet, check RSS could work, verify the queue is + between 1 and 8, print PKT_RX_RSS_HASH:: + + p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=30)/IP()/ + UDP(sport=100,dport=200)/Raw('x'*20) + +9. Send different dport GTP-U IPv4 packet, check receive packet from different + queue but between 1 and 8:: + + p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=30)/IP()/ + UDP(sport=100,dport=201)/Raw('x'*20) + + +Test Case: Inner IP src controls GTP-U IPv4 queue in queue region +================================================================= +1. Check flow type to pctype mapping:: + + testpmd> show port 0 pctype mapping + +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: + + testpmd> port config 0 pctype mapping update 22 26 + +3. Check flow ptype to pctype mapping adds 26 this mapping:: + + testpmd> show port 0 pctype mapping + +4. Reset GTP-U IPv4 hash configure:: + + testpmd> port config 0 pctype 22 hash_inset clear all + +5. Inner source words are 15 and 16, enable hash input set for inner src:: + + testpmd> port config 0 pctype 22 hash_inset set field 15 + testpmd> port config 0 pctype 22 hash_inset set field 16 + +6. Enable flow type id 26's RSS:: + + testpmd> port config all rss 26 + +7. Start testpmd, set fwd rxonly, enable output print + +8. Send inner src GTP-U IPv4 packet, check RSS could work, verify the queue is + between 1 and 8, print PKT_RX_RSS_HASH:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ + IP(src="1.1.1.1",dst="2.2.2.2")/UDP()/Raw('x'*20) + +9. Send different src GTP-U IPv4 packet, check pmd receives packet from different + queue but between 1 and 8:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ + IP(src="1.1.1.2",dst="2.2.2.2")/UDP()/Raw('x'*20) + +10. Send different dst GTP-U IPv4 packet, check pmd receives packet from same + queue:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ + IP(src="1.1.1.1",dst="2.2.2.3")/UDP()/Raw('x'*20) + + +Test Case: Inner IP dst controls GTP-U IPv4 queue in queue region +================================================================= +1. Check flow type to pctype mapping:: + + testpmd> show port 0 pctype mapping + +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: + + testpmd> port config 0 pctype mapping update 22 26 + +3. Check flow ptype to pctype mapping adds 26 this mapping:: + + testpmd> show port 0 pctype mapping + +4. Reset GTP-U IPv4 hash configure:: + + testpmd> port config 0 pctype 22 hash_inset clear all + +5. Inner dst words are 27 and 28, enable hash input set for inner dst:: + + testpmd> port config 0 pctype 22 hash_inset set field 27 + testpmd> port config 0 pctype 22 hash_inset set field 28 + +6. Enable flow type id 26's RSS:: + + testpmd> port config all rss 26 + +7. Start testpmd, set fwd rxonly, enable output print + +8. Send inner dst GTP-U IPv4 packet, check RSS could work, verify the queue is + between 1 and 8, print PKT_RX_RSS_HASH:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ + IP(src="1.1.1.1",dst="2.2.2.2")/UDP()/Raw('x'*20) + +9. Send different dst address GTP-U IPv4 packet, check pmd receives packet + from different queue but between 1 and 8:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ + IP(src="1.1.1.1",dst="2.2.2.3")/UDP()/Raw('x'*20) + +10. Send different src address, check pmd receives packet from same queue:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ + IP(src="1.1.1.2",dst="2.2.2.2")/UDP()/Raw('x'*20) + + +Test Case: TEID controls GTP-U IPv6 queue in queue region +========================================================= +1. Check flow type to pctype mapping:: + + testpmd> show port 0 pctype mapping + +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: + + testpmd> port config 0 pctype mapping update 23 23 + +3. Check flow ptype to pctype mapping adds 23 this mapping:: + + testpmd> show port 0 pctype mapping + +4. Reset GTP-U IPv6 hash configure:: + + testpmd> port config 0 pctype 23 hash_inset clear all + +5. Teid words are 44 and 45, enable hash input set for teid:: + + testpmd> port config 0 pctype 23 hash_inset set field 44 + testpmd> port config 0 pctype 23 hash_inset set field 45 + +6. Enable flow type id 23's RSS:: + + testpmd> port config all rss 23 + +7. Start testpmd, set fwd rxonly, enable output print + +8. Send teid GTP-U IPv6 packet, check RSS could work, verify the queue is + between 10 and 25, print PKT_RX_RSS_HASH:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/IPv6()/ + UDP(sport=100,dport=200)/Raw('x'*20) + +9. Send different teid GTP-U IPv4 packet, check pmd receives packet from + different queue but between 10 and 25:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xff)/IPv6()/ + UDP(sport=100,dport=200)/Raw('x'*20) + + +Test Case: Sport controls GTP-U IPv6 queue in queue region +========================================================== +1. Check flow type to pctype mapping:: + + testpmd> show port 0 pctype mapping + +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: + + testpmd> port config 0 pctype mapping update 23 23 + +3. Check flow ptype to pctype mapping adds 23 this mapping:: + + testpmd> show port 0 pctype mapping + +4. Reset GTP-U IPv6 hash configure:: + + testpmd> port config 0 pctype 23 hash_inset clear all + +5. Sport words are 29 and 30, enable hash input set for sport:: + + testpmd> port config 0 pctype 23 hash_inset set field 29 + testpmd> port config 0 pctype 23 hash_inset set field 30 + +6. Enable flow type id 23's RSS:: + + testpmd> port config all rss 23 + +7. Start testpmd, set fwd rxonly, enable output print + +8. Send sport GTP-U IPv6 packet, check RSS could work, verify the queue is + between 10 and 25, print PKT_RX_RSS_HASH:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/IPv6()/ + UDP(sport=100,dport=200)/Raw('x'*20) + +9. Send different sport GTP-U IPv6 packet, check pmd receives packet from + different queue but between 10 and 25:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/IPv6()/ + UDP(sport=101,dport=200)/Raw('x'*20) + + +Test Case: Dport controls GTP-U IPv6 queue in queue region +========================================================== +1. Check flow type to pctype mapping:: + + testpmd> show port 0 pctype mapping + +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: + + testpmd> port config 0 pctype mapping update 23 23 + +3. Check flow ptype to pctype mapping adds 23 this mapping:: + + testpmd> show port 0 pctype mapping + +4. Reset GTP-U IPv6 hash configure:: + + testpmd> port config 0 pctype 23 hash_inset clear all + +5. Dport words are 29 and 30, enable hash input set for dport:: + + testpmd> port config 0 pctype 23 hash_inset set field 29 + testpmd> port config 0 pctype 23 hash_inset set field 30 + +6. Enable flow type id 23's RSS:: + + testpmd> port config all rss 23 + +7. Start testpmd, set fwd rxonly, enable output print + +8. Send dport GTP-U IPv6 packet, check RSS could work, verify the queue + is between 10 and 25, print PKT_RX_RSS_HASH:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/IPv6()/ + UDP(sport=100,dport=200)/Raw('x'*20) + +9. Send different dport GTP-U IPv6 packet, check pmd receives packet from + different queue but between 10 and 25:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/IPv6()/ + UDP(sport=100,dport=201)/Raw('x'*20) + + + +Test Case: Inner IPv6 src controls GTP-U IPv6 queue in queue region +=================================================================== +1. Check flow type to pctype mapping:: + + testpmd> show port 0 pctype mapping + +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: + + testpmd> port config 0 pctype mapping update 23 23 + +3. Check flow ptype to pctype mapping adds 23 this mapping:: + + testpmd> show port 0 pctype mapping + +4. Reset GTP-U IPv6 hash configure:: + + testpmd> port config 0 pctype 23 hash_inset clear all + +5. Inner IPv6 src words are 13~20, enable hash input set for inner src:: + + testpmd> port config 0 pctype 23 hash_inset set field 13 + testpmd> port config 0 pctype 23 hash_inset set field 14 + testpmd> port config 0 pctype 23 hash_inset set field 15 + testpmd> port config 0 pctype 23 hash_inset set field 16 + testpmd> port config 0 pctype 23 hash_inset set field 17 + testpmd> port config 0 pctype 23 hash_inset set field 18 + testpmd> port config 0 pctype 23 hash_inset set field 19 + testpmd> port config 0 pctype 23 hash_inset set field 20 + +6. Enable flow type id 23's RSS:: + + testpmd> port config all rss 23 + +7. Start testpmd, set fwd rxonly, enable output print + +8. Send inner src address GTP-U IPv6 packets, check RSS could work, verify + the queue is between 10 and 25, print PKT_RX_RSS_HASH:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP()/Raw('x'*20) + +9. Send different inner src GTP-U IPv6 packet, check pmd receives packet + from different queue but dbetween 10 and 25:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0002", + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP()/Raw('x'*20) + +10. Send different inner dst GTP-U IPv6 packet, check pmd receives packet + from same queue:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0002)/UDP()/Raw('x'*20) + + + +Test Case: Inner IPv6 dst controls GTP-U IPv6 queue in queue region +========================================================================= +1. Check flow type to pctype mapping:: + + testpmd> show port 0 pctype mapping + +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: + + testpmd> port config 0 pctype mapping update 23 23 + +3. Check flow ptype to pctype mapping adds 23 this mapping:: + + testpmd> show port 0 pctype mapping + +4. Reset GTP-U IPv6 hash configure:: + + testpmd> port config 0 pctype 23 hash_inset clear all + +5. Inner IPv6 dst words are 21~28, enable hash input set for inner dst:: + + testpmd> port config 0 pctype 23 hash_inset set field 21 + testpmd> port config 0 pctype 23 hash_inset set field 22 + testpmd> port config 0 pctype 23 hash_inset set field 23 + testpmd> port config 0 pctype 23 hash_inset set field 24 + testpmd> port config 0 pctype 23 hash_inset set field 25 + testpmd> port config 0 pctype 23 hash_inset set field 26 + testpmd> port config 0 pctype 23 hash_inset set field 27 + testpmd> port config 0 pctype 23 hash_inset set field 28 + +6. Enable flow type id 23's RSS:: + + testpmd> port config all rss 23 + +7. Start testpmd, set fwd rxonly, enable output print + +8. Send inner dst GTP-U IPv6 packets, check RSS could work, verify the + queue is between 10 and 25, print PKT_RX_RSS_HASH:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP()/Raw('x'*20) + +9. Send different inner dst GTP-U IPv6 packets, check pmd receives packet + from different queue but between 10 and 25:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0002")/UDP()/Raw('x'*20) + +10. Send different inner src GTP-U IPv6 packets, check pmd receives packet + from same queue:: + + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0002", + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP()/Raw('x'*20) -- 2.5.5 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [dts] [PATCH v3]test plan: add ddp gtp qregion test plan 2018-03-08 2:54 [dts] [PATCH v3]test plan: add ddp gtp qregion test plan Xueqin Lin @ 2018-03-08 8:59 ` Liu, Yong 2018-03-08 9:02 ` Lin, Xueqin 0 siblings, 1 reply; 3+ messages in thread From: Liu, Yong @ 2018-03-08 8:59 UTC (permalink / raw) To: Lin, Xueqin, dts; +Cc: Lin, Xueqin Xueqin, I have merged your v2 patch into DTS, could you please submit the diff patch? Thanks, Marvin > -----Original Message----- > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Xueqin Lin > Sent: Thursday, March 08, 2018 10:55 AM > To: dts@dpdk.org > Cc: Lin, Xueqin <xueqin.lin@intel.com> > Subject: [dts] [PATCH v3]test plan: add ddp gtp qregion test plan > > --- > test_plans/ddp_gtp_qregion_test_plan.rst | 700 > +++++++++++++++++++++++++++++++ > 1 file changed, 700 insertions(+) > create mode 100644 test_plans/ddp_gtp_qregion_test_plan.rst > > diff --git a/test_plans/ddp_gtp_qregion_test_plan.rst > b/test_plans/ddp_gtp_qregion_test_plan.rst > new file mode 100644 > index 0000000..0e845bd > --- /dev/null > +++ b/test_plans/ddp_gtp_qregion_test_plan.rst > @@ -0,0 +1,700 @@ > +.. Copyright (c) <2017>, Intel Corporation > + All rights reserved. > + > + Redistribution and use in source and binary forms, with or without > + modification, are permitted provided that the following conditions > + are met: > + > + - Redistributions of source code must retain the above copyright > + notice, this list of conditions and the following disclaimer. > + > + - Redistributions in binary form must reproduce the above copyright > + notice, this list of conditions and the following disclaimer in > + the documentation and/or other materials provided with the > + distribution. > + > + - Neither the name of Intel Corporation nor the names of its > + contributors may be used to endorse or promote products derived > + from this software without specific prior written permission. > + > + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS > + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS > + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE > + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, > + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES > + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR > + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, > + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED > + OF THE POSSIBILITY OF SUCH DAMAGE. > + > +=============== > +DDP GTP Qregion > +=============== > + > +DDP profile 0x80000008 adds support for GTP with IPv4 or IPv6 payload. > +The test case plan focus on more DDP GTP requirements as below. For DDP > +GTP introduction, please refer to DDP GTP test plan. > + > +Requirements > +============ > +1. GTP-C distributed to control plane queues region using outer IP > + destination address as hash input set (there is no inner IP headers > + for GTP-C packets) > +2. GTP-U distributed to data plane queues region using inner IP source > + address as hash input set. > +3. GTP-C distributed to control plane queues region using TEID as hash > + input set. > +4. GTP-U distributed to data plane queues region using TEID and inner > + packet 5-tuple as hash input set. > + > +FVL supports queue regions configuration for RSS, so different traffic > +classes or different packet classification types can be separated to > +different queue regions which includes several queues. Support to set > +hash input set info for RSS flexible payload, then enable new > +protocols' RSS. > +Dynamic flow type feature introduces GTP pctype and flow type, design > +and add queue region/queue range mapping as below table. For more > detailed > +and relative information, please refer to dynamic flow type and queue > +region test plan:: > + > + +-------------+------------+------------+--------------+------------- > + > + | Packet Type | PCTypes | Flow Types | Queue region | Queue range > | > + +-------------+------------+------------+--------------+------------- > + > + | GTP-U IPv4 | 22 | 26 | 0 | 1~8 > | > + +-------------+------------+------------+--------------+------------- > + > + | GTP-U IPv6 | 23 | 23 | 1 | 10~25 > | > + +-------------+------------+------------+--------------+------------- > + > + | GTP-U PAY4 | 24 | 24 | 2 | 30~37 > | > + +-------------+------------+------------+--------------+------------- > + > + | GTP-C PAY4 | 25 | 25 | 3 | 40~55 > | > + +-------------+------------+------------+--------------+------------- > + > + > +Prerequisites > +============= > + > +1. Host PF in DPDK driver:: > + > + ./tools/dpdk-devbind.py -b igb_uio 81:00.0 > + > +2. Start testpmd on host, set chained port topology mode, add txq/rxq to > + enable multi-queues. In general, PF's max queue is 64:: > + > + ./testpmd -c f -n 4 -- -i --port-topology=chained --txq=64 --rxq=64 > + > +Load/delete dynamic device personalization > +========================================== > + > +1. Stop testpmd port before loading profile:: > + > + testpmd > port stop all > + > +2. Load gtp.pkgo file to the memory buffer, save original configuration > + and return in the same buffer to the gtp.bak file:: > + > + testpmd > ddp add (port_id) /tmp/gtp.pkgo,/tmp/gtp.bak > + > +3. Remove profile from the network adapter and restore original > + configuration:: > + > + testpmd > ddp del (port_id) /tmp/gtp.bak > + > +4. Start testpmd port:: > + > + testpmd > port start all > + > +Note: > + > +1. Gtp.pkgo profile is not released by ND yet, only have engineer version > for > + internal use so far. Plan to keep public reference profiles at Intel > + Developer Zone, release versions of profiles and supply link later. > + > +2. Loading DDP is the prerequisite for below GTP relative cases. Load > + profile again once restarting testpmd to let software detect this > + event, although has “profile has already existed” reminder. Operate > + global reset or lanconf tool to recover original setting. Global reset > + trigger reg is 0xb8190, first cmd is core reset, second cmd is global > + reset:: > + > + testpmd > write reg 0 0xb8190 1 > + testpmd > write reg 0 0xb8190 2 > + > + > +Flow type and queue region mapping setting > +========================================== > +1. As above mapping table, set queue region on a port:: > + > + testpmd> set port 0 queue-region region_id 0 queue_start_index 1 > queue_num 8 > + testpmd> set port 0 queue-region region_id 1 queue_start_index 10 > queue_num 16 > + testpmd> set port 0 queue-region region_id 2 queue_start_index 30 > queue_num 8 > + testpmd> set port 0 queue-region region_id 3 queue_start_index 40 > queue_num 16 > + > +2. Set the mapping of flow type to region index on a port:: > + > + testpmd> set port 0 queue-region region_id 0 flowtype 26 > + testpmd> set port 0 queue-region region_id 1 flowtype 23 > + testpmd> set port 0 queue-region region_id 2 flowtype 24 > + testpmd> set port 0 queue-region region_id 3 flowtype 25 > + testpmd> set port 0 queue-region flush on > + > +3. flush all queue regions:: > + > + testpmd> set port 0 queue-region flush off > + > + > +Test Case: Outer IPv6 dst controls GTP-C queue in queue region > +============================================================== > + > +1. Check flow ptype to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-C flow type id 25 to pcytpe id 25 mapping item:: > + > + testpmd> port config 0 pctype mapping update 25 25 > + > +3. Check flow ptype to pctype mapping adds 25 this mapping > + > +4. Reset GTP-C hash configure:: > + > + testpmd> port config 0 pctype 25 hash_inset clear all > + > +5. Outer dst address words are 50~57, enable hash input set for outer > dst:: > + > + testpmd> port config 0 pctype 25 hash_inset set field 50 > + testpmd> port config 0 pctype 25 hash_inset set field 51 > + testpmd> port config 0 pctype 25 hash_inset set field 52 > + testpmd> port config 0 pctype 25 hash_inset set field 53 > + testpmd> port config 0 pctype 25 hash_inset set field 54 > + testpmd> port config 0 pctype 25 hash_inset set field 55 > + testpmd> port config 0 pctype 25 hash_inset set field 56 > + testpmd> port config 0 pctype 25 hash_inset set field 57 > + > +6. Enable flow type id 25's RSS:: > + > + testpmd> port config all rss 25 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send outer dst GTP-C packet, check RSS could work, verify the queue is > + between 40 and 55, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP(dport=2123)/ > + GTP_U_Header()/Raw('x'*20) > + > +9. Send different outer dst GTP-C packet, check pmd receives packet from > + different queue but between 40 and 55:: > + > + p=Ether()/IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0002")/UDP(dport=2123)/ > + GTP_U_Header()/Raw('x'*20) > + > +10. Send different outer src GTP-C packet, check pmd receives packet from > + same queue:: > + > + p=Ether()/IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0002", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/ > + UDP(dport=2123)/GTP_U_Header()/Raw('x'*20) > + > + > +Test Case: TEID controls GTP-C queue in queue region > +==================================================== > + > +1. Check flow ptype to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-C flow type id 25 to pcytpe id 25 mapping item:: > + > + testpmd> port config 0 pctype mapping update 25 25 > + > +3. Check flow ptype to pctype mapping adds 25 this mapping > + > +4. Reset GTP-C hash configure:: > + > + testpmd> port config 0 pctype 25 hash_inset clear all > + > +5. Teid words are 44 and 45, enable hash input set for teid:: > + > + testpmd> port config 0 pctype 25 hash_inset set field 44 > + testpmd> port config 0 pctype 25 hash_inset set field 45 > + > +6. Enable flow type id 25's RSS:: > + > + testpmd> port config all rss 25 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send teid GTP-C packet, check RSS could work, verify the queue is > + between 40 and 55, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IPv6()/UDP(dport=2123)/GTP_U_Header(teid=0xfe)/Raw('x'*20) > + > +9. Send different teid GTP-C packet, check receive packet from different > + queue but between 40 and 55:: > + > + p=Ether()/IPv6()/UDP(dport=2123)/GTP_U_Header(teid=0xff)/Raw('x'*20) > + > + > +Test Case: TEID controls GTP-U IPv4 queue in queue region > +========================================================= > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: > + > + testpmd> port config 0 pctype mapping update 22 26 > + > +3. Check flow ptype to pctype mapping adds 26 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv4 hash configure:: > + > + testpmd> port config 0 pctype 22 hash_inset clear all > + > +5. Teid words are 44 and 45, enable hash input set for teid:: > + > + testpmd> port config 0 pctype 22 hash_inset set field 44 > + testpmd> port config 0 pctype 22 hash_inset set field 45 > + > +6. Enable flow type id 26's RSS:: > + > + testpmd> port config all rss 26 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send teid GTP-U IPv4 packet, check RSS could work, verify the queue is > + between 1 and 8, print PKT_RX_RSS_HASH:: > + > + > p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/IP()/Raw('x'*20) > + > +9. Send different teid GTP-U IPv4 packet, check receive packet from > different > + queue but between 1 and 8:: > + > + > p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=0xff)/IP()/Raw('x'*20) > + > + > +Test Case: Sport controls GTP-U IPv4 queue in queue region > +========================================================== > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: > + > + testpmd> port config 0 pctype mapping update 22 26 > + > +3. Check flow ptype to pctype mapping adds 26 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv4 hash configure:: > + > + testpmd> port config 0 pctype 22 hash_inset clear all > + > +5. Sport words are 29 and 30, enable hash input set for sport:: > + > + testpmd> port config 0 pctype 22 hash_inset set field 29 > + testpmd> port config 0 pctype 22 hash_inset set field 30 > + > +6. Enable flow type id 26's RSS:: > + > + testpmd> port config all rss 26 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send sport GTP-U IPv4 packet, check RSS could work, verify the queue > is > + between 1 and 8, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=30)/IP()/ > + UDP(sport=100,dport=200)/Raw('x'*20) > + > +9. Send different sport GTP-U IPv4 packet, check pmd receives packet from > + different queue but between 1 and 8:: > + > + p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=30)/IP()/ > + UDP(sport=101,dport=200)/Raw('x'*20) > + > + > +Test Case: Dport controls GTP-U IPv4 queue in queue region > +========================================================== > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: > + > + testpmd> port config 0 pctype mapping update 22 26 > + > +3. Check flow ptype to pctype mapping adds 26 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv4 hash configure:: > + > + testpmd> port config 0 pctype 22 hash_inset clear all > + > +5. Dport words are 29 and 30, enable hash input set for dport:: > + > + testpmd> port config 0 pctype 22 hash_inset set field 29 > + testpmd> port config 0 pctype 22 hash_inset set field 30 > + > +6. Enable flow type id 26's RSS:: > + > + testpmd> port config all rss 26 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send dprot GTP-U IPv4 packet, check RSS could work, verify the queue > is > + between 1 and 8, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=30)/IP()/ > + UDP(sport=100,dport=200)/Raw('x'*20) > + > +9. Send different dport GTP-U IPv4 packet, check receive packet from > different > + queue but between 1 and 8:: > + > + p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=30)/IP()/ > + UDP(sport=100,dport=201)/Raw('x'*20) > + > + > +Test Case: Inner IP src controls GTP-U IPv4 queue in queue region > +================================================================= > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: > + > + testpmd> port config 0 pctype mapping update 22 26 > + > +3. Check flow ptype to pctype mapping adds 26 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv4 hash configure:: > + > + testpmd> port config 0 pctype 22 hash_inset clear all > + > +5. Inner source words are 15 and 16, enable hash input set for inner src:: > + > + testpmd> port config 0 pctype 22 hash_inset set field 15 > + testpmd> port config 0 pctype 22 hash_inset set field 16 > + > +6. Enable flow type id 26's RSS:: > + > + testpmd> port config all rss 26 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send inner src GTP-U IPv4 packet, check RSS could work, verify the > queue is > + between 1 and 8, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IP(src="1.1.1.1",dst="2.2.2.2")/UDP()/Raw('x'*20) > + > +9. Send different src GTP-U IPv4 packet, check pmd receives packet from > different > + queue but between 1 and 8:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IP(src="1.1.1.2",dst="2.2.2.2")/UDP()/Raw('x'*20) > + > +10. Send different dst GTP-U IPv4 packet, check pmd receives packet from > same > + queue:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IP(src="1.1.1.1",dst="2.2.2.3")/UDP()/Raw('x'*20) > + > + > +Test Case: Inner IP dst controls GTP-U IPv4 queue in queue region > +================================================================= > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: > + > + testpmd> port config 0 pctype mapping update 22 26 > + > +3. Check flow ptype to pctype mapping adds 26 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv4 hash configure:: > + > + testpmd> port config 0 pctype 22 hash_inset clear all > + > +5. Inner dst words are 27 and 28, enable hash input set for inner dst:: > + > + testpmd> port config 0 pctype 22 hash_inset set field 27 > + testpmd> port config 0 pctype 22 hash_inset set field 28 > + > +6. Enable flow type id 26's RSS:: > + > + testpmd> port config all rss 26 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send inner dst GTP-U IPv4 packet, check RSS could work, verify the > queue is > + between 1 and 8, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IP(src="1.1.1.1",dst="2.2.2.2")/UDP()/Raw('x'*20) > + > +9. Send different dst address GTP-U IPv4 packet, check pmd receives > packet > + from different queue but between 1 and 8:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IP(src="1.1.1.1",dst="2.2.2.3")/UDP()/Raw('x'*20) > + > +10. Send different src address, check pmd receives packet from same > queue:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IP(src="1.1.1.2",dst="2.2.2.2")/UDP()/Raw('x'*20) > + > + > +Test Case: TEID controls GTP-U IPv6 queue in queue region > +========================================================= > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: > + > + testpmd> port config 0 pctype mapping update 23 23 > + > +3. Check flow ptype to pctype mapping adds 23 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv6 hash configure:: > + > + testpmd> port config 0 pctype 23 hash_inset clear all > + > +5. Teid words are 44 and 45, enable hash input set for teid:: > + > + testpmd> port config 0 pctype 23 hash_inset set field 44 > + testpmd> port config 0 pctype 23 hash_inset set field 45 > + > +6. Enable flow type id 23's RSS:: > + > + testpmd> port config all rss 23 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send teid GTP-U IPv6 packet, check RSS could work, verify the queue is > + between 10 and 25, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/IPv6()/ > + UDP(sport=100,dport=200)/Raw('x'*20) > + > +9. Send different teid GTP-U IPv4 packet, check pmd receives packet from > + different queue but between 10 and 25:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xff)/IPv6()/ > + UDP(sport=100,dport=200)/Raw('x'*20) > + > + > +Test Case: Sport controls GTP-U IPv6 queue in queue region > +========================================================== > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: > + > + testpmd> port config 0 pctype mapping update 23 23 > + > +3. Check flow ptype to pctype mapping adds 23 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv6 hash configure:: > + > + testpmd> port config 0 pctype 23 hash_inset clear all > + > +5. Sport words are 29 and 30, enable hash input set for sport:: > + > + testpmd> port config 0 pctype 23 hash_inset set field 29 > + testpmd> port config 0 pctype 23 hash_inset set field 30 > + > +6. Enable flow type id 23's RSS:: > + > + testpmd> port config all rss 23 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send sport GTP-U IPv6 packet, check RSS could work, verify the queue > is > + between 10 and 25, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/IPv6()/ > + UDP(sport=100,dport=200)/Raw('x'*20) > + > +9. Send different sport GTP-U IPv6 packet, check pmd receives packet from > + different queue but between 10 and 25:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/IPv6()/ > + UDP(sport=101,dport=200)/Raw('x'*20) > + > + > +Test Case: Dport controls GTP-U IPv6 queue in queue region > +========================================================== > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: > + > + testpmd> port config 0 pctype mapping update 23 23 > + > +3. Check flow ptype to pctype mapping adds 23 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv6 hash configure:: > + > + testpmd> port config 0 pctype 23 hash_inset clear all > + > +5. Dport words are 29 and 30, enable hash input set for dport:: > + > + testpmd> port config 0 pctype 23 hash_inset set field 29 > + testpmd> port config 0 pctype 23 hash_inset set field 30 > + > +6. Enable flow type id 23's RSS:: > + > + testpmd> port config all rss 23 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send dport GTP-U IPv6 packet, check RSS could work, verify the queue > + is between 10 and 25, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/IPv6()/ > + UDP(sport=100,dport=200)/Raw('x'*20) > + > +9. Send different dport GTP-U IPv6 packet, check pmd receives packet from > + different queue but between 10 and 25:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/IPv6()/ > + UDP(sport=100,dport=201)/Raw('x'*20) > + > + > + > +Test Case: Inner IPv6 src controls GTP-U IPv6 queue in queue region > +=================================================================== > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: > + > + testpmd> port config 0 pctype mapping update 23 23 > + > +3. Check flow ptype to pctype mapping adds 23 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv6 hash configure:: > + > + testpmd> port config 0 pctype 23 hash_inset clear all > + > +5. Inner IPv6 src words are 13~20, enable hash input set for inner src:: > + > + testpmd> port config 0 pctype 23 hash_inset set field 13 > + testpmd> port config 0 pctype 23 hash_inset set field 14 > + testpmd> port config 0 pctype 23 hash_inset set field 15 > + testpmd> port config 0 pctype 23 hash_inset set field 16 > + testpmd> port config 0 pctype 23 hash_inset set field 17 > + testpmd> port config 0 pctype 23 hash_inset set field 18 > + testpmd> port config 0 pctype 23 hash_inset set field 19 > + testpmd> port config 0 pctype 23 hash_inset set field 20 > + > +6. Enable flow type id 23's RSS:: > + > + testpmd> port config all rss 23 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send inner src address GTP-U IPv6 packets, check RSS could work, > verify > + the queue is between 10 and 25, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP()/Raw('x'*20) > + > +9. Send different inner src GTP-U IPv6 packet, check pmd receives packet > + from different queue but dbetween 10 and 25:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0002", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP()/Raw('x'*20) > + > +10. Send different inner dst GTP-U IPv6 packet, check pmd receives packet > + from same queue:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0002)/UDP()/Raw('x'*20) > + > + > + > +Test Case: Inner IPv6 dst controls GTP-U IPv6 queue in queue region > +========================================================================= > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: > + > + testpmd> port config 0 pctype mapping update 23 23 > + > +3. Check flow ptype to pctype mapping adds 23 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv6 hash configure:: > + > + testpmd> port config 0 pctype 23 hash_inset clear all > + > +5. Inner IPv6 dst words are 21~28, enable hash input set for inner dst:: > + > + testpmd> port config 0 pctype 23 hash_inset set field 21 > + testpmd> port config 0 pctype 23 hash_inset set field 22 > + testpmd> port config 0 pctype 23 hash_inset set field 23 > + testpmd> port config 0 pctype 23 hash_inset set field 24 > + testpmd> port config 0 pctype 23 hash_inset set field 25 > + testpmd> port config 0 pctype 23 hash_inset set field 26 > + testpmd> port config 0 pctype 23 hash_inset set field 27 > + testpmd> port config 0 pctype 23 hash_inset set field 28 > + > +6. Enable flow type id 23's RSS:: > + > + testpmd> port config all rss 23 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send inner dst GTP-U IPv6 packets, check RSS could work, verify the > + queue is between 10 and 25, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP()/Raw('x'*20) > + > +9. Send different inner dst GTP-U IPv6 packets, check pmd receives packet > + from different queue but between 10 and 25:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0002")/UDP()/Raw('x'*20) > + > +10. Send different inner src GTP-U IPv6 packets, check pmd receives > packet > + from same queue:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0002", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP()/Raw('x'*20) > -- > 2.5.5 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [dts] [PATCH v3]test plan: add ddp gtp qregion test plan 2018-03-08 8:59 ` Liu, Yong @ 2018-03-08 9:02 ` Lin, Xueqin 0 siblings, 0 replies; 3+ messages in thread From: Lin, Xueqin @ 2018-03-08 9:02 UTC (permalink / raw) To: Liu, Yong, dts Sorry, title is ddp gtp ipv6, just notice it, I will submit diff patch soon. Best regards, Xueqin -----Original Message----- From: Liu, Yong Sent: Thursday, March 8, 2018 5:00 PM To: Lin, Xueqin <xueqin.lin@intel.com>; dts@dpdk.org Cc: Lin, Xueqin <xueqin.lin@intel.com> Subject: RE: [dts] [PATCH v3]test plan: add ddp gtp qregion test plan Xueqin, I have merged your v2 patch into DTS, could you please submit the diff patch? Thanks, Marvin > -----Original Message----- > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Xueqin Lin > Sent: Thursday, March 08, 2018 10:55 AM > To: dts@dpdk.org > Cc: Lin, Xueqin <xueqin.lin@intel.com> > Subject: [dts] [PATCH v3]test plan: add ddp gtp qregion test plan > > --- > test_plans/ddp_gtp_qregion_test_plan.rst | 700 > +++++++++++++++++++++++++++++++ > 1 file changed, 700 insertions(+) > create mode 100644 test_plans/ddp_gtp_qregion_test_plan.rst > > diff --git a/test_plans/ddp_gtp_qregion_test_plan.rst > b/test_plans/ddp_gtp_qregion_test_plan.rst > new file mode 100644 > index 0000000..0e845bd > --- /dev/null > +++ b/test_plans/ddp_gtp_qregion_test_plan.rst > @@ -0,0 +1,700 @@ > +.. Copyright (c) <2017>, Intel Corporation > + All rights reserved. > + > + Redistribution and use in source and binary forms, with or without > + modification, are permitted provided that the following conditions > + are met: > + > + - Redistributions of source code must retain the above copyright > + notice, this list of conditions and the following disclaimer. > + > + - Redistributions in binary form must reproduce the above copyright > + notice, this list of conditions and the following disclaimer in > + the documentation and/or other materials provided with the > + distribution. > + > + - Neither the name of Intel Corporation nor the names of its > + contributors may be used to endorse or promote products derived > + from this software without specific prior written permission. > + > + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS > + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS > + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE > + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, > + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES > + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR > + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, > + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED > + OF THE POSSIBILITY OF SUCH DAMAGE. > + > +=============== > +DDP GTP Qregion > +=============== > + > +DDP profile 0x80000008 adds support for GTP with IPv4 or IPv6 payload. > +The test case plan focus on more DDP GTP requirements as below. For > +DDP GTP introduction, please refer to DDP GTP test plan. > + > +Requirements > +============ > +1. GTP-C distributed to control plane queues region using outer IP > + destination address as hash input set (there is no inner IP headers > + for GTP-C packets) > +2. GTP-U distributed to data plane queues region using inner IP source > + address as hash input set. > +3. GTP-C distributed to control plane queues region using TEID as hash > + input set. > +4. GTP-U distributed to data plane queues region using TEID and inner > + packet 5-tuple as hash input set. > + > +FVL supports queue regions configuration for RSS, so different > +traffic classes or different packet classification types can be > +separated to different queue regions which includes several queues. > +Support to set hash input set info for RSS flexible payload, then > +enable new protocols' RSS. > +Dynamic flow type feature introduces GTP pctype and flow type, design > +and add queue region/queue range mapping as below table. For more > detailed > +and relative information, please refer to dynamic flow type and queue > +region test plan:: > + > + > + +-------------+------------+------------+--------------+------------ > + - > + > + | Packet Type | PCTypes | Flow Types | Queue region | Queue range > | > + > + +-------------+------------+------------+--------------+------------ > + - > + > + | GTP-U IPv4 | 22 | 26 | 0 | 1~8 > | > + > + +-------------+------------+------------+--------------+------------ > + - > + > + | GTP-U IPv6 | 23 | 23 | 1 | 10~25 > | > + > + +-------------+------------+------------+--------------+------------ > + - > + > + | GTP-U PAY4 | 24 | 24 | 2 | 30~37 > | > + > + +-------------+------------+------------+--------------+------------ > + - > + > + | GTP-C PAY4 | 25 | 25 | 3 | 40~55 > | > + > + +-------------+------------+------------+--------------+------------ > + - > + > + > +Prerequisites > +============= > + > +1. Host PF in DPDK driver:: > + > + ./tools/dpdk-devbind.py -b igb_uio 81:00.0 > + > +2. Start testpmd on host, set chained port topology mode, add txq/rxq to > + enable multi-queues. In general, PF's max queue is 64:: > + > + ./testpmd -c f -n 4 -- -i --port-topology=chained --txq=64 > + --rxq=64 > + > +Load/delete dynamic device personalization > +========================================== > + > +1. Stop testpmd port before loading profile:: > + > + testpmd > port stop all > + > +2. Load gtp.pkgo file to the memory buffer, save original configuration > + and return in the same buffer to the gtp.bak file:: > + > + testpmd > ddp add (port_id) /tmp/gtp.pkgo,/tmp/gtp.bak > + > +3. Remove profile from the network adapter and restore original > + configuration:: > + > + testpmd > ddp del (port_id) /tmp/gtp.bak > + > +4. Start testpmd port:: > + > + testpmd > port start all > + > +Note: > + > +1. Gtp.pkgo profile is not released by ND yet, only have engineer > +version > for > + internal use so far. Plan to keep public reference profiles at Intel > + Developer Zone, release versions of profiles and supply link later. > + > +2. Loading DDP is the prerequisite for below GTP relative cases. Load > + profile again once restarting testpmd to let software detect this > + event, although has “profile has already existed” reminder. Operate > + global reset or lanconf tool to recover original setting. Global reset > + trigger reg is 0xb8190, first cmd is core reset, second cmd is global > + reset:: > + > + testpmd > write reg 0 0xb8190 1 > + testpmd > write reg 0 0xb8190 2 > + > + > +Flow type and queue region mapping setting > +========================================== > +1. As above mapping table, set queue region on a port:: > + > + testpmd> set port 0 queue-region region_id 0 queue_start_index 1 > queue_num 8 > + testpmd> set port 0 queue-region region_id 1 queue_start_index 10 > queue_num 16 > + testpmd> set port 0 queue-region region_id 2 queue_start_index 30 > queue_num 8 > + testpmd> set port 0 queue-region region_id 3 queue_start_index 40 > queue_num 16 > + > +2. Set the mapping of flow type to region index on a port:: > + > + testpmd> set port 0 queue-region region_id 0 flowtype 26 > + testpmd> set port 0 queue-region region_id 1 flowtype 23 > + testpmd> set port 0 queue-region region_id 2 flowtype 24 > + testpmd> set port 0 queue-region region_id 3 flowtype 25 > + testpmd> set port 0 queue-region flush on > + > +3. flush all queue regions:: > + > + testpmd> set port 0 queue-region flush off > + > + > +Test Case: Outer IPv6 dst controls GTP-C queue in queue region > +============================================================== > + > +1. Check flow ptype to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-C flow type id 25 to pcytpe id 25 mapping item:: > + > + testpmd> port config 0 pctype mapping update 25 25 > + > +3. Check flow ptype to pctype mapping adds 25 this mapping > + > +4. Reset GTP-C hash configure:: > + > + testpmd> port config 0 pctype 25 hash_inset clear all > + > +5. Outer dst address words are 50~57, enable hash input set for outer > dst:: > + > + testpmd> port config 0 pctype 25 hash_inset set field 50 > + testpmd> port config 0 pctype 25 hash_inset set field 51 > + testpmd> port config 0 pctype 25 hash_inset set field 52 > + testpmd> port config 0 pctype 25 hash_inset set field 53 > + testpmd> port config 0 pctype 25 hash_inset set field 54 > + testpmd> port config 0 pctype 25 hash_inset set field 55 > + testpmd> port config 0 pctype 25 hash_inset set field 56 > + testpmd> port config 0 pctype 25 hash_inset set field 57 > + > +6. Enable flow type id 25's RSS:: > + > + testpmd> port config all rss 25 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send outer dst GTP-C packet, check RSS could work, verify the queue is > + between 40 and 55, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP(dport=2123)/ > + GTP_U_Header()/Raw('x'*20) > + > +9. Send different outer dst GTP-C packet, check pmd receives packet from > + different queue but between 40 and 55:: > + > + p=Ether()/IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0002")/UDP(dport=2123)/ > + GTP_U_Header()/Raw('x'*20) > + > +10. Send different outer src GTP-C packet, check pmd receives packet from > + same queue:: > + > + p=Ether()/IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0002", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/ > + UDP(dport=2123)/GTP_U_Header()/Raw('x'*20) > + > + > +Test Case: TEID controls GTP-C queue in queue region > +==================================================== > + > +1. Check flow ptype to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-C flow type id 25 to pcytpe id 25 mapping item:: > + > + testpmd> port config 0 pctype mapping update 25 25 > + > +3. Check flow ptype to pctype mapping adds 25 this mapping > + > +4. Reset GTP-C hash configure:: > + > + testpmd> port config 0 pctype 25 hash_inset clear all > + > +5. Teid words are 44 and 45, enable hash input set for teid:: > + > + testpmd> port config 0 pctype 25 hash_inset set field 44 > + testpmd> port config 0 pctype 25 hash_inset set field 45 > + > +6. Enable flow type id 25's RSS:: > + > + testpmd> port config all rss 25 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send teid GTP-C packet, check RSS could work, verify the queue is > + between 40 and 55, print PKT_RX_RSS_HASH:: > + > + > + p=Ether()/IPv6()/UDP(dport=2123)/GTP_U_Header(teid=0xfe)/Raw('x'*20) > + > +9. Send different teid GTP-C packet, check receive packet from different > + queue but between 40 and 55:: > + > + > + p=Ether()/IPv6()/UDP(dport=2123)/GTP_U_Header(teid=0xff)/Raw('x'*20) > + > + > +Test Case: TEID controls GTP-U IPv4 queue in queue region > +========================================================= > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: > + > + testpmd> port config 0 pctype mapping update 22 26 > + > +3. Check flow ptype to pctype mapping adds 26 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv4 hash configure:: > + > + testpmd> port config 0 pctype 22 hash_inset clear all > + > +5. Teid words are 44 and 45, enable hash input set for teid:: > + > + testpmd> port config 0 pctype 22 hash_inset set field 44 > + testpmd> port config 0 pctype 22 hash_inset set field 45 > + > +6. Enable flow type id 26's RSS:: > + > + testpmd> port config all rss 26 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send teid GTP-U IPv4 packet, check RSS could work, verify the queue is > + between 1 and 8, print PKT_RX_RSS_HASH:: > + > + > p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/IP()/Raw('x'* > 20) > + > +9. Send different teid GTP-U IPv4 packet, check receive packet from > different > + queue but between 1 and 8:: > + > + > p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=0xff)/IP()/Raw('x'* > 20) > + > + > +Test Case: Sport controls GTP-U IPv4 queue in queue region > +========================================================== > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: > + > + testpmd> port config 0 pctype mapping update 22 26 > + > +3. Check flow ptype to pctype mapping adds 26 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv4 hash configure:: > + > + testpmd> port config 0 pctype 22 hash_inset clear all > + > +5. Sport words are 29 and 30, enable hash input set for sport:: > + > + testpmd> port config 0 pctype 22 hash_inset set field 29 > + testpmd> port config 0 pctype 22 hash_inset set field 30 > + > +6. Enable flow type id 26's RSS:: > + > + testpmd> port config all rss 26 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send sport GTP-U IPv4 packet, check RSS could work, verify the > +queue > is > + between 1 and 8, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=30)/IP()/ > + UDP(sport=100,dport=200)/Raw('x'*20) > + > +9. Send different sport GTP-U IPv4 packet, check pmd receives packet from > + different queue but between 1 and 8:: > + > + p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=30)/IP()/ > + UDP(sport=101,dport=200)/Raw('x'*20) > + > + > +Test Case: Dport controls GTP-U IPv4 queue in queue region > +========================================================== > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: > + > + testpmd> port config 0 pctype mapping update 22 26 > + > +3. Check flow ptype to pctype mapping adds 26 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv4 hash configure:: > + > + testpmd> port config 0 pctype 22 hash_inset clear all > + > +5. Dport words are 29 and 30, enable hash input set for dport:: > + > + testpmd> port config 0 pctype 22 hash_inset set field 29 > + testpmd> port config 0 pctype 22 hash_inset set field 30 > + > +6. Enable flow type id 26's RSS:: > + > + testpmd> port config all rss 26 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send dprot GTP-U IPv4 packet, check RSS could work, verify the > +queue > is > + between 1 and 8, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=30)/IP()/ > + UDP(sport=100,dport=200)/Raw('x'*20) > + > +9. Send different dport GTP-U IPv4 packet, check receive packet from > different > + queue but between 1 and 8:: > + > + p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=30)/IP()/ > + UDP(sport=100,dport=201)/Raw('x'*20) > + > + > +Test Case: Inner IP src controls GTP-U IPv4 queue in queue region > +================================================================= > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: > + > + testpmd> port config 0 pctype mapping update 22 26 > + > +3. Check flow ptype to pctype mapping adds 26 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv4 hash configure:: > + > + testpmd> port config 0 pctype 22 hash_inset clear all > + > +5. Inner source words are 15 and 16, enable hash input set for inner src:: > + > + testpmd> port config 0 pctype 22 hash_inset set field 15 > + testpmd> port config 0 pctype 22 hash_inset set field 16 > + > +6. Enable flow type id 26's RSS:: > + > + testpmd> port config all rss 26 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send inner src GTP-U IPv4 packet, check RSS could work, verify the > queue is > + between 1 and 8, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IP(src="1.1.1.1",dst="2.2.2.2")/UDP()/Raw('x'*20) > + > +9. Send different src GTP-U IPv4 packet, check pmd receives packet > +from > different > + queue but between 1 and 8:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IP(src="1.1.1.2",dst="2.2.2.2")/UDP()/Raw('x'*20) > + > +10. Send different dst GTP-U IPv4 packet, check pmd receives packet > +from > same > + queue:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IP(src="1.1.1.1",dst="2.2.2.3")/UDP()/Raw('x'*20) > + > + > +Test Case: Inner IP dst controls GTP-U IPv4 queue in queue region > +================================================================= > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv4 flow type id 26 to pcytpe id 22 mapping item:: > + > + testpmd> port config 0 pctype mapping update 22 26 > + > +3. Check flow ptype to pctype mapping adds 26 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv4 hash configure:: > + > + testpmd> port config 0 pctype 22 hash_inset clear all > + > +5. Inner dst words are 27 and 28, enable hash input set for inner dst:: > + > + testpmd> port config 0 pctype 22 hash_inset set field 27 > + testpmd> port config 0 pctype 22 hash_inset set field 28 > + > +6. Enable flow type id 26's RSS:: > + > + testpmd> port config all rss 26 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send inner dst GTP-U IPv4 packet, check RSS could work, verify the > queue is > + between 1 and 8, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IP(src="1.1.1.1",dst="2.2.2.2")/UDP()/Raw('x'*20) > + > +9. Send different dst address GTP-U IPv4 packet, check pmd receives > packet > + from different queue but between 1 and 8:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IP(src="1.1.1.1",dst="2.2.2.3")/UDP()/Raw('x'*20) > + > +10. Send different src address, check pmd receives packet from same > queue:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IP(src="1.1.1.2",dst="2.2.2.2")/UDP()/Raw('x'*20) > + > + > +Test Case: TEID controls GTP-U IPv6 queue in queue region > +========================================================= > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: > + > + testpmd> port config 0 pctype mapping update 23 23 > + > +3. Check flow ptype to pctype mapping adds 23 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv6 hash configure:: > + > + testpmd> port config 0 pctype 23 hash_inset clear all > + > +5. Teid words are 44 and 45, enable hash input set for teid:: > + > + testpmd> port config 0 pctype 23 hash_inset set field 44 > + testpmd> port config 0 pctype 23 hash_inset set field 45 > + > +6. Enable flow type id 23's RSS:: > + > + testpmd> port config all rss 23 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send teid GTP-U IPv6 packet, check RSS could work, verify the queue is > + between 10 and 25, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/IPv6()/ > + UDP(sport=100,dport=200)/Raw('x'*20) > + > +9. Send different teid GTP-U IPv4 packet, check pmd receives packet from > + different queue but between 10 and 25:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xff)/IPv6()/ > + UDP(sport=100,dport=200)/Raw('x'*20) > + > + > +Test Case: Sport controls GTP-U IPv6 queue in queue region > +========================================================== > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: > + > + testpmd> port config 0 pctype mapping update 23 23 > + > +3. Check flow ptype to pctype mapping adds 23 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv6 hash configure:: > + > + testpmd> port config 0 pctype 23 hash_inset clear all > + > +5. Sport words are 29 and 30, enable hash input set for sport:: > + > + testpmd> port config 0 pctype 23 hash_inset set field 29 > + testpmd> port config 0 pctype 23 hash_inset set field 30 > + > +6. Enable flow type id 23's RSS:: > + > + testpmd> port config all rss 23 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send sport GTP-U IPv6 packet, check RSS could work, verify the > +queue > is > + between 10 and 25, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/IPv6()/ > + UDP(sport=100,dport=200)/Raw('x'*20) > + > +9. Send different sport GTP-U IPv6 packet, check pmd receives packet from > + different queue but between 10 and 25:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/IPv6()/ > + UDP(sport=101,dport=200)/Raw('x'*20) > + > + > +Test Case: Dport controls GTP-U IPv6 queue in queue region > +========================================================== > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: > + > + testpmd> port config 0 pctype mapping update 23 23 > + > +3. Check flow ptype to pctype mapping adds 23 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv6 hash configure:: > + > + testpmd> port config 0 pctype 23 hash_inset clear all > + > +5. Dport words are 29 and 30, enable hash input set for dport:: > + > + testpmd> port config 0 pctype 23 hash_inset set field 29 > + testpmd> port config 0 pctype 23 hash_inset set field 30 > + > +6. Enable flow type id 23's RSS:: > + > + testpmd> port config all rss 23 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send dport GTP-U IPv6 packet, check RSS could work, verify the queue > + is between 10 and 25, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/IPv6()/ > + UDP(sport=100,dport=200)/Raw('x'*20) > + > +9. Send different dport GTP-U IPv6 packet, check pmd receives packet from > + different queue but between 10 and 25:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/IPv6()/ > + UDP(sport=100,dport=201)/Raw('x'*20) > + > + > + > +Test Case: Inner IPv6 src controls GTP-U IPv6 queue in queue region > +=================================================================== > +1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: > + > + testpmd> port config 0 pctype mapping update 23 23 > + > +3. Check flow ptype to pctype mapping adds 23 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv6 hash configure:: > + > + testpmd> port config 0 pctype 23 hash_inset clear all > + > +5. Inner IPv6 src words are 13~20, enable hash input set for inner src:: > + > + testpmd> port config 0 pctype 23 hash_inset set field 13 > + testpmd> port config 0 pctype 23 hash_inset set field 14 > + testpmd> port config 0 pctype 23 hash_inset set field 15 > + testpmd> port config 0 pctype 23 hash_inset set field 16 > + testpmd> port config 0 pctype 23 hash_inset set field 17 > + testpmd> port config 0 pctype 23 hash_inset set field 18 > + testpmd> port config 0 pctype 23 hash_inset set field 19 > + testpmd> port config 0 pctype 23 hash_inset set field 20 > + > +6. Enable flow type id 23's RSS:: > + > + testpmd> port config all rss 23 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send inner src address GTP-U IPv6 packets, check RSS could work, > verify > + the queue is between 10 and 25, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP()/Raw('x'*20) > + > +9. Send different inner src GTP-U IPv6 packet, check pmd receives packet > + from different queue but dbetween 10 and 25:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0002", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP()/Raw('x'*20) > + > +10. Send different inner dst GTP-U IPv6 packet, check pmd receives packet > + from same queue:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0002)/UDP()/Raw('x'*20) > + > + > + > +Test Case: Inner IPv6 dst controls GTP-U IPv6 queue in queue region > +===================================================================== > +==== 1. Check flow type to pctype mapping:: > + > + testpmd> show port 0 pctype mapping > + > +2. Update GTP-U IPv6 flow type id 23 to pcytpe id 23 mapping item:: > + > + testpmd> port config 0 pctype mapping update 23 23 > + > +3. Check flow ptype to pctype mapping adds 23 this mapping:: > + > + testpmd> show port 0 pctype mapping > + > +4. Reset GTP-U IPv6 hash configure:: > + > + testpmd> port config 0 pctype 23 hash_inset clear all > + > +5. Inner IPv6 dst words are 21~28, enable hash input set for inner dst:: > + > + testpmd> port config 0 pctype 23 hash_inset set field 21 > + testpmd> port config 0 pctype 23 hash_inset set field 22 > + testpmd> port config 0 pctype 23 hash_inset set field 23 > + testpmd> port config 0 pctype 23 hash_inset set field 24 > + testpmd> port config 0 pctype 23 hash_inset set field 25 > + testpmd> port config 0 pctype 23 hash_inset set field 26 > + testpmd> port config 0 pctype 23 hash_inset set field 27 > + testpmd> port config 0 pctype 23 hash_inset set field 28 > + > +6. Enable flow type id 23's RSS:: > + > + testpmd> port config all rss 23 > + > +7. Start testpmd, set fwd rxonly, enable output print > + > +8. Send inner dst GTP-U IPv6 packets, check RSS could work, verify the > + queue is between 10 and 25, print PKT_RX_RSS_HASH:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP()/Raw('x'*20) > + > +9. Send different inner dst GTP-U IPv6 packets, check pmd receives packet > + from different queue but between 10 and 25:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0002")/UDP()/Raw('x'*20) > + > +10. Send different inner src GTP-U IPv6 packets, check pmd receives > packet > + from same queue:: > + > + p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=30)/ > + IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0002", > + dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP()/Raw('x'*20) > -- > 2.5.5 ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-03-08 9:02 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-03-08 2:54 [dts] [PATCH v3]test plan: add ddp gtp qregion test plan Xueqin Lin 2018-03-08 8:59 ` Liu, Yong 2018-03-08 9:02 ` Lin, Xueqin
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).