Bandwidth, Throughput, and Goodput
There are three basic measurements for network performance: bandwidth, throughput, and goodput.
Bandwidth
Bandwidth is determined by the medium’s physical properties and is measured in bits per second. For example, 10GBASE-T Ethernet has a maximum capacity of 10Gbps (gigabits per second). The available bandwidth of a connection is how Internet service providers (ISPs) advertise and charge for their services.
Throughput
Throughput is the actual rate of data transfer across the network and will be less than the bandwidth. This is because there is overhead on the link, such as routing protocols, Layer 2 minimum frame sizes (Ethernet), network congestion, and more.
Another important reason that throughput is less than bandwidth is because network engineers want to ensure the link has enough capacity to adjust to new demand bursts. For example, in Figure 28-1, Application 4 might not be able to start if the other three applications are consuming closer to 100% of the link’s capacity. For this reason, it is common for network designers to consider a link at 80% bandwidth utilization as full utilization.
Figure 28-1 Providing Enough Bandwidth for Another Application to Start
Goodput
Although less commonly mentioned, goodput is the measure of the actual payload of data that is transmitted across the network. Goodput will always be less than throughput because every data packet contains fields of overhead. For example, Ethernet has a 20-byte header and IPv6 has a 40-byte header. In addition, there will always be a small number of errors in data transmission where packets must be recent.
End-to-End Bandwidth
The bandwidth of an end-to-end path is limited by the lowest bandwidth link along the path. For example, a 1Gbps local link does not guarantee 1Gbps to all destinations. In Figure 28-2, Host A will have an end-to-end bandwidth of 1Gbps to Server E. However, Host A will be limited to 100Mbps to Server G and 10Mbps to Server H.
Figure 28-2 Lowest Bandwidth Link Determines End-to-End Bandwidth