Package: inet.transportlayer.tcp
TcpConnection
simple moduleRepresents a single TCP connection in the TCP protocol implementation. Implements the TCP state machine and handles connection establishment, data transfer, flow control, congestion control, and connection termination. Provides extensive statistics collection for various TCP metrics including window sizes, sequence numbers, RTT measurements, and congestion parameters.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Extends
| Name | Type | Description |
|---|---|---|
| SimpleModule | simple module |
Base module for all INET simple modules. |
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| displayStringTextFormat | string | "" |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
Properties
| Name | Value | Description |
|---|---|---|
| class | TcpConnection |
Signals
| Name | Type | Unit | Description |
|---|---|---|---|
| rcvOooSeg |
Number of received out-of-order segments |
||
| cwnd |
TcpAlgorithm signals: |
||
| tcpRcvQueueDrops |
Number of drops in TCP receive queue |
||
| rcvSeq |
Received seqNo |
||
| rcvNASeg |
Number of received not acceptable segments |
||
| tcpRcvPayloadBytes |
Amount of payload bytes received (including duplicates, out of order, etc.) for TCP throughput |
||
| rttvar |
Will record RTT variance (rttvar) |
||
| load |
Will record load (currently only with DcTcp) |
||
| rcvAck |
Received ackNo (=snd_una) |
||
| sndAck |
Sent ackNo |
||
| pipe |
Current sender's estimate of bytes outstanding in the network |
||
| state |
FSM state |
||
| unacked |
Number of bytes unacknowledged |
||
| ssthresh |
Will record changes to ssthresh |
||
| calcLoad |
Will record calcLoad (currently only with DcTcp) |
||
| tcpRcvQueueBytes |
Current amount of used bytes in TCP receive queue |
||
| srtt |
Will record smoothed RTT |
||
| markingProb |
Will record marking probability (currently only with DcTcp) |
||
| sndSacks |
Number of sent Sacks |
||
| rto |
Will record retransmission timeout |
||
| sackedBytes |
Current number of received sacked bytes |
||
| rcvSacks |
Number of received Sacks |
||
| rtt |
Will record measured RTT |
||
| dupAcks |
Current number of received dupAcks |
||
| numRtos |
Will record total number of RTOs |
||
| rcvWnd |
Rcv_wnd |
||
| sndNxt |
Sent seqNo |
||
| rcvAdv |
Current advertised window (=rcv_adv) |
||
| sndWnd |
Snd_wnd |
Statistics
| Name | Title | Source | Record | Unit | Interpolation Mode | Description |
|---|---|---|---|---|---|---|
| rcvOooSeg | vector | sample-hold |
Number of received out-of-order segments |
|||
| cwnd | vector | sample-hold |
Will record changes to snd_cwnd |
|||
| tcpRcvQueueDrops | vector | sample-hold |
Number of drops in tcp receive queue |
|||
| rcvSeq | vector | sample-hold |
Received seqNo |
|||
| rcvNASeg | vector | sample-hold |
Number of received not acceptable segments |
|||
| tcpRcvPayloadBytes | vector | sample-hold |
Current amount of payload bytes received (including duplicates, out of order etc) for TCP throughput |
|||
| rttvar | vector | sample-hold |
Will record RTT variance (rttvar) |
|||
| load | vector | sample-hold |
Will record load (currently only with DcTcp) |
|||
| rcvAck | vector | sample-hold |
Received ackNo (=snd_una) |
|||
| sndAck | vector | sample-hold |
Sent ackNo |
|||
| pipe | vector | sample-hold |
Current sender's estimate of bytes outstanding in the network |
|||
| state | vector | sample-hold | ||||
| unacked | vector | sample-hold |
Number of bytes unacknowledged |
|||
| ssthresh | vector | sample-hold |
Will record changes to ssthresh |
|||
| calcLoad | vector | sample-hold |
Will record calcLoad (currently only with DcTcp) |
|||
| tcpRcvQueueBytes | vector | sample-hold |
Current amount of used bytes in tcp receive queue |
|||
| srtt | vector | sample-hold |
Will record smoothed RTT |
|||
| markingProb | vector | sample-hold |
Will record marking probability (currently only with DcTcp) |
|||
| sndSacks | vector | sample-hold |
Number of sent Sacks |
|||
| rto | vector | sample-hold |
Will record retransmission timeout |
|||
| sackedBytes | vector | sample-hold |
Current number of received sacked bytes |
|||
| rcvSacks | vector | sample-hold |
Number of received Sacks |
|||
| rtt | vector | sample-hold |
Will record measured RTT |
|||
| dupAcks | vector | sample-hold |
Current number of received dupAcks |
|||
| numRtos | vector | sample-hold |
Will record total number of RTOs |
|||
| rcvWnd | vector | sample-hold |
Rcv_wnd |
|||
| sndNxt | vector | sample-hold |
Sent seqNo |
|||
| rcvAdv | vector | sample-hold |
Current advertised window (=rcv_adv) |
|||
| sndWnd | vector | sample-hold |
Snd_wnd |
Source code
// // Represents a single TCP connection in the TCP protocol implementation. // Implements the TCP state machine and handles connection establishment, // data transfer, flow control, congestion control, and connection termination. // Provides extensive statistics collection for various TCP metrics including // window sizes, sequence numbers, RTT measurements, and congestion parameters. // simple TcpConnection extends SimpleModule { parameters: @class(TcpConnection); @signal[state]; // FSM state @signal[sndWnd]; // Snd_wnd @signal[rcvWnd]; // Rcv_wnd @signal[rcvAdv]; // Current advertised window (=rcv_adv) @signal[sndNxt]; // Sent seqNo @signal[sndAck]; // Sent ackNo @signal[rcvSeq]; // Received seqNo @signal[rcvAck]; // Received ackNo (=snd_una) @signal[unacked]; // Number of bytes unacknowledged @signal[dupAcks]; // Current number of received dupAcks @signal[pipe]; // Current sender's estimate of bytes outstanding in the network @signal[sndSacks]; // Number of sent Sacks @signal[rcvSacks]; // Number of received Sacks @signal[rcvOooSeg]; // Number of received out-of-order segments @signal[rcvNASeg]; // Number of received not acceptable segments @signal[sackedBytes]; // Current number of received sacked bytes @signal[tcpRcvQueueBytes]; // Current amount of used bytes in TCP receive queue @signal[tcpRcvQueueDrops]; // Number of drops in TCP receive queue @signal[tcpRcvPayloadBytes]; // Amount of payload bytes received (including duplicates, out of order, etc.) for TCP throughput //TcpAlgorithm signals: @signal[cwnd]; // Will record changes to snd_cwnd @signal[ssthresh]; // Will record changes to ssthresh @signal[rtt]; // Will record measured RTT @signal[srtt]; // Will record smoothed RTT @signal[rttvar]; // Will record RTT variance (rttvar) @signal[rto]; // Will record retransmission timeout @signal[numRtos]; // Will record total number of RTOs @signal[load]; // Will record load (currently only with DcTcp) @signal[calcLoad]; // Will record calcLoad (currently only with DcTcp) @signal[markingProb]; // Will record marking probability (currently only with DcTcp) @statistic[state](record=vector; interpolationmode=sample-hold); @statistic[sndWnd](record=vector; interpolationmode=sample-hold); // Snd_wnd @statistic[rcvWnd](record=vector; interpolationmode=sample-hold); // Rcv_wnd @statistic[rcvAdv](record=vector; interpolationmode=sample-hold); // Current advertised window (=rcv_adv) @statistic[sndNxt](record=vector; interpolationmode=sample-hold); // Sent seqNo @statistic[sndAck](record=vector; interpolationmode=sample-hold); // Sent ackNo @statistic[rcvSeq](record=vector; interpolationmode=sample-hold); // Received seqNo @statistic[rcvAck](record=vector; interpolationmode=sample-hold); // Received ackNo (=snd_una) @statistic[unacked](record=vector; interpolationmode=sample-hold); // Number of bytes unacknowledged @statistic[dupAcks](record=vector; interpolationmode=sample-hold); // Current number of received dupAcks @statistic[pipe](record=vector; interpolationmode=sample-hold); // Current sender's estimate of bytes outstanding in the network @statistic[sndSacks](record=vector; interpolationmode=sample-hold); // Number of sent Sacks @statistic[rcvSacks](record=vector; interpolationmode=sample-hold); // Number of received Sacks @statistic[rcvOooSeg](record=vector; interpolationmode=sample-hold); // Number of received out-of-order segments @statistic[rcvNASeg](record=vector; interpolationmode=sample-hold); // Number of received not acceptable segments @statistic[sackedBytes](record=vector; interpolationmode=sample-hold); // Current number of received sacked bytes @statistic[tcpRcvQueueBytes](record=vector; interpolationmode=sample-hold); // Current amount of used bytes in tcp receive queue @statistic[tcpRcvQueueDrops](record=vector; interpolationmode=sample-hold); // Number of drops in tcp receive queue @statistic[tcpRcvPayloadBytes](record=vector; interpolationmode=sample-hold); // Current amount of payload bytes received (including duplicates, out of order etc) for TCP throughput @statistic[cwnd](record=vector; interpolationmode=sample-hold); // Will record changes to snd_cwnd @statistic[ssthresh](record=vector; interpolationmode=sample-hold); // Will record changes to ssthresh @statistic[rtt](record=vector; interpolationmode=sample-hold); // Will record measured RTT @statistic[srtt](record=vector; interpolationmode=sample-hold); // Will record smoothed RTT @statistic[rttvar](record=vector; interpolationmode=sample-hold); // Will record RTT variance (rttvar) @statistic[rto](record=vector; interpolationmode=sample-hold); // Will record retransmission timeout @statistic[numRtos](record=vector; interpolationmode=sample-hold); // Will record total number of RTOs @statistic[load](record=vector; interpolationmode=sample-hold); // Will record load (currently only with DcTcp) @statistic[calcLoad](record=vector; interpolationmode=sample-hold); // Will record calcLoad (currently only with DcTcp) @statistic[markingProb](record=vector; interpolationmode=sample-hold); // Will record marking probability (currently only with DcTcp) }File: src/inet/transportlayer/tcp/TcpConnection.ned