TCP – I thought I’d glance over this section. Turns out there was some stuff I’d never heard of, such as the bandwidth delay product.
1.1.e (i) IPv4 and IPv6 PMTU
Path MTU Discovery is the process of sending increasingly larger packets with the DF bit set, until finally a ICMP Destination Unreachable (Packet too large, DF bit set) message is received. The size just below that which caused this message is the maximum MTU for the path. Note that this relies on ICMP traffic being permitted through the network.
1.1.e (ii) MSS
The Maximum Segment Size is the maximum amount of data, in bytes, that can be received in a single TCP segment, excluding the TCP and IP headers. This is separate to MTU – a large TCP segment can be fragmented across multiple packets; the MSS refers to the reassembled size.
1.1.e (iii) Latency
Latency is the time it takes to get from end to end. This can be affected by congestion, serialization, queueing, propagation delay, and many other things. Good document here: http://www.o3bnetworks.com/media/40980/white%20paper_latency%20matters.pdf
1.1.e (iv) Windowing
The window size is the amount a unacknowledged data that can be in transit at a given time. This is negotiated between two hosts. While connectivity is reliable, all packets are being received, and upper level protocols are accepting the packets and keeping the buffers empty, hosts will attempt to increase the window size. In the event of missing packets, filling buffers, etc, the hosts will reduce the segment size.
1.1.e (v) Bandwidth delay product
The bandwidth multiplied by the round trip time gives the value of how much data should be “in transit” in the network. This would be the optimum window size; The amount of data to send before you should reasonably expect an acknowledgement.
1.1.e (vi) Global synchronization
During congestion, TCP senders will reduce their window sizes, backing off the amount of bandwidth they are using. All TCP streams will behave the same way, so eventually they will become synchronised, increasing to cause congestion and backing off at roughly the same rates. This causes the familiar “saw tooth” bandwidth utilisation graphs. RED and WRED can help alleviate this.
1.1.e (vii) Options
- Maximum Segment Size – only used in the SYN and SYN/ACK phases to negotiate the MSS for the session.
- Window Scaling – an addition to the window size flag in the header to facilitate larger than 64kb windows.
- Selective Acknowledgements – SACK’s can acknowledge specific parts of the stream, so that only specific bytes are retransmitted in the event of errors. Traditional ACK’s acknowledge only the latest packet received, so if packets are received out of order and an earlier bit was missing, a SACK can request only that bit.
- Timestamps – Used so that TCP can measure delay. The original reference timestamp is negotiated during the SYN and SYN/ACK phase.
- Nop – “No Option”. Used to separate the different options.