traffic-control: Update PIE doc with tests for RFC features,
RELEASE_NOTES and CHANGES.html
This commit is contained in:
committed by
Tom Henderson
parent
9bbd261806
commit
04747b113c
@@ -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
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user