Skip to content

Commit d65a77d

Browse files
committed
Added connection tracking test plan.
- Added conntrack.md - Updated existing vnet.md and eni.md - Added link to the test plans in dash-sonic-hld.md Signed-off-by: Anton Putria <[email protected]>
1 parent 4709e4c commit d65a77d

File tree

6 files changed

+137
-34
lines changed

6 files changed

+137
-34
lines changed

documentation/general/dash-sonic-hld.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,13 @@ The following commands shall be added :
625625

626626
## 3.5 Test Plan
627627

628-
Refer DASH documentation for the test plan.
628+
DASH testing shall include at least two test levels:
629+
1. SAI-level testing
630+
1. SONiC-level testing
631+
632+
SAI-level testing includes:
633+
- SAI underlay API verification (to add test plan)
634+
- DASH Overlay API verification - [Overlay test plan](https://github.com/Azure/DASH/tree/main/test/docs/testplans/overlay.md)
629635

630636
## 3.6 Example configuration
631637

test/docs/testplans/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
|----------|-------------|
55
| [Overlay Test Plans](./overlay.md) | Home page of all overlay test plans. |
66
| [ENI Test Plan](./eni.md) | Detailed ENI test plan. |
7+
| [Connection tracking](./conntrack.md) | Detailed connection tracking test plan. |
8+
| [VNET to VNET](./vnet.md) | Detailed VNET to VNET test plan. |
79

810

911
You can start with the [Overlay Test Plans](./overlay.md).

test/docs/testplans/conntrack.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# Table of content
2+
3+
1. [Objectives](#objectives)
4+
2. [Requirements](#requirements)
5+
3. [Automation](#automation)
6+
4. [Test Suites](#test-suites)
7+
- [Basic](#eni-creation)
8+
- [Ageing](#eni-removal)
9+
- [Performance](#eni-scale)
10+
11+
---
12+
13+
# Objectives
14+
15+
Verify proper functioning of the connection tracking mechanism: establishing, handling, closing connections.
16+
Connection per Second (CPS) is the most important attribute of the DASH products.
17+
18+
# Requirements
19+
20+
| Item | Expected value
21+
|---|---
22+
| Active Connections/ENI | 1M (Bidirectional)
23+
| CPS per card | 4M+
24+
25+
**To clarify**
26+
1. Ageing time
27+
28+
# Automation
29+
30+
Test cases are automated:
31+
1. Functional - using SAI PTF test framework.
32+
1. Scale/Performance - to be defined.
33+
34+
## Automation notes
35+
36+
1. Each test should be executed using TCP and UDP streams.
37+
1. Each test should be executed for Inbound and Outbound routing scenario.
38+
1. So far there is **no direct API to get active connection number** or CPS. Verification might be done using indirect ways:
39+
- Based on packets forwarding - check whether packets are passed or dropped
40+
- Based on routing and ACL counters that are incremented on slow path. So when connection is established the counters should not be incremented.
41+
42+
# Test suites
43+
44+
## Basic
45+
46+
| # | Test case | Test Class.Method
47+
| --- | --- | ---
48+
| 1 | Basic positive TCP session verification with counters check | -
49+
| 2 | Basic positive UDP session verification with counters check | -
50+
| 3 | TCP session verification with fragmented packets | -
51+
| 4 | UDP session verification with fragmented packets | -
52+
| 5 | ICMP traffic. **to clarify** no session is expected? | -
53+
| 6 | Same overlay IPs but different ENIs | -
54+
55+
## Ageing
56+
57+
| # | Test case | Test Class.Method
58+
| --- | --- | ---
59+
| 1 | Standard ageing (fully correct TCP session). | -
60+
| 2 | Standard ageing (fully correct UDP session). | -
61+
| 3 | Open TCP session but no data and no FIN | -
62+
| 4 | TCP session started from the middle (no SYN packet) | -
63+
64+
## Integration
65+
66+
| # | Test case | Test Class.Method
67+
| --- | --- | ---
68+
| 1 | Inbound and outbound configuration in parallel | -
69+
| 2 | Routes update during active session | -
70+
| 3 | ACL update during active session | -
71+
| 4 | Configuration removal during active session (Route, VNET, ENI removal) | -
72+
73+
## Performance
74+
75+
**TBD**
76+
77+
| # | Test case | Test Class.Method
78+
| --- | --- | ---
79+
| 1 | CPS | -
80+
| 2 | Max sessions per ENI. (Verify resources clean up) | -
81+
| 3 | Max sessions per card (multiple ENIs). (Verify resources clean up) | -
82+
83+
## Future
84+
85+
1. Add IPv6 tests

test/docs/testplans/eni.md

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -35,36 +35,38 @@ Test cases are automated using SAI PTF test framework.
3535

3636
Verifies create operations, an association with VNI, MAC.
3737

38-
| Test case | Test Class.Method
39-
| --- | ---
40-
| create inbound/outbound DASH ACL groups | CreateDeleteEniTest.createInOutAclGroupsTest
41-
| create VNET | CreateDeleteEniTest.createVnetTest
42-
| create ENI | CreateDeleteEniTest.createEniTest
43-
| create ENI Ether address map entry | CreateDeleteEniTest.createEniEtherAddressMapTest
44-
| create PA validation entry | CreateDeleteEniTest.createPaValidationTest
45-
| create Outbound routing entry | CreateDeleteEniTest.createOutboundRoutingEntryTest
46-
| verify ENI attributes getting/setting | CreateDeleteEniTest.eniAttributesTest
47-
| verify ENI Ether address map entry attributes getting/setting | CreateDeleteEniTest.eniEtherAddressMapAttributesTest
48-
| verify PA validation entry attributes getting/setting | CreateDeleteEniTest.paValidationEntryAttributesTest
49-
| verify Outbound routing entry attributes getting/setting | CreateDeleteEniTest.outboundRoutingEntryAttributesTest
38+
| # | Test case | Test Class.Method
39+
| --- | --- | ---
40+
| 1 | create inbound/outbound DASH ACL groups | CreateDeleteEniTest.createInOutAclGroupsTest
41+
| 2 | create VNET | CreateDeleteEniTest.createVnetTest
42+
| 3 | create ENI | CreateDeleteEniTest.createEniTest
43+
| 4 | create ENI Ether address map entry | CreateDeleteEniTest.createEniEtherAddressMapTest
44+
| 5 | create PA validation entry | CreateDeleteEniTest.createPaValidationTest
45+
| 6 | create Outbound routing entry | CreateDeleteEniTest.createOutboundRoutingEntryTest
46+
| 7 | create Inbound routing entry | CreateDeleteEniTest.createInboundRoutingEntryTest |
47+
| 8 | verify Inbound routing entry attributes getting/setting | CreateDeleteEniTest.inboundRoutingEntryAttributesTest |
48+
| 9 | verify ENI attributes getting/setting | CreateDeleteEniTest.eniAttributesTest
49+
| 10 | verify ENI Ether address map entry attributes getting/setting | CreateDeleteEniTest.eniEtherAddressMapAttributesTest
50+
| 11 | verify PA validation entry attributes getting/setting | CreateDeleteEniTest.paValidationEntryAttributesTest
51+
| 12 | verify Outbound routing entry attributes getting/setting | CreateDeleteEniTest.outboundRoutingEntryAttributesTest
5052

5153
## ENI removal
5254

5355
Verifies remove operations.
5456

55-
| Test case | Test Class.Method
56-
| --- | ---
57-
| normal delete:<br>verify deletion of: inbound/outbound DASH ACL groups, VNET, ENI, ENI Ether address map entry, PA validation entry, Outbound routing entry | CreateDeleteEniTest.deleteEniTest
58-
| error id mapped rules exist:<br>verify ENI cannot be deleted when map exist | CreateDeleteEniTest.deleteEniWhenMapExistTest
59-
| duplicated deletion<br>no errors | CreateDeleteEniTest.duplicatedEniDeletionTest
60-
| normal bulk delete | -
61-
| bulk delete does not remove any if there is a mapping for some ENI | -
57+
| # | Test case | Test Class.Method
58+
| --- | --- | ---
59+
| 1 | normal delete:<br>verify deletion of: inbound/outbound DASH ACL groups, VNET, ENI, ENI Ether address map entry, PA validation entry, inbound/outbound routing entry | Is a part of CreateDeleteEniTest.destroy_teardown_obj
60+
| 2 | error id mapped rules exist:<br>verify ENI cannot be deleted when map exist | CreateDeleteEniTest.deleteEniWhenMapExistTest
61+
| 3 | duplicated deletion<br>no errors | CreateDeleteEniTest.duplicatedEniDeletionTest
62+
| 4 | normal bulk delete | -
63+
| 5 | bulk delete does not remove any if there is a mapping for some ENI | -
6264

6365
## ENI scale.
6466

6567
Verifies basic ENI scale, create/remove/recreate maximum number of ENIs.
6668

67-
| Test case | Test Class.Method
68-
| --- | ---
69-
| Create/remove a max number of ENI entries | EniScaleTest.eniScaleTest
70-
| Recreate (repeated creation/removal a max number of ENI entries) | EniScaleTest.eniScaleTest
69+
| # | Test case | Test Class.Method
70+
| --- | --- | ---
71+
| 1 | Create/remove a max number of ENI entries | EniScaleTest.eniScaleTest
72+
| 2 | Recreate (repeated creation/removal a max number of ENI entries) | EniScaleTest.eniScaleTest

test/docs/testplans/overlay.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Two test frameworks are suggested for automation:
2828
|---|---
2929
| VNETs | 1024
3030
| ENI per card | 64
31-
| Routes per ENI | 100k (**to clarify** in some md docs it is 200k)
31+
| Routes per ENI | 100k
3232
| NSGs per ENI | 6
3333
| ACLs per ENI | 6x100K prefixes
3434
| ACLs per ENI | 6x10K SRC/DST ports
@@ -38,7 +38,7 @@ Two test frameworks are suggested for automation:
3838
### Performance
3939
| Item | Expected value
4040
|---|---
41-
| CPS per card | 4M+
41+
| CPS per card | 5M
4242
| Flows per ENI | 1M
4343
| Flows per card | 16M per 200G (**64M**)
4444

@@ -52,7 +52,8 @@ More requirements may be found in [DASH SONiC HLD](https://github.com/Azure/DASH
5252

5353
1. [ENI config](./eni.md)<br>
5454
Verifies base CRUD operations and scaling for Elastic Network Interface (ENI),
55-
1. Connection tracking
55+
1. [Connection tracking](./conntrack.md)<br>
56+
Verifies the connection tracking mechanism, ageing, scaling and performance.
5657
1. ACL
5758
1. [VNET-to-VNET](./vnet.md)<br>
5859
Verifies VM to VM communication in VNET, using an Appliance for rules and routing offload.

test/docs/testplans/vnet.md

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ The scenario allows the following:
3131
|---|---
3232
| VNETs | 1024
3333
| ENI per card | 64
34-
| Routes per ENI | 100k (**to clarify** in some md docs it is 200k)
34+
| Routes per ENI | 100k
3535
| NSGs per ENI | 6
3636
| ACLs per ENI | 6x100K prefixes
3737
| ACLs per ENI | 6x10K SRC/DST ports
@@ -65,12 +65,17 @@ More details may be found in [DASH SONiC HLD](https://github.com/Azure/DASH/blob
6565
# Automation
6666

6767
Test cases are automated using SAI PTF test framework, except scale and performance tests.
68+
Scale and performance tests automation approach - to be defined.
6869

6970
# Test suites
7071

71-
**NOTE**: Each test has to send multiple traffic types:
72-
- Traffic that matches applied configuration (positive case)
73-
- Traffic that doesn't match applied configuration for each applied attribute (negative case).
72+
**Overall comments**
73+
1. Each scenario should be executed with and without underlay configuration:
74+
- without underlay - same rx/tx port
75+
- with underlay - use port to port traffic verification
76+
1. Each test should send multiple traffic types:
77+
- Traffic that matches applied configuration (positive case)
78+
- Traffic that doesn't match applied configuration for each applied attribute (negative case).
7479

7580
### **Outbound VNET routing**
7681
| # | Test case | Test Class.Method
@@ -91,9 +96,7 @@ Original table [link](https://github.com/Azure/DASH/blob/main/documentation/gene
9196
| --- | --- | ---
9297
| 1 | VNET2VNET routing with PA validation entry PERMIT.<br>SAI_INBOUND_ROUTING_ENTRY_ACTION_VXLAN_DECAP_PA_VALIDATE<br>SAI_PA_VALIDATION_ENTRY_ACTION_PERMIT| Vnet2VnetInboundTest.<br>vnet2VnetInboundPaValidatePermitTest
9398
| 2 | Direction lookup DENY action | Vnet2VnetInboundTest.<br/>vnet2VnetInboundDenyVniTest
94-
| 3 | Drop if CA DMAC does not match | Vnet2VnetInboundTest.<br/>vnet2VnetInboundInvalidEniMacTest
95-
| 4 | Drop if PA SIP does not match on PA validation | Vnet2VnetInboundTest.<br/>vnet2VnetInboundInvalidPaSrcIpTest
96-
| 5 | VNET2VNET routing without PA validation entry<br>SAI_INBOUND_ROUTING_ENTRY_ACTION_VXLAN_DECAP | -
99+
| 3 | VNET2VNET routing without PA validation entry<br>SAI_INBOUND_ROUTING_ENTRY_ACTION_VXLAN_DECAP | -
97100

98101

99102
### **Integration**
@@ -103,6 +106,7 @@ Original table [link](https://github.com/Azure/DASH/blob/main/documentation/gene
103106
| 1 |Multiple inbound and outbound configurations at the same time. Send multiple allowed and forbidden traffic types. | -
104107
| 2 |Send non VXLAN traffic. (**to clarify** underlay routing?) | VnetRouteTest
105108
| 3 |Use multiple VIPs | -
109+
| 4 | Use same prefixes in CA and PA networks for outbound and inbound VNET at the same time | -
106110

107111
### **Negative**
108112

@@ -111,6 +115,8 @@ Original table [link](https://github.com/Azure/DASH/blob/main/documentation/gene
111115
| 1 | Traffic with invalid VIP (Inbound and Outbound) | -
112116
| 2 | Traffic with valid VNI but no match to any ENI MAC | -
113117
| 3 | Invalid configurations:<br>- Multiple MACs for same ENI<br>- All different VNIs in ENI, direction lookup, vnet configuration.<br>- Add same VNI for different direction lookup entries. | -
118+
| 4 | Drop if CA DMAC does not match | Vnet2VnetInboundTest.<br/>vnet2VnetInboundInvalidEniMacTest
119+
| 5 | Drop if PA SIP does not match on PA validation | Vnet2VnetInboundTest.<br/>vnet2VnetInboundInvalidPaSrcIpTest
114120

115121
### **Scaling & Performance**
116122

@@ -119,6 +125,7 @@ To be defined.
119125

120126
### **To clarify / Future**
121127

128+
1. Items 5 and 7 in [other requirements](#other) are conflicting to each other.
122129
1. What is relation between vm_vni and vnet_id in ENI create?
123130
1. The lookup table is per ENI, but could be Global, or multiple Global lookup tables per ENIs. How to configure global lookup? Multiple lookups?
124131
1. In Encap and Decap rules we have:

0 commit comments

Comments
 (0)