In Safire, both throughput and goodput are measured.
Throughput is the rate at which data is traversing a link (the gross bit rate that is transferred on the wire).
Goodput is the application-level throughput defined as the useful amount of application data per unit of time that the application layer transports in both client-to-server (upstream) and server-to-client (downstream) directions, excluding protocol overhead bits as well as retransmitted data packets. Goodput is always lower than the throughput.
The difference between goodput and throughput is that throughput is the measurement of all data flowing through a link whether it is useful data or not, while goodput is focused on useful data only. Throughput measurements, such as those reported by router interface statistics, cannot distinguish the nature of the data flowing through the interface — merely that bits have gone past. Throughput is not the same as goodput because throughput can include undesirable data such as data retransmissions, or overhead data such as protocol wrappers.
In the case of TCP/IP, retransmissions occur because TCP data did not make it to the recipient in a timely fashion. Receivers signal to senders with an ACK that data was received. If a sender does not receive an expected ACK for a block of data, it will retransmit that data. Retransmissions are a waste of bandwidth; the same data traversing a link twice is definitely not part of goodput. Although there are many reasons that retransmissions can occur, they very often happen during times of interface congestion. This means that while a completely full interface has maximized its throughput, it has very likely not maximized its goodput. In fact, the greater the onslaught of data congesting the interface, the larger the number of retransmissions will be.
Besides retransmissions, protocol overhead — the packet and frame headers and other data wrapped around application data — is also excluded from goodput measurement. While goodput is not a common measurement offered by network devices, data analytics software can often generate a goodput rate.
Factors that cause lower goodput than throughput:
- Retransmission of lost or corrupt packets caused by bit errors or packet dropping in congested network devices, such as firewall, switches and routers.
- Transport layer flow control and congestion control.
- Protocol overhead: transport layer, network layer and data link layer protocol overhead is typically included in the throughput, but is excluded from the goodput.