Subject: TCP Reassembly Frequency

From: Mitchell Erblich <[email-masked]>
Date: Fri, 19 Feb 2010 23:03:22 -0800

Group,

		An intelligent colleague of mine has a belief that in today's internet
		that the functional requirement  of TCP's Reassembly is low, simply
		because most datagrams are rarely fragmented.

		Does anyone have a real-world public domain reference to confirm
		or deny this belief?

		Thank you for any response,
			
		Mitchell Erblich

---

From: Fernando Gont <[email-masked]>
Date: Sat, 20 Feb 2010 05:09:43 -0300

> 		because most datagrams are rarely fragmented.

If anything, he must be referring to *IP* reasembly.

> 		Does anyone have a real-world public domain reference to confirm

There's a reference to a paper about fragmentation in
http://www.cpni.gov.uk/Docs/InternetProtocol.pdf . I don't recall how
recent the data is, though.

Thanks,
-- 
Fernando Gont
e-mail: [email-masked] || [email-masked]
PGP Fingerprint: 7809 84F5 322E 45C7 F1C9 3945 96EE A9EF D076 FFF1

---

From: John Heffner <[email-masked]>
Date: Sat, 20 Feb 2010 09:55:24 -0500

Unless specifically configured otherwise, TCP implementations
generally do MTU Discovery, and all datagrams sent are marked with the
Don't Fragment bit set (implicit in IPv6).  So, for the most part
there is no reassembly of fragmented datagrams when using TCP.  The
TCP receiver does, however, have a "reassembly queue" where it
reassembles out-of-order data before delivering to the application.
Segments do often arrive out of order, either due to reordering in the
network or host, or due to loss and retransmission.

  -John

---

From: "Varghese Reji-A16389" <[email-masked]>
Date: Sun, 21 Feb 2010 00:58:30 +0800

Call it elementary, but I've a question here. What are the cases where a network or host does a re-ordering of packets such that they require reassembly at the destination? I was thinking that, even if there is some processing required at an intermediate point, the intermediate node will take care of releasing packets in the order they arrived.

Regards
Reji Varghese

-----Original Message-----
From: [email-masked] [mailto:[email-masked]] On Behalf Of John Heffner
Sent: Saturday, February 20, 2010 8:25 PM
To: Mitchell Erblich
Cc: tsvwg
Subject: Re: TCP Reassembly Frequency

Unless specifically configured otherwise, TCP implementations generally do MTU Discovery, and all datagrams sent are marked with the Don't Fragment bit set (implicit in IPv6).  So, for the most part there is no reassembly of fragmented datagrams when using TCP.  The TCP receiver does, however, have a "reassembly queue" where it reassembles out-of-order data before delivering to the application.
Segments do often arrive out of order, either due to reordering in the network or host, or due to loss and retransmission.

  -John

---

From: "Paul D. Amer" <[email-masked]>
Date: Sat, 20 Feb 2010 12:16:42 -0500

TCP segments require reordering most often when IP packets
containing the TCP segments get dropped by
congested routers, or get discarded by routers
when checksums fail due to bit errors encountered
on transit.

To recover from the dropped or discarded IP
packets and thus provide reliable data transfer,
the TCP sender will retransmit missing TCP segments.

The result is that TCP segments may arrive
at the TCP receiver out of order, requiring
the TCP receiver to use buffers and put the
segments back in order before delivering their
data to the application.

Paul Amer
Univ of Delaware

Varghese Reji-A16389 wrote:
> Call it elementary, but I've a question here. What are the cases where a network or host 

does a re-ordering of packets such that they require reassembly at the 
destination? I was

thinking that, even if there is some processing required at an 
intermediate point, the

intermediate node will take care of releasing packets in the order they 
arrived.

---

From: John Heffner <[email-masked]>
Date: Sat, 20 Feb 2010 12:17:01 -0500

Reordering generally occurs when there is parallelism.  This can be in
the form of packets taking different physical paths (stiping, or a
routing change), inside the forwarding devices, or in the end systems.
 Most devices work pretty hard to ensure there is no reordering
because some protocols don't handle it well.

Here's one paper, if you have access to the ACM portal:
http://portal.acm.org/citation.cfm?id=323984
Here's another paper, not behind a paywall:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.105.6021&rep=rep1&type=pdf
And another: http://cd-docdb.fnal.gov/cgi-bin/RetrieveFile?docid=3220&version=2&filename=article_4034.pdf

  -John

---

From: Joe Touch <[email-masked]>
Date: Sat, 20 Feb 2010 10:25:35 -0800

John Heffner wrote:
> there is no reassembly of fragmented datagrams when using TCP. 

However, tunnels sometimes do use IP reassembly because it's not always
possible to propagate MTU signals back to the source (due to the amount
of state needed, or because of encryption in the tunnels).

Joe