Next: Reverse Loss
Up: Loss deduction algorithm
Previous: TCP basics
Deriving the loss rate in the forward direction, from source to target,
is straightforward. The source host can observe how many data packets it
has sent, and then can use TCP's error control mechanisms to query the
target host about which packets were received. Accordingly, we
divide our algorithm into two phases:
- Data-seeding. During this phase, the source host sends
a series of in-sequence TCP data packets to the target. Each packet sent
represents a binary sample of the loss rate, although the value of
each sample is not known at this point. At the end of the
data-seeding phase, the measurement period is concluded and any
packets lost after this point are not counted in the loss measurement.
- Hole-filling.
The hole-filling phase is about discovering which of the packets sent in
the previous phase have been lost. This phase starts by sending a TCP data
packet with a sequence number one greater than the last packet sent in
the data-seeding phase. If the target responds by acknowledging
this packet, then no packets have been lost. However, if any packets
have been lost there there will be a ``hole'' in the sequence space
and the target will respond with an acknowledgment indicating exactly
where the hole is. For each such acknowledgment, the source host retransmits
the corresponding packet, thereby ``filling the hole'', and records that
a packet was lost. We repeat this procedure until the last packet
sent in the data-seeding phase has been acknowledged. Unlike
data-seeding, hole-filling must be reliable and so the implementation
must timeout and retransmit its packets when expected acknowledgments
do not arrive.
Next: Reverse Loss
Up: Loss deduction algorithm
Previous: TCP basics
Stefan Savage
8/31/1999