traffic-control: Update PIE doc with tests for RFC features,

RELEASE_NOTES and CHANGES.html
This commit is contained in:
Bhaskar Kataria
2020-06-01 23:13:07 +05:30
committed by Tom Henderson
parent 9bbd261806
commit 04747b113c
4 changed files with 22 additions and 10 deletions

View File

@@ -20,9 +20,7 @@ and consists of 2 files `pie-queue-disc.h` and `pie-queue-disc.cc` defining a Pi
class. The code was ported to |ns3| by Mohit P. Tahiliani, Shravya K. S. and Smriti Murali
based on ns-2 code implemented by Preethi Natarajan, Rong Pan, Chiara Piglione, Greg White
and Takashi Hayakawa. The implementation was aligned with RFC 8033 by Vivek Jain and Mohit
P. Tahiliani after ns-3.32 release, and additional unit test cases were added for the same
by Bhaskar Kataria during his GSoC 2020 project.
P. Tahiliani for the ns-3.32 release, with additional unit test cases contributed by Bhaskar Kataria.
* class :cpp:class:`PieQueueDisc`: This class implements the main PIE algorithm:
@@ -32,7 +30,7 @@ by Bhaskar Kataria during his GSoC 2020 project.
* ``PieQueueDisc::CalculateP ()``: This routine is called at a regular interval of `m_tUpdate` and updates the drop probability, which is required by ``PieQueueDisc::DropEarly()``
* ``PieQueueDisc::DoDequeue ()``: This routine calulates `m_qDelay` using timestamp by default or optionally with `UseDqRateEstimator` enabled calculates the average departure rate which is required for updating the drop probability in ``PieQueueDisc::CalculateP ()``. From ns-3.32 onwards, the default approach to calculate queue delay has been changed to use timestamps.
* ``PieQueueDisc::DoDequeue ()``: This routine calculates queue delay using timestamps (by default) or, optionally with the `UseDequeRateEstimator` attribute enabled, calculates the average departure rate to estimate queue delay. A queue delay estimate required for updating the drop probability in ``PieQueueDisc::CalculateP ()``. Starting with the ns-3.32 release, the default approach to calculate queue delay has been changed to use timestamps.
References
==========
@@ -76,12 +74,12 @@ command-line options):
$ ./waf --run "pie-example --PrintHelp"
$ ./waf --run "pie-example --writePcap=1"
The expected output from the previous commands are 10 .pcap files.
The expected output from the previous commands are ten .pcap files.
Validation
**********
The PIE model is tested using :cpp:class:`PieQueueDiscTestSuite` class defined in `src/traffic-control/test/pie-queue-test-suite.cc`. The suite includes 5 test cases:
The PIE model is tested using :cpp:class:`PieQueueDiscTestSuite` class defined in `src/traffic-control/test/pie-queue-test-suite.cc`. The suite includes the following test cases:
* Test 1: simple enqueue/dequeue with defaults, no drops
* Test 2: more data with defaults, unforced drops but no forced drops
@@ -89,6 +87,14 @@ The PIE model is tested using :cpp:class:`PieQueueDiscTestSuite` class defined i
* Test 4: same as test 2, but with reduced dequeue rate
* Test 5: same dequeue rate as test 4, but with higher Tupdate
* Test 6: same as test 2, but with UseDequeueRateEstimator enabled
* Test 7: test with CapDropAdjustment disabled
* Test 8: test with CapDropAdjustment enabled
* Test 9: PIE queue disc is ECN enabled, but packets are not ECN capable
* Test 10: Packets are ECN capable, but PIE queue disc is not ECN enabled
* Test 11: Packets and PIE queue disc both are ECN capable
* Test 12: test with Derandomization enabled
* Test 13: same as test 11 but with accumulated drop probability set below the low threshold
* Test 14: same as test 12 but with accumulated drop probability set above the high threshold
The test suite can be run using the following commands:
@@ -98,7 +104,7 @@ The test suite can be run using the following commands:
$ ./waf build
$ ./test.py -s pie-queue-disc
or
or alternatively (to see logging statements in a debug build):
.. sourcecode:: bash

View File

@@ -63,7 +63,7 @@ TypeId PieQueueDisc::GetTypeId (void)
MakeDoubleChecker<double> ())
.AddAttribute ("Tupdate",
"Time period to calculate drop probability",
TimeValue (Seconds (0.015)),
TimeValue (MilliSeconds (15)),
MakeTimeAccessor (&PieQueueDisc::m_tUpdate),
MakeTimeChecker ())
.AddAttribute ("Supdate",
@@ -84,12 +84,12 @@ TypeId PieQueueDisc::GetTypeId (void)
MakeUintegerChecker<uint32_t> ())
.AddAttribute ("QueueDelayReference",
"Desired queue delay",
TimeValue (Seconds (0.015)),
TimeValue (MilliSeconds (15)),
MakeTimeAccessor (&PieQueueDisc::m_qDelayRef),
MakeTimeChecker ())
.AddAttribute ("MaxBurstAllowance",
"Current max burst allowance before random drop",
TimeValue (Seconds (0.15)),
TimeValue (MilliSeconds (15)),
MakeTimeAccessor (&PieQueueDisc::m_maxBurst),
MakeTimeChecker ())
.AddAttribute ("UseDequeueRateEstimator",