Internet Draft

Network Working Group                                      Eric C. Rosen
Internet Draft                                       Cisco Systems, Inc.
Expiration Date: May 1997
                                                           Daniel Tappan
                                                     Cisco Systems, Inc.

                                                          Dino Farinacci
                                                     Cisco Systems, Inc.

                                                           Yakov Rekhter
                                                     Cisco Systems, Inc.

                                                            Guy Fedorkow
                                                     Cisco Systems, Inc.

                                                           November 1996


                   Tag Switching: Tag Stack Encodings


                      draft-rosen-tag-stack-00.txt

Status of this Memo

   This document is an Internet-Draft.  Internet-Drafts are working
   documents of the Internet Engineering Task Force (IETF), its areas,
   and its working groups.  Note that other groups may also distribute
   working documents as Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   To learn the current status of any Internet-Draft, please check the
   "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
   Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
   munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
   ftp.isi.edu (US West Coast).











Rosen, et al.                                                   [Page 1]


Internet Draft        draft-rosen-tag-stack-00.txt         November 1996




Contents

    1    Introduction  .............................................   2
    1.1  Specification of Requirements  ............................   2
    2    Encoding the Tag Stack  ...................................   3
    3    Transporting Tagged Packets over PPP  .....................   5
    3.1  Introduction  .............................................   5
    3.2  A PPP Network Control Protocol for Tag Switching  .........   6
    3.3  Sending Tagged Packets  ...................................   7
    3.4  Tag Switching Control Protocol Configuration Options  .....   7
    4    Transporting Tagged Packets over LAN Media  ...............   7
    5    Security Considerations  ..................................   8
    6    Authors' Addresses  .......................................   8
    7    References  ...............................................   9




1. Introduction

   [1] describes a need to encode a "Tag Stack" into a packet.  This
   document specifies how the Tag Stack is encoded on Tagged Packets
   which are sent over PPP data links and over LAN data links.


1.1. Specification of Requirements

   In this document, several words are used to signify the requirements
   of the specification.  These words are often capitalized.

        MUST

        This word, or the adjective "required", means that the
        definition is an absolute requirement of the specification.

        MUST NOT

        This phrase means that the definition is an absolute prohibition
        of the specification.

        SHOULD

        This word, or the adjective "recommended", means that there may
        exist valid reasons in particular circumstances to ignore this
        item, but the full implications must be understood and carefully
        weighed before choosing a different course.



Rosen, et al.                                                   [Page 2]


Internet Draft        draft-rosen-tag-stack-00.txt         November 1996


        MAY

        This word, or the adjective "optional", means that this item is
        one of an allowed set of alternatives.  An implementation which
        does not include this option MUST be prepared to interoperate
        with another implementation which does include the option.


2. Encoding the Tag Stack

   On both PPP and LAN data links, the Tag Stack is represented as a
   sequence of Tag Stack Entries.  Each Tag Stack Entry is represented
   as a 4-byte quantity.  This is shown in Figure 1.

    0                   1                   2                   3
    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Tag
   |                Tag                  |rsvd |CoS|S|     TTL     | Stack
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Entry

                       Tag:  tag value, 19 bits
                       rsvd: reserved, 3 bits
                       CoS:  Class of Service, 2 bits
                       S:    bottom of stack, 1 bit
                       TTL:  7 bits

                                 Figure 1


   The Tag Stack Entries appear after the end of all data link layer
   headers, but before any network layer headers.  The entry
   representing the top of the Tag Stack appears earliest in the packet.
   The entry representing the bottom of the Tag Stack appears latest.
   The network layer packet immediately follows the Tag Stack Entry with
   the S bit set.

   Each Tag Stack Entry is broken down into the following fields:

      1. Stack End Bit (S)

         This bit is set to one for the last entry in the Tag Stack
         (i.e., for the bottom of the stack), and zero for all other Tag
         Stack Entries.

      2. Time to Live (TTL)

         This seven-bit field is used to encode a time-to-live value.




Rosen, et al.                                                   [Page 3]


Internet Draft        draft-rosen-tag-stack-00.txt         November 1996


         When the first tag is pushed onto an untagged IP packet, the
         TTL value in the Tag Stack Entry MUST be set to the smaller of
         127 and the value of the IP TTL field.

         At every hop which tag switches a packet, the TTL value of the
         packet's top Tag Stack Entry MUST be decremented by at least 1.

         When the Tag Stack is popped, and the resulting Tag Stack is
         non-empty,the TTL value in the new top stack entry MUST be
         decremented by 1.

         When the Tag Stack is popped, and the resulting Tag Stack is
         empty, and the network layer packet is an IP packet, the TTL
         value in the IP packet MUST be decremented by at least 1; it
         SHOULD be modified as follows.  If the TTL value in the IP
         packet is less than or equal to 127, it is replaced with the
         TTL value from the last Tag Stack Entry.  If the TTL value in
         the IP packet is greater than 127, it is replaced by the value
         which results from first subtracting the TTL value in the Tag
         Stack Entry from 127, and then subtracting that difference from
         the the TTL value in the IP header.  If this causes the TTL
         value in the IP header to become less than 1, the ordinary
         processing for an IP packet whose TTL has become less than 1
         MUST be performed.

         If at any time, the value of the TTL field in a Tag Stack Entry
         becomes less than 1, the packet MUST NOT be forwarded further.
         Depending on the tag value in the Tag Stack Entry, the packet
         may be silently discarded, or the packet may have its Tag Stack
         stripped off, and passed as an untagged packet to the ordinary
         processing for network layer packets which have exceeded their
         maximum lifetime in the network.

      3. Class of Service (CoS)

         This two-bit field is used to identify a class of service.

      4. Reserved

         These three bits are reserved.  They MUST be set to zero when
         writing, and MUST be ignored when reading.

      5. Tag Value

         This 19-bit field carries the actual tag value.

         A value of 0 represents the "Explicit NULL Tag".  The presence
         of the Explicit NULL Tag means that the Tag Stack must be



Rosen, et al.                                                   [Page 4]


Internet Draft        draft-rosen-tag-stack-00.txt         November 1996


         popped, and the forwarding of the packet must then be based on
         the resulting top tag in the Tag Stack, or, if the Tag Stack
         becomes empty, on the network layer header.


3. Transporting Tagged Packets over PPP

   The Point-to-Point Protocol (PPP) [PPP] provides a standard method
   for transporting multi-protocol datagrams over point-to-point links.
   PPP defines an extensible Link Control Protocol, and proposes a
   family of Network Control Protocols for establishing and configuring
   different network-layer protocols.

   This section defines the Network Control Protocol for establishing
   and configuring Tag Switching over PPP.


3.1. Introduction

   PPP has three main components:

      1. A method for encapsulating multi-protocol datagrams.

      2. A Link Control Protocol (LCP) for establishing, configuring,
         and testing the data-link connection.

      3. A family of Network Control Protocols for establishing and
         configuring different network-layer protocols.

   In order to establish communications over a point-to-point link, each
   end of the PPP link must first send LCP packets to configure and test
   the data link.  After the link has been established and optional
   facilities have been negotiated as needed by the LCP, PPP must send
   Tag Switching Control packets to enable the transmission of tagged
   packets.  Once the Tag Switching Control Protocol has reached the
   Opened state, tagged packets can be sent over the link.

   The link will remain configured for communications until explicit LCP
   or Tag Switching Control Protocol packets close the link down, or
   until some external event occurs (an inactivity timer expires or
   network administrator intervention).










Rosen, et al.                                                   [Page 5]


Internet Draft        draft-rosen-tag-stack-00.txt         November 1996


3.2. A PPP Network Control Protocol for Tag Switching

   The Tag Switching Control Protocol is responsible for enabling and
   disabling the use of tag switching on a PPP link.  it uses the same
   packet exchange mechanism as the Link Control Protocol (LCP).  Tag
   Switching Control Protocol packets may not be exchanged until PPP has
   reached the Network-Layer Protocol phase.  Tag Switching Control
   Protocol packets received before this phase is reached should be
   silently discarded.

   The Tag Switching Control Protocol is exactly the same as the Link
   Control Protocol [1] with the following exceptions:

      1. Frame Modifications

         The packet may utilize any modifications to the basic frame
         format which have been negotiated during the Link Establishment
         phase.

      2. Data Link Layer Protocol Field

         Exactly one Tag Switching Control Protocol packet is
         encapsulated in the PPP Information field, where the PPP
         Protocol field indicates type hex 80?? (Tag Switching).

      3. Code field

         Only Codes 1 through 7 (Configure-Request, Configure-Ack,
         Configure-Nak, Configure-Reject, Terminate-Request, Terminate-
         Ack and Code-Reject) are used.  Other Codes should be treated
         as unrecognized and should result in Code-Rejects.

      4. Timeouts

         Tag Switching Control Protocol packets may not be exchanged
         until PPP has reached the Network-Layer Protocol phase.  An
         implementation should be prepared to wait for Authentication
         and Link Quality Determination to finish before timing out
         waiting for a Configure-Ack or other response.  It is suggested
         that an implementation give up only after user intervention or
         a configurable amount of time.

      5. Configuration Option Types

         None.






Rosen, et al.                                                   [Page 6]


Internet Draft        draft-rosen-tag-stack-00.txt         November 1996


3.3. Sending Tagged Packets

   Before any tagged packets may be communicated, PPP must reach the
   Network-Layer Protocol phase, and the Tag Switching Control Protocol
   must reach the Opened state.

   Exactly one tagged packet is encapsulated in the PPP Information
   field, where the PPP Protocol field indicates either type hex 00??
   (Tag Switching -- Unicast) or type hex 00?? (Tag Switching --
   Multicast).  The maximum length of a tagged packet transmitted over a
   PPP link is the same as the maximum length of the Information field
   of a PPP encapsulated packet.

   The format of the Information field itself is as defined in section
   2.

   Note that two codepoints are defined for tagged packets; one for
   multicast and one for unicast.  Once the TSCP has reached the Opened
   state, both tag switched multicasts and tag switched unicasts can be
   sent over the PPP link.


3.4. Tag Switching Control Protocol Configuration Options

   There are no configuration options.


4. Transporting Tagged Packets over LAN Media

   A pair of two byte ethertype values will be obtained, one
   representing "Tag Switching -- Unicast" and one representing "Tag
   Switching -- Multicast".

   These can be used with either the Ethernet encapsulation or the 802.3
   SNAP/SAP encapsulation to carry tagged packets.

   Exactly one tagged packet is carried in each frame.

   The Tag Stack Entries immediately precede the network layer header,
   and follow any data link layer headers, including any VLAN headers
   that may exist.










Rosen, et al.                                                   [Page 7]


Internet Draft        draft-rosen-tag-stack-00.txt         November 1996


5. Security Considerations

   Security considerations are not discussed in this document.


6. Authors' Addresses

   Eric C. Rosen
   Cisco Systems, Inc.
   250 Apollo Drive
   Chelmsford, MA, 01824

   E-mail: erosen@cisco.com


   Dan Tappan
   Cisco Systems, Inc.
   250 Apollo Drive
   Chelmsford, MA, 01824

   E-mail: tappan@cisco.com

   Dino Farinacci
   Cisco Systems, Inc.
   170 Tasman Drive
   San Jose, CA, 95134

   E-mail: dino@cisco.com

   Yakov Rekhter
   Cisco Systems, Inc.
   170 Tasman Drive
   San Jose, CA, 95134

   E-mail: yakov@cisco.com

   Guy Fedorkow
   Cisco Systems, Inc.
   250 Apollo Drive
   Chelmsford, MA, 01824

   E-mail: fedorkow@cisco.com









Rosen, et al.                                                   [Page 8]


Internet Draft        draft-rosen-tag-stack-00.txt         November 1996


7. References

   [1] Tag Switching Architecture Overview, draft-rfced-info-rekhter-
   00.txt, Rekhter, Davie, Katz, Rosen, Swallow















































Rosen, et al.                                                   [Page 9]