INET Framework for OMNeT++/OMNEST
inet::tcp::TcpVegas Class Reference

#include <TcpVegas.h>

Inheritance diagram for inet::tcp::TcpVegas:
inet::tcp::TcpBaseAlg inet::tcp::TcpAlgorithm

Public Member Functions

 TcpVegas ()
 Ctor. More...
 
virtual void receivedDataAck (uint32_t firstSeqAcked) override
 Redefine what should happen when data got acked, to add congestion window management. More...
 
virtual void receivedDuplicateAck () override
 Redefine what should happen when dupAck was received, to add congestion window management. More...
 
virtual void dataSent (uint32_t fromseq) override
 Called after we send data. More...
 
virtual void segmentRetransmitted (uint32_t fromseq, uint32_t toseq) override
 Called after we retransmitted segment. More...
 
- Public Member Functions inherited from inet::tcp::TcpBaseAlg
 TcpBaseAlg ()
 Ctor. More...
 
virtual ~TcpBaseAlg ()
 Virtual dtor. More...
 
virtual void initialize () override
 Create timers, etc. More...
 
virtual void established (bool active) override
 Called when the connection is going to ESTABLISHED from SYN_SENT or SYN_RCVD. More...
 
virtual void connectionClosed () override
 Called when the connection closes, it should cancel all running timers. More...
 
virtual void processTimer (cMessage *timer, TcpEventCode &event) override
 Process REXMIT, PERSIST, DELAYED-ACK and KEEP-ALIVE timers. More...
 
virtual void sendCommandInvoked () override
 Called after user sent TCP_C_SEND command to us. More...
 
virtual void receivedOutOfOrderSegment () override
 Called after receiving data which are in the window, but not at its left edge (seq != rcv_nxt). More...
 
virtual void receiveSeqChanged () override
 Called after rcv_nxt got advanced, either because we received in-sequence data ("text" in RFC 793 lingo) or a FIN. More...
 
virtual void receivedAckForDataNotYetSent (uint32_t seq) override
 Called after we received an ACK for data not yet sent. More...
 
virtual void ackSent () override
 Called after we sent an ACK. More...
 
virtual void restartRexmitTimer () override
 Restart REXMIT timer. More...
 
virtual bool shouldMarkAck () override
 Called before sending ACK. More...
 
virtual void processEcnInEstablished () override
 Called before processing segment in established state. More...
 
- Public Member Functions inherited from inet::tcp::TcpAlgorithm
 TcpAlgorithm ()
 Ctor. More...
 
virtual ~TcpAlgorithm ()
 Virtual dtor. More...
 
void setConnection (TcpConnection *_conn)
 Assign this object to a TcpConnection. More...
 
TcpStateVariablesgetStateVariables ()
 Creates and returns the TCP state variables. More...
 

Protected Member Functions

virtual TcpStateVariablescreateStateVariables () override
 Create and return a TCPvegasStateVariables object. More...
 
virtual void recalculateSlowStartThreshold ()
 Utility function to recalculate ssthresh. More...
 
virtual void processRexmitTimer (TcpEventCode &event) override
 Redefine what should happen on retransmission. More...
 
- Protected Member Functions inherited from inet::tcp::TcpBaseAlg
virtual void processPersistTimer (TcpEventCode &event)
 
virtual void processDelayedAckTimer (TcpEventCode &event)
 
virtual void processKeepAliveTimer (TcpEventCode &event)
 
virtual void startRexmitTimer ()
 Start REXMIT timer and initialize retransmission variables. More...
 
virtual void rttMeasurementComplete (simtime_t tSent, simtime_t tAcked)
 Update state vars with new measured RTT value. More...
 
virtual void rttMeasurementCompleteUsingTS (uint32_t echoedTS) override
 Converting uint32_t echoedTS to simtime_t and calling rttMeasurementComplete() to update state vars with new measured RTT value. More...
 
virtual bool sendData (bool sendCommandInvoked)
 Send data, observing Nagle's algorithm and congestion window. More...
 
cMessage * cancelEvent (cMessage *msg)
 Utility function. More...
 

Protected Attributes

TcpVegasStateVariables *& state
 
- Protected Attributes inherited from inet::tcp::TcpBaseAlg
TcpBaseAlgStateVariables *& state
 
cMessage * rexmitTimer
 
cMessage * persistTimer
 
cMessage * delayedAckTimer
 
cMessage * keepAliveTimer
 
- Protected Attributes inherited from inet::tcp::TcpAlgorithm
TcpConnectionconn
 
TcpStateVariablesstate
 

Additional Inherited Members

- Static Protected Attributes inherited from inet::tcp::TcpBaseAlg
static simsignal_t cwndSignal = cComponent::registerSignal("cwnd")
 
static simsignal_t ssthreshSignal = cComponent::registerSignal("ssthresh")
 
static simsignal_t rttSignal = cComponent::registerSignal("rtt")
 
static simsignal_t srttSignal = cComponent::registerSignal("srtt")
 
static simsignal_t rttvarSignal = cComponent::registerSignal("rttvar")
 
static simsignal_t rtoSignal = cComponent::registerSignal("rto")
 
static simsignal_t numRtosSignal = cComponent::registerSignal("numRtos")
 

Constructor & Destructor Documentation

◆ TcpVegas()

inet::tcp::TcpVegas::TcpVegas ( )

Ctor.

62  : TcpBaseAlg(), state((TcpVegasStateVariables *&)TcpAlgorithm::state)
63 {
64 }

Member Function Documentation

◆ createStateVariables()

virtual TcpStateVariables* inet::tcp::TcpVegas::createStateVariables ( )
inlineoverrideprotectedvirtual

Create and return a TCPvegasStateVariables object.

Implements inet::tcp::TcpAlgorithm.

57  {
58  return new TcpVegasStateVariables();
59  }

◆ dataSent()

void inet::tcp::TcpVegas::dataSent ( uint32_t  fromseq)
overridevirtual

Called after we send data.

Reimplemented from inet::tcp::TcpBaseAlg.

350 {
351  TcpBaseAlg::dataSent(fromseq);
352 
353  // save time when packet is sent
354  // fromseq is the seq number of the 1st sent byte
355  // we need this value, based on iss=0 (to store it the right way on the vector),
356  // but iss is not a constant value (ej: iss=0), so it needs to be detemined each time
357  // (this is why it is used: fromseq-state->iss)
358 
360  state->regions.set(fromseq, state->snd_max, simTime());
361 }

◆ processRexmitTimer()

void inet::tcp::TcpVegas::processRexmitTimer ( TcpEventCode event)
overrideprotectedvirtual

Redefine what should happen on retransmission.

Reimplemented from inet::tcp::TcpBaseAlg.

89 {
91 
92  if (event == TCP_E_ABORT)
93  return;
94 
96  // Vegas: when rtx timeout: cwnd = 2*smss, instead of 1*smss (Reno)
97  state->snd_cwnd = 2 * state->snd_mss;
98 
99  conn->emit(cwndSignal, state->snd_cwnd);
100  EV_DETAIL << "RXT Timeout in Vegas: resetting cwnd to " << state->snd_cwnd << "\n"
101  << ", ssthresh=" << state->ssthresh << "\n";
102 
103  state->v_cwnd_changed = simTime(); // Save time when cwnd changes due to rtx
104 
105  state->afterRto = true;
106 
107  conn->retransmitOneSegment(true); // retransmit one segment from snd_una
108 }

◆ recalculateSlowStartThreshold()

void inet::tcp::TcpVegas::recalculateSlowStartThreshold ( )
protectedvirtual

Utility function to recalculate ssthresh.

68 {
69  // RFC 2581, page 4:
70  // "When a TCP sender detects segment loss using the retransmission
71  // timer, the value of ssthresh MUST be set to no more than the value
72  // given in equation 3:
73  //
74  // ssthresh = max (FlightSize / 2, 2*SMSS) (3)
75  //
76  // As discussed above, FlightSize is the amount of outstanding data in
77  // the network."
78 
79  // set ssthresh to flight size/2, but at least 2 SMSS
80  // (the formula below practically amounts to ssthresh=cwnd/2 most of the time)
81  uint32_t flight_size = std::min(state->snd_cwnd, state->snd_wnd); // FIXME - Does this formula computes the amount of outstanding data?
82 // uint32_t flight_size = state->snd_max - state->snd_una;
83  state->ssthresh = std::max(flight_size / 2, 2 * state->snd_mss);
85 }

Referenced by processRexmitTimer(), and receivedDataAck().

◆ receivedDataAck()

void inet::tcp::TcpVegas::receivedDataAck ( uint32_t  firstSeqAcked)
overridevirtual

Redefine what should happen when data got acked, to add congestion window management.

Reimplemented from inet::tcp::TcpBaseAlg.

111 {
112  TcpBaseAlg::receivedDataAck(firstSeqAcked);
113 
114  const TcpSegmentTransmitInfoList::Item *found = state->regions.get(firstSeqAcked);
115  if (found) {
116  simtime_t currentTime = simTime();
117  simtime_t tSent = found->getFirstSentTime();
118  int num_transmits = found->getTransmitCount();
119 
120  // TODO When should do it: when received first ACK, or when received ACK of 1st sent packet???
121  if (firstSeqAcked == state->iss + 1) { // Initialization
122  state->v_baseRTT = currentTime - tSent;
123  state->v_sa = state->v_baseRTT * 8;
125  state->v_rtt_timeout = ((state->v_sa / 4.0) + state->v_sd) / 2.0;
126  EV_DETAIL << "Vegas: initialization" << "\n";
127  }
128 
129  // Once per RTT
131  simtime_t newRTT;
132  if (state->v_cntRTT > 0) {
133  newRTT = state->v_sumRTT / state->v_cntRTT;
134  EV_DETAIL << "Vegas: newRTT (state->v_sumRTT / state->v_cntRTT) calculated: " << state->v_sumRTT / state->v_cntRTT << "\n";
135  }
136  else {
137  newRTT = currentTime - state->v_begtime;
138  EV_DETAIL << "Vegas: newRTT calculated: " << newRTT << "\n";
139  }
140  state->v_sumRTT = 0.0;
141  state->v_cntRTT = 0;
142 
143  // decide if incr/decr cwnd
144  if (newRTT > 0) {
145  // rttLen: bytes transmitted since a segment is sent and its ACK is received
146  uint32_t rttLen = state->snd_nxt - state->v_begseq;
147 
148  // If only one packet in transit: update baseRTT
149  if (rttLen <= state->snd_mss)
150  state->v_baseRTT = newRTT;
151 
152  // actual = rttLen/(current_rtt)
153  uint32_t actual = rttLen / newRTT;
154 
155  // expected = (current window size)/baseRTT
156  uint32_t expected;
157  uint32_t acked = state->snd_una - firstSeqAcked;
158  expected = (uint32_t)((state->snd_nxt - firstSeqAcked) + std::min(state->snd_mss - acked, (uint32_t)0)) / state->v_baseRTT;
159 
160  // diff = expected - actual
161  uint32_t diff = (uint32_t)((expected - actual) * SIMTIME_DBL(state->v_baseRTT) + 0.5);
162 
163  EV_DETAIL << "Vegas: expected: " << expected << "\n"
164  << ", actual =" << actual << "\n"
165  << ", diff =" << diff << "\n";
166 
167  // Slow start
168  state->v_incr_ss = false; // reset
169  if (state->snd_cwnd < state->ssthresh) { // Slow start
170  EV_DETAIL << "Vegas: Slow Start: " << "\n";
171 
172  // cwnd modification during slow-start only every 2 rtt
174  if (!state->v_inc_flag) {
175  state->v_incr = 0;
176  }
177  else {
178  if (diff > 1 * state->snd_mss) { // gamma
179  /* When actual rate falls below expected rate a certain value (gamma threshold)
180  Vegas changes from slow start to linear incr/decr */
181 
182  recalculateSlowStartThreshold(); // to enter again in cong. avoidance
183  state->snd_cwnd -= (state->snd_cwnd / 8);
184 
185  if (state->snd_cwnd < 2 * state->snd_mss)
186  state->snd_cwnd = 2 * state->snd_mss;
187 
188  state->v_incr = 0;
189 
190  conn->emit(cwndSignal, state->snd_cwnd);
191  }
192  else {
193  state->v_incr = state->snd_mss; // incr 1 segment
194  state->v_incr_ss = true;
195  }
196  }
197  } // end slow start
198  else {
199  // Cong. avoidance
200  EV_DETAIL << "Vegas: Congestion avoidance: " << "\n";
201 
202  if (diff > 4 * state->snd_mss) { // beta
203  state->v_incr = -state->snd_mss;
204  }
205  else if (diff < 2 * state->snd_mss) { // alpha
207  }
208  else
209  state->v_incr = 0;
210  } // end cong. avoidance
211  }
212  // register beqseq and begtime values for next rtt
213  state->v_begtime = currentTime;
215  } // end 'once per rtt' section
216 
217  // if cwnd > ssthresh, no incr
218  if (state->v_incr_ss && state->snd_cwnd >= state->ssthresh) {
219  state->v_incr = 0;
220  EV_DETAIL << "Vegas: surpass ssthresh during slow-start: no cwnd incr. " << "\n";
221  }
222 
223  // incr/decr cwnd
224  if (state->v_incr > 0) {
225  state->snd_cwnd += state->v_incr;
226 
227  conn->emit(cwndSignal, state->snd_cwnd);
228  EV_DETAIL << "Vegas: incr cwnd linearly, to " << state->snd_cwnd << "\n";
229  }
230  else if (state->v_incr < 0) {
231  state->snd_cwnd += state->v_incr;
232  if (state->snd_cwnd < 2 * state->snd_mss)
233  state->snd_cwnd = 2 * state->snd_mss;
234 
235  conn->emit(cwndSignal, state->snd_cwnd);
236  EV_DETAIL << "Vegas: decr cwnd linearly, to " << state->snd_cwnd << "\n";
237  }
238 
239  // update vegas fine-grained timeout value (retransmitted packets do not count)
240  if (tSent != 0 && num_transmits == 1) {
241  simtime_t newRTT = currentTime - tSent;
242  state->v_sumRTT += newRTT;
243  ++state->v_cntRTT;
244 
245  if (newRTT > 0) {
246  if (newRTT < state->v_baseRTT)
247  state->v_baseRTT = newRTT;
248 
249  simtime_t n = newRTT - state->v_sa / 8;
250  state->v_sa += n;
251  n = n < 0 ? -n : n;
252  n -= state->v_sd / 4;
253  state->v_sd += n;
254  state->v_rtt_timeout = ((state->v_sa / 4) + state->v_sd) / 2;
256  EV_DETAIL << "Vegas: new v_rtt_timeout = " << state->v_rtt_timeout << "\n";
257  }
258  }
259 
260  // check 1st and 2nd ack after a rtx
261  if (state->v_worried > 0) {
263  const TcpSegmentTransmitInfoList::Item *unaFound = state->regions.get(state->snd_una);
264 // bool expired = unaFound && ((currentTime - unaFound->getLastSentTime()) >= state->v_rtt_timeout);
265  bool expired = unaFound && ((currentTime - unaFound->getFirstSentTime()) >= state->v_rtt_timeout);
266 
267  // added comprobation to check that received ACK do not acks all outstanding data. If not,
268  // TcpConnection::retransmitOneSegment will fail: ASSERT(bytes!=0), line 839), because bytes = snd_max-snd_una
269  if (expired && (state->snd_max - state->snd_una > 0)) {
271  EV_DETAIL << "Vegas: retransmission (v_rtt_timeout) " << "\n";
272  conn->retransmitOneSegment(false); // retransmit one segment from snd_una
273  }
274  else
275  state->v_worried = 0;
276  }
277  } // Closes if v_sendtime != nullptr
278 
280 
281  // Try to send more data
282  sendData(false);
283 }

◆ receivedDuplicateAck()

void inet::tcp::TcpVegas::receivedDuplicateAck ( )
overridevirtual

Redefine what should happen when dupAck was received, to add congestion window management.

Reimplemented from inet::tcp::TcpBaseAlg.

286 {
288 
289  simtime_t currentTime = simTime();
290  simtime_t tSent = 0;
291  int num_transmits = 0;
292  const TcpSegmentTransmitInfoList::Item *found = state->regions.get(state->snd_una);
293  if (found) {
294  tSent = found->getFirstSentTime();
295  num_transmits = found->getTransmitCount();
296  }
298 
299  // check Vegas timeout
300  bool expired = found && ((currentTime - tSent) >= state->v_rtt_timeout);
301 
302  // rtx if Vegas timeout || 3 dupacks
303  if (expired || state->dupacks == state->dupthresh) {
304  uint32_t win = std::min(state->snd_cwnd, state->snd_wnd);
305  state->v_worried = std::min((uint32_t)2 * state->snd_mss, state->snd_nxt - state->snd_una);
306 
307  if (found) {
308  if (num_transmits > 1)
309  state->v_rtt_timeout *= 2; // exp. Backoff
310  else
311  state->v_rtt_timeout += (state->v_rtt_timeout / 8.0);
312 
313  // Vegas reduces cwnd if retransmitted segment rtx. was sent after last cwnd reduction
314  if (state->v_cwnd_changed < tSent) {
315  win = win / state->snd_mss;
316  if (win <= 3)
317  win = 2;
318  else if (num_transmits > 1)
319  win = win / 2; // win <<= 1
320  else
321  win -= win / 4; // win -= (win >>2)
322 
323  state->snd_cwnd = win * state->snd_mss + 3 * state->snd_mss;
324  state->v_cwnd_changed = currentTime;
325 
326  conn->emit(cwndSignal, state->snd_cwnd);
327 
328  // reset rtx. timer
330  }
331  }
332 
333  // retransmit one segment from snd_una
334  conn->retransmitOneSegment(false);
335 
336  if (found && num_transmits == 1)
338  }
339  // else if dupacks > duphtresh, cwnd+1
340  else if (state->dupacks > state->dupthresh) {
342  conn->emit(cwndSignal, state->snd_cwnd);
343  }
344 
345  // try to send more data
346  sendData(false);
347 }

◆ segmentRetransmitted()

void inet::tcp::TcpVegas::segmentRetransmitted ( uint32_t  fromseq,
uint32_t  toseq 
)
overridevirtual

Called after we retransmitted segment.

The argument fromseq is the seqno of the first byte sent. The argument toseq is the seqno of the last byte sent+1.

Reimplemented from inet::tcp::TcpBaseAlg.

364 {
365  TcpBaseAlg::segmentRetransmitted(fromseq, toseq);
366 
367  state->regions.set(fromseq, toseq, simTime());
368 }

Member Data Documentation

◆ state


The documentation for this class was generated from the following files:
inet::tcp::TcpBaseAlg::cwndSignal
static simsignal_t cwndSignal
Definition: TcpBaseAlg.h:101
inet::tcp::TcpBaseAlg::TcpBaseAlg
TcpBaseAlg()
Ctor.
Definition: TcpBaseAlg.cc:95
inet::tcp::TcpBaseAlg::processRexmitTimer
virtual void processRexmitTimer(TcpEventCode &event)
Definition: TcpBaseAlg.cc:208
inet::tcp::TcpVegasStateVariables::v_begseq
uint32_t v_begseq
Definition: TcpVegas.h:33
inet::tcp::TcpVegasStateVariables::v_incr_ss
bool v_incr_ss
Definition: TcpVegas.h:45
inet::tcp::TcpVegasStateVariables::v_sa
simtime_t v_sa
Definition: TcpVegas.h:37
inet::tcp::TcpBaseAlgStateVariables::snd_cwnd
uint32_t snd_cwnd
congestion window
Definition: TcpBaseAlg.h:40
inet::sctp::min
double min(const double a, const double b)
Returns the minimum of a and b.
Definition: SctpAssociation.h:261
inet::tcp::TcpStateVariables::dupacks
uint32_t dupacks
Definition: TcpConnection.h:236
inet::tcp::TcpBaseAlg::segmentRetransmitted
virtual void segmentRetransmitted(uint32_t fromseq, uint32_t toseq) override
Called after we retransmitted segment.
Definition: TcpBaseAlg.cc:624
inet::tcp::TcpVegasStateVariables::v_cwnd_changed
simtime_t v_cwnd_changed
Definition: TcpVegas.h:28
inet::tcp::TcpVegas::state
TcpVegasStateVariables *& state
Definition: TcpVegas.h:53
inet::tcp::TcpVegasStateVariables::ssthresh
uint32_t ssthresh
slow start threshold
Definition: TcpVegas.h:42
inet::tcp::TcpStateVariables::dupthresh
uint32_t dupthresh
Definition: TcpConnection.h:261
inet::tcp::TcpSegmentTransmitInfoList::clearTo
void clearTo(uint32_t endseg)
Definition: TcpSegmentTransmitInfoList.cc:75
inet::tcp::TcpStateVariables::snd_wnd
uint32_t snd_wnd
Definition: TcpConnection.h:150
inet::tcp::TcpBaseAlg::receivedDuplicateAck
virtual void receivedDuplicateAck() override
Called after we received a duplicate ACK (that is: ackNo == snd_una, no data in segment,...
Definition: TcpBaseAlg.cc:565
inet::tcp::TcpSegmentTransmitInfoList::get
const Item * get(uint32_t seq) const
returns pointer to Item, or nullptr if not found
Definition: TcpSegmentTransmitInfoList.cc:64
inet::tcp::TcpAlgorithm::conn
TcpConnection * conn
Definition: TcpAlgorithm.h:26
inet::tcp::TcpBaseAlg::receivedDataAck
virtual void receivedDataAck(uint32_t firstSeqAcked) override
Called after we received an ACK which acked some data (that is, we could advance snd_una).
Definition: TcpBaseAlg.cc:483
inet::tcp::TcpStateVariables::afterRto
bool afterRto
Definition: TcpConnection.h:194
inet::tcp::TcpStateVariables::snd_nxt
uint32_t snd_nxt
Definition: TcpConnection.h:148
inet::tcp::TcpVegasStateVariables::v_begtime
simtime_t v_begtime
Definition: TcpVegas.h:34
inet::tcp::TcpSegmentTransmitInfoList::Item::getFirstSentTime
simtime_t getFirstSentTime() const
Definition: TcpSegmentTransmitInfoList.h:32
inet::sctp::max
double max(const double a, const double b)
Returns the maximum of a and b.
Definition: SctpAssociation.h:266
inet::tcp::TcpVegasStateVariables::v_inc_flag
bool v_inc_flag
Definition: TcpVegas.h:44
inet::tcp::TcpStateVariables::snd_mss
uint32_t snd_mss
Definition: TcpConnection.h:142
inet::tcp::TcpVegasStateVariables::v_worried
uint32_t v_worried
Definition: TcpVegas.h:47
inet::tcp::TcpBaseAlg::dataSent
virtual void dataSent(uint32_t fromseq) override
Called after we sent data.
Definition: TcpBaseAlg.cc:603
inet::tcp::TcpSegmentTransmitInfoList::set
void set(uint32_t beg, uint32_t end, simtime_t sentTime)
Definition: TcpSegmentTransmitInfoList.cc:16
inet::tcp::TcpVegasStateVariables::v_rtt_timeout
simtime_t v_rtt_timeout
Definition: TcpVegas.h:36
inet::tcp::TCP_E_ABORT
@ TCP_E_ABORT
Definition: TcpConnection.h:75
inet::tcp::TcpVegasStateVariables::v_sd
simtime_t v_sd
Definition: TcpVegas.h:38
inet::tcp::TcpBaseAlg::restartRexmitTimer
virtual void restartRexmitTimer() override
Restart REXMIT timer.
Definition: TcpBaseAlg.cc:628
inet::tcp::TcpBaseAlg::sendData
virtual bool sendData(bool sendCommandInvoked)
Send data, observing Nagle's algorithm and congestion window.
Definition: TcpBaseAlg.cc:398
inet::tcp::TcpVegasStateVariables::regions
TcpSegmentTransmitInfoList regions
Definition: TcpVegas.h:40
inet::tcp::TcpConnection::retransmitOneSegment
virtual void retransmitOneSegment(bool called_at_rto)
Utility: retransmit one segment from snd_una.
Definition: TcpConnectionUtil.cc:960
inet::tcp::TcpVegasStateVariables::v_incr
int32_t v_incr
Definition: TcpVegas.h:46
inet::tcp::TcpStateVariables::snd_una
uint32_t snd_una
Definition: TcpConnection.h:147
inet::tcp::TcpAlgorithm::state
TcpStateVariables * state
Definition: TcpAlgorithm.h:27
inet::tcp::TcpBaseAlg::ssthreshSignal
static simsignal_t ssthreshSignal
Definition: TcpBaseAlg.h:102
inet::tcp::TcpVegas::recalculateSlowStartThreshold
virtual void recalculateSlowStartThreshold()
Utility function to recalculate ssthresh.
Definition: TcpVegas.cc:67
inet::tcp::TcpVegasStateVariables::v_sumRTT
simtime_t v_sumRTT
Definition: TcpVegas.h:31
inet::tcp::seqGreater
bool seqGreater(uint32_t a, uint32_t b)
Definition: TcpHeader.h:23
inet::tcp::TcpVegasStateVariables::v_baseRTT
simtime_t v_baseRTT
Definition: TcpVegas.h:30
inet::tcp::TcpStateVariables::iss
uint32_t iss
Definition: TcpConnection.h:154
inet::tcp::TcpVegasStateVariables::v_cntRTT
int v_cntRTT
Definition: TcpVegas.h:32
inet::tcp::TcpStateVariables::snd_max
uint32_t snd_max
Definition: TcpConnection.h:149