Lecture 0: 17th September 2019 Flashcards
TCP Performance
What is TCP?
TCP = Transmission Control Protocol = a protocol for data exchange in the transport layer which seeks to make data exchange reliable, in-order, and with integrity and seeks to control network congestion and flows (flow send rates). It is part of the Internet Protocol suite.
What is TCP used for?
websites (HTTP), email, video streaming; still most widely used transport protocol on the Internet
Why has the design of TCP needed to change over time?
designed to exchange text on a low-speed network in 1988. v different to internet uses today
What are the key features of TCP?
Flow control through windowing and sequence numbers. Guaranteed, in-order delivery with sequence numbers and acknowledgements. Congestion control with “slow start” and “linear increase” phases of throughput probing.
How do sequence numbers work in TCP?
Both hosts maintain a sequence and acknowledgment number. The seq no of one host = the ack no of the other host. Sequence and ack numbers refer to the number of bytes rather than packet number so if some of a packet is received then don’t have to resend the whole thing. The packet is sent with the last received ack number as its sequence number and ack number of the receiver will increase by how many bytes received successfully. The sequence number of the sender then increases to that ack number.
What is the PAWS RFC?
PAWS = Protection Against Wrapped Sequence Numbers = a RFC that uses sequence numbers and timestamps to identify packets.
Why is the PAWS RFC needed?
If a file is large enough then the number of bytes (sequence number) will be larger than the maximum sequence number, leading to an overflow. This is especially true as TCP sequence numbers begin at a random number rather than 0.
How is the number of the first sequence number in TCP generated? Why is this method used?
It’s randomly generated.
This minimises the predictability of connections: it makes it harder for attackers to know where 2 hosts are in a connection. This knowledge would make faking packets easier.
What is idle-RQ? What is its disadvantage?
It is when you send 1 packet at a time, waiting until you get 1 back (i.e. window size of 1 packet). It is simple and doesn’t require sequence numbers but doesn’t allow you to approach the channel’s capacity: it is often idle.
What is continuous-RQ?
When you have a window size > 1, i.e. send multiple packets at once (pipelining) continually for the RTT up to capacity. Sequence numbers and acks are needed, and you need to know the RTT and channel capacity.
What is pipelining?
When you keep sending packets even though haven’t got an ack for the first one (strictly, first ack itself).
What is the bandwidth delay product of a channel? How do you calculate it?
BDP is a measurement of how many bits can fill up a network link. It gives the maximum amount of data that can be transmitted by the sender at a given time before waiting for acknowledgment. Thus it is the maximum amount of unacknowledged data.
BDP = data rate x RTT
What is the main feedback loop in TCP?
Transmitting then waiting for a response (in acks)
What does continuous-RQ require that idle-RQ does not?
Sequence numbers, RTT, and channel capacity.
What’s the difference between congestion control and flow control?
Congestion control is controlling the rate of transmissions due to network strain whereas flow control controls it due to receiver strain.
What is end-to-end flow control?
When the receiver signals the sender to control the window size. End-to-end: within the connection.
What is the difference between per-flow and per receiver flow control? Which does TCP use?
Per-receiver as total window across multiple connections(?). Per-flow as the receiver window within a connection. TCP uses per-flow: the receiver window, rwnd.
What is the TCP receiver window?
Receiver window, rwnd, is how much data a receiver can receive at most before needing to send an acknowledgement. Its size will depend on how fast it can process data it receives.
How does the receiver window size constrain sending rate?
Since it is the most that can be received, sending any more - even with a larger capacity or sending window - means the extra will not be processed and essentially wasted.
What is an extension header?
A header added to those found in the original version of protocols containing supplementary information to solve unforseen problems.
What is the Window Scale Option RFC?
The way by which an extension header is used to increase the size of the receiver window by a scale (multiplication) factor.
Why is the Window Scale Option RFC needed?
The original maximum size of rwnd was ~0.07MB, which is insufficient for a lot of modern applications. It extends the maximum receiver window size to > 1GB.
What is delay-toggled networking?
Network protocols in which changes in delay alter the state and actions of the protocol (?)
What is inter-planetary networking?
Network protocols designed to facilitate interplanetary communications. This must accommodate a frequently partitioned wireless backbone fraught with error-prone links and delays ranging from tens of minutes to even hours, even when there is a connection. A store-and-forward mechanism should be used: wait until can get a hop closer to destination in a connection and then send it.
How does an increase in load affect throughput in normal network operation?
throughput increases linearly
How does an increase in load affect throughput when a network is congested?
smaller further increases than those seen in operation on an uncongested network
What is congestion collapse?
when the load on a network causes a level of congestion that prevents or severely limits useful communication
How does an increase in load affect throughput during congestion collapse?
any further increase leads to a very rapid decrease of throughput, to ~ 0. This very rapid increase is congestion collapse.