- Null Objects
- Null objects are a subclass of agent objects that implement a traffic
sink. They inherit all of the generic agent object functionality. There
are no methods specific to this object. The state variables are:
- LossMonitor Objects
- LossMonitor objects are a subclass of agent objects that implement a
traffic sink which also maintains some statistics about the received data
e.g., number of bytes received, number of packets lost etc. They inherit
all of the generic agent object functionality.
$lossmonitor clear
Resets the expected sequence number to -1.
State Variables are:
- nlost_
- Number of packets lost.
- npkts_
- Number of packets received.
- bytes_
- Number of bytes received.
- lastPktTime_
- Time at which the last packet was received.
- expected_
- The expected sequence number of the next packet.
- TCP objects
- TCP objects are a subclass of agent objects that implement the BSD Tahoe
TCP transport protocol as described in paper: "Fall, K., and Floyd, S.
Comparisons of Tahoe, Reno, and Sack TCP. December 1995." URL ftp://
ftp.ee.lbl.gov/papers/sacks.ps.Z. They inherit
all of the generic agent functionality. Configuration Parameters are:
- window_
- The upper bound on the advertised window for the TCP
connection.
- maxcwnd_
- The upper bound on the congestion window for the TCP connection. Set to
zero to ignore. (This is the default.)
- windowInit_
- The initial size of the congestion window on slow-start.
- windowOption_
- The algorithm to use for managing the congestion window.
- windowThresh_
- Gain constant to exponential averaging filter used to compute awnd (see
below). For investigations of different window-increase algorithms.
- overhead_
- The range of a uniform random variable used to delay each output packet.
The idea is to insert random delays at the source in order to avoid phase
effects, when desired [see Floyd, S., and Jacobson, V. On Traffic Phase
Effects in Packet-Switched Gateways. Internetworking: Research and
Experience, V.3 N.3, September 1992. pp. 115-156 ]. This has only been
implemented for the Tahoe ("tcp") version of tcp, not for tcp-reno. This
is not intended to be a realistic model of CPU processing overhead.
- ecn_
- Set to true to use explicit congestion notification in
addition to packet drops to signal congestion. This allows a Fast
Retransmit after a quench() due to an ECN (explicit congestion
notification) bit.
- packetSize_
- The size in bytes to use for all packets from this source.
- tcpTick_
- The TCP clock granularity for measuring roundtrip times. Note that it is
set by default to the non-standard value of 100ms.
- bugFix_
- Set to true to remove a bug when multiple fast retransmits are allowed for
packets dropped in a single window of data.
- maxburst_
- Set to zero to ignore. Otherwise, the maximum number of packets that the
source can send in response to a single incoming ACK.
- slow_start_restart_
- Set to 1 to slow-start after the connection goes idle. On by default.
- syn_
- Set to false to disable modeling the initial SYN/SYNACK exchange. On by default.
Note: if this is set to false and the DelAck sink is used, it's advisable to also disable the sink's ``SYN_immediate_ack_'' flag.
Defined Constants are:
- MWS
- The Maximum Window Size in packets for a TCP connection. MWS
determines the size of an array in tcp-sink.cc. The default for MWS is
1024 packets. For Tahoe TCP, the "window" parameter, representing the
receiver's advertised window, should be less than MWS-1. For Reno TCP, the
"window" parameter should be less than (MWS-1)/2.
State Variables are:
- dupacks_
- Number of duplicate acks seen since any new data was acknowledged.
- seqno_
- Highest sequence number for data from data source to TCP.
- t_seqno_
- Current transmit sequence number.
- ack_
- Highest acknowledgment seen from receiver. cwnd_
Current value of the congestion window.
- awnd_
- Current value of a low-pass filtered version of the congestion window. For
investigations of different window-increase algorithms.
- ssthresh_
- Current value of the slow-start threshold.
- rtt_
- Round-trip time estimate.
- srtt_
- Smoothed round-trip time estimate.
- rttvar_
- Round-trip time mean deviation estimate.
- backoff_
- Round-trip time exponential backoff constant.
- TCP/Reno Objects
- TCP/Reno objects are a subclass of TCP objects that implement the Reno TCP
transport protocol described in paper: "Fall, K., and Floyd, S.
Comparisons of Tahoe, Reno, and Sack TCP. December 1995." URL ftp://
ftp.ee.lbl.gov/papers/sacks.ps.Z. There are no methods,
configuration parameters or state variables specific to this object.
- TCP/Newreno Objects
- TCP/Newreno objects are a subclass of TCP objects that implement a
modified version of the BSD Reno TCP transport protocol.
There are no methods or state variables specific to this object.
Configuration Parameters are:
- newreno_changes_
- Set to zero for the default New Reno described in "Fall, K., and Floyd, S.
Comparisons of Tahoe, Reno, and Sack TCP. December 1995". Set to 1 for
additional New Reno algorithms [see Hoe, J., Improving the Start-up
Behavior of a Congestion Control Scheme for TCP. in SIGCOMM 96, August
1996, pp. 270-280. URL
https://www.acm.org/sigcomm/sigcomm96/papers/hoe.html.]; this includes the
estimation of the ssthresh parameter during slow-start.
- TCP/Vegas Objects
- There are no methods or configuration parameters specific to this
object. State variables are:
- v_alpha_
- v_beta_
- v_gamma_
- v_rtt_
- TCP/Sack1 Objects
- TCP/Sack1 objects are a subclass of TCP objects that implement the BSD
Reno TCP transport protocol with Selective Acknowledgement Extensions
described in "Fall, K., and Floyd, S. Comparisons of Tahoe, Reno, and
Sack TCP. December 1995". URL ftp:// ftp.ee.lbl.gov/papers/sacks.ps.Z.
They inherit all of the TCP object functionality. There are no methods,
configuration parameters or state variables specific to this object.
- TCP/FACK Objects
- TCP/Fack objects are a subclass of TCP objects that implement the BSD Reno
TCP transport protocol with Forward Acknowledgement congestion control.
They inherit all of the TCP object functionality. There are no methods or
state variables specific to this object.
Configuration Parameters are:
- ss-div4
- Overdamping algorithm. Divides ssthresh by 4 (instead of 2) if congestion
is detected within 1/2 RTT of slow-start. (1=Enable, 0=Disable)
- rampdown
- Rampdown data smoothing algorithm. Slowly reduces congestion window rather
than instantly halving it. (1=Enable, 0=Disable)
- TCP/FULLTCP Objects
- This section has not yet been added here. The implementation
and the configuration parameters are described in paper: "Fall, K.,
Floyd, S., and Henderson, T., Ns Simulator Tests for Reno FullTCP.
July, 1997." URL ftp://ftp.ee.lbl.gov/papers/fulltcp.ps.
- TCPSINK Objects
- TCPSink objects are a subclass of agent objects that implement a receiver
for TCP packets. The simulator only implements "one-way" TCP connections,
where the TCP source sends data packets and the TCP sink sends ACK
packets. TCPSink objects inherit all of the generic agent functionality.
There are no methods or state variables specific to the TCPSink object.
Configuration Parameters are
- packetSize_
- The size in bytes to use for all acknowledgment packets.
- maxSackBlocks_
- The maximum number of blocks of data that can be acknowledged in a SACK
option. For a receiver that is also using the time stamp option [RFC
1323], the SACK option specified in RFC 2018 has room to include three
SACK blocks. This is only used by the TCPSink/Sack1 subclass. This value
may not be increased within any particular TCPSink object after that
object has been allocated. (Once a TCPSink object has been allocated, the
value of this parameter may be decreased but not increased).
- TCPSINK/DELACK Objects
- DelAck objects are a subclass of TCPSink that implement a delayed-ACK
receiver for TCP packets. They inherit all of the TCPSink object
functionality. There are no methods or state variables specific to the
DelAck object.
Configuration Parameters are:
- interval_
- The amount of time to delay before generating an acknowledgment for a
single packet. If another packet arrives before this time expires,
generate an acknowledgment immediately.
- RFC2581_immediate_ack_
- A boolean flag. If true, conforms to RFC2581 (section 4.2) and only delays
the ACK if we know we're not doing recovery, i.e. not gap-filling.
Otherwise all ACKs are delayed. The default value is true.
- SYN_immediate_ack_
- A boolean flag. If true, the first packet in sequence (seqno == 0) is
always ACKed immediately. This simulates the behavior of the FullTCP
agent, which ACKs a SYN immediately. The default value is true.
See also the ``syn_'' flag of the one-way TcpAgent.
- TCPSINK/SACK1 Objects
- TCPSink/Sack1 objects are a subclass of TCPSink that implement a SACK
receiver for TCP packets. They inherit all of the TCPSink object
functionality. There are no methods, configuration parameters or state
variables specific to this object.
- TCPSINK/SACK1/DELACK Objects
- TCPSink/Sack1/DelAck objects are a subclass of TCPSink/Sack1 that
implement a delayed-SACK receiver for TCP packets. They inherit all of the
TCPSink/Sack1 object functionality. There are no methods or state
variables specific to this object.
Configuration Parameters are:
- interval_
- The amount of time to delay before generating an acknowledgment for a
single packet. If another packet arrives before this time expires,
generate an acknowledgment immediately.