Feature #4327
Updated by Eric Newberry almost 7 years ago
Implement the congestion mark integration test case proposed by Klaus in #3797 note 57. The below is modified and extended from his note. Topology: C -- B -- A -- D 1. Start NFD on A, B, C, and D. 2. Route for `/arizona/cs` set toward B on C, toward A on B, and toward D on A. Route for `/ucla/cs` set toward B on C, toward A on B, and toward D on A. 3. On B, set the strategy for the `/arizona/cs` namespace to the `CongestionMarkStrategy` to introduce a congestion mark (value=1) to traversing Interests under this namespace. 4. Capture packets received on C from link B to C, on B from link C to B and link A to B, on A from link B to A and link D to A, and on D from link A to D. 5. 4. D starts a producer for `/arizona/cs`. This producer will copy any congestion marks on a received Interest to any Data packets produced as a result. 6. D starts a producer for `/ucla/cs`. This producer will copy any congestion marks on a received Interest to any Data packets produced as a result. 7. 5. C sends an Interest for `/arizona/cs`. 8. 6. B adds the congestion mark (value=1) to the traversing Interest to indicate congestion. 9. 7. A will propagate the congestion mark on the outgoing Interest, Interest if it exists. 10. 8. If C did not receive a Data satisfying the Interest within timeout, fail the test. 11. C sends an Interest for `/ucla/cs`. 12. If C did not receive a Data satisfying the Interest within timeout, fail the test. 13. 9. Parse capture from link C to B (on B) to check if Interest for `/arizona/cs` without congestion mark was received. If not, fail the test. 14. Parse capture from link B to A (on A) to check if Interest for `/arizona/cs` with a congestion mark (value=1) was received. If not, fail the test. 15. 10. Parse capture from link A to D (on D) to check if Interest for `/arizona/cs` with a congestion mark (value=1) was received. If not, fail the test. 16. Parse capture from link D to A (on A) to check if Data under `/arizona/cs` prefix with a congestion mark (value=1) was received. If not, fail the test. 17. Parse capture from link A to B (on B) to check if Data under `/arizona/cs` prefix with a congestion mark (value=1) was received. If not, fail the test. 18. Parse capture from link B to C (on C) to check if Data under `/arizona/cs` prefix with a congestion mark (value=1) was received. If not, fail the test. 19. Parse capture from link C to B (on B) to check if Interest for `/ucla/cs` without congestion mark was received. If not, fail the test. 20. Parse capture from link B to A (on A) to check if Interest for `/ucla/cs` without congestion mark was received. If not, fail the test. 21. Parse capture from link A to D (on D) to check if Interest for `/ucla/cs` without congestion mark was received. If not, fail the test. This test case could be extended to check for Data packet congestion mark propagation in the reverse direction, but this is not currently supported (see #4290). Additionally, NFD will currently not add a congestion mark to packets at any time in the current implementation (unless it is propagating an existing mark) - this must be implemented somehow for the Interest component of this test case to work.