Internet Draft                                        Yakov Rekhter
Expiration date:January 1998                          cisco Systems
                                                        Bruce Davie
                                                      cisco Systems
                                                          Dave Katz
                                              Juniper Networks Inc.
                                                         Eric Rosen
                                                      cisco Systems
                                                     George Swallow
                                                      cisco Systems
                                                     Dino Farinacci
                                                      cisco Systems
                                                          July 1997


                 Tag Switching Architecture - Overview

                  draft-rekhter-tagswitch-arch-01.txt


1. 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. Internet Drafts may be updated, replaced, or obsoleted by
   other documents at any time. It is not appropriate to use Internet
   Drafts as reference material or to cite them other than as a "working
   draft" or "work in progress."

   Please check the 1id-abstracts.txt listing contained in the
   internet-drafts Shadow Directories on nic.ddn.mil, nnsc.nsf.net,
   nic.nordu.net, ftp.nisc.sri.com, or munnari.oz.au to learn the
   current status of any Internet Draft.














                                                                [Page 1]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


2. Abstract

   This document provides an overview of tag switching. Tag switching is
   a way to combine the label-swapping forwarding paradigm with network
   layer routing. This has several advantages. Tags can have a wide
   spectrum of forwarding granularities, so at one end of the spectrum a
   tag could be associated with a group of destinations, while at the
   other a tag could be associated with a single application flow. At
   the same time forwarding based on tag switching, due to its
   simplicity, is well suited to high performance forwarding. These
   factors facilitate the development of a routing system which is both
   functionally rich and scalable. Finally, tag switching simplifies
   integration of routers and ATM switches by employing common
   addressing, routing, and management procedures.



3. Introduction

   Continuous growth of the Internet demands higher bandwidth within the
   Internet Service Providers (ISPs). However, growth of the Internet is
   not the only driving factor for higher bandwidth - demand for higher
   bandwidth also comes from emerging multimedia applications. Demand
   for higher bandwidth, in turn, requires higher forwarding performance
   for both multicast and unicast traffic.

   The growth of the Internet also demands improved scaling properties
   of the Internet routing system. The ability to contain the volume of
   routing information maintained by individual routers and the ability
   to build a hierarchy of routing knowledge are essential to support a
   high quality, scalable routing system.

   While the destination-based forwarding paradigm is adequate in many
   situations, we already see examples where it is no longer adequate.
   The ability to overcome the rigidity of destination-based forwarding
   and to have more flexible control over how traffic is routed is
   likely to become more and more important.

   We see the need to improve forwarding performance while at the same
   time adding routing functionality to support multicast, allowing more
   flexible control over how traffic is routed, and providing the
   ability to build a hierarchy of routing knowledge. Moreover, it
   becomes more and more crucial to have a routing system that can
   support graceful evolution to accommodate new and emerging
   requirements.

   Tag switching is a technology that provides an efficient solution to
   these challenges. Tag switching blends the flexibility and rich



                                                                [Page 2]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


   functionality provided by Network Layer routing with the simplicity
   provided by the label swapping forwarding paradigm. The simplicity of
   the tag switching forwarding paradigm (label swapping) enables
   improved forwarding performance, while maintaining competitive
   price/performance. By associating a wide range of forwarding
   granularities with a tag, the same forwarding paradigm can be used to
   support a wide variety of routing functions, such as destination-
   based routing, multicast, hierarchy of routing knowledge, and
   flexible routing control. Finally, a combination of simple
   forwarding, a wide range of forwarding granularities, and the ability
   to evolve routing functionality while preserving the same forwarding
   paradigm enables a routing system that can gracefully evolve to
   accommodate new and emerging requirements.



4. Tag Switching components

   Tag switching consists of two components: forwarding and control. The
   forwarding component uses the tag information (tags) carried by
   packets and the tag forwarding information maintained by a tag switch
   to perform packet forwarding. The control component is responsible
   for maintaining correct tag forwarding information among a group of
   inter- connected tag switches.

   Segregating control and forwarding into separate components promotes
   modularity, which in turn enables to build a system that can
   gracefully evolve to accommodate new and emerging requirements.


5. Forwarding component

   The fundamental forwarding paradigm employed by tag switching is
   based on the notion of label swapping. When a packet with a tag is
   received by a tag switch, the switch uses the tag as an index in its
   Tag Information Base (TIB). Each entry in the TIB consists of an
   incoming tag, and one or more sub-entries of the form <outgoing tag,
   outgoing interface, outgoing link level information>. If the switch
   finds an entry with the incoming tag equal to the tag carried in the
   packet, then for each <outgoing tag, outgoing interface, outgoing
   link level information> in the entry the switch replaces the tag in
   the packet with the outgoing tag, replaces the link level information
   (e.g MAC address) in the packet with the outgoing link level
   information, and forwards the packet over the outgoing interface.

   From the above description of the forwarding component we can make
   several observations. First, the forwarding decision is based on the
   exact match algorithm using a fixed length, fairly short tag as an



                                                                [Page 3]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


   index. This enables a simplified forwarding procedure, relative to
   longest match forwarding traditionally used at the network layer.
   This in turn enables higher forwarding performance (higher packets
   per second). The forwarding procedure is simple enough to allow a
   straightforward hardware implementation.

   A second observation is that the forwarding decision is independent
   of the tag's forwarding granularity. For example, the same forwarding
   algorithm applies to both unicast and multicast - a unicast entry
   would just have a single (outgoing tag, outgoing interface, outgoing
   link level information) sub-entry, while a multicast entry may have
   one or more (outgoing tag, outgoing interface, outgoing link level
   information) sub-entries. (For multi-access links, the outgoing link
   level information in this case would include a multicast MAC
   address.) This illustrates how with tag switching the same forwarding
   paradigm can be used to support different routing functions (e.g.,
   unicast, multicast, etc...)

   The simple forwarding procedure is thus essentially decoupled from
   the control component of tag switching. New routing (control)
   functions can readily be deployed without disturbing the forwarding
   paradigm. This means that it is not necessary to re-optimize
   forwarding performance (by modifying either hardware or software) as
   new routing functionality is added.

   In the tag switching architecture, various implementation options are
   acceptable. For example, support for network layer forwarding by a
   tag switch (i.e., forwarding based on the network layer header as
   opposed to a tag) is optional. Moreover, use of network layer
   forwarding may be constrained to handling network layer control
   traffic only. (Note, however, that a tag switch must be able to
   source and sink network layer packets, e.g. to participate in network
   layer routing protocols)

   For the purpose of handling network layer hop count (time-to-live)
   the architecture allows two alternatives: network layer hops may
   correspond directly to hops formed by tag switches, or one network
   layer hop may correspond to several tag switched hops.

   When a switch receives a packet with a tag, and the TIB maintained by
   the switch has no entry with the incoming tag equal to the tag
   carried by the packet, or the entry exists, the outgoing tag entry is
   entry, and the entry does not indicate local delivery to the switch,
   the switch may either (a) discard the packet, or (b) strip the tag
   information, and submit the packet for network layer processing.
   Support for the latter is optional (as support for network layer
   forwarding is optional). Note that it may not always be possible to
   successfully forward a packet after stripping a tag even if a tag



                                                                [Page 4]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


   switch supports network layer forwarding.

   The architecture allows a tag switch to maintain either a single TIB
   per tag switch, or a TIB per interface. Moreover, a tag switch could
   mix both of these options - some tags could be maintained in a single
   TIB, while other tags could be maintained in a TIB associated with
   individual interfaces.


5.1. Tag encapsulation

   Tag switching clearly requires a tag to be carried in each packet.
   The tag information can be carried in a variety of ways:


      - as a small "shim" tag header inserted between the layer 2 and
      the Network Layer headers;

      - as part of the layer 2 header, if the layer 2 header provides
      adequate semantics (e.g., Frame Relay, or ATM);

      - as part of the Network Layer header (e.g., using the Flow Label
      field in IPv6 with appropriately modified semantics).


   It is therefore possible to implement tag switching over virtually
   any media type including point-to-point links, multi-access links,
   and ATM. At the same time the forwarding component allows specific
   optimizations for particular media (e.g., ATM).

   Observe also that the tag forwarding component is Network Layer
   independent. Use of control component(s) specific to a particular
   Network Layer protocol enables the use of tag switching with
   different Network Layer protocols.


6. Control component

   Essential to tag switching is the notion of binding between a tag and
   Network Layer routing (routes). The control component is responsible
   for creating tag bindings, and then distributing the tag binding
   information among tag switches. Creating a tag binding involves
   allocating a tag, and then binding a tag to a route. The distribution
   of tag binding information among tag switches could be accomplished
   via several options:

      - piggybacking on existing routing protocols




                                                                [Page 5]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


      - using a separate Tag Distribution Protocol (TDP)

   While the architecture supports distribution of tag binding
   information that is independent of the underlying routing protocols,
   the architecture acknowledges that considerable optimizations can be
   achieved in some cases by small enhancements of existing protocols to
   enable piggybacking tag binding information on these protocols.

   One important characteristic of the tag switching architecture is
   that creation of tag bindings is driven primarily by control traffic
   rather than by data traffic. Control traffic driven creation of tag
   bindings has several advantages, as compared to data traffic driven
   creation of tag bindings. For one thing, it minimizes the amount of
   additional control traffic needed to distribute tag binding
   information, as tag binding information is distributed only in
   response to control traffic, independent of data traffic. It also
   makes the overall scheme independent of and insensitive to the data
   traffic profile/pattern. Control traffic driven creation of tag
   binding improves forwarding performance, as tags are precomputed
   (prebound) before data traffic arrives, rather than being created as
   data traffic arrives. It also simplifies the overall system behavior,
   as the control plane is controlled solely by control traffic, rather
   than by a mix of control and data traffic.

   Another important characteristic of the tag switching architecture is
   that distribution and maintenance of tag binding information is
   consistent with distribution and maintenance of the associated
   routing information. For example, distribution of tag binding
   information for tags associated with unicast routing is based on the
   technique of incremental updates with explicit acknowledgment. This
   is very similar to the way unicast routing information gets
   distributed by such protocols as OSPF and BGP. In contrast,
   distribution of tag binding information for tags associated with
   multicast routing is based on period updates/ refreshes, without any
   explicit acknowledgments. This is consistent with the way multicast
   routing information is distributed by such protocols as PIM.

   To provide good scaling characteristics, while also accommodating
   diverse routing functionality, tag switching supports a wide range of
   forwarding granularities. At one extreme a tag could be associated
   (bound) to a group of routes (more specifically to the Network Layer
   Reachability Information of the routes in the group). At the other
   extreme a tag could be bound to an individual application flow (e.g.,
   an RSVP flow). A tag could also be bound to a multicast tree. In
   addition, a tag may be bound to a path that has been selected for a
   certain set of packets based on some policy (e.g. an explicit route).

   The control component is organized as a collection of modules, each



                                                                [Page 6]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


   designed to support a particular routing function. To support new
   routing functions, new modules can be added. The architecture does
   not mandate a prescribed set of modules that have to be supported by
   every tag switch.

   The following describes some of the modules.


6.1. Destination-based routing

   In this section we describe how tag switching can support
   destination-based routing. Recall that with destination-based routing
   a router makes a forwarding decision based on the destination address
   carried in a packet and the information stored in the Forwarding
   Information Base (FIB) maintained by the router. A router constructs
   its FIB by using the information it receives from routing protocols
   (e.g., OSPF, BGP).

   To support destination-based routing with tag switching, a tag
   switch, just like a router, participates in routing protocols (e.g.,
   OSPF, BGP), and constructs its FIB using the information it receives
   from these protocols.

   There are three permitted methods for tag allocation and Tag
   Information Base (TIB) management: (a) downstream tag allocation, (b)
   downstream tag allocation on demand, and (c) upstream tag allocation.
   In all cases, a switch allocates tags and binds them to address
   prefixes in its FIB. In downstream allocation, the tag that is
   carried in a packet is generated and bound to a prefix by the switch
   at the downstream end of the link (with respect to the direction of
   data flow). On demand allocation means that tags will only be
   allocated and distributed by the downstream switch when it is
   requested to do so by the upstream switch. Method (b) is most useful
   in ATM networks (see Section 8). In upstream allocation, tags are
   allocated and bound at the upstream end of the link. Note that in
   downstream allocation, a switch is responsible for creating tag
   bindings that apply to incoming data packets, and receives tag
   bindings for outgoing packets from its neighbors. In upstream
   allocation, a switch is responsible for creating tag bindings for
   outgoing tags, i.e. tags that are applied to data packets leaving the
   switch, and receives bindings for incoming tags from its neighbors.

   The downstream tag allocation scheme operates as follows: for each
   route in its FIB the switch allocates a tag, creates an entry in its
   Tag Information Base (TIB) with the incoming tag set to the allocated
   tag, and then advertises the binding between the (incoming) tag and
   the route to other adjacent tag switches. The advertisement could be
   accomplished by either piggybacking the binding on top of the



                                                                [Page 7]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


   existing routing protocols, or by using a separate Tag Distribution
   Protocol (TDP). When a tag switch receives tag binding information
   for a route, and that information was originated by the next hop for
   that route, the switch places the tag (carried as part of the binding
   information) into the outgoing tag of the TIB entry associated with
   the route. This creates the binding between the outgoing tag and the
   route.

   With the downstream on demand tag allocation scheme, operation is as
   follows. For each route in its FIB, the switch identifies the next
   hop for that route. It then issues a request (via TDP) to the next
   hop for a tag binding for that route. When the next hop receives the
   request, it allocates a tag, creates an entry in its TIB with the
   incoming tag set to the allocated tag, and then returns the binding
   between the (incoming) tag and the route to the switch that sent the
   original request. When the switch receives the binding information,
   the switch creates an entry in its TIB, and sets the outgoing tag in
   the entry to the value received from the next hop. Handling of data
   packets is as for downstream allocation. The main application for
   this mode of operation is with ATM switches, as described in Section
   8.

   The upstream tag allocation scheme is used as follows. If a tag
   switch has one or more point-to-point interfaces, then for each route
   in its FIB whose next hop is reachable via one of these interfaces,
   the switch allocates a tag, creates an entry in its TIB with the
   outgoing tag set to the allocated tag, and then advertises to the
   next hop (via TDP) the binding between the (outgoing) tag and the
   route. When a tag switch that is the next hop receives the tag
   binding information, the switch places the tag (carried as part of
   the binding information) into the incoming tag of the TIB entry
   associated with the route.

   Note that, while we have described upstream allocation for the sake
   of completeness, we have found the two downstream allocation methods
   adequate for all practical purposes so far.

   Independent of which tag allocation method is used, once a TIB entry
   is populated with both incoming and outgoing tags, the tag switch can
   forward packets for routes bound to the tags by using the tag
   switching forwarding algorithm (as described in Section 5).

   When a tag switch creates a binding between an outgoing tag and a
   route, the switch, in addition to populating its TIB, also updates
   its FIB with the binding information. This enables the switch to add
   tags to previously untagged packets.

   So far we have described how a tag could be bound to a single route,



                                                                [Page 8]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


   creating a one-to-one mapping between routes and tags. However, under
   certain conditions it is possible to bind a tag not just to a single
   route, but to a group of routes, creating a many-to-one mapping
   between routes and tags. Consider a tag switch that is connected to a
   router.  It is quite possible that the switch uses the router as the
   next hop not just for one route, but for a group of routes. Under
   these conditions the switch does not have to allocate distinct tags
   to each of these routes - one tag would suffice. The distribution of
   tag binding information is unaffected by whether there is a one-to-
   one or one-to-many mapping between tags and routes. Now consider a
   tag switch that receives from one of its neighbors (tag switching
   peers) tag binding information for a set of routes, such that the set
   is bound to a single tag. If the switch decides to use some or all of
   the routes in the set, then for these routes the switch does not need
   to allocate individual tags - one tag would suffice. Such an approach
   may be valuable when tags are a precious resource. Note that the
   ability to support many-to-one mapping makes no assumptions about the
   routing protocols being used.

   When a tag switch adds a tag to a previously untagged packet the tag
   could be either associated with the route to the destination address
   carried in the packet, or with the route to some other tag switch
   along the path to the destination (in some cases the address of that
   other tag switch could be gleaned from network layer routing
   protocols). The latter option provides yet another way of mapping
   multiple routes into a single tag. However, this option is either
   dependent on particular routing protocols, or would require a
   separate mechanism for discovering tag switches along a path.

   To understand the scaling properties of tag switching in conjunction
   with destination-based routing, observe that the total number of tags
   that a tag switch has to maintain can not be greater than the number
   of routes in the switch's FIB. Moreover, as we have just seen, the
   number of tags can be much less than the number of routes. Thus, much
   less state is required than would be the case if tags were allocated
   to individual flows.

   In general, a tag switch will try to populate its TIB with incoming
   and outgoing tags for all routes to which it has reachability, so
   that all packets can be forwarded by simple label swapping. Tag
   allocation is thus driven by topology (routing), not data traffic -
   it is the existence of a FIB entry that causes tag allocations, not
   the arrival of data packets.

   Use of tags associated with routes, rather than flows, also means
   that there is no need to perform flow classification procedures for
   all the flows to determine whether to assign a tag to a flow. That,
   in turn, simplifies the overall scheme, and makes it more robust and



                                                                [Page 9]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


   stable in the presence of changing traffic patterns.

   Note that when tag switching is used to support destination-based
   routing, tag switching does not completely eliminate the need to
   perform normal Network Layer forwarding at some network elements.
   First of all, to add a tag to a previously untagged packet requires
   normal Network Layer forwarding. This function could be performed by
   the first hop router, or by the first router on the path that is able
   to participate in tag switching. In addition, whenever a tag switch
   aggregates a set of routes (e.g., by using the technique of
   hierarchical routing), into a single route, and the routes do not
   share a common next hop, the switch needs to perform Network Layer
   forwarding for packets carrying the tag associated with the
   aggregated route. However, one could observe that the number of
   places where routes get aggregated is smaller than the total number
   of places where forwarding decisions have to be made. Moreover, quite
   often aggregation is applied to only a subset of the routes
   maintained by a tag switch. As a result, on average a packet can be
   forwarded most of the time using the tag switching algorithm. Note
   that many tag switches may not need to perform any network layer
   forwarding.


6.2. Hierarchy of routing knowledge

   The IP routing architecture models a network as a collection of
   routing domains. Within a domain, routing is provided via interior
   routing (e.g., OSPF), while routing across domains is provided via
   exterior routing (e.g., BGP). However, all routers within domains
   that carry transit traffic (e.g., domains formed by Internet Service
   Providers) have to maintain information provided by not just interior
   routing, but exterior routing as well, even if only some of these
   routers participate in exterior routing. That creates certain
   problems. First of all, the amount of this information is not
   insignificant. Thus it places additional demand on the resources
   required by the routers.  Moreover, increase in the volume of routing
   information quite often increases routing convergence time. This, in
   turn, degrades the overall performance of the system.

   Tag switching allows complete decoupling of interior and exterior
   routing. With tag switching only tag switches at the border of a
   domain would be required to maintain routing information provided by
   exterior routing - all other switches within the domain would just
   maintain routing information provided by the domains interior routing
   (which is usually significantly smaller than the exterior routing
   information), with no "leaking" of exterior routing information into
   interior routing. This, in turn, reduces the routing load on non-
   border switches, and shortens routing convergence time.



                                                               [Page 10]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


   To support this functionality, tag switching allows a packet to carry
   not one but a set of tags, organized as a stack. A tag switch could
   either swap the tag at the top of the stack, or pop the stack, or
   swap the tag and push one or more tags into the stack.

   Consider a tag switch that is at the border of a routing domain. This
   switch maintains both exterior and interior routes. The interior
   routes provide routing information and tags to all the other tag
   switches within the domain. For each exterior route that the switch
   receives from some other border tag switch that is in the same domain
   as the local switch, the switch maintains not just a tag associated
   with the route, but also a tag associated with the route to that
   other border tag switch. Moreover, for inter-domain routing protocols
   that are capable of passing the "third-party" next hop information
   the switch would maintain a tag associated with the route to the next
   hop, rather than with the route to the border tag switch from whom
   the local switch received the exterior route.

   When a packet is forwarded between two (border) tag switches in
   different domains, the tag stack in the packet contains just one tag
   (associated with an exterior route). However, when a packet is
   forwarded within a domain, the tag stack in the packet contains not
   one, but two tags (the second tag is pushed by the domain's ingress
   border tag switch). The tag at the top of the stack provides packet
   forwarding to an appropriate egress border tag switch (or the
   "third-party" next hop), while the next tag in the stack provides
   correct packet forwarding at the egress switch (or at the "third-
   party" next hop). The stack is popped by either the egress switch (or
   the "third-party" next hop) or by the penultimate (with respect to
   the egress switch/"third-party" next hop) switch.

   One could observe that when tag switching is confined to a single
   routing domain, the above still could be used to decouple interior
   from exterior routing, similar to what was described above. However,
   in this case a border tag switch wouldn't maintain tags associated
   with each exterior route, and forwarding between domains would be
   performed at the network layer.

   The control component used in this scenario is fairly similar to the
   one used with destination-based routing. In fact, the only essential
   difference is that in this scenario the tag binding information is
   distributed both among physically adjacent tag switches, and among
   border tag switches within a single domain. One could also observe
   that the latter (distribution among border switches) could be
   trivially accommodated by very minor extensions to BGP.

   The notion of supporting hierarchy of routing knowledge with tag
   switching is not limited to the case of exterior/interior routing,



                                                               [Page 11]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


   but could be applicable to other cases where the hierarchy of routing
   knowledge is possible. Moreover, while the above describes only a
   two-level hierarchy of routing knowledge, the tag switching
   architecture does not impose limits on the depth of the hierarchy.

   In the presence of hierarchy of routing knowledge a tag switched path
   at the level N in the hierarchy has to have its endpoints at tag
   switches that are at border between the level N and (N-1) in the
   hierarchy (level 0 in the hierarchy corresponds to an untagged path).


6.3. Multicast

   Essential to multicast routing is the notion of spanning trees.
   Multicast routing procedures (e.g., PIM) are responsible for
   constructing such trees (with receivers as leafs), while multicast
   forwarding is responsible for forwarding multicast packets along such
   trees. Thus, to support a multicast forwarding function with tag
   switching we need to be able to associate a tag with a multicast
   tree.  The following describes the procedures for allocation and
   distribution of tags for multicast.

   When tag switching is used for multicast, it is important that tag
   switching be able to utilize multicast capabilities provided by the
   Data Link layer (e.g., multicast capabilities provided by Ethernet).
   To be able to do this, an (upstream) tag switch connected to a given
   Data Link subnetwork should use the same tag when forwarding a
   multicast packet to all of the (downstream) switches on that
   subnetwork. This way the packet will be multicasted at the Data Link
   layer over the subnetwork. To support this, all tag switches that are
   part of a given multicast tree and are on a common subnetwork must
   agree on a common tag that would be used for forwarding multicast
   packets along the tree over the subnetwork. Moreover, since multicast
   forwarding is based on Reverse Path Forwarding (RPF), it is crucial
   that, when a tag switch receives a multicast packet, a tag carried in
   a packet must enable the switch to identify both (a) a particular
   multicast group, as well as (b) the previous hop (upstream) tag
   switch that sent the packet.

   To support the requirements outlined in the previous paragraph, the
   tag switching architecture assumes that (a) multicast tags are
   associated with interfaces on a tag switch (rather than with a tag
   switch as a whole), (b) the tag space that a tag switch could use for
   allocating tags for multicast is partitioned into non-overlapping
   regions among all the tag switches connected to a common Data Link
   subnetwork, and (c) there are procedures by which tag switches that
   belong to a common multicast tree and are on a common Data Link
   subnetwork agree on the tag switch that is responsible for allocating



                                                               [Page 12]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


   a tag for the tree.

   One possible way of partitioning tag space into non-overlapping
   regions among tag switches connected to a common subnetwork is for
   each tag switch to claim a region of the space and announce this
   region to its neighbors. Conflicts are resolved based on the IP
   address of the contending switches (the higher address wins, the
   lower retries). Once the tag space is partitioned among tag switches,
   the switches may create bindings between tags and multicast trees
   (routes).

   At least in principle there are two possible ways to create bindings
   between tags and multicast trees (routes). With the first alternative
   for a set of tag switches that share a common Data Link subnetwork,
   the tag switch that is upstream with respect to a particular
   multicast tree allocates a tag (out of its own region that does not
   overlap with the regions of other switches on the subnetwork), binds
   the tag to a multicast route, and then advertises the binding to all
   the (downstream) switches on the subnetwork. With the second
   alternative, one of the tag switches that is downstream with respect
   to a particular multicast tree allocates a tag (out of its own region
   that does not overlap with the regions of other switches on the
   subnetwork), binds the tag to a multicast route, and then advertises
   the binding to all the switches (both downstream and upstream) on the
   subnetwork. Usually the first tag switch to join the group is the one
   that performs the allocation.

   Each of the above alternatives has its own trade-offs. The first
   alternative is fairly simple - one upstream router does the tag
   binding and multicasts the binding downstream. However, the first
   alternative may create uneven distribution of allocated tags, as some
   tag switches on a common subnetwork may have more upstream multicast
   sources than the others. Also, changes in topology could result in
   upstream neighbor changes, which in turn would require tag re-
   binding. Finally, one could observe that distributing tag binding
   from upstream towards downstream is inconsistent with the direction
   of multicast routing information distribution (from downstream
   towards upstream).

   The second alternative, even if more complex that the first one, has
   its own advantages. For one thing, it makes distribution of multicast
   tag binding consistent with the distribution of unicast tag binding.
   It also makes distribution of multicast tag binding consistent with
   the distribution of multicast routing information. This, in turn,
   allows the piggybacking of tag binding information on existing
   multicast routing protocols (PIM). This alternative also avoids the
   need for tag re-binding when there are changes in upstream neighbor.
   Finally it is more likely to provide more even distribution of



                                                               [Page 13]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


   allocated tags, as compared to the first alternative. Note that this
   approach does require a mechanism to choose the tag allocator from
   among the downstream tag switches on the subnetwork.


6.4. Quality of service

   Two mechanisms are needed for providing a range of qualities of
   service to packets passing through a router or a tag switch. First,
   we need to classify packets into different classes. Second, we need
   to ensure that the handling of packets is such that the appropriate
   QOS characteristics (bandwidth, loss, etc.) are provided to each
   class.

   Tag switching provides an easy way to mark packets as belonging to a
   particular class after they have been classified the first time.
   Initial classification could be done using configuration information
   (e.g., all traffic from a certain interface) or using information
   carried in the network layer or higher layer headers (e.g., all
   packets between a certain pair of hosts). A tag corresponding to the
   resultant class would then be applied to the packet. Tagged packets
   can then be efficiently handled by the tag switching routers in their
   path without needing to be reclassified. The actual scheduling and
   queueing of packets is largely orthogonal - the key point here is
   that tag switching enables simple logic to be used to find the state
   that identifies how the packet should be scheduled.

   Tag switching can, for example, be used to support a small number of
   classes of service in a service provider network (e.g. premium and
   standard). On frame-based media, the class can be encoded by a field
   in the tag header. On ATM tag switches, additional tags can be
   allocated to differentiate the different classes. For example, rather
   than having one tag for each destination prefix in the FIB, an ATM
   tag switch could have two tags per prefix, one to be used by premium
   traffic and one by standard. Thus a tag binding in this case is a
   triple consisting of <prefix, QOS class, tag>. Such a tag would be
   used both to make a forwarding decision and to make a scheduling
   decision, e.g., by selecting the appropriate queue in a weighted fair
   queueing (WFQ) scheduler.

   To provide a finer granularity of QOS, tag switching can be used with
   RSVP. We propose a simple extension to RSVP in which a tag object is
   defined. Such an object can be carried in an RSVP reservation message
   and thus associated with a session. Each tag capable router assigns a
   tag to the session and passes it upstream with the reservation
   message. Thus the association of tags with RSVP sessions works very
   much like the binding of tags to routes with downstream allocation.
   Note, however, that binding is accomplished using RSVP rather than



                                                               [Page 14]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


   TDP. (It would be possible to use TDP, but it is simpler to extend
   RSVP to carry tags and this ensures that tags and reservation
   information are communicated in a similar manner.)

   When data packets are transmitted, the first router in the path that
   is tag-capable applies the tag that it received from its downstream
   neighbor. This tag can be used at the next hop to find the
   corresponding reservation state, to forward and schedule the packet
   appropriately, and to find the suitable outgoing tag value provided
   by the next hop.  Note that tag imposition could also be performed at
   the sending host.


6.5. Flexible routing (explicit routes)

   One of the fundamental properties of destination-based routing is
   that the only information from a packet that is used to forward the
   packet is the destination address. While this property enables highly
   scalable routing, it also limits the ability to influence the actual
   paths taken by packets. This, in turn, limits the ability to evenly
   distribute traffic among multiple links, taking the load off highly
   utilized links, and shifting it towards less utilized links. For
   Internet Service Providers (ISPs) who support different classes of
   service, destination-based routing also limits their ability to
   segregate different classes with respect to the links used by these
   classes. Some of the ISPs today use Frame Relay or ATM to overcome
   the limitations imposed by destination-based routing. Tag switching,
   because of the flexible granularity of tags, is able to overcome
   these limitations without using either Frame Relay or ATM.

   Another application where destination-based routing is no longer
   adequate is routing with resource reservations (QOS routing).
   Increasing the number of ways by which a particular reservation could
   traverse a network may improve the success of the reservation.
   Increasing the number of ways, in turn, requires the ability to
   explore paths that are not constrained to the ones constructed solely
   based on destination.

   To provide forwarding along paths that are different from the paths
   determined by destination-based routing, the control component of tag
   switching allows installation of tag bindings in tag switches that do
   not correspond to the destination-based routing paths.

   One possible alternative for supporting explicit routes is to allow
   TDP to carry information about an explicit route, where such a route
   could be expressed as a sequence of tag switches. Another alternative
   is to use tag-capable RSVP (see Section 6.4) as a mechanism to
   distribute tag bindings, and to augment RSVP with the ability to



                                                               [Page 15]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


   steer the PATH message along a particular (explicit) route. Finally,
   it is also possible in principle to use some form of source route
   (e.g., SDRP, GRE) to steer RSVP PATH messages carrying tag bindings
   along a particular path. Note, however, that this would require a
   change to the way in which RSVP handles PATH messages, as it would be
   necessary to store the source route as part of the PATH state.


7. Tag Forwarding Granularities and Forwarding Equivalence Classes

   A conventional router has some sort of structure or set of structures
   which may be called a "forwarding table", which has a finite number
   of entries. Whenever a packet is received, the router applies a
   classification algorithm which maps the packet to one of the
   forwarding table entries. This entry specifies how to forward the
   packet.

   We can think of this classification algorithm as a means of
   partitioning the universe of possible packets into a finite set of
   "Forwarding Equivalence Classes" (FECs).

   Each router along a path must have some way of determining the next
   hop for that FEC. For a given FEC, the corresponding entry in the
   forwarding table may be created dynamically, by operation of the
   routing protocols (unicast or multicast), or it might be created by
   configuration, or it might be created by some combination of
   configuration and protocol.

   In tag switching, if a pair of tag switches are adjacent along a tag
   switched path, they must agree on an assignment of tags to FECs. Once
   this agreement is made, all tag switches on the tag switched path
   other than the first are spared the work of actually executing the
   classification algorithm. In fact, subsequent tag switches need not
   even have the code which would be necessary to do this.

   There are a large number of different ways in which one may choose to
   partition a set of packets into FECs. Some examples:

      1. Consider two packets to be in the same FEC if there is a single
      address prefix in the routing table which is the longest match for
      the destination address of each packet;

      2. Consider two packets to be in the same FEC if these packets
      have to traverse through a common router/tag switch;

      3. Consider two packets to be in the same FEC if they have the
      same source address and the same destination address;




                                                               [Page 16]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


      4. Consider two packets to be in the same FEC if they have the
      same source address, the same destination address, the same
      transport protocol, the same source port, and the same destination
      port.

      5. Consider two packets to be in the same FEC if they are alike in
      some arbitrary manner determined by policy. Note that the
      assignment of a packet to a FEC by policy need not be done solely
      by examining the network layer header. One might want, for
      example, all packets arriving over a certain interface to be
      classified into a single FEC, so that those packets all get
      tunnelled through the network to a particular exit point.


   Other examples can easily be thought of.

   In case 1, the FEC can be identified by an address prefix (as
   described in Section 6.1). In case 2, the FEC can be identified by
   the address of a tag switch (as described in Section 6.1). Both 1 and
   2 are useful for binding tags to unicast routes - tags are bound to
   FECs, and an address prefix, or an address identifies a particular
   FEC. Case 3 is useful for binding tags to multicast trees that are
   constructed by protocols such as PIM (as described in Section 6.3).
   Case 4 is useful for binding tags to individual flows, using, say,
   RSVP (as described in Section 6.4). Case 5 is useful as a way of
   connecting two pieces of a private network across a public backbone
   (without even assuming that the private network is an IP network) (as
   described in Section 6.5).

   Any number of different kinds of FEC can co-exist in a single tag
   switch, as long as the result is to partition the universe of packets
   seen by that tag switch. Likewise, the procedures which different tag
   switches use to classify (hitherto untagged) packets into FECs need
   not be identical.

   Networks could be organized around a hierarchy of FECs. For example,
   (non-adjacent) tag switches TSa and TSb may classify packets into
   some set of FECs FEC1,...,FECn.  However from the point of view of
   the intermediate tag switches between TSa and TSb, all of these FECs
   may be treated indistinguishably. That is, as far as the intermediate
   tag switches are concerned, the union of the FEC1,...,FECn is a
   single FEC.  Each intermediate tag switch may then prefer to use a
   single tag for this union (rather than maintaining individual tags
   for each member of this union). Tag switching accommodates this by
   providing a hierarchy of tags, organized in a stack.

   Much of the power of tag switching arises from the facts that:




                                                               [Page 17]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


      - there are so many different ways to partition the packets into
      FECs,

      - different tag switches can partition the hitherto untagged
      packets in different ways,

      - the route to be used for a particular FEC can be chosen in
      different ways,

      - a hierarchy of tags, organized as a stack, can be used to
      represent the network's hierarchy of FECs.

   Note that tag switching does not specify, as an element of any
   particular protocol, a general notion of "FEC identifier". Even if it
   were possible to have such a thing, there is no need for it, since
   there is no "one size fits all" setup protocol which works for any
   arbitrary combination of packet classifier and routing protocol.
   That's why tag distribution is sometimes done with TDP, sometimes
   with BGP, sometimes with PIM, sometimes with RSVP.


8. Tag switching with ATM

   Since the tag switching forwarding paradigm is based on label
   swapping, and since ATM forwarding is also based on label swapping,
   tag switching technology can readily be applied to ATM switches by
   implementing the control component of tag switching.

   The tag information needed for tag switching can be carried in the
   VCI field. If two levels of tagging are needed, then the VPI field
   could be used as well, although the size of the VPI field limits the
   size of networks in which this would be practical. However, for most
   applications of one level of tagging the VCI field is adequate.

   To obtain the necessary control information, the switch should be
   able to support the tag switching control component. Moreover, if the
   switch has to perform routing information aggregation, then to
   support destination-based unicast routing the switch should be able
   to perform Network Layer forwarding for some fraction of the traffic
   as well.

   Supporting the destination-based routing function with tag switching
   on an ATM switch may require the switch to maintain not one, but
   several tags associated with a route (or a group of routes with the
   same next hop). This is necessary to avoid the interleaving of
   packets which arrive from different upstream tag switches, but are
   sent concurrently to the same next hop.




                                                               [Page 18]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


   If an ATM switch has built-in mechanism(s) to suppress cell
   interleave, then the switch could implement the destination-based
   routing function precisely the way it was described in Section 6.1.
   This would eliminate the need to maintain several tags per route.
   Note, however, that suppressing cell interleave is not part of the
   ATM User Plane, as defined by the ATM Forum.

   Yet another alternative that eliminates the need to maintain several
   tags per route is to carry the tag information in the VPI field, and
   use the VCI field for identifying cells that were sent by different
   tag switches. Note, however, that the scalability of this alternative
   is constrained by the size of the VPI space (4096 tags total).
   Moreover, this alternative assumes that for a set of ATM tag switches
   that form a contiguous segment of a network topology there exists a
   mechanism to assign to each ATM tag switch around the edge of the
   segment a set of unique VCIs that would be used by this switch alone.

   The downstream tag allocation on demand scheme is likely to be a
   preferred scheme for the tag allocation and TIB maintenance
   procedures with ATM switches, as this scheme allows efficient use of
   entries in the cross-connect tables maintained by ATM switches.

   Implementing tag switching on an ATM switch simplifies integration of
   ATM switches and routers. From a routing peering point of view an ATM
   switch capable of tag switching would appear as a router to an
   adjacent router; this reduces the number of routing peers a router
   would have to maintain (relative to the common arrangement where a
   large number of routers are fully meshed over an ATM cloud). Tag
   switching enables better routing, as it exposes the underlying
   physical topology to the Network Layer routing. Finally tag switching
   simplifies overall operations by employing common addressing,
   routing, and management procedures among both routers and ATM
   switches. That could provide a viable, more scalable alternative to
   the overlay model. Because creation of tag binding is driven by
   control traffic, rather than data traffic, application of this
   approach to ATM switches does not produce high call setup rates, nor
   does it depend on the longevity of flows.

   Implementing tag switching on an ATM switch does not preclude the
   ability to support a traditional ATM control plane (e.g., PNNI) on
   the same switch. The two components, tag switching and the ATM
   control plane, would operate in a Ships In the Night mode (with
   VPI/VCI space and other resources partitioned so that the components
   do not interact).







                                                               [Page 19]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


9. Tag switching migration strategies

   Since tag switching is performed between a pair of adjacent tag
   switches, and since the tag binding information can be distributed on
   a pairwise basis, tag switching could be introduced in a fairly
   simple, incremental fashion. For example, once a pair of adjacent
   routers are converted into tag switches, each of the switches would
   tag packets destined to the other, thus enabling the other switch to
   use tag switching. Since tag switches use the same routing protocols
   as routers, the introduction of tag switches has no impact on
   routers. In fact, a tag switch connected to a router acts just as a
   router from the router's perspective.

   As more and more routers are upgraded to enable tag switching, the
   scope of functionality provided by tag switching widens. For example,
   once all the routers within a domain are upgraded to support tag
   switching, in becomes possible to start using the hierarchy of
   routing knowledge function.


10. Summary

   In this paper we described the tag switching technology. Tag
   switching is not constrained to a particular Network Layer protocol -
   it is a multiprotocol solution. The forwarding component of tag
   switching is simple enough to facilitate high performance forwarding,
   and may be implemented on high performance forwarding hardware such
   as ATM switches. The control component is flexible enough to support
   a wide variety of routing functions, such as destination-based
   routing, multicast routing, hierarchy of routing knowledge, and
   explicitly defined routes. By allowing a wide range of forwarding
   granularities that could be associated with a tag, we provide both
   scalable and functionally rich routing. A combination of a wide range
   of forwarding granularities and the ability to evolve the control
   component fairly independently from the forwarding component results
   in a solution that enables graceful introduction of new routing
   functionality to meet the demands of a rapidly evolving computer
   networking environment.













                                                               [Page 20]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


11. Security Considerations

   Security considerations are not addressed in this document.


12. Intellectual Property Considerations

   Cisco Systems may seek patent or other intellectual property
   protection for some or all of the technologies disclosed in this
   document. If any standards arising from this document are or become
   protected by one or more patents assigned to Cisco Systems, Cisco
   intends to disclose those patents and license them under openly
   specified and non-discriminatory terms, for no fee.


13. Acknowledgments

   Significant contributions to this work have been made by Anthony
   Alles, Fred Baker, Paul Doolan, Guy Fedorkow, Jeremy Lawrence, Arthur
   Lin, Morgan Littlewood, Keith McCloghrie, and Dan Tappan.


14. References


15. Authors' Addresses


      Yakov Rekhter
      Cisco Systems, Inc.
      170 Tasman Drive
      San Jose, CA, 95134
      E-mail: yakov@cisco.com

      Bruce Davie
      Cisco Systems, Inc.
      250 Apollo Drive
      Chelmsford, MA, 01824
      E-mail: bsd@cisco.com

      Dave Katz
      Juniper Networks
      3260 Jay Street
      Santa Clara, CA 95051
      E-mail: dkatz@jnx.com


      Eric Rosen



                                                               [Page 21]


Internet Draft    draft-rekhter-tagswitch-arch-01.txt          July 1997


      Cisco Systems, Inc.
      250 Apollo Drive
      Chelmsford, MA, 01824
      E-mail: erosen@cisco.com

      George Swallow
      Cisco Systems, Inc.
      250 Apollo Drive
      Chelmsford, MA, 01824
      E-mail: swallow@cisco.com

      Dino Farinacci
      Cisco Systems, Inc.
      170 West Tasman Drive
      San Jose, CA 95134
      E-mail: dino@cisco.com



































                                                               [Page 22]