The throughput of the system is defined as the the ratio of total number of bytes sent by the source to the time taken for the transfer. We present the TCP throughput results for several combinations of socket buffer and packet sizes. We then analyze the a representative connection by detailed tracing and explain the reasons for observed performance.
Figure 3: TCP Performance
The figure shows a clear peak at socket buffers of 4-8 KB with packet sizes of 512 B and 1 KB in the experimental network. This is primarily due to the fact that queue lengths and the link-level flow control algorithm used by the radios are optimized for these values. The commercial network performs best at a packet size of 512 bytes and degrades when the packet size is 1024 bytes; the difference is most likely because there was some other traffic in the system when we did our tests. This performance is tuned to buffer sizes used currently in most commercial operating systems and packet sizes used in most bulk and web transfer applications. Unfortunately, future operating systems (e.g., newer versions of Solaris) will perform path MTU discovery  which will then diversify the packet sizes used during transmissions. Our measurements imply that in the presence of this diversity the Metricom system will suffer a degradation in performance. In general, smaller segment sizes should be used, and fragmentation of segments done, only when the underlying link cannot support the transfer of larger sizes (e.g., Ethernets typically cannot support more than 1518 bytes per transmission) . The hardware MTU for the Ricochet wireless link is 1750 bytes. In general, it is damaging to the overall performance of the network for unnecessarily small packets to be sent (which will happen because the system currently performs best at 512 bytes); this problem with the Ricochet network can be solved by techniques at the Metricom Gateway.
Figure 4: TCP Retransmit Timer variability and its effect on the connection.
One of the most important parameters used by the TCP protocol is that of the the estimate of the connection round-trip time. This mean linear deviation of this value from the smoothed estimate is used to compute the value of the TCP retransmission timer, which is the amount of time TCP will wait for an unacknowledged segment before retransmitting. Ideally, the round-trip time will be relatively constant (i.e., low variance) and therefore accurately reflect the nature of the connection. Figure 4(a) shows a plot of individual TCP round-trip time estimate samples during a TCP connection over the Ricochet network. Observe that the individual estimates are highly variable, which makes the retransmission timer overly conservative. In general, it is correct for the retransmission timer to trigger a segment retransmission only after an amount of time dependent on both the round-trip time and the variance (or linear deviation), since this is the only way of avoiding spurious retransmissions. However, transport protocols should rely on timers for loss recovery only as a last resort, as explained in . Unfortunately, for connections like the one described here, this situation happens often. Better ways of performing loss recovery are required for TCP-like protocols and this is a topic of active research.
The reasons for this variability can be directly attributed to interaction between the forward packets and reverse flowing acknowledgements in the half-duplex radios as described above. A complete analysis of the effects of such networks and of large round-trip time variance on TCP performance is another topic of current research.
The effect on the connection can be seen in Figure 4(b) which shows the progression of segment sequence numbers with time. We see that 35% of the connection is idle as a result of only nine segment losses in a 200 segment transfer with only three coarse timeouts (six losses are recovered by TCP's fast retransmission mechanism).
In summary, the primary cause of TCP performance degradation is the half-duplex nature of the packet radios which severely decreases the performance of a bi-directional protocol such as TCP. Topics of research include improving performance and analyzing the scalability of the network.