Testing the timing of RTO. More...
Inheritance diagram for TcpTimeRtoTest:
Collaboration diagram for TcpTimeRtoTest:Public Member Functions | |
| TcpTimeRtoTest (const TypeId &congControl, const std::string &msg) | |
| Constructor. | |
Public Member Functions inherited from ns3::TcpGeneralTest | |
| TcpGeneralTest (const std::string &desc) | |
| TcpGeneralTest constructor. | |
| ~TcpGeneralTest () override | |
Public Member Functions inherited from ns3::TestCase | |
| TestCase (const TestCase &)=delete | |
| virtual | ~TestCase () |
| Destructor. | |
| std::string | GetName () const |
| TestCase & | operator= (const TestCase &)=delete |
Protected Member Functions | |
| void | AfterRTOExpired (const Ptr< const TcpSocketState > tcb, SocketWho who) override |
| Rto has expired. | |
| void | ConfigureEnvironment () override |
| Change the configuration of the environment. | |
| Ptr< ErrorModel > | CreateReceiverErrorModel () override |
| Create and return the error model to install in the receiver node. | |
| Ptr< TcpSocketMsgBase > | CreateSenderSocket (Ptr< Node > node) override |
| Create and install the socket to install on the sender. | |
| void | ErrorClose (SocketWho who) override |
| Socket closed with an error. | |
| void | FinalChecks () override |
| Performs the (eventual) final checks through test asserts. | |
| void | PktDropped (const Ipv4Header &ipH, const TcpHeader &tcpH, Ptr< const Packet > p) |
| Called when a packet has been dropped. | |
| void | Tx (const Ptr< const Packet > p, const TcpHeader &h, SocketWho who) override |
| Packet transmitted down to IP layer. | |
Protected Member Functions inherited from ns3::TcpGeneralTest | |
| virtual void | BeforeRTOExpired (const Ptr< const TcpSocketState > tcb, SocketWho who) |
| Rto has expired. | |
| virtual void | BytesInFlightTrace (uint32_t oldValue, uint32_t newValue) |
| Bytes in flight changes. | |
| virtual void | ConfigureProperties () |
| Change the configuration of the socket properties. | |
| virtual void | CongStateTrace (const TcpSocketState::TcpCongState_t oldValue, const TcpSocketState::TcpCongState_t newValue) |
| State on Ack state machine changes. | |
| virtual Ptr< SimpleChannel > | CreateChannel () |
| Create and return the channel installed between the two socket. | |
| virtual Ptr< TcpSocketMsgBase > | CreateReceiverSocket (Ptr< Node > node) |
| Create and install the socket to install on the receiver. | |
| virtual Ptr< ErrorModel > | CreateSenderErrorModel () |
| Create and return the error model to install in the sender node. | |
| virtual Ptr< TcpSocketMsgBase > | CreateSocket (Ptr< Node > node, TypeId socketType, TypeId congControl) |
| Create a socket. | |
| virtual Ptr< TcpSocketMsgBase > | CreateSocket (Ptr< Node > node, TypeId socketType, TypeId congControl, TypeId recoveryAlgorithm) |
| Create a socket. | |
| virtual void | CWndInflTrace (uint32_t oldValue, uint32_t newValue) |
| Tracks the inflated congestion window changes. | |
| virtual void | CWndTrace (uint32_t oldValue, uint32_t newValue) |
| Tracks the congestion window changes. | |
| virtual void | DataSent (uint32_t size, SocketWho who) |
| Notifying application for sent data. | |
| void | DoConnect () |
| Scheduled at 0.0, SENDER starts the connection to RECEIVER. | |
| void | DoRun () override |
| Execute the tcp test. | |
| void | DoTeardown () override |
| Teardown the TCP test. | |
| Time | GetClockGranularity (SocketWho who) |
| Get the clock granularity attribute. | |
| Time | GetConnTimeout (SocketWho who) |
| Get the retransmission time for the SYN segments. | |
| uint32_t | GetDelAckCount (SocketWho who) |
| Get the number of delayed ack (if present) | |
| Time | GetDelAckTimeout (SocketWho who) |
| Get the timeout of delayed ack (if present) | |
| uint32_t | GetDupAckCount (SocketWho who) |
| Get the number of dupack received. | |
| SequenceNumber32 | GetHighestTxMark (SocketWho who) |
| Get the highest tx mark of the node specified. | |
| uint32_t | GetInitialCwnd (SocketWho who) |
| Get the initial congestion window. | |
| uint32_t | GetInitialSsThresh (SocketWho who) |
| Get the initial slow start threshold. | |
| Time | GetMinRto (SocketWho who) |
| Get the minimum RTO attribute. | |
| uint32_t | GetMtu () const |
| Get the MTU of the environment. | |
| EventId | GetPersistentEvent (SocketWho who) |
| Get the persistent event of the selected socket. | |
| Time | GetPersistentTimeout (SocketWho who) |
| Get the persistent timeout of the selected socket. | |
| uint32_t | GetPktCount () const |
| Get the number of application packets. | |
| Time | GetPktInterval () const |
| Get the interval to wait for each packet sent down from application to TCP. | |
| uint32_t | GetPktSize () const |
| Get the application packet size. | |
| Time | GetPropagationDelay () const |
| Get the channel Propagation Delay. | |
| Ptr< TcpSocketMsgBase > | GetReceiverSocket () |
| Get the pointer to a previously created receiver socket. | |
| uint32_t | GetReTxThreshold (SocketWho who) |
| Get the retransmission threshold. | |
| Time | GetRto (SocketWho who) |
| Get the retransmission time. | |
| Ptr< RttEstimator > | GetRttEstimator (SocketWho who) |
| Get the Rtt estimator of the socket. | |
| uint32_t | GetRWnd (SocketWho who) |
| Get the rWnd of the selected socket. | |
| Ptr< TcpRxBuffer > | GetRxBuffer (SocketWho who) |
| Get the Rx buffer from selected socket. | |
| uint32_t | GetSegSize (SocketWho who) |
| Get the segment size of the node specified. | |
| Ptr< TcpSocketMsgBase > | GetSenderSocket () |
| Get the pointer to a previously created sender socket. | |
| Time | GetStartTime () const |
| Get the data start time. | |
| Ptr< TcpSocketState > | GetTcb (SocketWho who) |
| Get the TCB from selected socket. | |
| TcpSocket::TcpStates_t | GetTcpState (SocketWho who) |
| Get the state of the TCP state machine. | |
| Ptr< TcpTxBuffer > | GetTxBuffer (SocketWho who) |
| Get the Tx buffer from selected socket. | |
| virtual void | HighestTxSeqTrace (SequenceNumber32 oldValue, SequenceNumber32 newValue) |
| Highest tx seq changes. | |
| virtual void | NextTxSeqTrace (SequenceNumber32 oldValue, SequenceNumber32 newValue) |
| Next tx seq changes. | |
| virtual void | NormalClose (SocketWho who) |
| Socket closed normally. | |
| virtual void | PhyDrop (SocketWho who) |
| Link drop. | |
| virtual void | ProcessedAck (const Ptr< const TcpSocketState > tcb, const TcpHeader &h, SocketWho who) |
| Processed ack. | |
| virtual void | QueueDrop (SocketWho who) |
| Drop on the queue. | |
| virtual void | RateSampleUpdatedTrace (const TcpRateLinux::TcpRateSample &sample) |
| Track the rate sample value of TcpRateLinux. | |
| virtual void | RateUpdatedTrace (const TcpRateLinux::TcpRateConnection &rate) |
| Track the rate value of TcpRateLinux. | |
| virtual void | RcvAck (const Ptr< const TcpSocketState > tcb, const TcpHeader &h, SocketWho who) |
| Received ack. | |
| virtual void | ReceivePacket (Ptr< Socket > socket) |
| Packet received. | |
| virtual void | RtoTrace (Time oldValue, Time newValue) |
| RTO changes. | |
| virtual void | RttTrace (Time oldTime, Time newTime) |
| Rtt changes. | |
| virtual void | Rx (const Ptr< const Packet > p, const TcpHeader &h, SocketWho who) |
| Packet received from IP layer. | |
| void | SendPacket (Ptr< Socket > socket, uint32_t pktSize, uint32_t pktCount, Time pktInterval) |
| Send packets to other endpoint. | |
| void | SetAppPktCount (uint32_t pktCount) |
| Set app packet count. | |
| void | SetAppPktInterval (Time pktInterval) |
| Interval between app-generated packet. | |
| void | SetAppPktSize (uint32_t pktSize) |
| Set app packet size. | |
| void | SetCongestionControl (TypeId congControl) |
| Congestion control of the sender socket. | |
| void | SetDelAckMaxCount (SocketWho who, uint32_t count) |
| Forcefully set the delayed acknowledgement count. | |
| void | SetInitialCwnd (SocketWho who, uint32_t initialCwnd) |
| Forcefully set the initial cwnd. | |
| void | SetInitialSsThresh (SocketWho who, uint32_t initialSsThresh) |
| Forcefully set the initial ssthresh. | |
| void | SetMTU (uint32_t mtu) |
| MTU of the bottleneck link. | |
| void | SetPaceInitialWindow (SocketWho who, bool paceWindow) |
| Enable or disable pacing of the initial window. | |
| void | SetPacingStatus (SocketWho who, bool pacing) |
| Enable or disable pacing in the TCP socket. | |
| void | SetPropagationDelay (Time propDelay) |
| Propagation delay of the bottleneck link. | |
| void | SetRcvBufSize (SocketWho who, uint32_t size) |
| Forcefully set a defined size for rx buffer. | |
| void | SetRecoveryAlgorithm (TypeId recovery) |
| recovery algorithm of the sender socket | |
| void | SetSegmentSize (SocketWho who, uint32_t segmentSize) |
| Forcefully set the segment size. | |
| void | SetTransmitStart (Time startTime) |
| Set the initial time at which the application sends the first data packet. | |
| void | SetUseEcn (SocketWho who, TcpSocketState::UseEcn_t useEcn) |
| Forcefully set the ECN mode of use. | |
| virtual void | SsThreshTrace (uint32_t oldValue, uint32_t newValue) |
| Slow start threshold changes. | |
| virtual void | UpdatedRttHistory (const SequenceNumber32 &seq, uint32_t sz, bool isRetransmission, SocketWho who) |
| Updated the Rtt history. | |
Protected Member Functions inherited from ns3::TestCase | |
| TestCase (std::string name) | |
| Constructor. | |
| void | AddTestCase (TestCase *testCase, Duration duration=Duration::QUICK) |
| Add an individual child TestCase to this test suite. | |
| TestCase * | GetParent () const |
| Get the parent of this TestCase. | |
| bool | IsStatusFailure () const |
| Check if any tests failed. | |
| bool | IsStatusSuccess () const |
| Check if all tests passed. | |
| void | SetDataDir (std::string directory) |
| Set the data directory where reference trace files can be found. | |
| 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. | |
| bool | MustAssertOnFailure () const |
| Check if this run should assert on failure. | |
| bool | MustContinueOnFailure () const |
| Check if this run should continue on failure. | |
| std::string | CreateDataDirFilename (std::string filename) |
| Construct the full path to a file in the data directory. | |
| std::string | CreateTempDirFilename (std::string filename) |
| Construct the full path to a file in a temporary directory. | |
Private Attributes | |
| bool | m_closed |
| True if the connection is closed. | |
| Time | m_previousRTO |
| Previous RTO. | |
| uint32_t | m_senderSentSegments |
| Number of segments sent. | |
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 class | Duration { 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. | |
| TypeId | m_recoveryTypeId |
| Recovery. | |
Testing the timing of RTO.
Checking if RTO is doubled ONLY after a retransmission.
Definition at line 309 of file tcp-rto-test.cc.
| TcpTimeRtoTest::TcpTimeRtoTest | ( | const TypeId & | congControl, |
| const std::string & | msg ) |
Constructor.
| congControl | Congestion control type. |
| msg | Test description. |
Definition at line 343 of file tcp-rto-test.cc.
References ns3::TcpGeneralTest::TcpGeneralTest(), m_closed, ns3::TcpGeneralTest::m_congControlTypeId, and m_senderSentSegments.
Here is the call graph for this function:
|
overrideprotectedvirtual |
Rto has expired.
| tcb | Transmission control block |
| who | where the RTO has expired (SENDER or RECEIVER) |
Reimplemented from ns3::TcpGeneralTest.
Definition at line 463 of file tcp-rto-test.cc.
References ns3::TcpGeneralTest::GetRto(), m_previousRTO, NS_TEST_ASSERT_MSG_EQ, NS_TEST_ASSERT_MSG_EQ_TOL, ns3::Seconds(), and ns3::TcpGeneralTest::SENDER.
Here is the call graph for this function:
|
overrideprotectedvirtual |
Change the configuration of the environment.
Reimplemented from ns3::TcpGeneralTest.
Definition at line 352 of file tcp-rto-test.cc.
References ns3::TcpGeneralTest::ConfigureEnvironment(), and ns3::TcpGeneralTest::SetAppPktCount().
Here is the call graph for this function:
|
overrideprotectedvirtual |
Create and return the error model to install in the receiver node.
Reimplemented from ns3::TcpGeneralTest.
Definition at line 368 of file tcp-rto-test.cc.
References ns3::CreateObject(), ns3::MakeCallback(), and PktDropped().
Here is the call graph for this function:
|
overrideprotectedvirtual |
Create and install the socket to install on the sender.
| node | sender node pointer |
Reimplemented from ns3::TcpGeneralTest.
Definition at line 359 of file tcp-rto-test.cc.
References ns3::TcpGeneralTest::CreateSenderSocket().
Here is the call graph for this function:
|
overrideprotectedvirtual |
Socket closed with an error.
| who | the socket closed (SENDER or RECEIVER) |
Reimplemented from ns3::TcpGeneralTest.
Definition at line 457 of file tcp-rto-test.cc.
References m_closed.
|
overrideprotectedvirtual |
Performs the (eventual) final checks through test asserts.
Reimplemented from ns3::TcpGeneralTest.
Definition at line 490 of file tcp-rto-test.cc.
References m_closed, and NS_TEST_ASSERT_MSG_EQ.
|
protected |
Called when a packet has been dropped.
| ipH | IPv4 header. |
| tcpH | TCP header. |
| p | The packet. |
Definition at line 484 of file tcp-rto-test.cc.
References NS_LOG_INFO.
Referenced by CreateReceiverErrorModel().
Here is the caller graph for this function:
|
overrideprotectedvirtual |
Packet transmitted down to IP layer.
| p | packet |
| h | header |
| who | the socket which has received the packet (SENDER or RECEIVER) |
Reimplemented from ns3::TcpGeneralTest.
Definition at line 384 of file tcp-rto-test.cc.
References ns3::TcpGeneralTest::GetClockGranularity(), ns3::TcpGeneralTest::GetConnTimeout(), ns3::TcpHeader::GetFlags(), ns3::TcpGeneralTest::GetMinRto(), ns3::TcpGeneralTest::GetRto(), ns3::TcpGeneralTest::GetRttEstimator(), ns3::TcpHeader::GetSequenceNumber(), ns3::SequenceNumber< NUMERIC_TYPE, SIGNED_TYPE >::GetValue(), m_previousRTO, m_senderSentSegments, Max, NS_LOG_FUNCTION, NS_LOG_INFO, NS_TEST_ASSERT_MSG_EQ, NS_TEST_ASSERT_MSG_EQ_TOL, ns3::TcpGeneralTest::RECEIVER, ns3::Seconds(), ns3::TcpGeneralTest::SENDER, and ns3::TcpHeader::SYN.
Here is the call graph for this function:
|
private |
True if the connection is closed.
Definition at line 340 of file tcp-rto-test.cc.
Referenced by TcpTimeRtoTest(), ErrorClose(), and FinalChecks().
|
private |
Previous RTO.
Definition at line 339 of file tcp-rto-test.cc.
Referenced by AfterRTOExpired(), and Tx().
|
private |
Number of segments sent.
Definition at line 338 of file tcp-rto-test.cc.
Referenced by TcpTimeRtoTest(), and Tx().