Reliable data transfer with TCP
TCP provides reliable data transfer service to the application processes even when the underlying network service (IP service) is unreliable (loses, corrupts, garbles or duplicates packets). TCP uses checksum, sequence numbers, acknowledgements, timers, and retransmission to ensure correct and in order delivery of data to the application processes.
TCP views the data stream from the client application process as an ordered stream of bytes. TCP will grab chunks of this data (stored temporarily in the TCP send buffer), add its own header and pass it on to the network layer. A key field of the TCP header is the sequence number which indicates the position of the first byte of the TCP data segment in the data stream. The sequence number will allow the TCP receiver to identify segment losses, duplicate packets and to ensure correct delivery of the data stream to the server application process.
When a server receives a TCP segment, it acknowledges the same with an ACK segment (the segment carrying the acknowledgement has the ACK bit set to 1) and also conveys the sequence number of the first missing byte in the application data stream, in the acknowledgement number field of the TCP header. All acknowledgements are cumulative hence, all missing and out-of-order TCP segments will result in duplicate acknowledgements for the corresponding TCP segments.
TCP sender relies on sequence numbering and acknowledgements to ensure reliable transfer of the data stream. In the event of a timeout (no acknowledgement is received before the timer expires) or triple duplicate acknowledgements (multiple ACK segments indicate a lost or missing TCP segment) for a TCP segment, the TCP sender will retransmit the segment until the TCP segment is acknowledged (at least cumulatively). In Figure 8‑1, we illustrate retransmission by the TCP sender after a timeout for acknowledgement.
Figure 8‑1: An illustration of TCP retransmission with timeout. The segment with sequence number 4381 is lost in the network. The TCP client retransmits the segment after a timeout event
We will seek a simple file transfer with TCP over a lossy link to study reliable data transfer with TCP. We will simulate the network setup illustrated in Figure 8‑3 with the configuration parameters listed in detail to study reliable data transfer with TCP connection.
Open NetSim and click on Experiments > Internetworks> TCP> Reliable data transfer with TCP then click on the tile in the middle panel to load the example as shown in below Figure 8‑2.
Figure 8‑2: List of scenarios for the example of Reliable data transfer with TCP
NetSim UI displays the configuration file corresponding to this experiment as shown below Figure 8‑3.
Figure 8‑3: Network set up for studying the Reliable data transfer with TCP
The following set of procedures were done to generate this sample.
Step 1: A network scenario is designed in NetSim GUI comprising of 2 Wired Nodes and 2 Routers in the "Internetworks" Network Library.
Step 2: In the General Properties of Wired Node 1 i.e., Source and Wired Node 2 i.e., Destination, Wireshark Capture is set to Online. In Transport Layer ->Congestion plot enabled is set to True for Wired Node 1 and False for Wired Node_2.
Transport Layer properties Congestion plot is set to true.
Note: Accept default properties for Routers as well as the Links.
Step 3: Right-click on the link ID (of a wired link) and select Properties to access the link's properties. Set Max Uplink Speed and Max Downlink Speed to 10 Mbps. Set Uplink BER and Downlink BER to 0. Set Uplink Propagation Delay and Downlink Propagation Delay as 100 microseconds for the links 1 and 3 (between the Wired Node's and the routers). Set Uplink Propagation Delay and Downlink Propagation Delay as 50000 microseconds and Uplink BER and Downlink BER to 0.00001 for the backbone link connecting the routers, i.e., 2.
Step 4: Right click on the Application Flow App1 FTP and select Properties or click on the Application icon present in the top ribbon/toolbar.
An FTP Application is generated from Wired Node 1 i.e. Source to Wired Node 2 i.e. Destination with File Size set to 14600 Bytes and File Inter Arrival Time set to 20 Seconds.
Step 5: Click on Display Settings > Device IP check box in the NetSim GUI to view the network topology along with the IP address.
Step 6: Enable the plots and click on Run simulation. The simulation time is set to 20 seconds.
We aimed to transfer a file of size 14600 bytes (i.e., 10 packets, each of size 1460 bytes) with TCP over a lossy link. In Figure 8‑4, we report the application metrics data for FTP which indicates that the complete file was transferred.
Figure 8‑4: Application metrics table for FTP
We have enabled Wireshark Capture in Wired Node 1 and Wired Node 2. The PCAP files are generated at the end of the simulation and are shown in Figure 8‑5 and Figure 8‑6.
Figure 8‑5: PCAP file at Wired Node 1. TCP ensures reliable data transfer using timeout, duplicate ACKs and retransmissions.
Figure 8‑6: PCAP file at Wired Node 2
From Figure 8‑5 and Figure 8‑6, we note that the packets with sequence number 1461 and 5841 are errored in the network, which can also observe in Packet Trace.
After receiving duplicate ACKs (in lines 13, 14 of Figure 8‑5), TCP retransmits the errored packet. (In line 15 of Figure 8‑5).
TCP connection is terminated only after the complete file transfer is acknowledged which can be observed in Figure 8-6 (Line 25 and 26)