DumbTcpStateVariables

Namespace: inet::tcp

struct DumbTcpStateVariables

State variables for DumbTcp.

Inheritance diagram

Extends

Name

Type

Description

TcpStateVariables

struct

Contains state variables (“TCB”) for TCP.

Fields

Name

Type

Description

active

bool

set if the connection was initiated by an active open

fork

bool

if passive and in LISTEN: whether to fork on an incoming connection

snd_mss

uint32_t

sender maximum segment size (without headers, i.e. only segment text); see RFC 2581, page 1. This will be set to the minimum of the local smss parameter and the value specified in the MSS option received during connection setup.

snd_una

uint32_t

send unacknowledged

snd_nxt

uint32_t

send next (drops back on retransmission)

snd_max

uint32_t

max seq number sent (needed because snd_nxt is re-set on retransmission)

snd_wnd

uint32_t

send window

snd_up

uint32_t

send urgent pointer

snd_wl1

uint32_t

segment sequence number used for last window update

snd_wl2

uint32_t

segment ack. number used for last window update

iss

uint32_t

initial sequence number (ISS)

rcv_nxt

uint32_t

receive next

rcv_wnd

uint32_t

receive window

rcv_up

uint32_t

receive urgent pointer;

irs

uint32_t

initial receive sequence number

rcv_adv

uint32_t

advertised window

syn_rexmit_count

int

number of SYN/SYN+ACK retransmissions (=1 after first rexmit)

syn_rexmit_timeout

simtime_t

current SYN/SYN+ACK retransmission timeout

fin_ack_rcvd

bool

whether ACK of our FIN has been received. Needed in FIN bit processing to decide between transition to TIME-WAIT and CLOSING (set event code TCP_E_RCV_FIN or TCP_E_RCV_FIN_ACK).

send_fin

bool

true if a user CLOSE command has been “queued”

snd_fin_seq

uint32_t

if send_fin == true: FIN should be sent just before this sequence number

fin_rcvd

bool

whether FIN received or not

rcv_fin_seq

uint32_t

if fin_rcvd: sequence number of received FIN

nagle_enabled

bool

set if Nagle’s algorithm (RFC 896) is enabled

delayed_acks_enabled

bool

set if delayed ACK algorithm (RFC 1122) is enabled

limited_transmit_enabled

bool

set if Limited Transmit algorithm (RFC 3042) is enabled

increased_IW_enabled

bool

set if Increased Initial Window (RFC 3390) is enabled

full_sized_segment_counter

uint32_t

this counter is needed for delayed ACK

ack_now

bool

send ACK immediately, needed if delayed_acks_enabled is set Based on [Stevens, W.R.: TCP/IP Illustrated, Volume 2, page 861]. ack_now should be set when: delayed ACK timer expires; an out-of-order segment is received; SYN is received during the three-way handshake; a persist probe is received; FIN is received

afterRto

bool

set at RTO, reset when snd_nxt == snd_max or snd_una == snd_max

ws_support

bool

set if the host supports Window Scale (header option) (RFC 1323)

ws_enabled

bool

set if the connection uses Window Scale (header option)

ws_manual_scale

int

the value of scale parameter if it was set manually (-1 otherwise)

snd_ws

bool

set if initial WINDOW_SCALE has been sent

rcv_ws

bool

set if initial WINDOW_SCALE has been received

rcv_wnd_scale

unsigned int

RFC 1323, page 31: “Receive window scale power”

snd_wnd_scale

unsigned int

RFC 1323, page 31: “Send window scale power”

ts_support

bool

set if the host supports Timestamps (header option) (RFC 1322)

ts_enabled

bool

set if the connection uses Window Scale (header option)

snd_initial_ts

bool

set if initial TIMESTAMP has been sent

rcv_initial_ts

bool

set if initial TIMESTAMP has been received

ts_recent

uint32_t

RFC 1323, page 31: “Latest received Timestamp”

last_ack_sent

uint32_t

RFC 1323, page 31: “Last ACK field sent”

time_last_data_sent

simtime_t

time at which the last data segment was sent (needed to compute the IDLE time for PAWS)

sack_support

bool

set if the host supports selective acknowledgment (header option) (RFC 2018, 2883, 3517)

sack_enabled

bool

set if the connection uses selective acknowledgment (header option)

snd_sack_perm

bool

set if SACK_PERMITTED has been sent

rcv_sack_perm

bool

set if SACK_PERMITTED has been received

start_seqno

uint32_t

start sequence number of last received out-of-order segment

end_seqno

uint32_t

end sequence number of last received out-of-order segment

snd_sack

bool

set if received vaild out-of-order segment or rcv_nxt changed, but receivedQueue is not empty

snd_dsack

bool

set if received duplicated segment (sequenceNo+PLength < rcv_nxt) or (segment is not acceptable)

sacks_array

SackList

MAX_SACK_BLOCKS is set to 60

highRxt

uint32_t

RFC 3517, page 3: “”HighRxt” is the highest sequence number which has been retransmitted during the current loss recovery phase.”

pipe

uint32_t

RFC 3517, page 3: “”Pipe” is a sender’s estimate of the number of bytes outstanding in the network.”

recoveryPoint

uint32_t

RFC 3517

sackedBytes

uint32_t

number of sackedBytes

sackedBytes_old

uint32_t

old number of sackedBytes - needed for RFC 3042 to check if last dupAck contained new sack information

lossRecovery

bool

indicates if algorithm is in loss recovery phase

sendQueueLimit

uint32_t

queue management

queueUpdate

bool

dupacks

uint32_t

current number of received consecutive duplicate ACKs

snd_sacks

uint32_t

number of sent sacks

rcv_sacks

uint32_t

number of received sacks

rcv_oooseg

uint32_t

number of received out-of-order segments

rcv_naseg

uint32_t

number of received not acceptable segments

maxRcvBuffer

uint32_t

maximal amount of bytes in tcp receive queue

usedRcvBuffer

uint32_t

current amount of used bytes in tcp receive queue

freeRcvBuffer

uint32_t

current amount of free bytes in tcp receive queue

tcpRcvQueueDrops

uint32_t

number of drops in tcp receive queue

ecnEchoState

bool

indicates if connection is in echo mode (got CE indication from IP and didn’t get CWR from sender yet)

sndCwr

bool

set if ECE was handled

gotEce

bool

set if packet with ECE arrived

gotCeIndication

bool

set if CE was set in controlInfo from IP

ect

bool

set if this connection is ECN Capable (ECT stands for ECN-Capable transport - rfc-3168)

endPointIsWillingECN

bool

set if the other end-point is willing to use ECN

ecnSynSent

bool

set if ECN-setup SYN packet was sent

ecnWillingness

bool

set if current host is willing to use ECN

sndAck

bool

set if sending Ack packet, used to set relevant info in controlInfo.

rexmit

bool

set if retransmitting data, used to send not-ECT codepoint (rfc3168, p. 20)

eceReactionTime

simtime_t

records the time of the last ECE reaction

dupthresh

uint32_t

used for TcpTahoe, TcpReno and SACK (RFC 3517)

pmtudEnabled

bool

set if Path MTU Discovery is enabled

pmtudOriginalMss

uint32_t

negotiated MSS before any PMTUD reduction

pmtudTimeout

simtime_t

time after which the original MSS is restored to probe for increased path MTU

pmtudLastMssReduction

simtime_t

timestamp of last PMTUD-triggered MSS reduction (-1 = never reduced)

Properties

Name

Value

Description

descriptor

readonly

implements

cObject

Source code

///
/// State variables for DumbTcp.
///
struct DumbTcpStateVariables extends TcpStateVariables
{
    @descriptor(readonly);
};

File: src/inet/transportlayer/tcp/flavours/DumbTcpState.msg