home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_n_r / draft-rosen-tag-stack-03.txt < prev    next >
Text File  |  1997-08-21  |  39KB  |  1,085 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                      Eric C. Rosen
  8. Internet Draft                                             Yakov Rekhter
  9. Expiration Date: January 1998                              Daniel Tappan
  10.                                                           Dino Farinacci
  11.                                                             Guy Fedorkow
  12.                                                      Cisco Systems, Inc.
  13.  
  14.                                                                  Tony Li
  15.                                                   Juniper Networks, Inc.
  16.  
  17.                                                               Alex Conta
  18.                                                      Lucent Technologies
  19.  
  20.                                                                July 1997
  21.  
  22.  
  23.                  Label Switching: Label Stack Encodings
  24.  
  25.  
  26.                       draft-rosen-tag-stack-03.txt
  27.  
  28. Status of this Memo
  29.  
  30.    This document is an Internet-Draft.  Internet-Drafts are working
  31.    documents of the Internet Engineering Task Force (IETF), its areas,
  32.    and its working groups.  Note that other groups may also distribute
  33.    working documents as Internet-Drafts.
  34.  
  35.    Internet-Drafts are draft documents valid for a maximum of six months
  36.    and may be updated, replaced, or obsoleted by other documents at any
  37.    time.  It is inappropriate to use Internet-Drafts as reference
  38.    material or to cite them other than as "work in progress."
  39.  
  40.    To learn the current status of any Internet-Draft, please check the
  41.    "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
  42.    Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
  43.    munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
  44.    ftp.isi.edu (US West Coast).
  45.  
  46. Abstract
  47.  
  48.    'Multi-Protocol Label Switching (MPLS)' [1,2,9] requires a set of
  49.    procedures for augmenting network layer packets with 'label stacks'
  50.    (sometimes called 'tag stacks'), thereby turning them into 'labeled
  51.    packets'.  Routers which support MPLS are known as 'Label Switching
  52.    Routers', or 'LSRs'.  In order to transmit a labeled packet on a
  53.    particular data link, an LSR must support an encoding technique
  54.    which, given a label stack and a network layer packet, produces a
  55.  
  56.  
  57.  
  58. Rosen, et al.                                                   [Page 1]
  59.  
  60.  
  61. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  62.  
  63.  
  64.    labeled packet.  This document specifies the encoding to be used by
  65.    an LSR in order to transmit labeled packets on PPP data links and on
  66.    LAN data links.  This document also specifies rules and procedures
  67.    for processing the various fields of the label stack encoding.
  68.  
  69.  
  70.  
  71. Table of Contents
  72.  
  73.     1      Introduction  ...........................................   3
  74.     1.1    Specification of Requirements  ..........................   3
  75.     2      The Label Stack  ........................................   4
  76.     2.1    Encoding the Label Stack  ...............................   4
  77.     2.2    Determining the Network Layer Protocol  .................   7
  78.     2.3    Processing the Time to Live Field  ......................   7
  79.     2.3.1  Definitions  ............................................   7
  80.     2.3.2  Protocol-independent rules  .............................   7
  81.     2.3.3  IP-dependent rules  .....................................   8
  82.     3      Fragmentation and Path MTU Discovery  ...................   8
  83.     3.1    Terminology  ............................................   9
  84.     3.2    Maximum Initially Labeled IP Datagram Size  .............  10
  85.     3.3    When are Labeled IP Datagrams Too Big?  .................  11
  86.     3.4    Processing Labeled IPv4 Datagrams which are Too Big  ....  12
  87.     3.5    Processing Labeled IPv6 Datagrams which are Too Big  ....  13
  88.     3.6    Implications with respect to Path MTU Discovery  ........  14
  89.     3.6.1  Tunneling through a Transit Routing Domain  .............  14
  90.     3.6.2  Tunneling Private Addresses through a Public Backbone  ..  14
  91.     4      Transporting Labeled Packets over PPP  ..................  15
  92.     4.1    Introduction  ...........................................  15
  93.     4.2    A PPP Network Control Protocol for MPLS  ................  16
  94.     4.3    Sending Labeled Packets  ................................  17
  95.     4.4    Label Switching Control Protocol Configuration Options  .  17
  96.     5      Transporting Labeled Packets over LAN Media  ............  17
  97.     6      Security Considerations  ................................  18
  98.     7      Authors' Addresses  .....................................  18
  99.     8      References  .............................................  19
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115. Rosen, et al.                                                   [Page 2]
  116.  
  117.  
  118. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  119.  
  120.  
  121. 1. Introduction
  122.  
  123.    "Multi-Protocol Label Switching (MPLS)" [1,2,9] requires a set of
  124.    procedures for augmenting network layer packets with "label stacks"
  125.    (sometimes called "tag stacks"), thereby turning them into "labeled
  126.    packets".  Routers which support MPLS are known as "Label Switching
  127.    Routers", or "LSRs".  In order to transmit a labeled packet on a
  128.    particular data link, an LSR must support an encoding technique
  129.    which, given a label stack and a network layer packet, produces a
  130.    labeled packet.
  131.  
  132.    This document specifies the encoding to be used by an LSR in order to
  133.    transmit labeled packets on PPP data links and on LAN data links.
  134.  
  135.    This document also specifies rules and procedures for processing the
  136.    various fields of the label stack encoding.  Since MPLS is
  137.    independent of any particular network layer protocol, the majority of
  138.    such procedures are also protocol-independent.  A few, however, do
  139.    differ for different protocols.  In this document, we specify the
  140.    protocol-independent procedures, and we specify the protocol-
  141.    dependent procedures for IPv4.
  142.  
  143.    LSRs that are implemented on certain switching devices (such as ATM
  144.    switches) may use different encoding techniques for encoding the top
  145.    one or two entries of the label stack.  When the label stack has
  146.    additional entries, however, the encoding technique described in this
  147.    document may be used for the additional label stack entries.
  148.  
  149.  
  150. 1.1. Specification of Requirements
  151.  
  152.    In this document, several words are used to signify the requirements
  153.    of the specification.  These words are often capitalized.
  154.  
  155.         MUST
  156.  
  157.         This word, or the adjective "required", means that the
  158.         definition is an absolute requirement of the specification.
  159.  
  160.         MUST NOT
  161.  
  162.         This phrase means that the definition is an absolute prohibition
  163.         of the specification.
  164.  
  165.         SHOULD
  166.  
  167.         This word, or the adjective "recommended", means that there may
  168.         exist valid reasons in particular circumstances to ignore this
  169.  
  170.  
  171.  
  172. Rosen, et al.                                                   [Page 3]
  173.  
  174.  
  175. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  176.  
  177.  
  178.         item, but the full implications must be understood and carefully
  179.         weighed before choosing a different course.
  180.  
  181.         MAY
  182.  
  183.         This word, or the adjective "optional", means that this item is
  184.         one of an allowed set of alternatives.  An implementation which
  185.         does not include this option MUST be prepared to interoperate
  186.         with another implementation which does include the option.
  187.  
  188.  
  189. 2. The Label Stack
  190.  
  191. 2.1. Encoding the Label Stack
  192.  
  193.    On both PPP and LAN data links, the label stack is represented as a
  194.    sequence of "label stack entries".  Each label stack entry is
  195.    represented by 4 octets.  This is shown in Figure 1.
  196.  
  197.     0                   1                   2                   3
  198.     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  199.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Label
  200.    |                Label                  | CoS |S|       TTL     | Stack
  201.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Entry
  202.  
  203.                        Label:  Label Value, 20 bits
  204.                        CoS:    Class of Service, 3 bits
  205.                        S:      Bottom of Stack, 1 bit
  206.                        TTL:    Time to Live, 8 bits
  207.  
  208.                                  Figure 1
  209.  
  210.  
  211.    The label stack entries appear AFTER the data link layer headers, but
  212.    BEFORE any network layer headers.  The top of the label stack appears
  213.    earliest in the packet, and the bottom appears latest.  The network
  214.    layer packet immediately follows the label stack entry which has the
  215.    S bit set.
  216.  
  217.    Each label stack entry is broken down into the following fields:
  218.  
  219.       1. Bottom of Stack (S)
  220.  
  221.          This bit is set to one for the last entry in the label stack
  222.          (i.e., for the bottom of the stack), and zero for all other
  223.          label stack entries.
  224.  
  225.  
  226.  
  227.  
  228.  
  229. Rosen, et al.                                                   [Page 4]
  230.  
  231.  
  232. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  233.  
  234.  
  235.       2. Time to Live (TTL)
  236.  
  237.          This eight-bit field is used to encode a time-to-live value.
  238.          The processing of this field is described in section 2.3.
  239.  
  240.       3. Class of Service (CoS)
  241.  
  242.          This three-bit field is used to identify a "Class of Service".
  243.          The setting of this field is intended to affect the scheduling
  244.          and/or discard algorithms which are applied to the packet as it
  245.          is transmitted through the network.
  246.  
  247.          When an unlabeled packet is initially labeled, the value
  248.          assigned to the CoS field in the label stack entry is
  249.          determined by policy.  Some possible policies are:
  250.  
  251.            - the CoS value is a function of the IP ToS value
  252.  
  253.            - the CoS value is a function of the packet's input interface
  254.  
  255.            - the CoS value is a function of the "flow type"
  256.  
  257.          Of course, many other policies are also possible.
  258.  
  259.          When an additional label is pushed onto the stack of a packet
  260.          that is already labeled:
  261.  
  262.            - in general, the value of the CoS field in the new top stack
  263.              entry should be equal to the value of the CoS field of the
  264.              old top stack entry;
  265.  
  266.            - however, in some cases, most likely at boundaries between
  267.              network service providers, the value of the CoS field in
  268.              the new top stack entry may be determined by policy.
  269.  
  270.       4. Label Value
  271.  
  272.          This 20-bit field carries the actual value of the Label.
  273.  
  274.          When a labeled packet is received, the label value at the top
  275.          of the stack is looked up.  As a result of a successful lookup
  276.          one learns:
  277.  
  278.             (a) information needed to forward the packet, such as the
  279.                 next hop and the outgoing data link encapsulation;
  280.                 however, the precise queue to put the packet on, or
  281.                 information as to how to schedule the packet, may be a
  282.                 function of both the label value AND the CoS field
  283.  
  284.  
  285.  
  286. Rosen, et al.                                                   [Page 5]
  287.  
  288.  
  289. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  290.  
  291.  
  292.                 value;
  293.  
  294.             (b) the operation to be performed on the label stack before
  295.                 forwarding; this operation may be to replace the top
  296.                 label stack entry with another, or to pop an entry off
  297.                 the label stack, or to replace the top label stack entry
  298.                 and then to push one or more additional entries on the
  299.                 label stack.
  300.  
  301.          There are several reserved label values:
  302.  
  303.               i. A value of 0 represents the "IPv4 Explicit NULL Label".
  304.                  This label value is only legal when it is the sole
  305.                  label stack entry.  It indicates that the label stack
  306.                  must be popped, and the forwarding of the packet must
  307.                  then be based on the IPv4 header.
  308.  
  309.              ii. A value of 1 represents the "Router Alert Label".  This
  310.                  label value is legal anywhere in the label stack except
  311.                  at the bottom.  When a received packet contains this
  312.                  label value at the top of the label stack, it is
  313.                  delivered to a local software module for processing.
  314.                  The actual forwarding of the packet is determined by
  315.                  the label beneath it in the stack.  However, if the
  316.                  packet is forwarded further, the Router Alert Label
  317.                  should be pushed back onto the label stack before
  318.                  forwarding.  The use of this label is analogous to the
  319.                  use of the "Router Alert Option" in IP packets [6].
  320.                  Since this label cannot occur at the bottom of the
  321.                  stack, it is not associated with a particular network
  322.                  layer protocol.
  323.  
  324.             iii. A value of 2 represents the "IPv6 Explicit NULL Label".
  325.                  This label value is only legal when it is the sole
  326.                  label stack entry.  It indicates that the label stack
  327.                  must be popped, and the forwarding of the packet must
  328.                  then be based on the IPv6 header.
  329.  
  330.              iv. A value of 3 represents the "Implicit NULL Label".
  331.                  This is a label that an LSR may assign and distribute,
  332.                  but which never actually appears in the encapsulation.
  333.                  When an LSR would otherwise replace the label at the
  334.                  top of the stack with a new label, but the new label is
  335.                  "Implicit NULL", the LSR will pop the stack instead of
  336.                  doing the replacement.  Although this value may never
  337.                  appear in the encapsulation, it needs to be specified
  338.                  in the Label Distribution Protocol, so a value is
  339.                  reserved.
  340.  
  341.  
  342.  
  343. Rosen, et al.                                                   [Page 6]
  344.  
  345.  
  346. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  347.  
  348.  
  349.               v. Values 4-16 are reserved.
  350.  
  351.  
  352. 2.2. Determining the Network Layer Protocol
  353.  
  354.    When the last label is popped from the label stack, it is necessary
  355.    to determine the particular network layer protocol which is being
  356.    carried.  Note that the label stack entries carry no explicit field
  357.    to identify the network layer header.  Rather, this must be inferable
  358.    from the value of the label which is popped from the bottom of the
  359.    stack.  This means that when the first label is pushed onto a network
  360.    layer packet, the label must be one which is used ONLY for packets of
  361.    a particular network layer.  Furthermore, whenever that label is
  362.    replaced by another label value during a packet's transit, the new
  363.    value must also be one which is used only for packets of that network
  364.    layer.
  365.  
  366.  
  367. 2.3. Processing the Time to Live Field
  368.  
  369. 2.3.1. Definitions
  370.  
  371.    The "incoming TTL" of a labeled packet is defined to be the value of
  372.    the TTL field of the top label stack entry when the packet is
  373.    received.
  374.  
  375.    The "outgoing TTL" of a labeled packet is defined to be the larger
  376.    of:
  377.  
  378.       (a) one less than the incoming TTL,
  379.       (b) zero.
  380.  
  381.  
  382. 2.3.2. Protocol-independent rules
  383.  
  384.    If the outgoing TTL of a labeled packet is 0, then the labeled packet
  385.    MUST NOT be further forwarded; the packet's lifetime in the network
  386.    is considered to have expired.
  387.  
  388.    Depending on the label value in the label stack entry, the packet MAY
  389.    be silently discarded, or the packet MAY have its label stack
  390.    stripped off, and passed as an unlabeled packet to the ordinary
  391.    processing for network layer packets which have exceeded their
  392.    maximum lifetime in the network.  However, even if the label stack is
  393.    stripped, the packet MUST NOT be further forwarded.
  394.  
  395.    When a labeled packet is forwarded, the TTL field of the label stack
  396.    entry at the top of the label stack must be set to the outgoing TTL
  397.  
  398.  
  399.  
  400. Rosen, et al.                                                   [Page 7]
  401.  
  402.  
  403. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  404.  
  405.  
  406.    value.
  407.  
  408.    Note that the outgoing TTL value is a function solely of the incoming
  409.    TTL value, and is independent of whether any labels are pushed or
  410.    popped before forwarding.  There is no significance to the value of
  411.    the TTL field in any label stack entry which is not at the top of the
  412.    stack.
  413.  
  414.  
  415. 2.3.3. IP-dependent rules
  416.  
  417.    We define the "IP TTL" field to be the value of the IPv4 TTL field,
  418.    or the value of the IPv6 Hop Limit field, whichever is applicable.
  419.  
  420.    When an IP packet is first labeled, the TTL field of the label stack
  421.    entry MUST BE set to the value of the IP TTL field.  (If the IP TTL
  422.    field needs to be decremented, as part of the IP processing, it is
  423.    assumed that this has already been done.)
  424.  
  425.    When a label is popped, and the resulting label stack is empty, then
  426.    the value of the IP TTL field MUST BE replaced with the outgoing TTL
  427.    value, as defined above.  In IPv4 this also requires modification of
  428.    the IP header checksum.
  429.  
  430.  
  431. 3. Fragmentation and Path MTU Discovery
  432.  
  433.    Just as it is possible to receive an unlabeled IP datagram which is
  434.    too large to be transmitted on its output link, it is possible to
  435.    receive a labeled packet which is too large to be transmitted on its
  436.    output link.
  437.  
  438.    It is also possible that a received packet (labeled or unlabeled)
  439.    which was originally small enough to be transmitted on that link
  440.    becomes too large by virtue of having one or more additional labels
  441.    pushed onto its label stack.  In label switching, a packet may grow
  442.    in size if additional labels get pushed on.  Thus if one receives a
  443.    labeled packet with a 1500-byte frame payload, and pushes on an
  444.    additional label, one needs to forward it as frame with a 1504-byte
  445.    payload.
  446.  
  447.    This section specifies the rules for processing labeled packets which
  448.    are "too large".  In particular, it provides rules which ensure that
  449.    hosts implementing RFC 1191 Path MTU Discovery, and hosts using IPv6,
  450.    will be able to generate IP datagrams that do not need fragmentation,
  451.    even if they get labeled as the traverse the network.
  452.  
  453.    In general, hosts which do not implement RFC 1191 Path MTU Discovery
  454.  
  455.  
  456.  
  457. Rosen, et al.                                                   [Page 8]
  458.  
  459.  
  460. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  461.  
  462.  
  463.    send IP datagrams which contain no more than 576 bytes.  Since the
  464.    MTUs in use on most data links today are 1500 bytes or more, the
  465.    probability that such datagrams will need to get fragmented, even if
  466.    they get labeled, is very small.
  467.  
  468.    Some hosts that do not implement RFC 1191 Path MTU Discovery will
  469.    generate IP datagrams containing 1500 bytes, as long as the IP Source
  470.    and Destination addresses are on the same subnet.  These datagrams
  471.    will not pass through routers, and hence will not get fragmented.
  472.  
  473.    Unfortunately, some hosts will generate IP datagrams containing 1500
  474.    bytes, as long the IP Source and Destination addresses do not have
  475.    the same classful network number.  This is the one case in which
  476.    there is any risk of fragmentation when such datagrams get labeled.
  477.    (Even so, fragmentation is not likely unless the packet must traverse
  478.    an ethernet of some sort between the time it first gets labeled and
  479.    the time it gets unlabeled.)
  480.  
  481.    This document specifies procedures which allow one to configure the
  482.    network so that large datagrams from hosts which do not implement
  483.    Path MTU Discovery get fragmented just once, when they are first
  484.    labeled.  These procedures make it possible (assuming suitable
  485.    configuration) to avoid any need to fragment packets which have
  486.    already been labeled.
  487.  
  488.  
  489. 3.1. Terminology
  490.  
  491.    With respect to a particular data link, we can use the following
  492.    terms:
  493.  
  494.      - Frame Payload:
  495.  
  496.        The contents of a data link frame, excluding any data link layer
  497.        headers or trailers (e.g., MAC headers, LLC headers, 802.1Q or
  498.        802.1p headers, PPP header, frame check sequences, etc.).
  499.  
  500.        When a frame is carrying an an unlabeled IP datagram, the Frame
  501.        Payload is just the IP datagram itself.  When a frame is carrying
  502.        a labeled IP datagram, the Frame Payload consists of the label
  503.        stack entries and the IP datagram.
  504.  
  505.      - Conventional Maximum Frame Payload Size:
  506.  
  507.        The maximum Frame Payload size allowed by data link standards.
  508.        For example, the Conventional Maximum Frame Payload Size for
  509.        ethernet is 1500 bytes.
  510.  
  511.  
  512.  
  513.  
  514. Rosen, et al.                                                   [Page 9]
  515.  
  516.  
  517. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  518.  
  519.  
  520.      - True Maximum Frame Payload Size:
  521.  
  522.        The maximum size frame payload which can be sent and received
  523.        properly by the interface hardware attached to the data link.
  524.  
  525.        On ethernet and 802.3 networks, it is believed that the True
  526.        Maximum Frame Payload Size is 4-8 bytes larger than the
  527.        Conventional Maximum Frame Payload Size (as long neither an
  528.        802.1Q header nor an 802.1p header is present, and as long as
  529.        neither can be added by a switch or bridge while a packet is in
  530.        transit to its next hop).  For example, it is believed that most
  531.        ethernet equipment could correctly send and receive packets
  532.        carrying a payload of 1504 or perhaps even 1508 bytes, at least,
  533.        as long as the ethernet header does not have an 802.1Q or 802.1p
  534.        field.
  535.  
  536.        On PPP links, the True Maximum Frame Payload Size may be
  537.        virtually unbounded.
  538.  
  539.      - Effective Maximum Frame Payload Size for Labeled Packets:
  540.  
  541.        This is either be the Conventional Maximum Frame Payload Size or
  542.        the True Maximum Frame Payload Size, depending on the
  543.        capabilities of the equipment on the data link and the size of
  544.        the ethernet header being used.
  545.  
  546.      - Initially Labeled IP Datagram
  547.  
  548.        Suppose that an unlabeled IP datagram is received at a particular
  549.        LSR, and that the the LSR pushes on a label before forwarding the
  550.        datagram.  Such a datagram will be called an Initially Labeled IP
  551.        Datagram at that LSR.
  552.  
  553.      - Previously Labeled IP Datagram
  554.  
  555.        An IP datagram which had already been labeled before it was
  556.        received by a particular LSR.
  557.  
  558.  
  559. 3.2. Maximum Initially Labeled IP Datagram Size
  560.  
  561.    Every LSR which is capable of
  562.  
  563.       (a) receiving an unlabeled IP datagram,
  564.       (b) adding a label stack to the datagram, and
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571. Rosen, et al.                                                  [Page 10]
  572.  
  573.  
  574. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  575.  
  576.  
  577.       (c) forwarding the resulting labeled packet,
  578.  
  579.    MUST support a configuration parameter known as the "Maximum IP
  580.    Datagram Size for Labeling", which can be set to a non-negative
  581.    value.
  582.  
  583.    If this configuration parameter is set to zero, it has no effect.
  584.  
  585.    If it is set to a positive value, it is used in the following way.
  586.    If:
  587.       (a) an unlabeled IP datagram is received, and
  588.       (b) that datagram does not have the DF bit set in its IP header,
  589.           and
  590.       (c) that datagram needs to be labeled before being forwarded, and
  591.       (d) the size of the datagram (before labeling) exceeds the value
  592.           of the parameter,
  593.    then
  594.       (a) the datagram must be broken into fragments, each of whose size
  595.           is no greater than the value of the parameter, and
  596.       (b) each fragment must be labeled and then forwarded.
  597.  
  598.    If this configuration parameter is set to a value of 1488, for
  599.    example, then any unlabeled IP datagram containing more than 1488
  600.    bytes will be fragmented before being labeled.  Each fragment will be
  601.    capable of being carried on a 1500-byte data link, without further
  602.    fragmentation, even if as many as three labels are pushed onto its
  603.    label stack.
  604.  
  605.    In other words, setting this parameter to a non-zero value allows one
  606.    to eliminate all fragmentation of Previously Labeled IP Datagrams,
  607.    but it may cause some unnecessary fragmentation of Initially Labeled
  608.    IP Datagrams.
  609.  
  610.    Note that the parameter has no effect on IP Datagrams that have the
  611.    DF bit set, which means that it has no effect on Path MTU Discovery.
  612.  
  613.  
  614. 3.3. When are Labeled IP Datagrams Too Big?
  615.  
  616.    A labeled IP datagram whose size exceeds the Conventional Maximum
  617.    Frame Payload Size of the data link over which it is to be forwarded
  618.    MAY be considered to be "too big".
  619.  
  620.    A labeled IP datagram whose size exceeds the True Maximum Frame
  621.    Payload Size of the data link over which it is to be forwarded MUST
  622.    be considered to be "too big".
  623.  
  624.    A labeled IP datagram which is not "too big" MUST be transmitted
  625.  
  626.  
  627.  
  628. Rosen, et al.                                                  [Page 11]
  629.  
  630.  
  631. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  632.  
  633.  
  634.    without fragmentation.
  635.  
  636.  
  637. 3.4. Processing Labeled IPv4 Datagrams which are Too Big
  638.  
  639.    If a labeled IPv4 datagram is "too big", and the DF bit is not set in
  640.    its IP header, then the LSR MAY discard the datagram.
  641.  
  642.    Note that discarding such datagrams is a sensible procedure only if
  643.    the "Maximum Initially Labeled IP Datagram Size" is set to a non-zero
  644.    value in every LSR in the network which is capable of adding a label
  645.    stack to an unlabeled IP datagram.
  646.  
  647.    If the LSR chooses not to discard a labeled IPv4 datagram which is
  648.    too big, or if the DF bit is set in that datagram, then it MUST
  649.    execute the following algorithm:
  650.  
  651.       1. Strip off the label stack entries to obtain the IP datagram.
  652.  
  653.       2. Let N be the number of bytes in the label stack (i.e, 4 times
  654.          the number of label stack entries).
  655.  
  656.       3. If the IP datagram does NOT have the "Don't Fragment" bit set
  657.          in its IP header:
  658.  
  659.             a. convert it into fragments, each of which MUST be at least
  660.                N bytes less than the Effective Maximum Frame Payload
  661.                Size.
  662.  
  663.             b. Prepend each fragment with the same label header that
  664.                would have been on the original datagram had
  665.                fragmentation not been necessary.
  666.  
  667.             c. Forward the fragments
  668.  
  669.       4. If the IP datagram has the "Don't Fragment" bit set in its IP
  670.          header:
  671.  
  672.             a. the datagram MUST NOT be forwarded
  673.  
  674.             b. Create an ICMP Destination Unreachable Message:
  675.  
  676.                     i. set its Code field (RFC 792) to "Fragmentation
  677.                        Required and DF Set",
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685. Rosen, et al.                                                  [Page 12]
  686.  
  687.  
  688. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  689.  
  690.  
  691.                    ii. set its Next-Hop MTU field (RFC 1191) to the
  692.                        difference between the Effective Maximum Frame
  693.                        Payload Size and the value of N
  694.  
  695.             c. If possible, transmit the ICMP Destination Unreachable
  696.                Message to the source of the of the discarded datagram.
  697.  
  698.  
  699. 3.5. Processing Labeled IPv6 Datagrams which are Too Big
  700.  
  701.    To process a labeled IPv6 datagram which is too big, an LSR MUST
  702.    execute the following algorithm:
  703.  
  704.       1. Strip off the label stack entries to obtain the IP datagram.
  705.  
  706.       2. Let N be the number of bytes in the label stack (i.e, 4 times
  707.          the number of label stack entries).
  708.  
  709.       3. If the IP datagram contains more than 576 bytes (not counting
  710.          the label stack entries), then:
  711.  
  712.             a. Create an ICMP Packet Too Big Message, and set its Next-
  713.                Hop MTU field to the difference between the Effective
  714.                Maximum Frame Payload Size and the value of N
  715.  
  716.             b. If possible, transmit the ICMP Packet Too Big Message to
  717.                the source of the datagram.
  718.  
  719.             c. discard the labeled IPv6 datagram.
  720.  
  721.       4. If the IP datagram is not larger than 576 octets, then
  722.  
  723.             a. Convert it into fragments, each of which MUST be at least
  724.                N bytes less than the Effective Maximum Frame Payload
  725.                Size.
  726.  
  727.             b. Prepend each fragment with the same label header that
  728.                would have been on the original datagram had
  729.                fragmentation not been necessary.
  730.  
  731.             c. Forward the fragments.
  732.  
  733.          Reassembly of the fragments will be done at the destination
  734.          host.
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.  
  742. Rosen, et al.                                                  [Page 13]
  743.  
  744.  
  745. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  746.  
  747.  
  748. 3.6. Implications with respect to Path MTU Discovery
  749.  
  750.    The procedures described above for handling datagrams which have the
  751.    DF bit set, but which are "too large", have an impact on the Path MTU
  752.    Discovery procedures of RFC 1191.  Hosts which implement these
  753.    procedures will discover an MTU which is small enough to allow n
  754.    labels to be pushed on the datagrams, without need for fragmentation,
  755.    where n is the number of labels that actually get pushed on along the
  756.    path currently in use.
  757.  
  758.    In other words, datagrams from hosts that use Path MTU Discovery will
  759.    never need to be fragmented due to the need to put on a label header,
  760.    or to add new labels to an existing label header.  (Also, datagrams
  761.    from hosts that use Path MTU Discovery generally have the DF bit set,
  762.    and so will never get fragmented anyway.)
  763.  
  764.    However, note that Path MTU Discovery will only work properly if, at
  765.    the point where a labeled IP Datagram's fragmentation needs to occur,
  766.    it is possible to route to the packet's source address.  If this is
  767.    not possible, then the ICMP Destination Unreachable message cannot be
  768.    sent to the source.
  769.  
  770.  
  771. 3.6.1. Tunneling through a Transit Routing Domain
  772.  
  773.    Suppose one is using MPLS to "tunnel" through a transit routing
  774.    domain, where the external routes are not leaked into the domain's
  775.    interior routers.  If a packet needs fragmentation at some router
  776.    within the domain, and the packet's DF bit is set, it is necessary to
  777.    be able to originate an ICMP message at that router and have it
  778.    routed correctly to the source of the fragmented packet.  If the
  779.    packet's source address is an external address, this poses a problem.
  780.  
  781.    Therefore, in order for Path MTU Discovery to work, any routing
  782.    domain in which external routes are not leaked into the interior
  783.    routers MUST have a default route which causes all packets carrying
  784.    external destination addresses to be sent to a border router.  For
  785.    example, one of the border routers may inject "default" into the IGP.
  786.  
  787.  
  788. 3.6.2. Tunneling Private Addresses through a Public Backbone
  789.  
  790.    In other cases where MPLS is used to tunnel through a routing domain,
  791.    it may not be possible to route to the source address of a fragmented
  792.    packet at all.  This would be the case, for example, if the IP
  793.    addresses carried in the packet were private addresses, and MPLS were
  794.    being used to tunnel those packets through a public backbone.
  795.  
  796.  
  797.  
  798.  
  799. Rosen, et al.                                                  [Page 14]
  800.  
  801.  
  802. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  803.  
  804.  
  805.    In such cases, the LSR at the transmitting end of the tunnel MUST be
  806.    able to determine the MTU of the tunnel as a whole.  It SHOULD do
  807.    this by sending packets through the tunnel to the tunnel's receiving
  808.    endpoint, and performing Path MTU Discovery with those packets.  Then
  809.    any time the transmitting endpoint of the tunnel needs to send a
  810.    packet into the tunnel, and that packet has the DF bit set, and it
  811.    exceeds the tunnel MTU, the transmitting endpoint of the tunnel MUST
  812.    send the ICMP Destination Unreachable message to the source, with
  813.    code "Fragmentation Required and DF Set", and the Next-Hop MTU Field
  814.    set as described above.
  815.  
  816.  
  817. 4. Transporting Labeled Packets over PPP
  818.  
  819.    The Point-to-Point Protocol (PPP) [7] provides a standard method for
  820.    transporting multi-protocol datagrams over point-to-point links.  PPP
  821.    defines an extensible Link Control Protocol, and proposes a family of
  822.    Network Control Protocols for establishing and configuring different
  823.    network-layer protocols.
  824.  
  825.    This section defines the Network Control Protocol for establishing
  826.    and configuring label Switching over PPP.
  827.  
  828.  
  829. 4.1. Introduction
  830.  
  831.    PPP has three main components:
  832.  
  833.       1. A method for encapsulating multi-protocol datagrams.
  834.  
  835.       2. A Link Control Protocol (LCP) for establishing, configuring,
  836.          and testing the data-link connection.
  837.  
  838.       3. A family of Network Control Protocols for establishing and
  839.          configuring different network-layer protocols.
  840.  
  841.    In order to establish communications over a point-to-point link, each
  842.    end of the PPP link must first send LCP packets to configure and test
  843.    the data link.  After the link has been established and optional
  844.    facilities have been negotiated as needed by the LCP, PPP must send
  845.    "MPLS Control Protocol" packets to enable the transmission of labeled
  846.    packets.  Once the "MPLS Control Protocol" has reached the Opened
  847.    state, labeled packets can be sent over the link.
  848.  
  849.    The link will remain configured for communications until explicit LCP
  850.    or MPLS Control Protocol packets close the link down, or until some
  851.    external event occurs (an inactivity timer expires or network
  852.    administrator intervention).
  853.  
  854.  
  855.  
  856. Rosen, et al.                                                  [Page 15]
  857.  
  858.  
  859. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  860.  
  861.  
  862. 4.2. A PPP Network Control Protocol for MPLS
  863.  
  864.    The MPLS Control Protocol (MPLSCP) is responsible for enabling and
  865.    disabling the use of label switching on a PPP link.  It uses the same
  866.    packet exchange mechanism as the Link Control Protocol (LCP).  MPLSCP
  867.    packets may not be exchanged until PPP has reached the Network-Layer
  868.    Protocol phase.  MPLSCP packets received before this phase is reached
  869.    should be silently discarded.
  870.  
  871.    The MPLS Control Protocol is exactly the same as the Link Control
  872.    Protocol [7] with the following exceptions:
  873.  
  874.       1. Frame Modifications
  875.  
  876.          The packet may utilize any modifications to the basic frame
  877.          format which have been negotiated during the Link Establishment
  878.          phase.
  879.  
  880.       2. Data Link Layer Protocol Field
  881.  
  882.          Exactly one MPLSCP packet is encapsulated in the PPP
  883.          Information field, where the PPP Protocol field indicates type
  884.          hex 8081 (MPLS).
  885.  
  886.       3. Code field
  887.  
  888.          Only Codes 1 through 7 (Configure-Request, Configure-Ack,
  889.          Configure-Nak, Configure-Reject, Terminate-Request, Terminate-
  890.          Ack and Code-Reject) are used.  Other Codes should be treated
  891.          as unrecognized and should result in Code-Rejects.
  892.  
  893.       4. Timeouts
  894.  
  895.          MPLSCP packets may not be exchanged until PPP has reached the
  896.          Network-Layer Protocol phase.  An implementation should be
  897.          prepared to wait for Authentication and Link Quality
  898.          Determination to finish before timing out waiting for a
  899.          Configure-Ack or other response.  It is suggested that an
  900.          implementation give up only after user intervention or a
  901.          configurable amount of time.
  902.  
  903.       5. Configuration Option Types
  904.  
  905.          None.
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913. Rosen, et al.                                                  [Page 16]
  914.  
  915.  
  916. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  917.  
  918.  
  919. 4.3. Sending Labeled Packets
  920.  
  921.    Before any labeled packets may be communicated, PPP must reach the
  922.    Network-Layer Protocol phase, and the MPLS Control Protocol must
  923.    reach the Opened state.
  924.  
  925.    Exactly one labeled packet is encapsulated in the PPP Information
  926.    field, where the PPP Protocol field indicates either type hex 0081
  927.    (MPLS Unicast) or type hex 0083 (MPLS Multicast).  The maximum length
  928.    of a labeled packet transmitted over a PPP link is the same as the
  929.    maximum length of the Information field of a PPP encapsulated packet.
  930.  
  931.    The format of the Information field itself is as defined in section
  932.    2.
  933.  
  934.    Note that two codepoints are defined for labeled packets; one for
  935.    multicast and one for unicast.  Once the MPLSCP has reached the
  936.    Opened state, both label Switched multicasts and label Switched
  937.    unicasts can be sent over the PPP link.
  938.  
  939.  
  940. 4.4. Label Switching Control Protocol Configuration Options
  941.  
  942.    There are no configuration options.
  943.  
  944.  
  945. 5. Transporting Labeled Packets over LAN Media
  946.  
  947.    Exactly one labeled packet is carried in each frame.
  948.  
  949.    The label stack entries immediately precede the network layer header,
  950.    and follow any data link layer headers, including any VLAN headers,
  951.    802.1p headers, and/or 802.1Q headers that may exist.
  952.  
  953.    The ethertype value 8847 hex is used to indicate that a frame is
  954.    carrying an MPLS unicast packet.
  955.  
  956.    The ethertype value 8848 hex is used to indicate that a frame is
  957.    carrying an MPLS multicast packet.
  958.  
  959.    These ethertype values can be used with either the ethernet
  960.    encapsulation or the 802.3 SNAP/SAP encapsulation to carry labeled
  961.    packets.
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970. Rosen, et al.                                                  [Page 17]
  971.  
  972.  
  973. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  974.  
  975.  
  976. 6. Security Considerations
  977.  
  978.    Security considerations are not discussed in this document.
  979.  
  980.  
  981. 7. Authors' Addresses
  982.  
  983.    Eric C. Rosen
  984.    Cisco Systems, Inc.
  985.    250 Apollo Drive
  986.    Chelmsford, MA, 01824
  987.    E-mail: erosen@cisco.com
  988.  
  989.    Dan Tappan
  990.    Cisco Systems, Inc.
  991.    250 Apollo Drive
  992.    Chelmsford, MA, 01824
  993.    E-mail: tappan@cisco.com
  994.  
  995.    Dino Farinacci
  996.    Cisco Systems, Inc.
  997.    170 Tasman Drive
  998.    San Jose, CA, 95134
  999.    E-mail: dino@cisco.com
  1000.  
  1001.    Yakov Rekhter
  1002.    Cisco Systems, Inc.
  1003.    170 Tasman Drive
  1004.    San Jose, CA, 95134
  1005.    E-mail: yakov@cisco.com
  1006.  
  1007.    Guy Fedorkow
  1008.    Cisco Systems, Inc.
  1009.    250 Apollo Drive
  1010.    Chelmsford, MA, 01824
  1011.    E-mail: fedorkow@cisco.com
  1012.  
  1013.    Tony Li
  1014.    Juniper Networks
  1015.    3260 Jay Street
  1016.    Santa Clara, CA 95051
  1017.    E-mail: tli@jnx.com
  1018.  
  1019.    Alex Conta
  1020.    Lucent Technologies
  1021.    300 Baker Avenue
  1022.    Concord, MA, 01742
  1023.    E-mail: aconta@lucent.com
  1024.  
  1025.  
  1026.  
  1027. Rosen, et al.                                                  [Page 18]
  1028.  
  1029.  
  1030. Internet Draft        draft-rosen-tag-stack-03.txt             July 1997
  1031.  
  1032.  
  1033. 8. References
  1034.  
  1035.    [1] "Tag Switching Architecture - Overview", 1/9/97, draft-rekhter-
  1036.    tagswitch-arch-00.txt, Rekhter, Davie, Katz, Rosen, Swallow
  1037.  
  1038.    [2] "A Framework for Multiprotocol Label Switching", 5/12/97, draft-
  1039.    ietf-mpls-framework-00.txt, Callon, Doolan, Feldman, Fredette,
  1040.    Swallow, Visanathawan
  1041.  
  1042.    [3] "Internet Protocol", RFC 791, 9/81, Postel
  1043.  
  1044.    [4] "Internet Control Message Protocol", RFC 792, 9/81, Postel
  1045.  
  1046.    [5] "Path MTU Discovery", RFC 1191, 11/90, Mogul & Deering
  1047.  
  1048.    [6] "IP Router Alert Option", RFC 2113, 2/97, Katz
  1049.  
  1050.    [7] "The Point-to-Point Protocol (PPP)", RFC 1661, 7/94, Simpson
  1051.  
  1052.    [8] "Internet Control Message Protocol (ICMPv6) for the Internet
  1053.    Protocol Version 6 (IPv6) Specification", RFC 1885, 12/95, Conta,
  1054.    Deering
  1055.  
  1056.    [9], "A Proposed Architecture for MPLS", 7/97, draft-rosen-mpls-
  1057.    arch-00.txt, Rosen, Viswanathan, Callon
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084. Rosen, et al.                                                  [Page 19]
  1085.