Feature #4327
Updated by Anonymous 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 -- A -- D 1. Start NFD on nodes A, C, and D. 2. Node Route for `/arizona/cs` set toward A on C and toward D runs on A. Route for `/ucla/cs` set toward A on C and toward D on A. Route for `/ucsd/caida` set toward A on C and toward D on A. 3. On A, set the producer strategy for the prefixes `/arizona/cs`, `/ucla/cs`, and `/ucsd/caida`. The `/arizona/cs` namespace to the `CongestionMarkStrategy` to introduce a congestion mark (value=1) to traversing Interests under this namespace, overriding any previously-set congestion marks. 4. D starts a producer app for `/arizona/cs`. This producer will copy any congestion marks from on a received Interest back to the corresponding any Data packet. packets produced as a result. 3. The routes 5. D starts a producer for all prefixes are configured `/ucla/cs`. This producer will copy any congestion marks on a received Interest to any Data packets produced as follows: C->A, A->D. a result. 4. On node A, prefix `/arizona/cs` uses the `CongestionMarkStrategy`, which adds 6. D starts a producer for `/ucsd/caida`. This producer will copy any congestion mark (value=7) marks on a received Interest to all traversing Interests, overriding any previously-set congestion marks. Data packets produced as a result. 5. Node 7. Start a consumer on C (the consumer) that sends an Interest for `/arizona/cs`. 6. Node 8. A will add a congestion mark (value=7) (value=1) to the traversing Interest. Interest to indicate congestion. 7. Node 9. D will propagate the congestion mark on the outgoing Interest, if it exists. Node D will also add the mark to the returning Data packet. 8. Check if 10. If the consumer app on C receives did not receive a Data satisfying its Interest, which contains Interest within the timeout or that did not contain a congestion mark of value=7. (with value=1), fail the test. 9. Node 11. Start a consumer on C that sends an Interest for `/ucla/cs`. 10. Check that 12. If the consumer on C receives did not receive a Data packet which does not contain a congestion mark. satisfying its Interest within the timeout, fail the test. 11. 13. On node C, set the strategy for prefix the `/ucsd/caida` namespace to the `CongestionMarkStrategy` to introduce a congestion mark (value=2) to traversing Interests, Interests under this namespace, overriding any previously-set congestion marks. 12. 14. On node A, set the strategy for the `/ucsd/caida` namespace to the `CongestionMarkStrategy` to introduce a congestion mark (value=3), (value=3) to traversing Interests under this namespace, overriding any previously-set congestion marks. This should override the existing mark (value=2). 13. Node 15. Start a consumer on C (the app) that sends an Interest for `/arizona/cs`. 14. Node 16. C (the strategy) will add a congestion mark (value=2) to the traversing Interest to indicate congestion. 15. Node 17. A will override the congestion mark (setting value=3) on the traversing Interest. 16. Check that 18. If the consumer on node C did not receive a Data satisfying its Interest with within the timeout or that did not contain a congestion mark of value=3. (with value=3), fail the test. This test case could be extended to check whether for Data packet congestion marks can be added to Data packets (from inside mark propagation in the forwarding strategy). However, 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 for the Interest component of this test case to work.