itpp::TCP_Sender Class Reference

`#include <itpp/protocol/tcp.h>`

## Public Member Functions

| TCP_Sender (int label)
| ADD DOCUMENTATION HERE.
virtual | ~TCP_Sender ()
| ADD DOCUMENTATION HERE.
virtual void | setup ()
| ADD DOCUMENTATION HERE.
virtual void | release (std::string trace_filename="")
| ADD DOCUMENTATION HERE.
virtual void | print_item (std::ostream &, const std::string &)
| Print support.
virtual void | set_debug (const bool enable_debug=true)
| ADD DOCUMENTATION HERE.
virtual void | set_debug (bool enable_debug, bool enable_signal_debug)
| ADD DOCUMENTATION HERE.
virtual void | set_trace (const bool enable_trace=true)
| ADD DOCUMENTATION HERE.
virtual void | save_trace (std::string filename)
| ADD DOCUMENTATION HERE.

## Public Attributes

Signal< itpp::Packet * > | tcp_send
| ADD DOCUMENTATION HERE.
Slot< TCP_Sender, itpp::Packet * > | tcp_receive_ack
| ADD DOCUMENTATION HERE.
Slot< TCP_Sender, itpp::Packet * > | tcp_socket_write
| ADD DOCUMENTATION HERE.
Slot< TCP_Sender, std::string > | tcp_release
| ADD DOCUMENTATION HERE.

## Detailed Description

TTCPSender is an entity that models TCP flow and congestion control at the sender side. It is one of the key components of the TCP module.

TTCPSender communicates with its environment via three ports:

- "input": receive messages from a generator/application
- "output": send TCP packets into the network
- "ackinput": receive TCP ACK packets from the network originated by the TCP receiver

The sender is activated when the user entity (e.g. a generator) offers a message, whose length indicates the amount of data to be transferred, or when an ACK is received from the network. In both cases data is only sent if there is any unsent data available, the sending window (determined by the congestion window and by the receiver advertised window) is large enough and the silly window syndrome avoidance algorithm is passed. Data that has been sent remains in the sender buffer, which is modelled in a virtual manner, until it is acknowledged. If data has been ACKed it is erased in the sender buffer and the TCP sender tries to get new data and send it.

TTCPSender can be used with different versions of congestion control: Tahoe, Reno, and New Reno. Moreover, various options (e.g. usage of Nagle/Karn/Go-Back-N algorithms) and parameters (e.g. mss, max cwnd, initial values, timer granularity) can be defined in the input file.

The class provides a simplified connection control via methods Setup and Release. Those methods are only used to reset internal state variables. No control messages are sent over the network, i.e. the sender assumes that the corresponding methods at the receiver side are called as well.

See also
  TTCPSenderSet
  TTCPReceiver

Author
  Grevent
  Lorang
  Bodamer

Definition at line 323 of file tcp.h.

## Member Data Documentation

## tcp_send

Signal<itpp::Packet*> itpp::TCP_Sender::tcp_send

ADD DOCUMENTATION HERE.

Definition at line 351 of file tcp.h.

## tcp_receive_ack

Slot<TCP_Sender, itpp::Packet*> itpp::TCP_Sender::tcp_receive_ack

ADD DOCUMENTATION HERE.

Definition at line 353 of file tcp.h.

## tcp_socket_write

Slot<TCP_Sender, itpp::Packet*> itpp::TCP_Sender::tcp_socket_write

ADD DOCUMENTATION HERE.

Definition at line 355 of file tcp.h.

## tcp_release

Slot<TCP_Sender, std::string> itpp::TCP_Sender::tcp_release

ADD DOCUMENTATION HERE.

Definition at line 357 of file tcp.h.

The documentation for this class was generated from the following file:

- itpp/protocol/tcp.h

Generated on Mon Jun 10 2024 11:49:41 for IT++ by Doxygen 1.9.8