diff options
author | Vratko Polak <vrpolak@cisco.com> | 2023-05-23 10:34:05 +0200 |
---|---|---|
committer | Vratko Polak <vrpolak@cisco.com> | 2023-05-24 12:40:36 +0000 |
commit | 1fd3d96de221e7bf281f7ce96dc5cad0170a602d (patch) | |
tree | f94e408ee9cedeebe99ff0d70807aefb57812f1f /resources/libraries/robot/shared | |
parent | d6604cd860130f3d0520acefc1a0ced70e231b8c (diff) |
feat(reassembly): add few suites for ip reassembly
In tunneling scenarios, VPP needs to reassembly packet fragments
before decapsulation. Conveniently, VPP also fragments the packets
after encapsulation (at least for some encapsulation protocols)
if they do not fit into MTU.
So this change adds few suites, adapted from existing 3-node ones
which additionally lower MTU on DUT1-DUT2 link.
The intended packet size is 1518B. 64B packets will fit,
and most of IMIX packets will also fit without fragmentation.
VPP refuses to reassembly 9000B packets as they have too many fragments.
+ Add a keyword so suites need only one additional line of code.
+ Add new test tag REASSEMBLY for the added suites.
+ Tell autogen the one soak test case for reaseembly should be 1518B.
- It is possible to increase fragment limit for 9000B, not done yet.
- Ipsec policy suites are added but they should not be used.
- VPP does fragmentation twice (before and after encapsulation).
- VPP does not perform reassembly (only last fragment is decrypted).
- TRex does not realize the packet from VPP is only a fragment.
- The result is false pass with unfairly good performance.
+ Suites still included, to simplify verifying VPP fixes for the above.
Change-Id: If33c60d767fea161d9e4ffabb8ded3d81c8f39ed
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
Diffstat (limited to 'resources/libraries/robot/shared')
-rw-r--r-- | resources/libraries/robot/shared/interfaces.robot | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/resources/libraries/robot/shared/interfaces.robot b/resources/libraries/robot/shared/interfaces.robot index a905373401..4f15d5c9be 100644 --- a/resources/libraries/robot/shared/interfaces.robot +++ b/resources/libraries/robot/shared/interfaces.robot @@ -853,3 +853,23 @@ | | | | ${vhost_dump}= | Vhost User Dump | ${dut} | | Return From Keyword | ${vhost_dump} + +| Lower DUT1-DUT2 MTU For Fragmentation +| | [Documentation] | Set lower MTU on both ends of DUT1-DUT2 link. +| | +| | ... | This should force VPP to fragment (and reassembly) packets. +| | ... | Should be called after Initialize Layer Interface. +| | ... | Suite variables such as \${dut2_if1} should be defined by then. +| | +| | ... | As VPP (at least dpdk plugin) require interface to be down +| | ... | before MTU can be changed, interfaces are temporarily downed. +| | +| | # TODO: ip_reassembly_set to increase max_reassembly_length so jumbo passes. +| | Set Interface State | ${nodes['DUT1']} | ${dut1_if2} | down +| | Set Interface State | ${nodes['DUT2']} | ${dut2_if1} | down +| | VPP Set Interface MTU +| | ... | ${nodes['DUT1']} | ${dut1_if2} | ${MTU_FOR_FRAGMENTATION} +| | VPP Set Interface MTU +| | ... | ${nodes['DUT2']} | ${dut2_if1} | ${MTU_FOR_FRAGMENTATION} +| | Set Interface State | ${nodes['DUT1']} | ${dut1_if2} | up +| | Set Interface State | ${nodes['DUT2']} | ${dut2_if1} | up |