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-02.txt < prev    next >
Text File  |  1997-06-27  |  37KB  |  1,024 lines

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