Network Working Group                                     Arup Acharya
   Internet Draft                                       Frederic Griffoul
   <draft-acharya-ipsofacto-mpls-mcast-00.txt>             Furquan Ansari
                                                   C&C Research Labs, NEC
 
                                                        February 23, 1999
                                                  Expires August 23, 1999
 
                  IP Multicast Support in MPLS Networks
                <draft-acharya-ipsofacto-mpls-mcast-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.
 
   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 group 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
 
   Multicast  support in  a  MPLS  network has yet   to be  defined. This
   document discusses both dense-mode and sparse-mode IP multicast within
   the   context of a MPLS  network.   Unlike unicast routing, dense-mode
   multicast routing trees are established in a data-driven manner and it
   is  not possible  to   topologically aggregate such  trees,  which are
   rooted at different sources. In sparse-mode multicast, source-specific
   trees may coexist with a core/shared  tree, and it  is not possible to
   assign a common label to traffic from different sources on a branch of
   the shared tree. This leads  us to suggest a per-source traffic-driven
   label allocation scheme for supporting   all three types of  multicast
   (dense  mode, shared tree,  source  tree)   routing  trees in a   MPLS
   network.
 
 
 
 
 
 
 
 
 
   Acharya, Griffoul & Ansari                                      [Page 1]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
 Table of Contents
 
   1. Introduction                                                      3
   2. Dense-mode multicast: problem definition                          4
   3. Sparse-mode multicast: problem definition                         6
   3.1 Existing proposals for PIM-SM in MPLS                            6
   3.2 Shared tree/source tree co-existence problem                     6
   3.3 Per-source label assignment                                      7
   4. Building block for proposed MPLS multicast                        8
   4.1 Assumptions                                                      8
   4.2 Upstream "implicit" label distribution                           9
   4.2.1 Label assignment                                               9
   4.2.2 Label withdrawal                                               10
   4.3  Downstream LDP-based label distribution                         11
   4.4 Comparison of the distribution procedures                        13
   5. Proposed Solution for PIM-DM in MPLS                              13
   5.1 Basic operations                                                 13
   5.2 Label Binding triggered by PIM-Graft                             14
   5.3 Label Reclamation triggered by PIM-Prune                         14
   5.4 Label Reclamation triggered by PIM inactivity timer              14
   5.5 Example                                                          15
   6. Proposed solution for PIM-SM in MPLS                              16
   6.1 Source-specific/shortest-path tree                               16
   6.2 Shared tree                                                      17
   6.2.1 Label Reclamation                                              17
   6.2.2 Example                                                        18
   7. Proposed solution for DVMRP and MOSPF in MPLS                     19
   8. Effects of L3 topology change on multicast LSP                    20
   8.1 Loops                                                            20
   8.2 Change of upstream router                                        20
   9. Conclusions                                                       20
   10. Security Considerations                                          21
   11. Acknowledgments                                                  21
   12. References                                                       21
   13. Authors Addresses                                                22
   Appendix A: LDP Multicast FEC Definitions                            23
   Appendix B: LDP Initialization Session Multicast Parameter           24
 
   Table of Abbreviations
 
   DVMRP   Distance Vector Multicast Routing Protocol
   IGMP    Internet Group Management Protocol
   IP      Internet Protocol
   LSP     Label Switched Path
   LSR     Label Switching Router
   MFC     Multicast Forwarding Cache
 
 
 
 
 
   Acharya, Griffoul & Ansari                                      [Page 2]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
   MRT     Multicast Routing Table
   NHLF    Next Hop Label Forwarding
   PIM-DM  Protocol Independent Multicast-Dense Mode
   PIM-SM  Protocol Independent Multicast-Sparse Mode
   RP      Rendezvous Point
   (S,G)   (Source, Group) pair
   (*,G)   (Match any source, Group) pair
   UL      Unused or Unassigned Label
   iif     Incoming Interface
   oif     Outgoing Interface
 
 
 
 
 
 1. Introduction
 
   This   document considers  the   problem  of supporting IP   multicast
   efficiently  within  an   MPLS environment.Both   PIM dense-mode   and
   sparse-mode  multicast routing  protocols  are discussed.  We  observe
   that, in dense-mode operation,  multicast routing entries do not exist
   prior to  arrival of data packets  and unlike unicast routing entries,
   cannot be aggregated. This suggests that labels need to be assigned on
   a per-flow (source, group) basis  in a traffic-driven fashion. In case
   of sparse-mode,  we observe  that  source specific trees may  co-exist
   with the shared/core tree for a multicast group,  and so, nodes of the
   shared tree may prune data packets based on the source. This implies a
   single  label cannot  be assigned to  all  flows  on the  shared tree,
   independent  of the  source.    We suggest a data-driven,   per-source
   assignment of  labels to  traffic  on the shared   tree. For the three
   different types  of trees (dense mode,  sparse  mode shared and sparse
   mode   source specific), we   present a common   scheme for implicitly
   distributing and binding labels to multicast FECs.
 
 
   Presently, support for multicast in  MLPS  networks [7] is  undefined,
   and   this  document suggests   a    possible solution for  forwarding
   multicast  traffic  at  layer  2. For a   review  of multicast routing
   protocols and their implications for a MPLS environment, the reader is
   referred  to   [1]. For   PIM-SM,   [3] suggests  that   the multicast
   forwarding cache (MFC) which contains forwarding entries for currently
   active  multicast flows, be   used  as a  trigger  method to  setup  a
   label-switched path  (LSP), but no  specific methods for label binding
   are suggested. It notes that coexistence of shared and source specific
   trees in PIM-SM is problematic for L2 forwarding  and suggests that L3
   forwarding be used in such situations.  In this document, we present a
   data-driven  scheme for label   assignment   to setup LSPs for    both
   dense-mode and sparse mode  multicast, and is based  on our prior work
   on IP switching over ATM, IPSOFACTO ([IPSO1, IPSO2]).
 
 
   Acharya, Griffoul & Ansari                                      [Page 3]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
 2. Dense-Mode Multicast: problem definition
 
   The   current  MPLS   specifications for unicast    traffic [ARCH,LDP]
   advocate control-driven label binding and downstream label assignment.
   In this section, we will point out why such a topology-driven approach
   is not suitable to the multicast dense-mode case.
 
   Let us  consider a  unicast example to  see how  topology-driven label
   binding works.
 
 
 
                                [NET1]       [NET2]
                                   |          |
                                   R1        R2
                                    \       /
                                   A \     / B
                                      \   /
                                        R3----[NET3]
                                       /    C
                                      / D
                                     /
                                   R4
                                   |
                                [NET4]
 
 
                               Figure 1
 
 
   Let us assume the LSR R3 is either a packet-switched LSR or a VC-merge
   capable  ATM LSR (i.e. it supports  label aggregation). A partial view
   of the R3 label tables is:
 
 
   Next Hop | IIF  |   Incoming Label  | OIF | Outgoing Label
   ----------+------+-------------------+-----+------------------
   R2     |  A   |        l1         |  B  |      l2
   R2     |  C   |        l3         |  B  |      l2
   R2     |  D   |        l3         |  B  |      l2
 
   The key points of MPLS unicast forwarding are the following:
 
        1. Routing table updates trigger the creation or destruction of
           label bindings.
 
        2. The label bindings are advertised using a dedicated Label
           Distribution Protocol (LDP). It happens before any data is
           received on the corresponding ports, thus all the packets
           are forwarded at the layer 2.
 
 
 
   Acharya, Griffoul & Ansari                                      [Page 4]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
        3. All packets whose destination is NET2, are aggregated
           in R3: they are forwarded to R2 on interface B using a
           single common label l2.
 
   Now let us  suppose a multicast group G  has members in NET2 and  NET4
   and a source S1 in NET1. According to  PIM-DM, R3 receives the packets
   to G on interface A and forwards them  on its outgoing interfaces B, C
   and D. R3 creates the following multicast routing table entry:
 
 
        (S1, G)      iif={A}    oif={B, C, D}   prune={}
 
   Packets are then forwarded at layer 3 since no label has been assigned
   to (S1,  G)  so  far.  Subsequently, a PRUNE   message  is received on
   interface C (since  NET3 has no  G  member) and the  multicast routing
   table entry is modified as:
 
 
        (S1, G)      iif={A}    oif={B, D}      prune={C}
 
   The  interface C is  added again to  the outgoing interface list after
   the Prune timer expires. Note the following points:
 
        1. There is no routing entry at the LSR R3 corresponding to
           (S1, G) prior to arrival of data from S1.
 
        2. It is not possible to aggregate multicast routing entries in
           Dense Mode. Suppose a source S2 in NET2 starts sending traffic
           to G. R3 creates a new multicast routing table entry:
 
                (S3, G) iif={B} oif={A, C, D} prune={}
 
           which is then modified after receiving PRUNE messages from
           interfaces A and C to:
 
                   (S3, G) iif={B} oif={ D} prune={A, C}
 
           The (S3, G) entry cannot be aggregated with the entry for
           (S1,G), since the incoming and outgoing interfaces are
           different.
 
        3. A given routing table entry changes dynamically (even without
           any change in the unicast routing/network topology) due to
           periodic pruning of branches and/or arrival of new members.
 
        4. All packets are forwarded at L3 till such a time incoming and
           outgoing labels are assigned to the (S1, G) entry.
 
 
 
 
 
 
   Acharya, Griffoul & Ansari                                      [Page 5]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
   Points (1)  and (3)  lead  us to  conclude  that label  assignment for
   dense-mode traffic needs to be hop-by-hop traffic-driven. Furthermore,
   from (2), each (S, G) entry needs to be assigned separate incoming and
   outgoing labels. When the first packet from  source S to destination G
   is received by an  LSR, multicast IP forwarding   carries out the  RPF
   check and creates an (S, G) entry in the multicast routing table. Once
   this (S, G) entry exists, the procedure to bind a  label to the (S, G)
   FEC is activated.
 
   Till  such labels are assigned, all  packets  are forwarded at L3, and
   therefore, the label bindings need  to be done  as quickly as possible
   (to  keep  L3  processing at  a minimum)  after   the routing entry is
   created.
 
 
   Arrival of a  PIM  Graft (S,  G) message requires  adding  an outgoing
   branch to the existing LSP.
 
   From (3), labels  need to be withdrawn in  two cases, on Prune  (S, G)
   reception and/or emission; on activity timer expiration.
 
 
 3. Sparse Mode Multicast: Problem definition
 
 
 3.1 Existing proposals for PIM-SM in MPLS
 
   [FAR1] suggests  a piggy-backing methodology  to assign and distribute
   labels  for multicast traffic for sparse-mode  trees. The idea is that
   PIM  Join  messages are augmented  to  carry labels. Besides requiring
   changes to existing PIM message formats, [OOMS1] lists other drawbacks
   of this  piggybacking approach.  As we  discuss below, it is  not also
   possible  to  assign   a  single  label, common  to   all sources, for
   sparse-mode shared trees, and   thus the piggybacking approach  is not
   adequate   for   this case.  [OOMS2]  recognizes   the  (*,  G)/(S, G)
   coexistence  problem   but only proposes   to  have recourse  to IP L3
   forwarding.
 
 
 
 3.2 Shared tree/source tree co-existence problem
 
   PIM-SM  allows receivers to  join a shared  tree (*,G) for the group G
   with   a common  core/Rendezvous   Point  (RP) as   the   root, or   a
   shortest-path  (S, G) tree rooted at  a specific  source S. A receiver
   may thus receive traffic for a given source S through the (S, G) tree,
   and for  other sources, through the  shared tree. Note also that, some
   members may receive  the source traffic from the   shared (*, G)  tree
   while other members may receive it from the (S, G) tree. Consequently,
   the  source Designated Router needs to   forward the source traffic on
   both the (*, G) and (S, G) trees.
 
 
 
   Acharya, Griffoul & Ansari                                      [Page 6]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
   In a MPLS context, a problem arises from the situation  when a node on
   the shared (*, G) tree needs to forward  data differently depending on
   the source, for  instance, because some members  have joined a  source
   specific shortest-path tree.
 
   Let us consider the case of Figure 2. The node R1 is not interested in
   receiving S1's traffic from  the (*, G) tree,  since it has joined the
   source-specific tree for S1. It sends a Prune(S1, G)  message to R1 to
   prevent S1's  traffic from being forwarded on  link 1. As a result, R1
   forwards  traffic from S1  on  interface 3,  while traffic from  S2 is
   forwarded on interfaces 1  and  3. To  accomplish the same  forwarding
   behaviour at L2  within  a MPLS network,  a  common label  can  not be
   assigned to all traffic on  R1's incoming link 2;  the traffic from S1
   on R1's interface 2 must be assigned a distinct label from that of S2.
 
 
 
                R2    -------> Join(S1,G) ------->      S1
                  \                                    /
              |    \ 1                                /
              |     \                                /
              |      +----+ 2                  +----+
              +--->  | R1 |--------------------| RP |
      Prune(S1,G)    +----+      ------>       +----+
                   /           Join(*,G)            \
                  / 3                                \
                 /                                    \
                R3                                      S2
 
 
                   at R1: (*,  G)  iif={2}  oif={1, 3}
                          (S1, G)  iif={2}  oif={3}
 
                             Figure 2
 
   It is easy  to see that such  selective forwarding may be necessary at
   different points of  the shared tree  depending on  the  source of the
   traffic. For    PIM-SM, a naive  topology-driven   procedure to assign
   labels leads to incorrect data delivery.
 
 
 3.3 Per-source label assignment
 
   PIM-SM shortest path tree  support  can be  equivalent to  PIM-DM tree
   support: a label  is assigned in a  hop-by-hop traffic-driven way  for
   each (S, G) entry.
 
 
 
 
 
 
   Acharya, Griffoul & Ansari                                      [Page 7]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
   To solve the (S, G)/(*, G) coexistence problem without resorting to IP
   forwarding, source specific labels are to  be assigned on intermediate
   nodes of the shared tree. Multiple labels  will be associated with one
   (*, G) entry, corresponding  to one label per  active source. In order
   to unambiguously distinguish a per-source (*, G)  label binding from a
   (S, G) binding, we propose to  introduce a (G,  S) FEC representing IP
   packets from source S forwarded on the (*, G)  tree. The other obvious
   FEC, the (S, G) FEC  represents IP packets  from source S forwarded on
   the (S, G) tree.
 
   PIM-SM could then be supported using per-source label assignment. More
   details are given in section 6.
 
 
 4. Building block for proposed MPLS multicast
 
 
 4.1 Assumptions
 
   Our proposal is based on the following basic assumptions:
 
        1. There is a label table associated with each interface of a
           multicast-capable LSR.
 
        2. On a multi-access link, multicast-capable LSRs must use
           disjoint label spaces that are used for binding labels to
           FECs.
 
   An exact  mechanism to   achieve (2) through   extensions to   LDP  is
   deferred to   a later  draft. [FAR2] describes   a  solution for  (2);
   however, it augments  PIM-Hello messages to achieve disjoint multicast
   labels across PIM-capable LSRs on a multi-access link. [FAR2] proposes
   label allocation from the downstream node; however, such a partitioned
   label space can be used for upstream label allocation as well.
 
   In the rest of the document, we  use the term "Unused  Label" or UL to
   denote a free multicast label, i.e. a label within the multicast range
   with no current binding.
 
   We propose   two  types of  label bindings:   the  first uses upstream
   allocation with an "implicit" distribution, the second uses downstream
   allocation  based on explicit LDP-like control messages.
 
   For  both the   approaches, a label   binding is    initiated when a FEC
   is detected in the multicast flows.
 
 
 
 
 
 
 
   Acharya, Griffoul & Ansari                                      [Page 8]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
 4.2 Upstream "implicit" label distribution
 
 
 4.2.1 Label assignment
 
   This proposal imposes an additional requirement:
 
    3. When a multicast-capable LSR receives a packet with a label that
       has no current binding on the incoming interface, L3 processing
       is invoked.
 
   When a multicast-capable LSR detects a new  multicast FEC, it invokes
   L3 routing to determine the outgoing interfaces.
   For each outgoing  interface, it selects a UL  and binds the UL to the
   corresponding multicast tree. It then  forwards the packet downstream.
   A downstream  LSR receives the packet  with the UL, invokes L3 routing
   (since  the incoming label has no  binding) to  determine the outgoing
   interfaces and again selects UL for each of those interfaces. An entry
   is added to the label table consisting of the incoming interface/label
   and outgoing  interfaces/label    list.  Subsequent  traffic on    the
   corresponding multicast tree is label-switched at L2.
 
   In Figure 3, consider  a new multicast flow  arriving on interface  1.
   The UL selected by the upstream LSR is A,  and reception of the packet
   invokes L3 processing. As  a result of  L3 processing, interfaces 2, 3
   and 4 are selected as the outgoing interfaces. ULs X, Y and Z are then
   picked for the interfaces  2, 3 and 4  respectively, and a copy of the
   packet is forwarded on each of those interfaces with the corresponding
   labels. An entry is added to the label tabel:
 
   < input = (1, A), output = {(2,X), (3,Y), (4,Z)} >
 
   Subsequent   packets that  arrive at   interface  1  with label A  are
   switched at  L2, without invoking  L3 processing. Thus, only the first
   packet undergoes L3 processing.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
   Acharya, Griffoul & Ansari                                      [Page 9]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
                         L3        UL=X
                     Processing      ^ /
                           ^  \     / /(2)
                          /    \-> / /
                      |--/---------|/    ------> UL=Y
             ___(1)___| /  R (LSR) |_________________
                      |/-----------|\ (3)
             ---------/              \
              UL=A                  \ \ (4)
                                     \ \
                                 UL=Z V \
 
 
                         Figure 3
 
   Note  that   this  scheme   works well   for  both  point-to-point and
   multi-acess interfaces. A  partitioned label  space between  multicast
   and unicast traffic avoids a situation where a label l is allocated by
   a   downstream LSRd  for  unicast  traffic  from LSRu1,   and is  then
   subsequently  allocated    by another   LSRu2  for  multicast  traffic
   downstream.
 
 
 
                LSRu1         LSRu2
                 | ^      l /  |
                 | |l    <-/   |
            -------\-------------
                    \  |
                     \ |
                     LSRd
 
                   Figure 4
 
   A disjoint label space amongst multicast LSRs ensures that no two LSRs
   assign the same label  on a common  multi-access link, e.g LSR  u1 and
   u2. Moreover, since there can only be one  forwarder on the link for a
   given (S, G), a per-source  upstream label binding requires no further
   coordination among multicast LSRs on a common link.
 
 
 4.2.2 Label withdrawal
 
   Once  a label has been assigned  on a  LSR's outgoing interface, there
   needs to be a mechanism to reclaim that label. To prevent traffic from
   being   switched along  the   wrong  LSP, it  is  sufficient  that the
   following relation holds:
 
 
 
 
 
   Acharya, Griffoul & Ansari                                     [Page 10]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
    (relation 1)
 
        if "L" is a UL on an outgoing interface of LSRu then
        "L" must also be an UL on the corresponding incoming interface
        of any LSRd on the same link as LSRu.
 
   Note that traffic is not forwarded incorrectly at L2, if l is an UL on
   LSRd's incoming interface, but not a UL  on LSRu's outgoing interface.
   In this  case, any traffic  that LSRu sends with  a label l invokes L3
   processing at LSRd.
 
   In our multicast solution for MPLS, we need to ensure  that a label is
   first reclaimed as an UL on the downstream  LSR(s) first and only then
   on  the upstream  LSR. When  the label   withdrawal is  triggered by a
   routing protocol control  message, such as a  PIM Prune, the  L2 label
   can  be immediately  reclaimed  without additional coordination, since
   the control message is sent from the downstream to the upstream node.
 
 
   In the case where  the   label binding for    a FEC is broken due   to
   expiration of the activity timer at a LSR, an explicit control message
   needs  to be sent  to revoke the  label binding. In a a point-to-point
   link,  we propose  to   send a   LDP Label Release   message  from the
   downstream to the upstream. Alternatively, the upstream LSR may send a
   Label Withdraw  message to  the downstream  node,  followed by a Label
   Release  response.     In case  of a   multi-access    link, a similar
   functionality   needs to  be    supported.   However, LDP   as defined
   currently, operates  over  a point-to-point  (TCP) reliable connection
   between adjacent LSRs. An    analogous mechanism for  the   muti-party
   interactions (e.g. Label Release/Withdraw) over a multi-access link is
   to be discussed in a subsequent draft.
 
 
 
 4.3 Explicit label allocation
 
   An  alternative to  the above  mechanism  is  to use explicit  control
   messages to bind a label to a FEC. On point-to-point links, we propose
   to  use   the Label Distribution Protocol    [LDP] in downstream label
   distribution mode,   along   with new  definitions  for  multicast FEC
   elements. This approach is  useful if requirement  (3) above cannot be
   met  by a  LSR. In that  case, the   traffic for a  new  FEC  is first
   forwarded on a  default routed path  (e.g. (VPI=0,VCI=32) for LDP over
   ATM VC).
 
 
   Acharya, Griffoul & Ansari                                     [Page 11]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
                        To members <-- LSRd1
                                            \
                                             LSRu --- <---- from Source
                                            /
                        To members <-- LSRd2
 
 
                           Figure 5
 
 
   As  shown in Figure   5, LSRu  will   initially receive packets  (on a
   default, routed path) that  belong to a FEC for  which it has no label
   binding. Two options are then possible:
 
   --  LSRu detects  a  new  multicast  FEC according and   sends a Label
   Request message to all the next hops  (for the MRT entry corresponding
   to the FEC).  Each  downstream LSR selects  a free multicast label for
   its  corresponding incoming port and  eventually sends a Label Mapping
   message for the FEC to LSRu.
 
   -- No  Label Request is sent  by LSRu. Instead,  arrival of packets at
   LSRd1 and  LSRd2  on  the routed path,  trigger  an  unsolicited Label
   Mapping message to LSRu.
 
   Besides traffic-driven multicast   FEC  detection, a LSR  initiates  a
   label binding procedure, when the oif list of a MRT entry is modified,
   e.g. arrival of PIM-DM Graft messages and PIM-SM Join(*, G).
 
   On point-to-point links, the above  LDP procedures can be used without
   additional protocol support.       Multicast FEC  elements    and  LDP
   initialization  session multicast extension  are defined in Appendix A
   and B.
 
   As  noted in  the previous  section,   LDP messages are  currently not
   defined for  multi-party  interactions.  In this document,   we assume
   that  such a mechanism exists  for assigning and withdrawing multicast
   labels  on   a  multi-access  link,    without specifying  the   exact
   mechanism.  Such   a   multicast analogue  for  LDP,    e.g.  periodic
   link-local  multicast  of  label  bindings,  will be   described  in a
   subsequent draft.
 
 
 
   Acharya, Griffoul & Ansari                                     [Page 12]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
 4.4 Comparison of the distribution procedures
 
   For multicast   traffic,  upstream label allocation   is simpler since
   there can only be one  upstream node (per  link), and therefore, there
   can be only one entity that binds  the label. In downstream allocation
   schemes, there may be multiple  receivers (on a multi-access link) and
   one of them  needs to be chosen as  the label allocator.  Additionally
   if the original  allocator of a label (on  a multi-access link) leaves
   the multicast tree, either the label binding for  the tree needs to be
   changed and/or another LSR needs to be elected as the label allocator.
 
   For traffic-driven approaches, upstream allocation is preferable since
   it allows the label-binding (and  consequently L2 switching) to happen
   earlier than for downstream allocation.
 
   In general, the advantage of an implicit coordination is that only the
   first packet  carrying an UL  requires L3 processing.  In contrast, an
   explicit control message to   propagate labels incurs a  delay between
   the  arrival of   a  traffic stream   and label   binding. During this
   interval, each  incoming packet is processed  at L3 and  requires a L3
   copy-and-forward operation for  each outgoing branch of the  multicast
   tree.
 
   In  the next   sections, we describe  in  more  details   our proposed
   solution to support PIM-DM and PIM-SM in  MPLS. Although we will focus
   on  the upstream label   distribution   procedure, the  solutions  are
   equally   applicable  with  downstream-on-demand  LDP-based      label
   distribution, assuming that  the necessary  multicast  extensions will
   be defined  LDP at a later time.
 
 
 
 5. Proposed Solution for PIM-DM in MPLS
 
 
 5.1 Basic operations
 
   In PIM-DM, there is a  one-to-one mapping between a multicast  routing
   entry and a LSP, so that the only  FEC to be  considered is the (S, G)
   FEC. We  use the building  block described in section   4 to propose a
   solution for PIM-DM as follows.
 
   When a multicast packet with source S and destination G is received at
   an incoming interface,  the   UL associated with the   packet triggers
   PIM-DM processing, e.g. RPF  check, followed by selecting the outgoing
   entries. A (S, G) routing table entry  is installed. An UL is selected
   for each outgoing link, and the packet is forwarded  onto the next hop
   using the  selected labels. A corresponding LSP  <(iif, label)  set of
   (oif, label)> is created.
 
 
 
 
   Acharya, Griffoul & Ansari                                     [Page 13]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
   In PIM-DM, there  is a one-to-one mapping  between a multicast routing
   entry and a  LSP, so that  the only FEC  to be considered is the (S,G)
   FEC.  Following  the  first packet   that  is processed  at L3  (which
   triggers the LSP setup) all other packets are forwarded in L2.
 
   In all the solutions, all  PIM-DM  control messages, Prune and  Graft,
   can be sent on a single hop LSP between adjacent LSRs.
 
 
 5.2 Label Binding triggered by PIM-Graft
 
   Arrival of a Graft(S, G) message requires adding an outgoing branch to
   the existing LSP. For upstream implicit label allocation, it means to
   select an UL on the link on which the Graft(S, G) was received.
 
 
 5.3 Label Reclamation triggered by PIM-Prune
 
   Subsequent to  setting  up the  LSP,  arrival of a  PIM  Prune message
   removes the corresponding   outgoing branch  of   the LSP, i.e.    the
   previously  assigned label   is now marked  as   UL.  Suppose  LSR1 is
   upstream to LSR2  and  the label  assigned for   a (S, G)  FEC on  the
   LSR1--2 link is L1. Once Layer 3 processing at LSR2 sends the Prune to
   LSR1, LSR2 marks the incoming label L1 as a  UL on the LSR1--LSR2 link
   (so that any subsequent assignment  of L1 by  LSR1 to  a new FEC  will
   trigger L3 processing at LSR2). LSR1 marks L1 as a UL on receiving the
   Prune, and modifies the LSP associated with the  (S, G) entry. LSR1 is
   now free to assign L1 to a new FEC.
 
 
 5.4 Label Reclamation triggered by PIM inactivity timer
 
   In  PIM-DM, the (S,    G)  forwarding state   is  associated  with  an
   inactivity timer ([PIM-DM]), which is  used to remove inactive (S,  G)
   entries, i.e. flows with no traffic for  a specified amount of time T.
   In a L3  router, this is achieved   by resetting the timer  whenever a
   packet is forwarded using the (S, G) entry.
 
   When forwarding traffic in L2 mode, no traffic will  be observed at L3
   and therefore, we propose that the inactivity  timer is reset based on
   forwarding  activity on the LSP. If  no activity is observed within T,
   both the LSP and the multicast routing entry should be removed.
 
   To ensure  that a  label is  first reclaimed  as   UL on the  incoming
   interface of a LSRd prior to  that of an outgoing  interface of a LSRu
   on the  same link, LSRu will  send an LDP  Label Withdraw message (see
   section 4.2.2).
 
 
 
   Acharya, Griffoul & Ansari                                     [Page 14]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
 5.5 Example
 
   Let us come back to the example of the  section 2. A multicast group G
   has members in NET2 and NET4 and a source S1  in NET1 sends traffic to
   G.
 
 
                        [NET1]       [NET2]
                         |          |
                         R1        R2
                          \       /
                         A \     / B
                            \   /
                              R3----[NET3]
                             /    C
                            / D
                           /
                           R4
                           |
                          [NET4]
 
 
   R3 receives the first packet to G on interface  A with an unused label
   l1. This unused label has been assigned by the upstream router R1. The
   packet has to be  forwarded on the outgoing interfaces  B, C and D. R3
   creates the following multicast routing table entry:
 
 
        (S1, G)       iif={A}     oif={B, C, D}    prune={}
 
   In the same time, R3 chooses 3 unused labels, one for each outgoing
   interface and stores the following bindings:
 
     +------------+-----+----------------+----------------------+
     |FEC Element | IIF | Incoming Label | OIF - Outgoing label |
     +------------+-----+----------------+----------------------+
     |            |     |                |  B        l2         |
     |  (S1, G)   |  A  |      l1        |  C        l3         |
     |            |     |                |  D        l4         |
 
       Figure 6: R3 's DM bindings after first packet arrival
 
   Subsequently, a PRUNE message is received on interface C, since NET3
   has no member of G and the multicast routing table entry is modified
   as:
 
                (S1, G)      iif={A}    oif={B, D}      prune={C}
 
   while the label binding is now:
 
 
 
 
   Acharya, Griffoul & Ansari                                     [Page 15]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
     +------------+-----+----------------+----------------------+
     |FEC Element | IIF | Incoming Label | OIF - Outgoing label |
     +------------+-----+----------------+----------------------+
     |            |     |                |  B        l2         |
     |  (S1, G)   |  A  |      l1        |                      |
     |            |     |                |  D        l4         |
 
         Figure 7: R3 's DM bindings after Prune arrival
 
   The label l3 on the interface C is again in the pool of unused labels.
 
 
 6. Proposed solution for PIM-SM in MPLS
 
   Unlike  PIM-DM, an entry  in the MRT already  exists  in a sparse mode
   (SM) tree prior to arrival of data packets.
 
   SM  trees are  either  source-specific  shortest-path trees (SPT)   or
   shared trees (RPT). The MRT  entries for a  SM source-tree are similar
   to that of a dense-mode tree: both are (S,  G) entries. However, while
   DM entries  are installed on arrival  of the first  packet, SM entries
   are established and refreshed  via periodic PIM-Join  messages towards
   the sender. For a SM shared-tree, a single (*, G) entry in MRT is used
   to forward traffic from multiple sources.
 
 
 6.1 Source-specific/shortest-path tree
 
   Since MRT entries for a source-specific tree are (S, G) entries, it is
   natural  to do a one-to-one  mapping of the  L3  tree to a LSP. [FAR1]
   suggests piggybacking  the label  on PIM-Join messages.  This requires
   modifying L3 protocol messages.
 
   The solution that we propose  for label assignment/binding is the same
   as that for PIM-DM,  i.e. (S, G) routing  entry label assignment in  a
   data-driven fashion, using  upstream implicit distribution. Expiration
   of the L3  forwarding  state (eg non-arrival  of  Join(S, G) messages)
   leads to either removal of outgoing branch from the  (S, G) entry (and
   the corresponding label of the the LSP) or to the  removal of both the
   MRT entry and the LSP (if it is the last branch to be deleted).
 
   Note  that in this scheme, the  downstream LSR marks an incoming label
   as UL before the same label is marked as UL  on the outgoing interface
   of the upstream  LSR. Thus, the  label is correctly reclaimed (section
   4.2.2).
 
   Both solutions  use   one label for  every  branch;   however,  in our
   proposed solution,  the PIM protocol   messages are unchanged  and  no
   labels are assigned till the source becomes active.
 
 
 
   Acharya, Griffoul & Ansari                                     [Page 16]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
 6.2 Shared tree
 
   The need   for assigning source-specific  labels  on  the intermediate
   nodes of a   shared tree was   described in section  3.2. Our proposed
   solution is similar  to   that for PIM-DM  and   SM source trees,   as
   follows.
 
   When the first  multicast data packet  from source S (via the core/RP)
   is received at an incoming interface of a  LSR on the shared tree, the
   UL associated with the  packet triggers L3 routing.  If a matching MRT
   entry  exists (either a (*,  G) or a (S, G)   entry), then UL for each
   outgoing  interface of the matching entry,  is selected and the packet
   is forwarded   onto the next  hop(s) using   the selected  label(s). A
   corresponding LSP <(iif, label) set of (oif, label)> is created.
 
   If the matching  MRT entry was  a (S,  G)  entry, then as with  source
   specific PIM-DM tree, there can be atmost one  LSP associated with the
   entry.
 
   If the matching MRT  entry was a (*,  G) entry, then multiple LSPs may
   be associated with  each entry, corresponding  to  one LSP per  active
   source.   For each active source S,   the  association between the MRT
   entry and LSP should be explicitly recorded at the LSR. It is possible
   that  at  a later   time, the arrival  of   a PIM-Prune(S, G)  message
   triggers  creation of a (S, G)  entry (e.g. when  a downstream node of
   the shared tree  starts to receive  data from the source-specific tree
   for  S); the oif  set for this newly  created  (S, G) entry will equal
   that of  the (*, G) entry but  minus the interface  on which the Prune
   was received. This should trigger  modification  of the LSP, i.e.  the
   label associated  with the  outgoing interface on  which  the Prune is
   received, is now marked a UL.
 
   PIM-SM  allows a  sender to  transmit  packets either  as encapsulated
   messages   (PIM-Register)  to the  RP, or  as  native multicast (which
   typically happens when the RP joins the source  specific tree). In the
   former case, end-to-end  LSP cannot be  created since  the LSP between
   the  source and  the  RP  may have  been  setup  using labels  for  an
   aggregate (unicast) route;  additionally, the data  packets need to be
   decapsulated at L3.  In the  latter  case, i.e. when  the RP  receives
   native multicast packets, end-to-end LSP can be created.
 
 
 6.2.1 Label Reclamation
 
   All LSPs associated with a (*, G) MRT entry  are reclaimed when the L3
   forwarding state times  out,   due to  non-arrival of PIM-Join(*,   G)
   messages from all downstream nodes.
 
 
 
 
   Acharya, Griffoul & Ansari [Page 17]


   Internet Draft draft-ipsofacto-mpls-mcast-00.txt February 1999
 
 
   Arrival of a Prune (S, G) message  triggers label reclamation of a LSP
   associated with a   (*, G) entry (which  then  becomes a (S,  G) entry
   (section 6.2)),  or of a LSP  associated with (S,  G) entry, if such a
   LSP exists.
 
   When there   is (*,  G)  state at  L3, and   there are multiple active
   sources,  a LSP per  source is  setup.  However, when  a source S goes
   inactive,  there  is no  L3 mechanism  that  can act  as  a trigger to
   reclaim the  LSP. Notice that  LSPs setup  with PIM-DM  had a  similar
   situation but since, PIM-DM maintains per-source timers at L3, the LSP
   reclamation  is   triggered by  expiration of  such  timers. In PIM-SM
   shared tree, there is no per-source timer maintained at L3 (as part of
   the protocol definition; specific implementations may use a per-source
   MFC entry).
 
   In order  to reclaim labels, we propose  that the  many-to-one mapping
   between a MRT  entry and multiple  LSPs be associated with an activity
   timer per LSP,  that is used in  the  same fashion  as PIM-DM activity
   timers  (see  5.4). Note  however, that  is  not  a  change to the  L3
   protocol (PIM-SM), but is an additional data structure maintained with
   the L3 to L2 mapping entries.
 
   Like PIM-DM, once  the L2 LSP inactivity timer  expires, the LSR  must
   send an LDP Label Withdraw to each  LSP downstream nodes, as described
   in section 4.2.2.
 
 
   6.2.2  Example
 
   Let us consider the case of section 3.2:
 
 
                R2    -------> Join(S1,G) ------->      S1
                 \                                    /
             |    \ 1                                /
             |     \                                /
             |      +----+ 2                  +----+
             +--->  | R1 |--------------------| RP |
     Prune(S1,G)    +----+      ------>       +----+
                   /           Join(*,G)            \
                  / 3                                \
                 /                                    \
                R3                                      S2
 
 
   Initially both R1 and R2 have joined the shared (*, G) tree, so that
   the LSP and MRT entries at R1 look like:
 
 
 
 
   Acharya, Griffoul & Ansari                                     [Page 18]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
         MRT:
                (* , G)   iif={2}     oif={1, 3}
 
         LSP:
                (G, S1)   in={2,L12}   out={(1,L11);(3,L13)}
                (G, S2)   in={2,L22}   out={(1,L21);(3,L23)}
 
   Note that we have per-source LSP for the group G, bound to the FEC (G,
   S1) and (G, S2) as defined in section 3.3. The incoming labels L12 and
   L22 are distinct.
 
   Now  R2 joins (S1,  G) specific tree and we  suppose R1 is not part of
   the (S1, G)  tree. R2 eventually sends a  Prune(S1, G) message to  R1.
   The MRT entries for G become:
 
         MRT:
                (* , G)   iif={2}  oif={1, 3}
                (S1, G)   iif={2}  oif={3}
 
   Moreover the Prune(S1, G) message leads to the removal of one
   outgoing branch of the (G, S1) LSP:
 
         LSP:
                (G, S1)   in={2,L12}   out={(3,L13)}
                (G, S2)   in={2,L22}   out={(1,L21);(3,L23)}
 
   With this procedure,  R2 is still receiving  the traffic from S2 on an
   LSP following the L3 shared tree, while  the traffic from S1 follows a
   shortest-path tree.  R3 is  not affected and  keeps  on  receiving the
   whole traffic to G on the (*, G) interface.
 
 
 7. Proposed solution for DVMRP and MOSPF in MPLS
 
   DVMRP [DVMRP]  is supported in  the same  fashion as  PIM-DM: both are
   flood-and-prune techniques which create  a (S, G) entry  in the MRT on
   arrival of  the first data packet. The  difference  between the two is
   mainly at L3, e.g. DVMRP uses RIP specific information to disambiguate
   equal-cost paths, while PIM-DM  uses explicit PIM-Assert messages. Our
   proposed solution for PIM-DM is  equally applicable to setting up LSPs
   when the L3 protocol is DVMRP.
 
   MOSPF is not  a flood-and-prune technique  [MOSPF]. It uses link-state
   advertisements to flood group membership to all routers within a area.
   On   arrival of the   first data packet,  a shortest  path (S, G) tree
   computation is triggered, and a (S, G) entry  is installed in the MRT.
   Again, our proposed solution for PIM-DM  in MPLS is equally applicable
   to setting upLSPs when the L3 protocol is MOSPF.
 
 
 
   Acharya, Griffoul & Ansari                                     [Page 19]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
 8. Effects of L3 topology change on multicast LSP
 
 
 8.1 Loops
 
   Multicast  packet forwarding in a L3  router is preceded  by a Reverse
   Path Forwarding (RPF) check,  i.e. a  packet is  forwarded only if  it
   arrives on  the "right" interface, as specified  in a matching routing
   entry ((S,G) or (*, G)). Thus, L3  routing for multicast packets never
   creates routing loops. In our solution, the L3 entry is mapped to a L2
   forwarding path, and so, the LSP is also loop-free.
 
 
 8.2 Change of upstream router
 
   Change  in unicast routing  entries at L3 may  lead to a change in the
   multicast routing tree at  L3 as well. A given  router R, may  thus be
   associated with a new upstream router Ru of the multicast tree, and/or
   a different set of downstream routers Rd.  A  change in a L3 MRT entry
   triggers a corresponding change in an existing LSP as follows.  If the
   incoming  interface of  the L3  MRT entry  changes, then  the incoming
   label of an existing LSP  for that entry is  marked UL (and a new  LSP
   will  be setup mirroring the  changed L3 MRT  entry).  If a downstream
   interface is deleted  from the  MRT  entry, then  the corresponding L2
   label is  marked UL.   (That  label will   also  be reclaimed  by  the
   downstream LSR as it notices its upstream router/LSR has changed).
 
 
 9. Conclusions
 
   In this document, we first make the following observations for
   existing multicast routing protocols (PIM, DVMRP, MOSPF):
 
     1a. Dense-mode trees are created in a data-driven fashion; no L3
         messages are used to create the tree.
 
     1b. Dense-mode trees are created on a per-source basis, with no
         known mechanisms to aggregate different (S, G) trees.
 
     1c. Source-specific sparse-mode trees are setup via explicit L3
         control messages, but like dense-mode trees, multiple (S, G)
         trees cannot be aggregated.
 
     1d. Nodes of a shared sparse-mode tree may forward traffic
        selectively based on the traffic source.
 
 
 
 
 
 
   Acharya, Griffoul & Ansari                                     [Page 20]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
   From these observations, it appears that:
 
     2a. The (S, G) structure of DM and source-specific SM trees at L3
         favours a per-source label-assignment.
 
     2b. Sparse-mode trees should also be mapped to a per-source LSP to
         avoid L3 routing at intermediate nodes of the shared tree.
 
   This led us to suggest a per-source LSP setup that is applicable to
   all three trees. No changes are needed to any L3 routing protocol.
   Further, at the level of individual nodes, we observe that:
 
    3a. Data-driven creation of MRT entry at DM tree nodes can be
        coupled with label assignment, thus avoiding L3 processing
        beyond the first packet.
 
    3b. PIM-Prune messages can be exploited to trigger immediate
        reclamation of labels on the upstream and downstream nodes of
        the pruned branch (DM or SM).
 
    3c. Nodes on a shared SM tree need to perform data-driven
        per-source label assignment since the sources are not known
        a-priori (see 1d and 2b)
 
   As a result, we presented a basic building block, using the dual
   notions of "unused labels" and "implicit binding", to achieve a
   data-driven, per-source LSP that binds labels to FECs at the earliest
   possible time, i.e the first packet.
 
 
 10. Security Considerations
 
   Security considerations are not addressed in this document.
 
 
 11. Acknowledgments
 
   Ajay Bakre, Kojiro Watanabe, D Raychaudhuri at Princeton
   Sibylle Schaller,Jurgen Roethig and Heiner Stuettgen at Heidelberg.
 
 
 12. References
 
   [OOMS1]   D.Ooms, W.Livens, B.Sales, M.Ramahlo, "Framework for IP
   Multicast in MPLS", draft-ooms-mpls-multicast-00.txt,
   August 1998.
 
   [OOMS2]   D.Ooms, W.Livens, B.Sales, "MPLS for PIM-SM",
   draft-ooms-mpls-pimsm-00.txt, November 1998.
 
 
   Acharya, Griffoul & Ansari                                     [Page 21]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
   [PIM-SM]  D.Estrin, D.Farinacci, A.Helmy, D.Thaler, S.Deering,
   M.Handley, V.Jacobson, C.Liu, P.Sharma, L.Wei;
   "Protocol Independent Multicast (PIM), Sparse Mode Protocol:
   Specification", RFC 2362, June 1998.
 
   [PIM-DM]  S.Deering, D.Estrin, D.Farinacci, V.Jacobson, A.Helmy,
   D.Meyer, L.Wei; "Protocol Independent Multicast Version 2
   Dense Mode Specification", draft-ietf-pim-v2-dm-01.txt
 
   [DVMRP]   T.Pusateri; "Distance Vector Multicast Routing Protocol",
   draft-ietf-idmr-dvmrp-v3-07.
 
   [MOSPF]   J.Moy; "Multicast Extensions to OSPF",
   draft-ietf-mospf-mospf-01.txt.
 
   [IPSO1]   A.Acharya, R.Dighe, F.Ansari; "IPSOFACTO: IP Switching
   Over Fast ATM Cell Transport, draft-acharya-ipsw-fast-cell-00.txt
 
   [IPSO2]   A.Acharya, R.Dighe, F.Ansari; "IP Switching Over Fast
   ATM Cell Transport (IPSOFACTO) : Switching Multicast Flows",
   Globecom 97.
 
   [LDP]     L.Andersson, P.Doolan, N.Feldman, A.Fredette, B.Thomas,
   "LDP Specification", draft-ietf-mpls-ldp-03.txt,
   January 1999
 
   [ARCH]    E.Rosen, A.Viswanathan, R.Callon, "Multiprotocol Label
   Switching Architecture", draft-ietf-mpls-arch-03.txt,
   February 1999.
 
   [FAR1]    D.Farinacci, Y.Rekhter, "Multicast Label Binding and
   Distribution using PIM",draft-farinacci-multicast-tagsw-01.txt,
   November 1998.
 
   [FAR2]    D.Farinacci, "Partitioning Label Space among Multicast
   Routers on a Common Subnet",
   draft-farinacci-multicast-tag-part-01.txt,
   November 1998.
 
 13. Authors' Addresses
 
   Arup Acharya
   C&C Research Labs, NEC USA
   4 Independence Way, Princeton, NJ, USA
   Phone : 1 609 951 2992
   Fax   : 1 609 951 2499
   E-mail: arup@ccrl.nj.nec.com
 
 
 
 
   Acharya, Griffoul & Ansari                                     [Page 22]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
   Frederic Griffoul
   C&C Research Labs, NEC Europe Ltd.
   Adenauerplatz 6
   D-69115 Heidelberg, Germany
   Phone : 49 6221 905 1120
   Fax   : 49 6221 905 1155
   E-mail: griffoul@ccrle.nec.de
 
   Furquan Ansari
   C&C Research Labs, NEC USA
   4 Independence Way, Princeton, NJ, USA
   Phone : 1 609 951 2965
   Fax   : 1 609 951 2499
   E-mail: furquan@ccrl.nj.nec.com
 
 
 Appendix A: LDP Multicast FEC Definitions
 
   In order to use LDP for multicast traffic, three new FEC elements need
   to be defined:
   - the source-group (S, G) element, type 0x04
   - the group (*, G) element, type 0x05
   - the group-source (G, S) element, type 0x06
 
   The source-group element  corresponds  to  PIM-DM and  PIM-SM   source
   specific multicast routing  entry.  The group element corresponds   to
   PIM-SM    shared entry, The  group-source  FEC  is required to support
   per-source PIM-SM LSP, as described in section 3.3 and 6.2.  Note that
   the   (G,  S)  FEC  definition   impacts  the  processing  of the  LDP
   messages. For instance, when  searching for the Next Hop  of a (G,  S)
   FEC,  the lookup must   be performed only  on  the (*, G) entries. The
   group  FEC could be used  in Label Withdraw/Release  messages to break
   label bindings related   to a  (*,   G) routing entry that   has  been
   removed.
 
 
   Source-group element value encoding:
 
   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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  SrcGrp (4)   |     Address Family            |    S/G Len    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Source Address                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Group Address                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
 
 
 
 
 
   Acharya, Griffoul & Ansari                                     [Page 23]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
   Address Family:
   Two octet containing a value from ADDRESS FAMILY NUMBERS in
   RFC1700 that encodes the address family of both the source and
   the group address.
 
   S/G Len:
   One octet unsigned integer containing the length in bits of the
   source address that follows. The group address length in bits is
   also S/G Len, so that the length of the FEC element after the
   S/G Len field is 2 * S/G Len
 
   Source Address:
   An address encoding according to the Address Family field,
 
   Group Address:
   An address encoding according to the Address Family field.
 
   Group element value encoding:
 
   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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Grp (5)      |     Address Family            |    Grp Len    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Group Address                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
   Address Family:
   Two octet containing a value from ADDRESS FAMILY NUMBERS in
   RFC1700 that encodes the address family of both the source and
   the group address.
 
   Grp Len:
   One octet unsigned integer containing the length in bits of the
   group address that follows.
 
   Group Address:
   An address encoding according to the Address Family field.
 
 
 
 
 
 
 
 
 
 
 
 
 
   Acharya, Griffoul & Ansari                                     [Page 24]


   Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
   Group-source element value encoding:
 
   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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  GrpSrc (6)   |     Address Family            |    G/S Len    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Source Address                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Group Address                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
   Address Family:
   Two octet containing a value from ADDRESS FAMILY NUMBERS in
   RFC1700 that encodes the address family of both the source and
   the group address.
 
   G/S Len:
   One octet unsigned integer containing the length in bits of the
   source address that follows. The group address length in bits is
   also S/G Len, so that the length of the FEC element after the
   S/G Len field is 2 * S/G Len
 
   Source Address:
   An address encoding according to the Address Family field,
 
   Group Address:
   An address encoding according to the Address Family field.
 
 
 Appendix B: LDP Initialization Session Multicast Parameter
 
   During  the  LDP   session  establishment  procedure,  Label Switching
   Routers  have to advertise their  multicast label  binding support and
   the  advertisement discipline. We  propose to add  a Multicast Session
   Parameters TLV  in     the  optional  parameters list  of     the  LDP
   Initialization message (see [LDP]).
 
   If   the Multicast   Session   Parameters  are  not   present in   the
   Initialization message received from  LSR1 by LSR2, LSR2 will consider
   LSR1 as non-multicast capable.
 
 
 
 
 
 
 
 
 
 
   Acharya, Griffoul & Ansari                                     [Page 25]

  Internet Draft       draft-ipsofacto-mpls-mcast-00.txt     February 1999
 
 
   The encoding of the Multicast Session Parameters experimental TLV is:
 
   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| Mcast Sess Parms (0x3F01) |      Length                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | A |                    Reserved                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
   A = Multicast Label Advertisement Discipline
   Indicates the type of Multicast Label advertisement.
   00 means upstream "implicit" distribution
   01 means downstream-on-demand LDP-based distribution.
 
   If one LSR proposes upstream "implicit" and the other proposes
   downstream-on-demand, a default discipline must be imposed.