TcpConnection

Package: inet.transportlayer.tcp

simple module TcpConnection

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.

inet.transportlayer.tcp.TcpConnectionTcpConnectionsimple

Inheritance 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

calcLoad

Will record calcLoad (currently only with DcTcp)

cwnd

Will record changes to snd_cwnd

dupAcks

Current number of received dupAcks

load

Will record load (currently only with DcTcp)

markingProb

Will record marking probability (currently only with DcTcp)

numRtos

Will record total number of RTOs

pipe

Current sender’s estimate of bytes outstanding in the network

rcvAck

Received ackNo (=snd_una)

rcvAdv

Current advertised window (=rcv_adv)

rcvNASeg

Number of received not acceptable segments

rcvOooSeg

Number of received out-of-order segments

rcvSacks

Number of received Sacks

rcvSeq

Received seqNo

rcvWnd

Rcv_wnd

rto

Will record retransmission timeout

rtt

Will record measured RTT

rttvar

Will record RTT variance (rttvar)

sackedBytes

Current number of received sacked bytes

sndAck

Sent ackNo

sndNxt

Sent seqNo

sndSacks

Number of sent Sacks

sndWnd

Snd_wnd

srtt

Will record smoothed RTT

ssthresh

Will record changes to ssthresh

state

FSM state

tcpRcvPayloadBytes

Amount of payload bytes received (including duplicates, out of order, etc.) for TCP throughput

tcpRcvQueueBytes

Current amount of used bytes in TCP receive queue

tcpRcvQueueDrops

Number of drops in TCP receive queue

unacked

Number of bytes unacknowledged

Statistics

Name

Title

Source

Record

Unit

Interpolation Mode

Description

calcLoad

vector

sample-hold

Will record calcLoad (currently only with DcTcp)

cwnd

vector

sample-hold

Will record changes to snd_cwnd

dupAcks

vector

sample-hold

Current number of received dupAcks

load

vector

sample-hold

Will record load (currently only with DcTcp)

markingProb

vector

sample-hold

Will record marking probability (currently only with DcTcp)

numRtos

vector

sample-hold

Will record total number of RTOs

pipe

vector

sample-hold

Current sender’s estimate of bytes outstanding in the network

rcvAck

vector

sample-hold

Received ackNo (=snd_una)

rcvAdv

vector

sample-hold

Current advertised window (=rcv_adv)

rcvNASeg

vector

sample-hold

Number of received not acceptable segments

rcvOooSeg

vector

sample-hold

Number of received out-of-order segments

rcvSacks

vector

sample-hold

Number of received Sacks

rcvSeq

vector

sample-hold

Received seqNo

rcvWnd

vector

sample-hold

Rcv_wnd

rto

vector

sample-hold

Will record retransmission timeout

rtt

vector

sample-hold

Will record measured RTT

rttvar

vector

sample-hold

Will record RTT variance (rttvar)

sackedBytes

vector

sample-hold

Current number of received sacked bytes

sndAck

vector

sample-hold

Sent ackNo

sndNxt

vector

sample-hold

Sent seqNo

sndSacks

vector

sample-hold

Number of sent Sacks

sndWnd

vector

sample-hold

Snd_wnd

srtt

vector

sample-hold

Will record smoothed RTT

ssthresh

vector

sample-hold

Will record changes to ssthresh

state

vector

sample-hold

tcpRcvPayloadBytes

vector

sample-hold

Current amount of payload bytes received (including duplicates, out of order etc) for TCP throughput

tcpRcvQueueBytes

vector

sample-hold

Current amount of used bytes in tcp receive queue

tcpRcvQueueDrops

vector

sample-hold

Number of drops in tcp receive queue

unacked

vector

sample-hold

Number of bytes unacknowledged

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