|
|
|
Date Posted: 2005-01-31 06:54 |
|
I think reassembly should only happen on the client.
Communication between an edge router and its client should be no different than from one router to another router with one exception: the MTU is theoretically unlimited (65521 bytes in practice). The client should pass a fragment to the router containing a full header so that the router knows where to forward the data. If needed, the router then fragments the 1 "fragment" it receives from the client to accomodate the MTUs between it and other routers. If the MTU on the next hop is greater than or equal to the size of the incoming fragment, nothing needs to be done with that fragment--it can be passed along untouched. I think it would be too much overhead to have the routers attempt reassembly (fragment, reassemble, fragment, reassemble, fragment, reassemble, etc.). I think the last router should pass along the fragments it receives to the client for reassembly.
For example:
ClientA sends 500B segment as 514 byte fragment to Router1 (more flag = 0). The MTU between Router1 and Router2 is 100B, so the segment is broken into 6 fragments: 100B, 100B, 100B, 100B, 100B, and 84B (including 14B headers). The MTU between Router2 and Router3 is 150B, so Router2 makes no changes to the fragments and simply forwards them to Router3. The MTU between Router3 and ClientB is unlimited, so Router3 forwards the fragments unchanged to ClientB. ClientB then reassembles the fragments into the original segment.
|
|
|