05.08.2014 Views

An Investigation into Transport Protocols and Data Transport ...

An Investigation into Transport Protocols and Data Transport ...

An Investigation into Transport Protocols and Data Transport ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

4.5. TCP Variants 73<br />

TCP Timestamps [JBB92] (See Section 5.2.1), typically only 3 SACK blocks<br />

are expected in each ack.<br />

The extra redundancy in having more than one SACK Block in each ack is<br />

necessary due to the lossy nature of network paths <strong>and</strong> enables ‘robustness’<br />

when acks are lost. It is therefore also important that the SACK option<br />

always reports the block containing the most recently received segment, as<br />

this provides the sender with the most up-to-date information about the state<br />

of the network <strong>and</strong> the data receiver’s queue.<br />

However, the unacknowledged segments can be treated in different ways<br />

when accounting for outst<strong>and</strong>ing data. The approach promoted by the IETF<br />

is to consider all unacknowledged data to be outst<strong>and</strong>ing in the network.<br />

Holes within SACK blocks indicate potentially lost packets. However, they<br />

may also indicate reordered packets. The method by which SACK is implemented<br />

can be conservative or aggressive in the way it treats the holes<br />

within the SACK blocks. The Forward Acknowledgments (FACK) algorithm<br />

[MM96] takes the more aggressive approach <strong>and</strong> considers the unacknowledged<br />

holes between the SACK blocks as lost packets <strong>and</strong> therefore retransmits<br />

the data. The more conservative approach suggested by the IETF is<br />

to consider all unacknowledged segments to be outst<strong>and</strong>ing in the network.<br />

Although the FACK approach can result in better TCP performance it may<br />

increase the retransmission of unnecessary data.<br />

How the sender uses the information provided by SACK is implementationdependent.<br />

For example, Linux uses a Forward Acknowledgment (FACK) algorithm<br />

[MM96] <strong>An</strong>other implementation is sometimes referred to as Reno+SACK<br />

[MMFR96, MM96].

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!