Test the behavior of RFC congestion avoidance. More...
Inheritance diagram for TcpNewRenoCongAvoidNormalTest:Public Member Functions | |
| TcpNewRenoCongAvoidNormalTest (uint32_t segmentSize, uint32_t packetSize, uint32_t packets, TypeId &congControl, const std::string &desc) | |
| Constructor. More... | |
Public Member Functions inherited from ns3::TcpGeneralTest | |
| TcpGeneralTest (const std::string &desc) | |
| TcpGeneralTest constructor. More... | |
| ~TcpGeneralTest () | |
Public Member Functions inherited from ns3::TestCase | |
| virtual | ~TestCase () |
| Destructor. More... | |
| std::string | GetName (void) const |
Protected Member Functions | |
| void | Check () |
| Called each RTT (1.0 sec in the testing environment) and check that the overall increment in this RTT is less or equal than 1 MSS. More... | |
| virtual void | ConfigureEnvironment () |
| Change the configuration of the environment. More... | |
| virtual void | ConfigureProperties () |
| Change the configuration of the socket properties. More... | |
| virtual void | CWndTrace (uint32_t oldValue, uint32_t newValue) |
| Tracks the congestion window changes. More... | |
| virtual void | NormalClose (SocketWho who) |
| Socket closed normally. More... | |
| virtual void | PhyDrop (SocketWho who) |
| Link drop. More... | |
| virtual void | QueueDrop (SocketWho who) |
| Drop on the queue. More... | |
Protected Member Functions inherited from ns3::TcpGeneralTest | |
| virtual void | AfterRTOExpired (const Ptr< const TcpSocketState > tcb, SocketWho who) |
| Rto has expired. More... | |
| virtual void | BeforeRTOExpired (const Ptr< const TcpSocketState > tcb, SocketWho who) |
| Rto has expired. More... | |
| virtual void | BytesInFlightTrace (uint32_t oldValue, uint32_t newValue) |
| Bytes in flight changes. More... | |
| virtual void | CongStateTrace (const TcpSocketState::TcpCongState_t oldValue, const TcpSocketState::TcpCongState_t newValue) |
| State on Ack state machine changes. More... | |
| virtual Ptr< SimpleChannel > | CreateChannel () |
| Create and return the channel installed between the two socket. More... | |
| virtual Ptr< ErrorModel > | CreateReceiverErrorModel () |
| Create and return the error model to install in the receiver node. More... | |
| virtual Ptr< TcpSocketMsgBase > | CreateReceiverSocket (Ptr< Node > node) |
| Create and install the socket to install on the receiver. More... | |
| virtual Ptr< ErrorModel > | CreateSenderErrorModel () |
| Create and return the error model to install in the sender node. More... | |
| virtual Ptr< TcpSocketMsgBase > | CreateSenderSocket (Ptr< Node > node) |
| Create and install the socket to install on the sender. More... | |
| virtual Ptr< TcpSocketMsgBase > | CreateSocket (Ptr< Node > node, TypeId socketType, TypeId congControl) |
| Create a socket. More... | |
| virtual Ptr< TcpSocketMsgBase > | CreateSocket (Ptr< Node > node, TypeId socketType, TypeId congControl, TypeId recoveryAlgorithm) |
| Create a socket. More... | |
| virtual void | CWndInflTrace (uint32_t oldValue, uint32_t newValue) |
| Tracks the inflated congestion window changes. More... | |
| virtual void | DataSent (uint32_t size, SocketWho who) |
| Notifying application for sent data. More... | |
| void | DoConnect () |
| Scheduled at 0.0, SENDER starts the connection to RECEIVER. More... | |
| virtual void | DoRun (void) |
| Execute the tcp test. More... | |
| virtual void | DoTeardown (void) |
| Teardown the TCP test. More... | |
| virtual void | ErrorClose (SocketWho who) |
| Socket closed with an error. More... | |
| virtual void | FinalChecks () |
| Performs the (eventual) final checks through test asserts. More... | |
| Time | GetClockGranularity (SocketWho who) |
| Get the clock granularity attribute. More... | |
| Time | GetConnTimeout (SocketWho who) |
| Get the retransmission time for the SYN segments. More... | |
| uint32_t | GetDelAckCount (SocketWho who) |
| Get the number of delayed ack (if present) More... | |
| Time | GetDelAckTimeout (SocketWho who) |
| Get the timeout of delayed ack (if present) More... | |
| uint32_t | GetDupAckCount (SocketWho who) |
| Get the number of dupack received. More... | |
| SequenceNumber32 | GetHighestTxMark (SocketWho who) |
| Get the highest tx mark of the node specified. More... | |
| uint32_t | GetInitialCwnd (SocketWho who) |
| Get the initial congestion window. More... | |
| uint32_t | GetInitialSsThresh (SocketWho who) |
| Get the initial slow start threshold. More... | |
| Time | GetMinRto (SocketWho who) |
| Get the minimum RTO attribute. More... | |
| uint32_t | GetMtu () const |
| Get the MTU of the environment. More... | |
| EventId | GetPersistentEvent (SocketWho who) |
| Get the persistent event of the selected socket. More... | |
| Time | GetPersistentTimeout (SocketWho who) |
| Get the persistent timeout of the selected socket. More... | |
| uint32_t | GetPktCount () const |
| Get the number of application packets. More... | |
| Time | GetPktInterval () const |
| Get the interval to wait for each packet sent down from application to TCP. More... | |
| uint32_t | GetPktSize () const |
| Get the application packet size. More... | |
| Time | GetPropagationDelay () const |
| Get the channel Propagation Delay. More... | |
| Ptr< TcpSocketMsgBase > | GetReceiverSocket () |
| Get the pointer to a previously created receiver socket. More... | |
| uint32_t | GetReTxThreshold (SocketWho who) |
| Get the retransmission threshold. More... | |
| Time | GetRto (SocketWho who) |
| Get the retransmission time. More... | |
| Ptr< RttEstimator > | GetRttEstimator (SocketWho who) |
| Get the Rtt estimator of the socket. More... | |
| uint32_t | GetRWnd (SocketWho who) |
| Get the rWnd of the selected socket. More... | |
| Ptr< TcpRxBuffer > | GetRxBuffer (SocketWho who) |
| Get the Rx buffer from selected socket. More... | |
| uint32_t | GetSegSize (SocketWho who) |
| Get the segment size of the node specified. More... | |
| Ptr< TcpSocketMsgBase > | GetSenderSocket () |
| Get the pointer to a previously created sender socket. More... | |
| Time | GetStartTime () const |
| Get the data start time. More... | |
| Ptr< TcpSocketState > | GetTcb (SocketWho who) |
| Get the TCB from selected socket. More... | |
| TcpSocket::TcpStates_t | GetTcpState (SocketWho who) |
| Get the state of the TCP state machine. More... | |
| virtual void | HighestTxSeqTrace (SequenceNumber32 oldValue, SequenceNumber32 newValue) |
| Highest tx seq changes. More... | |
| virtual void | NextTxSeqTrace (SequenceNumber32 oldValue, SequenceNumber32 newValue) |
| Next tx seq changes. More... | |
| virtual void | ProcessedAck (const Ptr< const TcpSocketState > tcb, const TcpHeader &h, SocketWho who) |
| Processed ack. More... | |
| virtual void | RcvAck (const Ptr< const TcpSocketState > tcb, const TcpHeader &h, SocketWho who) |
| Received ack. More... | |
| virtual void | ReceivePacket (Ptr< Socket > socket) |
| Packet received. More... | |
| virtual void | RtoTrace (Time oldValue, Time newValue) |
| RTO changes. More... | |
| virtual void | RttTrace (Time oldTime, Time newTime) |
| Rtt changes. More... | |
| virtual void | Rx (const Ptr< const Packet > p, const TcpHeader &h, SocketWho who) |
| Packet received from IP layer. More... | |
| void | SendPacket (Ptr< Socket > socket, uint32_t pktSize, uint32_t pktCount, Time pktInterval) |
| Send packets to other endpoint. More... | |
| void | SetAppPktCount (uint32_t pktCount) |
| Set app packet count. More... | |
| void | SetAppPktInterval (Time pktInterval) |
| Interval between app-generated packet. More... | |
| void | SetAppPktSize (uint32_t pktSize) |
| Set app packet size. More... | |
| void | SetCongestionControl (TypeId congControl) |
| Congestion control of the sender socket. More... | |
| void | SetEcn (SocketWho who, TcpSocketBase::EcnMode_t ecnMode) |
| Forcefully set the ecn mode on. More... | |
| void | SetInitialCwnd (SocketWho who, uint32_t initialCwnd) |
| Forcefully set the initial cwnd. More... | |
| void | SetInitialSsThresh (SocketWho who, uint32_t initialSsThresh) |
| Forcefully set the initial ssth. More... | |
| void | SetMTU (uint32_t mtu) |
| MTU of the bottleneck link. More... | |
| void | SetPropagationDelay (Time propDelay) |
| Propagation delay of the bottleneck link. More... | |
| void | SetRcvBufSize (SocketWho who, uint32_t size) |
| Forcefully set a defined size for rx buffer. More... | |
| void | SetRecoveryAlgorithm (TypeId reccovery) |
| recovery algorithm of the sender socket More... | |
| void | SetSegmentSize (SocketWho who, uint32_t segmentSize) |
| Forcefully set the segment size. More... | |
| void | SetTransmitStart (Time startTime) |
| Set the initial time at which the application sends the first data packet. More... | |
| virtual void | SsThreshTrace (uint32_t oldValue, uint32_t newValue) |
| Slow start threshold changes. More... | |
| virtual void | Tx (const Ptr< const Packet > p, const TcpHeader &h, SocketWho who) |
| Packet transmitted down to IP layer. More... | |
| virtual void | UpdatedRttHistory (const SequenceNumber32 &seq, uint32_t sz, bool isRetransmission, SocketWho who) |
| Updated the Rtt history. More... | |
Protected Member Functions inherited from ns3::TestCase | |
| TestCase (std::string name) | |
| Constructor. More... | |
| void | AddTestCase (TestCase *testCase, TestDuration duration=QUICK) |
| Add an individual child TestCase to this test suite. More... | |
| TestCase * | GetParent () const |
| Get the parent of this TestCsse. More... | |
| bool | IsStatusFailure (void) const |
| Check if any tests failed. More... | |
| bool | IsStatusSuccess (void) const |
| Check if all tests passed. More... | |
| void | SetDataDir (std::string directory) |
| Set the data directory where reference trace files can be found. More... | |
| void | ReportTestFailure (std::string cond, std::string actual, std::string limit, std::string message, std::string file, int32_t line) |
| Log the failure of this TestCase. More... | |
| bool | MustAssertOnFailure (void) const |
| Check if this run should assert on failure. More... | |
| bool | MustContinueOnFailure (void) const |
| Check if this run should continue on failure. More... | |
| std::string | CreateDataDirFilename (std::string filename) |
| Construct the full path to a file in the data directory. More... | |
| std::string | CreateTempDirFilename (std::string filename) |
| Construct the full path to a file in a temporary directory. More... | |
Private Attributes | |
| EventId | m_event |
| Check event. More... | |
| uint32_t | m_increment |
| Congestion window increment. More... | |
| bool | m_initial |
| True on first run. More... | |
| uint32_t | m_packets |
| Number of packets. More... | |
| uint32_t | m_packetSize |
| Size of the packets. More... | |
| uint32_t | m_segmentSize |
| Segment size. More... | |
Additional Inherited Members | |
Public Types inherited from ns3::TcpGeneralTest | |
| enum | SocketWho { SENDER, RECEIVER } |
| Used as parameter of methods, specifies on what node the caller is interested (e.g. More... | |
Public Types inherited from ns3::TestCase | |
| enum | TestDuration { QUICK = 1, EXTENSIVE = 2, TAKES_FOREVER = 3 } |
| How long the test takes to execute. More... | |
Protected Attributes inherited from ns3::TcpGeneralTest | |
| TypeId | m_congControlTypeId |
| Congestion control. More... | |
| TypeId | m_recoveryTypeId |
| Recovery. More... | |
Test the behavior of RFC congestion avoidance.
From RFC 5681:
cwnd += min (N, SMSS) (2)
During congestion avoidance, cwnd is incremented by roughly 1 full- sized segment per round-trip time (RTT). Congestion avoidance continues until congestion is detected. The basic guidelines for incrementing cwnd during congestion avoidance are:
To test this behavior and these points, a tracing callback is attached to the cWnd. Each time it increases, the increment is saved. Meanwhile, a timer checks if an amount of time equals to the RTT has passed, and if yes, it checks that the increment has not passed the 1 MSS limit.
Definition at line 56 of file tcp-cong-avoid-test.cc.
| TcpNewRenoCongAvoidNormalTest::TcpNewRenoCongAvoidNormalTest | ( | uint32_t | segmentSize, |
| uint32_t | packetSize, | ||
| uint32_t | packets, | ||
| TypeId & | congControl, | ||
| const std::string & | desc | ||
| ) |
Constructor.
| segmentSize | Segment size. |
| packetSize | Size of the packets. |
| packets | Number of packets. |
| congControl | Type of congestion control. |
| desc | The test description. |
Definition at line 95 of file tcp-cong-avoid-test.cc.
References ns3::TcpGeneralTest::m_congControlTypeId.
|
protected |
Called each RTT (1.0 sec in the testing environment) and check that the overall increment in this RTT is less or equal than 1 MSS.
Definition at line 157 of file tcp-cong-avoid-test.cc.
References ns3::TcpGeneralTest::GetSegSize(), m_event, m_increment, NS_TEST_ASSERT_MSG_LT_OR_EQ, and ns3::Seconds().
Referenced by CWndTrace().
|
protectedvirtual |
Change the configuration of the environment.
Reimplemented from ns3::TcpGeneralTest.
Definition at line 111 of file tcp-cong-avoid-test.cc.
References m_packets, m_packetSize, ns3::TcpGeneralTest::SetAppPktCount(), ns3::TcpGeneralTest::SetAppPktSize(), and ns3::TcpGeneralTest::SetMTU().
|
protectedvirtual |
Change the configuration of the socket properties.
Reimplemented from ns3::TcpGeneralTest.
Definition at line 119 of file tcp-cong-avoid-test.cc.
References m_segmentSize, ns3::TcpGeneralTest::SENDER, ns3::TcpGeneralTest::SetInitialSsThresh(), and ns3::TcpGeneralTest::SetSegmentSize().
|
protectedvirtual |
Tracks the congestion window changes.
| oldValue | old value |
| newValue | new value |
Reimplemented from ns3::TcpGeneralTest.
Definition at line 127 of file tcp-cong-avoid-test.cc.
References Check(), ns3::EventId::IsRunning(), m_event, m_increment, m_initial, and ns3::Seconds().
|
protectedvirtual |
Socket closed normally.
| who | the socket closed (SENDER or RECEIVER) |
Reimplemented from ns3::TcpGeneralTest.
Definition at line 175 of file tcp-cong-avoid-test.cc.
References ns3::EventId::Cancel(), m_event, and ns3::TcpGeneralTest::SENDER.
|
protectedvirtual |
Link drop.
| who | where the drop occurred (SENDER or RECEIVER) |
Reimplemented from ns3::TcpGeneralTest.
Definition at line 151 of file tcp-cong-avoid-test.cc.
References NS_FATAL_ERROR.
|
protectedvirtual |
Drop on the queue.
| who | where the drop occurred (SENDER or RECEIVER) |
Reimplemented from ns3::TcpGeneralTest.
Definition at line 145 of file tcp-cong-avoid-test.cc.
References NS_FATAL_ERROR.
|
private |
Check event.
Definition at line 90 of file tcp-cong-avoid-test.cc.
Referenced by Check(), CWndTrace(), and NormalClose().
|
private |
Congestion window increment.
Definition at line 89 of file tcp-cong-avoid-test.cc.
Referenced by Check(), and CWndTrace().
|
private |
|
private |
Number of packets.
Definition at line 88 of file tcp-cong-avoid-test.cc.
Referenced by ConfigureEnvironment().
|
private |
Size of the packets.
Definition at line 87 of file tcp-cong-avoid-test.cc.
Referenced by ConfigureEnvironment().
|
private |
Segment size.
Definition at line 86 of file tcp-cong-avoid-test.cc.
Referenced by ConfigureProperties().
1.8.14