[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: New draft: "Link Adaptation for IPv6-in-IPv4 Tunnels"
Mark,
Another implementation option which wasn't mentioned is to
designate a tunnel pseudo-interface that acts as a "lid" on
the can-of-worms consisting of all active tunnels configured
on the endpoint. The lid would present a consistent MTU
(e.g., 9180 bytes) to upper layers, e.g., for setting the
TCP MSS, but there may be instances of locally-generated
ICMPv6 "packet too big" messages coming from tunnels inside
the can. Again, this seems outside the scope of the
specification - do you concur?
Fred
fred.l.templin@boeing.com
> -----Original Message-----
> From: Templin, Fred L
> Sent: Friday, August 19, 2005 8:17 AM
> To: Mark Smith
> Cc: v6ops@ops.ietf.org
> Subject: RE: New draft: "Link Adaptation for IPv6-in-IPv4 Tunnels"
>
> Mark,
>
> Understand your point about setting TCP MSS, but regardless of
> whether the tunnel occurs on the same node as one of the TCPs
> or somewhere along the path the key point is whether/not the
> implementation takes the SHOULD and configures the largest
> possible MTU during tunnel setup time. This might require some
> pre-probing of SEGSIZE, e.g., when sending IPv6 ND messages
> during tunnel setup.
>
> Alternatively, the tunnel could optimistically set a larger MTU
> and return locally-generated ICMPv6 "packet too big" messages
> in case it gets ICMPv4 "fragmentation needed" messages back
> from the network. But, this method is susceptible to path
> MTU-related black-holes when the network fails to deliver
> accurate ICMPv4s.
>
> The best implementations might do some kind of fusion of the
> two approaches, e.g., optimistically set a larger initial MTU
> and actively probe the tunnel segment size in the early going
> while watching for ICMPv4's. So, the degree of sophistication
> here is really up to the implementation rather than being
> mandated by the spec.
>
> Thanks - Fred
> fred.l.templin@boeing.com
>
>
> > -----Original Message-----
> > From: Mark Smith
> > [mailto:ipng@69706e6720323030352d30312d31340a.nosense.org]
> > Sent: Friday, August 19, 2005 12:38 AM
> > To: Templin, Fred L
> > Cc: v6ops@ops.ietf.org
> > Subject: Re: New draft: "Link Adaptation for IPv6-in-IPv4 Tunnels"
> >
> > Hi Fred,
> >
> > On Thu, 18 Aug 2005 10:20:01 -0700
> > "Templin, Fred L" <Fred.L.Templin@boeing.com> wrote:
> >
> > > Mark,
> > >
> > > Thanks for the comments. The paragraph you cited needs to
> be read in
> > > conjunction with the one that immediately follows, however, i.e.:
> > >
> > > Since LinkMTU values larger than 1280 bytes may result
> > in [ICMPv6]
> > > "packet too big" messages due to temporary segmentation
> > restrictions
> > > (see: section 3.3), ULPs SHOULD employ a probing
> > strategy that begins
> > > with a smaller payload size (on the order of 1KB) and
> > probes upward
> > > [PMTUD]. (Note that this may not be possible for some ULPs.)
> > >
> > > This says that ULPs (like TCP) can do their own probing
> if they want
> > > to discover larger MTUs beyond what the initial tunnel
> interface MTU
> > > allows independent of the tunnel segment size probing. BTW,
> > this is true
> > > also for the case of no tunnel interfaces in the path,
> > e.g., a TCP could
> > > start out on a path with a small MTU and re-routed to an
> > all-GIGE path.
> > >
> >
> > Is this based on the assumption that the tunnel is a link within the
> > path, rather than possibly at one end of it ?
> >
> > The reason I ask is that I was looking at this issue in the
> context of
> > one end of the TCP connection being on the same node as the
> tunnel end
> > point, which happens to be how I'm currently running IPv6 -
> this PC is
> > both a tunnel end point and the node where my TCP connections
> > originate.
> >
> > For example, say Node A is both the tunnel end point and one
> > of the TCP
> > connection end points. Node A starts the 3 way TCP hand shake
> > with remote
> > node B, which is sitting behind, rather than on, the remote tunnel
> > end-point. In that case, Node A would set it's announced
> MSS value to
> > something derived from the initial tunnel MTU i.e. 1280
> > bytes, or a MSS
> > value of 1220. The other end might set MSS to 1440, because it is
> > attached to a 1500 byte MTU ethernet.
> >
> > Even though there might be a larger possible path MTU between
> > Node A and
> > B, including the tunnel within that path, e.g., 1500 - 20
> (IPv4) - 40
> > (IPv6) or a path MTU of 1460, Node B would never attempt to
> or cause a
> > probe for anything larger, because it would never send a
> > segment to Node
> > A that was larger than Node A's initial MSS value.
> >
> > I'm not sure if TCP adapts to a larger local interface MTU if
> > it changes
> > during the connection. If it does, Node A could send segments larger
> > than the initial MTU (minus IPv6 and TCP hdrs) to Node B if
> the local
> > MTU increases, up to the maximum segment size that Node B
> > announced. If
> > TCP doesn't behave that way, then Node A would also never
> > send a larger
> > than it's original MTU derived segment to Node B, also never
> > causing the
> > tunnel MTU to increase. That would mean that in both
> directions of the
> > path, the MTU would never be increased beyond the initial tunnel MTU
> > value.
> >
> > My thoughts were that setting the initial tunnel MTU to a
> > value derived
> > from todays common Internet path MTU, rather than IPv6's minimum
> > required MTU value, might overcome this problem in this
> scenario where
> > the TCP and tunnel end points are on the same node, without
> > it being too
> > detrimental to any other cases, such as when the tunnel is
> > within the path,
> > rather than at one of the ends of it.
> >
> > HTH,
> > Mark.
> >
>
>