Testing the congestion avoidance increment on TCP ZeroWindow. More...
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 | |
TestCase (const TestCase &)=delete | |
virtual | ~TestCase () |
Destructor. More... | |
std::string | GetName (void) const |
TestCase & | operator= (const TestCase &)=delete |
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) |
virtual void | ProcessedAck (const Ptr< const TcpSocketState > tcb, const TcpHeader &h, SocketWho who) |
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 ([[maybe_unused]] const Ptr< const TcpSocketState > tcb, [[maybe_unused]] SocketWho who) |
Rto has expired. More... | |
virtual void | BeforeRTOExpired ([[maybe_unused]] const Ptr< const TcpSocketState > tcb, [[maybe_unused]] SocketWho who) |
Rto has expired. More... | |
virtual void | BytesInFlightTrace ([[maybe_unused]] uint32_t oldValue, [[maybe_unused]] uint32_t newValue) |
Bytes in flight changes. More... | |
virtual void | CongStateTrace ([[maybe_unused]] const TcpSocketState::TcpCongState_t oldValue, [[maybe_unused]] 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 ([[maybe_unused]] uint32_t oldValue, [[maybe_unused]] uint32_t newValue) |
Tracks the inflated congestion window changes. More... | |
virtual void | CWndTrace ([[maybe_unused]] uint32_t oldValue, [[maybe_unused]] uint32_t newValue) |
Tracks the congestion window changes. More... | |
virtual void | DataSent ([[maybe_unused]] uint32_t size, [[maybe_unused]] 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 ([[maybe_unused]] 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 ([[maybe_unused]] SequenceNumber32 oldValue, [[maybe_unused]] SequenceNumber32 newValue) |
Highest tx seq changes. More... | |
virtual void | NextTxSeqTrace ([[maybe_unused]] SequenceNumber32 oldValue, [[maybe_unused]] SequenceNumber32 newValue) |
Next tx seq changes. More... | |
virtual void | NormalClose ([[maybe_unused]] SocketWho who) |
Socket closed normally. More... | |
virtual void | PhyDrop ([[maybe_unused]] SocketWho who) |
Link drop. More... | |
virtual void | ProcessedAck ([[maybe_unused]] const Ptr< const TcpSocketState > tcb, [[maybe_unused]] const TcpHeader &h, [[maybe_unused]] SocketWho who) |
Processed ack. More... | |
virtual void | QueueDrop ([[maybe_unused]] SocketWho who) |
Drop on the queue. More... | |
virtual void | RateSampleUpdatedTrace ([[maybe_unused]] const TcpRateLinux::TcpRateSample &sample) |
Track the rate sample value of TcpRateLinux. More... | |
virtual void | RateUpdatedTrace ([[maybe_unused]] const TcpRateLinux::TcpRateConnection &rate) |
Track the rate value of TcpRateLinux. More... | |
virtual void | RcvAck ([[maybe_unused]] const Ptr< const TcpSocketState > tcb, [[maybe_unused]] const TcpHeader &h, [[maybe_unused]] SocketWho who) |
Received ack. More... | |
virtual void | ReceivePacket (Ptr< Socket > socket) |
Packet received. More... | |
virtual void | RtoTrace ([[maybe_unused]] Time oldValue, [[maybe_unused]] Time newValue) |
RTO changes. More... | |
virtual void | RttTrace ([[maybe_unused]] Time oldTime, [[maybe_unused]] 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 ([[maybe_unused]] uint32_t oldValue, [[maybe_unused]] uint32_t newValue) |
Slow start threshold changes. More... | |
virtual void | UpdatedRttHistory ([[maybe_unused]] const SequenceNumber32 &seq, [[maybe_unused]] uint32_t sz, [[maybe_unused]] bool isRetransmission, [[maybe_unused]] 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().
|
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().
|
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(), and ns3::Seconds().
|
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().
|
protected |
Definition at line 211 of file tcp-zero-window-test.cc.
References m_receiverFinished, m_senderFinished, ns3::TcpGeneralTest::RECEIVER, and ns3::TcpGeneralTest::SENDER.
|
protectedvirtual |
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.
|
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::Packet::GetSize(), ns3::TcpHeader::GetWindowSize(), m_windowUpdated, ns3::Now(), NS_LOG_INFO, NS_TEST_ASSERT_MSG_EQ, ns3::TcpGeneralTest::RECEIVER, and ns3::TcpGeneralTest::SENDER.
|
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::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.
|
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().