Testing the congestion avoidance increment on TCP ZeroWindow. More...
 Inheritance diagram for TcpZeroWindowTest:
 Inheritance diagram for TcpZeroWindowTest: Collaboration diagram for TcpZeroWindowTest:
 Collaboration diagram for TcpZeroWindowTest:| Public Member Functions | |
| TcpZeroWindowTest (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 | |
| virtual void | ConfigureEnvironment () | 
| Change the configuration of the environment.  More... | |
| virtual void | ConfigureProperties () | 
| Change the configuration of the socket properties.  More... | |
| virtual Ptr< TcpSocketMsgBase > | CreateReceiverSocket (Ptr< Node > node) | 
| Create and install the socket to install on the receiver.  More... | |
| void | FinalChecks () | 
| Performs the (eventual) final checks through test asserts.  More... | |
| void | IncreaseBufSize () | 
| Increase the receiver buffer size.  More... | |
| void | NormalClose (SocketWho who) | 
| Socket closed normally.  More... | |
| virtual void | ProcessedAck (const Ptr< const TcpSocketState > tcb, const TcpHeader &h, SocketWho who) | 
| Processed ack.  More... | |
| virtual void | Rx (const Ptr< const Packet > p, const TcpHeader &h, SocketWho who) | 
| Packet received from IP layer.  More... | |
| virtual void | Tx (const Ptr< const Packet > p, const TcpHeader &h, SocketWho who) | 
| Packet transmitted down to IP layer.  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< 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 | CWndTrace (uint32_t oldValue, uint32_t newValue) | 
| Tracks the 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... | |
| 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... | |
| Ptr< TcpTxBuffer > | GetTxBuffer (SocketWho who) | 
| Get the Tx buffer from selected socket.  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 | PhyDrop (SocketWho who) | 
| Link drop.  More... | |
| virtual void | QueueDrop (SocketWho who) | 
| Drop on the queue.  More... | |
| virtual void | RateSampleUpdatedTrace (const TcpRateLinux::TcpRateSample &sample) | 
| Track the rate sample value of TcpRateLinux.  More... | |
| virtual void | RateUpdatedTrace (const TcpRateLinux::TcpRateConnection &rate) | 
| Track the rate value of TcpRateLinux.  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... | |
| 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 | SetDelAckMaxCount (SocketWho who, uint32_t count) | 
| Forcefully set the delayed acknowledgement count.  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 ssthresh.  More... | |
| void | SetMTU (uint32_t mtu) | 
| MTU of the bottleneck link.  More... | |
| void | SetPaceInitialWindow (SocketWho who, bool paceWindow) | 
| Enable or disable pacing of the initial window.  More... | |
| void | SetPacingStatus (SocketWho who, bool pacing) | 
| Enable or disable pacing in the TCP socket.  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 recovery) | 
| 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... | |
| void | SetUseEcn (SocketWho who, TcpSocketState::UseEcn_t useEcn) | 
| Forcefully set the ECN mode of use.  More... | |
| virtual void | SsThreshTrace (uint32_t oldValue, uint32_t newValue) | 
| Slow start threshold changes.  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... | |
| Protected Attributes | |
| EventId | m_receivePktEvent | 
| Receive packet event.  More... | |
| bool | m_receiverFinished | 
| Receiver finished.  More... | |
| bool | m_senderFinished | 
| Send finished.  More... | |
| bool | m_windowUpdated | 
| Window updated.  More... | |
| bool | m_zeroWindowProbe | 
| ZeroWindow probe.  More... | |
|  Protected Attributes inherited from ns3::TcpGeneralTest | |
| TypeId | m_congControlTypeId | 
| Congestion control.  More... | |
| TypeId | m_recoveryTypeId | 
| Recovery.  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... | |
Testing the congestion avoidance increment on TCP ZeroWindow.
Definition at line 36 of file tcp-zero-window-test.cc.
| TcpZeroWindowTest::TcpZeroWindowTest | ( | const std::string & | desc | ) | 
Constructor.
| desc | Test description. | 
Definition at line 72 of file tcp-zero-window-test.cc.
| 
 | protectedvirtual | 
Change the configuration of the environment.
Reimplemented from ns3::TcpGeneralTest.
Definition at line 82 of file tcp-zero-window-test.cc.
References ns3::MilliSeconds(), ns3::Seconds(), ns3::TcpGeneralTest::SetAppPktCount(), ns3::TcpGeneralTest::SetMTU(), ns3::TcpGeneralTest::SetPropagationDelay(), and ns3::TcpGeneralTest::SetTransmitStart().
 Here is the call graph for this function:
 Here is the call graph for this function:| 
 | protectedvirtual | 
Change the configuration of the socket properties.
Reimplemented from ns3::TcpGeneralTest.
Definition at line 92 of file tcp-zero-window-test.cc.
References ns3::TcpGeneralTest::SENDER, and ns3::TcpGeneralTest::SetInitialCwnd().
 Here is the call graph for this function:
 Here is the call graph for this function:| 
 | protectedvirtual | 
Create and install the socket to install on the receiver.
| node | receiver node pointer | 
Reimplemented from ns3::TcpGeneralTest.
Definition at line 105 of file tcp-zero-window-test.cc.
References IncreaseBufSize(), ns3::Seconds(), and ns3::ObjectBase::SetAttribute().
 Here is the call graph for this function:
 Here is the call graph for this function:| 
 | protectedvirtual | 
Performs the (eventual) final checks through test asserts.
Reimplemented from ns3::TcpGeneralTest.
Definition at line 224 of file tcp-zero-window-test.cc.
References m_receiverFinished, m_senderFinished, m_windowUpdated, m_zeroWindowProbe, and NS_TEST_ASSERT_MSG_EQ.
| 
 | protected | 
Increase the receiver buffer size.
Definition at line 99 of file tcp-zero-window-test.cc.
References ns3::TcpGeneralTest::RECEIVER, and ns3::TcpGeneralTest::SetRcvBufSize().
Referenced by CreateReceiverSocket().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | protectedvirtual | 
Socket closed normally.
| who | the socket closed (SENDER or RECEIVER) | 
Reimplemented from ns3::TcpGeneralTest.
Definition at line 211 of file tcp-zero-window-test.cc.
References m_receiverFinished, m_senderFinished, ns3::TcpGeneralTest::RECEIVER, and ns3::TcpGeneralTest::SENDER.
| 
 | protectedvirtual | 
Processed ack.
Invoked after the processing of the ACK
| tcb | Transmission Control Block | 
| h | the header of segment | 
| who | the socket which has processed the ACK (SENDER or RECEIVER) | 
Reimplemented from ns3::TcpGeneralTest.
Definition at line 237 of file tcp-zero-window-test.cc.
References ns3::TcpHeader::GetFlags(), ns3::TcpGeneralTest::GetPersistentEvent(), ns3::EventId::IsRunning(), NS_TEST_ASSERT_MSG_EQ, ns3::TcpGeneralTest::RECEIVER, and ns3::TcpGeneralTest::SENDER.
 Here is the call graph for this function:
 Here is the call graph for this function:| 
 | protectedvirtual | 
Packet received from IP layer.
| p | packet | 
| h | header | 
| who | the socket which has received the packet (SENDER or RECEIVER) | 
Reimplemented from ns3::TcpGeneralTest.
Definition at line 185 of file tcp-zero-window-test.cc.
References ns3::TcpHeader::GetFlags(), ns3::Time::GetSeconds(), ns3::Packet::GetSize(), ns3::TcpHeader::GetWindowSize(), m_windowUpdated, ns3::Now(), NS_LOG_INFO, NS_TEST_ASSERT_MSG_EQ, ns3::TcpGeneralTest::RECEIVER, and ns3::TcpGeneralTest::SENDER.
 Here is the call graph for this function:
 Here is the call graph for this function:| 
 | protectedvirtual | 
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 117 of file tcp-zero-window-test.cc.
References ns3::GetCongStateFrom(), ns3::TcpHeader::GetFlags(), ns3::Time::GetSeconds(), ns3::TcpHeader::GetSequenceNumber(), ns3::Packet::GetSize(), ns3::TcpGeneralTest::GetTcb(), ns3::TcpHeader::GetWindowSize(), m_zeroWindowProbe, ns3::Now(), NS_FATAL_ERROR, NS_LOG_INFO, NS_TEST_ASSERT_MSG_EQ, ns3::TcpGeneralTest::RECEIVER, and ns3::TcpGeneralTest::SENDER.
 Here is the call graph for this function:
 Here is the call graph for this function:| 
 | protected | 
Receive packet event.
Definition at line 65 of file tcp-zero-window-test.cc.
| 
 | protected | 
Receiver finished.
Definition at line 69 of file tcp-zero-window-test.cc.
Referenced by FinalChecks(), and NormalClose().
| 
 | protected | 
Send finished.
Definition at line 68 of file tcp-zero-window-test.cc.
Referenced by FinalChecks(), and NormalClose().
| 
 | protected | 
Window updated.
Definition at line 67 of file tcp-zero-window-test.cc.
Referenced by FinalChecks(), and Rx().
| 
 | protected | 
ZeroWindow probe.
Definition at line 66 of file tcp-zero-window-test.cc.
Referenced by FinalChecks(), and Tx().