The MPLS WG Archive

Cell Relay Retreat>MPLS WG Archive>month:2001-Dec> msg00072



[Date Prev][Date Next][Thread Prev][Thread Next]  
  [Date Index][Thread Index][Author Index][Subject Index]

MPLS Fragmentation

  • From: David Charlap <David.Charlap@marconi.com>
  • Date: Wed, 12 Dec 2001 12:15:34 -0500

Neeraja Jasty wrote:
> 
> Section 3.4 of RFC says the following.
> 
> -----------------
> If a labeled IPv4 datagram is "too big", and the DF bit is not set
> in its IP header, then the LSR MAY silently discard the datagram.
> 
> Note that discarding such datagrams is a sensible procedure only if
> the "Maximum Initially Labeled IP Datagram Size" is set to a
> non-zero value in every LSR in the network which is capable of
> adding a label stack to an unlabeled IP datagram.
> -----------------
> 
> I didn't understand this. In general, If the DF bit is not set and
> the packet is too big, we fragment the packet.

You can't always fragment labeled packets.  The LSP may not be carrying
IP traffic, and the hardware may not be capable of fragmenting the
packets if they are IP.  (legacy ATM hardware is one such example,
although ATM's cell-based architecture probably won't impose an MTU
limit to begin with.)

Additionally, if you have a hard QoS requirement, fragmentation may
cause the packet flow to violate its QoS contract (additional IP headers
and additional label headers will cause more bandwidth to be used by
that IP datagram).  This may result in packet loss due to policing.  An
operator may choose to make a policy decision to disable fragmenting of
labeled packets in order to avoid the possibility of this situation.

> Next question
> RFC says
> ------------
> If the LSR chooses not to discard a labeled IPv4 datagram which is
> too big, or if the DF bit is set in that datagram, then it MUST
> execute the following algorithm:
> 
> 1. Strip off the label stack entries to obtain the IP datagram.
> 
> 2. Let N be the number of bytes in the label stack (i.e, 4 times
>    the number of label stack entries).
> 
> 3. If the IP datagram does NOT have the "Don't Fragment" bit set in
>    its IP header:
> ------------------
> 
> My question is, if the DF set, How can we fragment the packet?

We don't.  But in order to determine whether the DF bit is set (assuming
that the packet is IP, of course), you need to strip off label stack
entries to get to the IP header.  Steps 1 and 2 are describing how you
get to that header.

Step 3 explins how to fragment, if it is determined that DF is not set. 
Step 4 explains how to drop the packet if DF is set.

Note that locating the IP header under a labeled packet is not
necessarily an operation that executes in a fixed time interval - the
size of the label stack is not fixed or bounded.  The procedure required
to do fragmentation may therefore be expensive enough to noticeably
impact forwarding performance, which is another reason why an operator
(or vendor) may choose to not support fragmentation of labeled packets.

-- David