Purpose
The purpose of this document is to provide the description of the design verification procedure necessary to verify Lustre operation with IPv6 feature. The procedure is not isolated to testing specific Lustre modules but rather Lustre as a complete system, unless specified otherwise for individual test cases.
Scope
This document covers design verification procedures for an IPv6-only system and a mixed IPv6-IPv4 system with the focus on IPv6 functionality. Testing of IPv4-only system is considered to be regression testing with regard to the IPv6 feature and is not covered by this document.
Requirements
The requirements for executing this test plan are same as for a regular Lustre system testing with the exception that every node involved in this testing is expected to be able to work with IPv6.
HW Requirements
A pool of server nodes and a pool of client nodes is expected to be available. Exact numbers are TBD
Network Requirements
Each node is expected to have at least two interfaces available for the purpose of LNet configuration. The connection between the nodes should be such that both IPv4 and IPv6 can be supported on every link.
While majority of the testing is projected to use TCP/Ethernet networking, IPv6 with o2ib shall also be tested.
SW Requirements
Exact Lustre SW version to be used is TBD. Linux kernel versions to be used are TBD. The test is intended to be rerun on subsequent releases, so the SW requirements are expected to change. It is recommended to create a separate "results" document for each run and specify the SW and kernel versions there.
Testing Procedure
Test Case Structure
The test is defined as the combination of the following:
Identifier
Label which uniquely identifies the testcase.
Objective
Description of what the test case is verifying. Ideally refers to a specific requirement from a system design document which is being verified.
Procedure
Describes the test setup and procedure. Level of detail should be sufficient for a test engineer to follow (should not rely on information available to developers only).
Expected Behaviour
Describes how the system is expected to behave when test procedure is executed.
Actual Results
Describes actual results observed when the test case is executed.
Test Cases
Positive
ID | Objective | Procedure | Expected Behaviour | Actual Results | Notes |
---|---|---|---|---|---|
IPv6_only.Config.SR.Client.1 | Configure Lustre Client using only IPv6. (SR, same subnet) |
|
| pass bug: IPv6 route is not created if NID is added dynamically (LU-18315 created) | All nodes are 2.16.0_RC1 Rocky8.8 |
IPv6_only.Config.SR.Client.2 | Configure second Lustre Client using only IPv6 and test connectivity between the two clients. (SR, same subnet) |
|
| pass bug?: it is possible for a client with an only IPv6 NID to successfully ping a client with an only IPv4 NID (likely) if any of them is routed via a gateway | Assumes that Client.1 and Client.2 are on the same subnet and are able to reach each other over IPv6 network. |
IPv6_only.Config.SR.Server.1 | Configure Lustre Server using only IPv6 (SR, same subnet) |
|
| pass | Assumes that servers and clients are on the same subnet and are able to reach each other over IPv6 network. |
IPv6_only.Basic.LNet.SR.1 | Test basic connectivity between Lustre Server and Client on LNet level. (SR, same subnet) | Use the lustre server and clients setup in previous tests and
|
| fail lnet_selftest fails to parse IPv6 NIDs (LU-18316 created) | |
IPv6_only.Basic.Lustre.SR.1 | Test Lustre FS performance with the Client and Server setup to use IPv6. (SR, same subnet) | Use the lustre server and clients setup in previous tests and
|
| pass: static via conf file if the only/first listed address assigned to the interface is IPv6 global or if using "lnetctl --nid" to configure NIDs dynamically fail: conf file with ip2nets="tcp0(eth0) <IPV6>" or ip2nets="tcp0 <IPv6>" fails. | |
IPv6_only.Config.MultiSubnet.SR.1 | Configure Lustre Client and Lustre server to be on different IPv6 subnets (SR) |
|
| ||
IPv6_only.MultiSubnet.LNet.SR.1 | Test basic connectivity between Lustre Server and Client across IPv6 subnets on LNet level. (SR) |
|
| ||
IPv6_only.MultiSubnet.Lustre.SR.1 | Test Lustre FS performance with the Client and Server setup to use IPv6 across subnets. (SR) |
|
| ||
IPv6_only.Config.MR.Client.1 | Configure Lustre Client using only IPv6. (MR, same subnet) |
|
| pass | |
IPv6_only.Config.MR.Client.2 | Configure second Lustre Client using only IPv6 and test connectivity between the two clients. (MR, same subnet) |
|
| pass | Assumes that Client.1 and Client.2 are on the same subnet and are able to reach each other over IPv6 network. |
IPv6_only.Config.MR.Server.1 | Configure Lustre Server using only IPv6 (MR, same subnet) |
|
| pass | Assumes that servers and clients are on the same subnet and are able to reach each other over IPv6 network. |
IPv6_only.Basic.LNet.MR.1 | Test basic connectivity between Lustre Server and Client on LNet level. (MR, same subnet) | Use the lustre server and clients setup in previous tests and
|
| skip due to IPv6_only.Basic.LNet.SR.1 | |
IPv6_only.Basic.Lustre.MR.1 | Test Lustre FS performance with the Client and Server setup to use IPv6. (MR, same subnet) | Use the lustre server and clients setup in previous tests and
|
| pass | |
IPv6_IPv4_collocated.Config.MR.LNet.1 | Configure node to use one IPv6 and one IPv4 interface for LNet (MR, two different lnets) |
|
| pass | This test is run at LNet level so it doesn't matter whether nodes are designated as servers or clients |
IPv6_IPv4_collocated.Basic.MR.LNet.1 | Test basic connectivity between nodes on LNet level. (MR, same subnet) |
|
| skip due to IPv6_only.Basic.LNet.SR.1 | This test is run at LNet level so it doesn't matter whether nodes are designated as servers or clients |
IPv6_IPv4_routed.Config.SR.LNet.1 | Configure one node to use a single IPv6 NID and another to use IPv4 NID. Add lnet router between the two. (SR, lnet routing) |
|
| skip due to observation made in IPv6_only.Config.SR.Client.2 | |
IPv6_IPv4_routed.Basic.SR.LNet.1 | Test basic connectivity between IPv4 and IPv6 nodes via LNet gateway. (SR, lnet routing) |
|
| skip due to observation made in IPv6_only.Config.SR.Client.2 and IPv6_only.Basic.LNet.SR.1 | |
IPv6_o2ib_routed.Config.SR.LNet.1 | Configure one node to use a single IPv6 NID and another to use an o2ib NID. Add lnet router between the two. (SR, lnet routing) |
|
| fail: configuring IPv6 NID on an IB interface using o2ib net fails with an error if "lnetctl net add --nid" is used configuring IPv6 NID on an IB interface using o2ib net results in a corrupt IPv4-style NID if "lnetctl net add --net o2ib --if ib0" is used and first address listed for the interface is IPv6 global (LU-18317 created) "lnetctl ping" from o2ib client to tcp (IPv6) server across an lnet router fails. Debug logs indicate NID corruption. Both endpoints are able to lnetctl ping the router NIDs. Routes are shown as "up". (LU-18318 created) | |
IPv6_o2ib_routed.Basic.SR.LNet.1 | Test basic connectivity between o2ib and IPv6 nodes via LNet gateway. (SR, lnet routing) |
|
| skip due to IPv6_only.Basic.LNet.SR.1 | |
Negative
ID | Objective | Procedure | Expected Behaviour | Actual Results | Notes |
---|---|---|---|---|---|
IPv6_only.Neg.Reboot.Client.MR | Verify that connectivity can be restored after unexpected client reboot |
|
| pass | |
IPv6_only.Neg.Reboot.Server.MR | Verify that connectivity can be restored after unexpected server reboot |
|
| pass | |
IPv6_only.Neg.Local_link_down.Client.MR | Verify that local link down events are handled gracefully |
|
| pass |
1 Comment
Frank Sehr
Can we include error cases to see if the system handles errors correctly or at least gracefully and restores the system correctly. These could include
1) Shutdown/disconnect server
2) Shutdown/disconnect clients
3) Simulated network problems like reused IP address/ routing issues, disconnect switches, .....
4) ......