PIM WG                                                      IJ. Wijnands
Internet-Draft                                                  A. Boers
Expires: August 5, 2005                                         E. Rosen
                                                     Cisco Systems, Inc.
                                                           february 2005

                          The RPF Vector Proxy

Status of this Memo

   This document is an Internet-Draft and is subject to all provisions
   of Section 3 of RFC 3667.  By submitting this Internet-Draft, each
   author represents that any applicable patent or other IPR claims of
   which he or she is aware have been or will be disclosed, and any of
   which he or she become aware will be disclosed, in accordance with
   RFC 3668.

   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 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

   The list of Internet-Draft Shadow Directories can be accessed at

   This Internet-Draft will expire on August 5, 2005.

Copyright Notice

   Copyright (C) The Internet Society (2005).


   This document describes a use of the PIM Proxy as defined in
   draft-pim-proxy [Forthcoming] which enables PIM to build multicast
   trees through an MPLS-enabled network, even if that network's IGP
   does not have a route to the source of the tree.

Wijnands, et al.         Expires August 5, 2005                 [Page 1]

Internet-Draft            The RPF Vector Proxy             february 2005

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Use of the RPF Vector TLV  . . . . . . . . . . . . . . . . . .  4
     2.1   Proxy and shared tree joins  . . . . . . . . . . . . . . .  4
     2.2   The Vector Proxy . . . . . . . . . . . . . . . . . . . . .  4
       2.2.1   Inserting a Vector Proxy in a Join . . . . . . . . . .  5
       2.2.2   Processing a Received Vector Proxy . . . . . . . . . .  5
       2.2.3   Vector Proxy and Asserts . . . . . . . . . . . . . . .  5
   3.  Vector Proxy TLV Format  . . . . . . . . . . . . . . . . . . .  6
   4.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . .  6
   5.  References . . . . . . . . . . . . . . . . . . . . . . . . . .  6
     5.1   Normative References . . . . . . . . . . . . . . . . . . .  6
     5.2   Informative References . . . . . . . . . . . . . . . . . .  7
       Authors' Addresses . . . . . . . . . . . . . . . . . . . . . .  7
       Intellectual Property and Copyright Statements . . . . . . . .  8

Wijnands, et al.         Expires August 5, 2005                 [Page 2]

Internet-Draft            The RPF Vector Proxy             february 2005

1.  Introduction

   It is sometimes convenient to distinguish the routers of a particular
   network into two categories: "edge routers" and "core routers".  The
   edge routers attach directly to users or to other networks, but the
   core routers attach only to other routers of the same network.  If
   the network is MPLS-enabled, then any unicast packet which needs to
   travel outside the network can be "tunneled" via MPLS from one edge
   router to another.  To handle a unicast packet which must travel
   outside the network, an edge router needs to know which of the other
   edge routers is the best exit point from the network for that
   packet's destination IP address.  The core routers, however, do not
   need to have any knowledge of routes which lead outside the network;
   as they handle only tunneled packets, they only need to know how to
   reach the edge routers and the other core routers.

   Consider, for example, the case where the network is an Autonomous
   System (AS), the edge routers are EBGP speakers, the core routers may
   be said to constitute a "BGP-free core".  The edge routers must
   distribute BGP routes to each other, but not to the core routers.

   However, when multicast packets are considered, the strategy of
   keeping the core routers free of "external" routes is more
   problematic.  When using PIM [I-D.ietf-pim-sm-v2-new] to create a
   multicast distribution tree for a particular multicast group, one
   wants the core routers to be full participants in the PIM protocol,
   so that multicasting can be done efficiently in the core.This means
   that the core routers must be able to correctly process PIM Join
   messages for the group, which in turn means that the core routes must
   be able to send the Join messages towards the root of the
   distribution tree.  If the root of the tree lies outside the
   network's borders (e.g., is in a different AS), and the core routers
   do not maintain routes to external destinations, then the PIM Join
   messages cannot be processed, and the multicast distribution tree
   cannot be created.

   In order to allow PIM to work properly in an environment where the
   core routers do not maintain external routes, a PIM extension is
   needed.  When an edge router sends a PIM Join message into the core,
   it must include in that message a "Vector" which specifies the IP
   address of the next edge router along the path to the root of the
   multicast distribution tree.  The core routers can then process the
   Join message by sending it towards the specified edge router (i.e.,
   toward the Vector).  In effect, the Vector serves as a proxy, within
   a particular network, for the root of the tree.

   This document defines a new TLV in the PIM Proxy
   message[draft-pim-proxy].  It consists of a single Vector which

Wijnands, et al.         Expires August 5, 2005                 [Page 3]

Internet-Draft            The RPF Vector Proxy             february 2005

   identifies the exit point of the network.

2.  Use of the RPF Vector TLV

   Before we can start forwarding multicast packets we need to build a
   forwarding tree by sending PIM Joins hop by hop.  Each router in the
   path creates a forwarding state and propagates the Join towards the
   root of the forwarding tree.  The building of this tree is receiver
   driven.  See Figure 1.

               ------------------ BGP -----------------
              |                                        |
   [S]---( Edge 1)--(Core 1)---( Core )--(Core 2)---( Edge 2 )---[R]
                  <--- (S,G) Join

                   Figure 1

   In this example, the 2 edge routers are BGP speakers.  The core
   routers are not BGP speakers and do not have any BGP distributed
   routes.  The route to S is a BGP distributed route, hence is known to
   the edge but not to the core.  The Edge 2 router determines the
   interface leading to S, and sends a PIM Join to the upstream router.
   In this example, though, the upstream router is a core router, with
   no route to S.  Without the PIM extensions specified in this
   document, the core router cannot determine where the send the Join,
   so the tree cannot be constructed.

   To allow the core router to participate in the construction of the
   tree, the Edge 2 router will include a Proxy field in the PIM Join.
   In this example, the Proxy field will contain the IP address of Edge
   1.  Edge 2 then forwards the PIM Join towards Edge 1.  The
   intermediate core router do their RPF check on the Proxy (IP address
   of Edge 1) rather than the Source, this allows the tree to be

2.1  Proxy and shared tree joins

   In the example above we build a source tree to illustrate the proxy
   behavior.  The proxy is however not restricted to source tree only.
   The tree may also be constructed towards a Rendezvous Point (RP) IP
   address.  The RP IP address is used in a similar way as the Source in
   the example above.  PIM Proxy procedures defined for sources are
   equally applicable to RPs unless otherwise noted.

2.2  The Vector Proxy

Wijnands, et al.         Expires August 5, 2005                 [Page 4]

Internet-Draft            The RPF Vector Proxy             february 2005

2.2.1  Inserting a Vector Proxy in a Join

   In the example of Figure 1, when the Edge 2 router looks up the route
   to the source of the multicast distribution tree, it will find a
   BGP-distributed route whose "BGP next-hop" is Edge 1.  Edge 2 then
   looks up the route to Edge 1 to find interface and PIM adjacency
   which is the next hop to the source, namely Core 2.

   When Edge 2 sends a PIM Join to Core 2, it includes a Vector Proxy
   specifying the address of Edge 1.  Core 2, and subsequent core
   routers, will forwarding the Join along the Vector (i.e, towards Edge
   1) instead of trying to forward it towards S.

   Whether a Proxy is actually needed depends on whether the Core
   routers have a route to the source of the multicast tree.  How the
   Edge router knows whether or not this is the case (and thus how the
   Edge router determines whether or not to insert a Proxy field) is
   outside the scope of this document.

2.2.2  Processing a Received Vector Proxy

   When processing a received PIM Join which contains a Vector Proxy, a
   router must first check to see if the Vector IP address is one of its
   own IP addresses.  If so, the Vector Proxy is discarded, and not
   passed further upstream.  Otherwise, the Vector Proxy is used to find
   the route to the source, and is passed along when a PIM Join is sent
   upstream.  Note that a router which receives a Vector Proxy must  use
   it, even if that router happens to have a route to the source.  A
   router which discards a Vector Proxy may of course insert a new
   Vector Proxy.  This would typically happen if a PIM Join needed to
   pass through a sequence of Edge routers, each pair of which is
   separated by a core which does not have external routes.  In the
   absence of periodic refreshment, Vectors expire along with the
   corresponding (S,G) state.

2.2.3  Vector Proxy and Asserts

   In a PIM Assert message we include the routing protocol's "metric" to
   the source of the tree.  This information is used in the selection of
   the assert winner.  If a PIM Join  is being sent towards a Vector,
   rather than towards the source, the Assert message must have the
   metric to the Vector instead of the metric to the source.  The Assert
   message however does not have a Proxy field and does not mention the

   A router may change its upstream neighbor on a particular multicast
   tree as the result of receiving Assert messages.  However a Vector
   Proxy should not be sent in a PIM Join to an upstream neighbor which

Wijnands, et al.         Expires August 5, 2005                 [Page 5]

Internet-Draft            The RPF Vector Proxy             february 2005

   is chosen as the result of processing the Assert messages.
   Reachability of the Vector is only guaranteed by the router that
   advertises reachability to the Vector in it's IGP.  If the assert
   winner upstream is not our real preferred next-hop, we can't be sure
   this router knows the path to the Vector.

3.  Vector Proxy TLV Format

   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
   |F|   Type      | Length        |         IP address

   F bit
   Forward Unknown TLV. If this bit is set the TLV is forwarded
   regardless if the router understands the Type.

   The Vector Proxy type is 0.

   Length in bytes is 4.

   IPv4 address.

4.  Acknowledgments

   The authors would like to thank Yakov Rekhter and Dino Farinacci for
   their initial ideas on this topic.

5.  References

5.1  Normative References

              Fenner, B., Handley, M., Holbrook, H. and I. Kouvelas,
              "Protocol Independent Multicast - Sparse Mode PIM-SM):
              Protocol Specification  (Revised)",
              Internet-Draft draft-ietf-pim-sm-v2-new-11, October 2004.

Wijnands, et al.         Expires August 5, 2005                 [Page 6]

Internet-Draft            The RPF Vector Proxy             february 2005

5.2  Informative References

Authors' Addresses

   IJsbrand Wijnands
   Cisco Systems, Inc.
   De kleetlaan 6a
   Diegem  1831

   Email: ice@cisco.com

   Arjen Boers
   Cisco Systems, Inc.
   Avda. Diagonal, 682
   Barcelona  08034

   Email: aboers@cisco.com

   Eric Rosen
   Cisco Systems, Inc.
   1414 Massachusetts Avenue
   Boxborough, Ma  01719

   Email: erosen@cisco.com

Wijnands, et al.         Expires August 5, 2005                 [Page 7]

Internet-Draft            The RPF Vector Proxy             february 2005

Intellectual Property Statement

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at

Disclaimer of Validity

   This document and the information contained herein are provided on an

Copyright Statement

   Copyright (C) The Internet Society (2005).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.


   Funding for the RFC Editor function is currently provided by the
   Internet Society.

Wijnands, et al.         Expires August 5, 2005                 [Page 8]