Internet Draft
Network Working Group                          Liwen Wu, Pierrick Cheval
Internet Draft                                   Dirk Ooms, Alex Mondrus
Expiration Date: December 1999                                  Alcatel

                                                              June 1999


                   MPLS Multicast Traffic Engineering
                     draft-wu-mpls-multicast-te-00.txt


Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.  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."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   
Abstract

   In a core ISP backbone network, when there are a lot of multicast
   traffic which belongs to huge number of multicast groups, providing
   differentiated services to different kind of multicast traffic
   through this core network becomes a very difficult task. Also, how to
   use network resources in an efficient and optimized way to support
   differentiated multicast service is very difficult.

   This draft introduces one method, MPLS multicast traffic engineering,
   which can be used to manage multicast traffic in a core ISP backbone
   network.

   This draft starts with introducing the MPLS multicast traffic
   engineering concept. Then it describes 2 ways of building a multicast
   traffic engineering tree: sender-initiated tree and receiver-
   initiated tree. Finally, it provides an appendix, which defines the
   extensions to CR-LDP to support MPLS multicast traffic engineering.

1. Introduction



Wu, et al.                                                      [Page 1]





Internet Draft     MPLS Multicast Traffic Engineering         June 1999


   If a core ISP backbone network wants to provide differentiated
   multicast services, the constructed multicast trees must not include
   highly congested nodes or links.

   Similar to unicast traffic engineering[MPLS-TE], an MPLS multicast
   tree(or a point-to-multipoint tunnel) can be built in a network to
   carry multicast traffic. This tree can be administratively specified,
   or automatically computed by a suitable entity based on QoS and
   policy requirements, taking into consideration the prevailing network
   state.

   Let's assume the following scenario. An IP network consists of four
   IP devices, device e1, e2, e3, e4 and some other nodes.  A network
   administrator, for some reason, made a decision that e1 will become
   the root of the tree. The network administrator requests devices
   e2,e3, e4 to compute the reverse path(source-route) to e1. The
   reverse path (source-route) is calculated from the Constraint
   Routed(CR) topology database. Since the reverse path from e1 to e2,e3
   and e4 are calculated based on the CR topology, there is much less
   chance that routes from e1 to e2,e3 and e4 will be congested. So, a
   MPLS signaling protocol using the calculated source-routing
   information sets up a MPLS point-to-multipoint tree from e1 to e2,e3
   and e4.

   When a multicast packet arrives at the root of an MPLS multicast
   tree, after the classification, an MPLS label is imposed to the
   packet. Then, at the subsequent hops, the LSR looks up the forwarding
   table with the incoming label, finds out all the downstream routers
   and corresponding outgoing labels, makes the replications, and
   forwards them to the downstream routers with the outgoing labels.

   Since the traffic that flows along a label-switched tree is defined
   by the label applied at the ingress node(or root) of the MPLS tree,
   these trees can be regarded as tree tunnels.  When an MPLS tree is
   used in this way we refer to it as an MPLS tree tunnel.

   MPLS tree tunnels allow the implementation of a variety of policies
   related to network performance optimization.  For example, MPLS tree
   tunnels can be automatically or manually routed away from network
   failures, congestion, and bottlenecks.

   The mechanism in this draft constructs multicast trees immediately on
   L2.  Thus the mapping of L3 trees onto L2, as described in [MPLS-MC],
   is not needed here.

   The MPLS tree tunnel can be built as a result of a multicast SLA
   between a core network and its access network, or dynamic
   JOIN/PRUNE[PIM] from the access network. The actual mechanisms,



Wu, et al.                                                      [Page 2]





Internet Draft     MPLS Multicast Traffic Engineering         June 1999


   processes, and algorithms used to trigger and compute explicitly
   routed trees are beyond the scope of this specification.

   The MPLS tree tunnel concept proposed in the draft applies to a core
   network model. It does not apply to the end-host workstation.

1.1 Dependencies on CR-IGP

   In the case of automatic tree building, an IGP is needed.  Both, OSPF
   [CR-OSPF] and IS-IS [CR-ISIS] can be used for this purpose. The LSA
   information is flooded throughout an AS, the point-to-multipoint tree
   is calculated based on the pruned CR topology.

   In the case of manual tree building, it is assumed that a network
   administrator provisions the CR routing paths and it is assumed that
   the network operator knows his network topology. Based on this CR
   routing information the point-to-multipoint tree can be calculated.
   Therefore, the tree is always using the CR topology and the tree is
   not congested.

   It is good to point out here that this document assumes that an IGP
   detects bottlenecks and the multicast tree is built on the pruned,
   excluding bottlenecks, topology.

   We would like to stress the important role of IGPs for Multicast
   Traffic Engineering. IGPs should be able to convey specific multicast
   information. Since this document concentrates on Multicast Traffic
   engineering, new extensions for IGPs are needed, but they are out of
   the scope of this document.

   Also, we would like to emphasize that the proposed technique is
   relatively simple and relies on existing routing and signalling
   protocols.

1.2 Interworking with other multicast routing protocols.

   The method we describ in the draft only applies to a single
   administrative domain(AS).

   We assume that the root and receivers (border routers) of the point-
   to-multipoint tree are running some kind of inter-domain multicast
   protocol, such as MBGP/BGMP or MBGP/MSDP. These inter-domain
   multicast protocols are used to pull the multicast traffic into the
   domain and also send them out to the downstream domains.

2. Sender-Initiated Multicast Traffic Engineering Tree

   A sender-initiated multicast traffic engineering tree, which is one



Wu, et al.                                                      [Page 3]





Internet Draft     MPLS Multicast Traffic Engineering         June 1999


   of the applications mentioned in[EXPLICIT_TREE],  is a tree built
   from root to all the receivers. This tree can be centrally calculated
   by an NMS station and sent over to the root, or it can be a tree
   calculated by the root of the tree.

   The tree can be setup by extending CR-LDP. A new CR-LDP object,
   explicit tree object, can be defined to represent the whole multicast
   tree. The root of the tree sends a label request along with the
   explicit tree object. The subsequent LSR looks up its downstream
   routers in the explicit tree object of the label request msg. Then it
   sends the label request to these downstream routers. After the router
   receives the label mapping msgs from all of the downstream routers,
   it allocates a label, puts this point-to-multipoint MPLS forwarding
   entry into the forwarding table and sends a label mapping msg to its
   upstream router.

   Given that this style of tree creation must carry all of the elements
   of the entire tree in the initial label request, and given that it is
   highly undesirable to fragment such requests, this style of tree
   building is primarily suited to trees with smaller numbers of
   receivers.

   If a root driven tree creation is desired for large trees, a
   mechanism will be needed by which the tree can be established in
   several separate requests.

   Setting up a sender-initiated tree which contains a large number of
   receivers and dynamic JOIN/PRUNE receivers is a subject for future
   study.

   This tree can be torn down by the Label Release msgs sent from the
   root to all the receivers. When a node receives a Label Release msg,
   it takes the MPLS forwarding entry out of the forwarding table, and
   sends a Label Release msg to every downstream routers.

3. Receiver-Initiated Multicast Traffic Engineering Tree

   A receiver-initiated multicast traffic engineering tree is a tree
   built from receivers to the root. The tree can be centrally
   calculated by an NMS station. The reverse path from receiver to root
   can also be calculated at the receiver of the tree.  The reverse path
   of the root to each receiver is sent to the receiver if it is
   calculated by an NMS station. And each receiver sends a CR-LDP JOIN
   with the explicit reverse path and an MPLS label towards the root. At
   the subsequent upstream router, it merges all the CR-LDP JOIN msgs of
   the same tree, allocates a label, puts the point-to-multipoint label
   forwarding entry into the forwarding table, and sends a CR-LDP JOIN
   with the newly allocated MPLS label and explicit reverse path object



Wu, et al.                                                      [Page 4]





Internet Draft     MPLS Multicast Traffic Engineering         June 1999


   to the upstream router.

   When a receiver wants to leave the group, it can send a Label
   Withdraw to its upstream router. When all the downstreams neighbors
   of a router leave the group, it should send a label withdraw to its
   upstream neighbor.

   When a CR-LDP JOIN reaches a on-tree router, the router processes the
   CR-LDP JOIN, modifies the forwarding entry with the label assigned by
   the newly joined downstream router and finishes the JOIN procedure.

   This method relies on CR IGP. Since this method is receiver-
   initiated, the point-to-multipoint tree is set up on demand.

   If we compare it with the sender-initiated tree approach, the
   receiver-initiated method is more flexible in adding and removing LSP
   branches. In the case of the sender-initiated approach, the source
   should be able to know all receivers, so if there is requirement for
   building a more static tree , then the sender-initiated approach may
   be chosen.

4. Security Considerations

   Security considerations will be addressed in a future revision of
   this document.

5. Acknowledgements

   The authors would like to acknowledge the helpful comments and
   suggestions of the following people: Joel M.Halpern, Cheng-Yin Lee.

6. Authors's Address

   Liwen Wu

     Alcatel
     44983 Knoll Square
     Ashburn, VA. 20147
     U.S.A
     Phone: 703-724-2619
     Email:liwen.wu@adn.alcatel.com

   Pierrick Cheval

     Alcatel
     44983 Knoll Square
     Ashburn, VA. 20147
     U.S.A



Wu, et al.                                                      [Page 5]





Internet Draft     MPLS Multicast Traffic Engineering         June 1999


     Phone: 703-724-2080
     Email:Pierrick.Cheval@adn.alcatel.com

   Alex Mondrus

     Alcatel
     44983 Knoll Square
     Ashburn, VA. 20147
     U.S.A
     Phone: 703-724-2749
     Email:alex.mondrus@adn.alcatel.com

   Dirk Ooms

     Alcatel Research
     Francis Wellesplein
     B-2018, Antwerp
     Belgium
     Phone: 32-3-240-4732
     Email:Dirk.Ooms@alcatel.bel

7. References

 [MPLS-MC]: "Framework for IP Multicast in MPLS", D.Ooms, et.al., work
 in progress, Internet Draft, <draft-ooms-mpls-multicast-02.txt>

 [MPLS-TE]: "Requirements for Traffic Engineering Over MPLS", Daniel O.
 Awduche, et.al., work in progress, Internet Draft 

 [EXPLCIT_TREE]: "Explicit Tree Routing", Heinrich Hummel,Swee Loke,
 work in progress, Internet Draft, 

 [CR-LDP]: "Constraint-Based LSP Set up Using LDP", Bilel Jamoussi,
 et.al., work in progress, Internet Draft, 

 [CR-OSPF]: "OSPF Extensions for Traffic Engineering", Derek M. Yeung,
 work in progress, Internet Draft, <draft-yeung-ospf-traffic-00.txt>

 [CR-ISIS]: "IS-IS extensions for Traffic Engineering", Henk Smit,
 et.al., work in progress, Internet Draft, 

 [PIM]: "Protocol Independent Multicast-Sparse Mode (PIM-SM)", D.
 Farinacci, et.al., RFC2362.




Wu, et al.                                                      [Page 6]





Internet Draft     MPLS Multicast Traffic Engineering         June 1999


Appendix A. Extensions for CR-LDP

A.1 MPLS Multicast Tree ID

   A MPLS multicast tree id is used to identify a network-wide unique
   multicast tree. The LSPID field can be used to represent the MPLS
   multicast tree id value.

   The semantics of LSPID is specified in [CR-LDP].

A.2 Explicit Tree Object(TREE-TLV)

   The TREE-TLV is an object that specifies the tree to be taken by the
   point-to-multipoint LSP being established. It is composed of one or
   more Explicit Tree Hop TLVs (TREE-Hop TLVs) defined in Section 4.2.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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |U|F|         TREE  -TLV  (??)  |      Tree Size                |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        TREE-Hop TLV 1                         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        TREE-Hop TLV 2                         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~                          ............                         ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        TREE-Hop TLV n                         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   U bit
     Unknown TLV bit. As defined in [LDP].

   F bit
     Forward unknown TLV bit.  As defined in [LDP].

   Type
     A two byte field carrying the value of the TREE-TLV type which is
     ??.

   Tree Length
     Specifies the number of the TREE-HOP objects in the tree.

   TREE-Hop TLVs
     One or more TREE-Hop TLVs defined in Section 4.2.

   The TREE-HOP objects are ordered as "depth-first-order" in the msg.



Wu, et al.                                                      [Page 7]





Internet Draft     MPLS Multicast Traffic Engineering         June 1999


   Here is one example:


               A
               |
       +-------+----------+
       |       |          |
       B       C          D
               |
          +----+------+
          |    |      |
          E    F      G

   The TREE-TLV are encoded as {A,B,C,E,F,G,D}

A.2.1 Tree-Hop TLV

   The TREE-HOP TLV is a object that is used to represent a node that is
   the part of the tree.

      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |U|F|         TREE-HOP-TLV  (??)  |      Sub Tree Size          |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | TREE-Hop-Type                   |     Length                  |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |L|                                  Content //                 |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


   U bit
     Unknown TLV bit. As defined in [LDP].

   F bit
     Forward unknown TLV bit.  As defined in [LDP].

   Type
     A two byte field carrying the value of the TREE-HOP-TLV type which
     is ??.

   Sub-Tree Size
     This field contains the number of TREE-HOP objects under this
     subtree.

   Tree-Hop Type
     A fourteen-bit field indicating the type of contents of Tree-Hop.
     Currently defined values are:



Wu, et al.                                                      [Page 8]





Internet Draft     MPLS Multicast Traffic Engineering         June 1999


             Value                   Type
             -----                   ------------------------
             0x801                   IPv4 address
             0x802                   IPv6 address

   Length
     Specifies the length of the value field in bytes.

   L bit
     The L bit is an attribute of the Tree-Hop. The L bit is set if the
     Tree-Hop represents a loose hop in the explicit reverse route. If
     the bit is not set, the Tree-Hop represents a strict hop in the
     explicit reverse route.

     The L bit in the Tree-Hop is a one-bit attribute.  If the L bit is
     set, then the value of the attribute is "loose."  Otherwise, the
     value of the attribute is "strict."  For brevity, we say that if
     the value of the Tree-Hop attribute is loose then it is a "loose
     Tree-Hop."  Otherwise, it's a "strict Tree-Hop.". Further, we say
     that the abstract node of a strict or loose Tree-Hop is a strict or
     a loose node, respectively.  Loose and strict nodes are always
     interpreted relative to their prior abstract nodes.

     The path between a strict node and its prior node MUST include only
     network nodes from the strict node and its prior abstract node.

     The path between a loose node and its prior node MAY include other
     network nodes which are not part of the strict node or its prior
     abstract node.

   Contents
     A variable length field containing the node or abstract node that
     is the consecutive nodes that make up the explicit routed LSP.

A.3 Label Request

   The label request described in [CR-LDP] is changed to carry TREE-TLV
   instread of ER-TLV. So the format of label request is as follows:


         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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |U|   Label Request (0x0401)   |      Message Length            |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                     Message ID                                |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                     FEC TLV                                   |



Wu, et al.                                                      [Page 9]





Internet Draft     MPLS Multicast Traffic Engineering         June 1999


       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                     Return Message ID TLV  (mandatory)        |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                     LSPID TLV            (CR-LDP, mandatory)  |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                     TREE-TLV             (CR-LDP, mandatory)  |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                     Traffic  TLV         (CR-LDP, optional)   |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                     Pinning TLV          (CR-LDP, optional)   |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                     Resource Class TLV (CR-LDP, optional)     |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                     Pre-emption  TLV     (CR-LDP, optional)   |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+




A.4 JOIN Msg

   The JOIN msg is sent from downstream routers towards to root to build
   a tree.

   The format of JOIN msg is as follows:

      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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |U|   JOIN                     |      Message Length            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     Message ID                                |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     FEC TLV                                   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     Return Message ID TLV  (mandatory)        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     LSPID TLV            (CR-LDP, mandatory)  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     ER-TLV               (CR-LDP, mandatory)  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     Traffic  TLV         (CR-LDP, optional)   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     Resource Class TLV (CR-LDP, optional)     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     Pre-emption  TLV     (CR-LDP, optional)   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+




Wu, et al.                                                     [Page 10]





Internet Draft     MPLS Multicast Traffic Engineering         June 1999


   Each node decides the upstream root according the value specified in
   ER-TLV.

















































Wu, et al.                                                     [Page 11]