PIM WG                                                          A.                                                       Arjen Boers
Internet-Draft                                              IJ.
Internet Draft                                         IJsbrand Wijnands
Intended status: Informational                                  E. Status: Proposed Standard                         Eric C. Rosen
Expires: November 21, 2007 December 30, 2008                           Cisco Systems, Inc.
                                                            May 20, 2007

                 Format for using TLVs in

                                                           June 30, 2008

                     The PIM messages
                   draft-ietf-pim-join-attributes-03 Join Attribute Format

                 draft-ietf-pim-join-attributes-04.txt

Status of this Memo

   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 becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   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.

   This Internet-Draft will expire on November 21, 2007.

Copyright Notice

   Copyright (C) The IETF Trust (2007).

Abstract

   A Protocol Independent Multicast (PIM) Join message sent by a given
   node identifies one or more multicast distribution trees that that
   node wishes to join.  Each tree is identified by a multicast group
   address and a source address, which is possibly a "wild card".  Under
   certain conditions it can be useful, when joining a tree, to specify
   additional information related to the construction of the tree.
   However, there is up to now no way to do so.  This document describes
   a generic TLV attribute encoding format to be
   added modification of the Join message that allows a node to PIM join messages. associate
   attributes with a particular tree.  The attributes are encoded in
   Type-Length-Value format.

Table of Contents

   1.  Conventions used in this document . . . . . . . . . . . . . . . 3
   2.

 1          Specification of requirements  .........................   2
 2          Introduction  . . . . . . . . . . . . . . . . . . . . . . . . .  ..........................................   3
 3
   3.          Use of the Join Attributes  ................................   4
 3.1        Sending Join Attributes  ...............................   4
 3.2        The Join Attribute Field Option in the PIM Hello  ............   4
 3.3        Receiving Join Messages . . . . . . . . . . 3
     3.1.  Attribute join  . . . . . . . . . . . . . . . . . . . . . . 3
     3.2. Attributes  .............................   5
 3.3.1      General Considerations  ................................   5
 3.3.2      Transitive attributes . . . . . . . . . . . . . . . . . . . 3
     3.3. and Non-Transitive Attributes  ..............   5
 3.3.3      Conflicting Attributes  ................................   6
 3.3.4      Attribute Change  ......................................   7
 3.4        PIM Attribute Packet Format  ...........................   8
 3.4.1      PIM Join Packet Format  ................................   8
 3.4.2      PIM Join Attribute Hello Option  . . . . . . . . . . . . . . . . . . 3
     3.4.  Conflicting attributes  . . . . . . . . . . . . . . . . . .  .......................   9
 4
     3.5.  Attribute Convergence . . . . . . . . . . . . . . . . . . . 5
     3.6.  Multiple attributes . . . . . . . . . . . . . . . . . . . . 5
     3.7.  Applicability of the attributes . . . . . . . . . . . . . . 5
     3.8.  PIM attribute packet format . . . . . . . . . . . . . . . . 5
       3.8.1.  PIM Join packet format  . . . . . . . . . . . . . . . . 5
       3.8.2.  PIM Attribute Hello option  . . . . . . . . . . . . . . 6
   4.          IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 6
   5.  ...................................   9
 5          Security Considerations . . . . . . . . . . . . . . . . . . . . 7
   6.  ...............................  10
 6          Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . .  .......................................  10
 7
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . . . 7
     7.1.          Authors' Addresses  ....................................  10
 8          Normative References  . . . . . . . . . . . . . . . . . . . 7
     7.2.  ..................................  11
 9          Informative References  . . . . . . . . . . . . . . . . . . 7
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . . . 7  ................................  11
10          Full Copyright Statement  ..............................  11
11          Intellectual Property and Copyright Statements  . . . . . . . . . . 9  .................................  11

1.  Conventions used Specification of requirements

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

2. Introduction

   A Protocol Independent Multicast (PIM) Join message sent by a given
   node may identify one or more multicast distribution trees that that
   node wishes to join.  Each tree is identified by a multicast group
   address and a source address, which is possibly a "wild card".  Under
   certain conditions it can be useful, when joining a tree, to specify
   additional information related to the construction of the tree.
   However, there is up to now no way to do so.  This document describes
   a modification of the Join message that allows a node to associate an
   attribute, encoded in  Type-Length-Value (TLV) format, with a
   particular tree that it wishes to join.  These attributes are known
   as "PIM Join Attributes".

   In this document, the key words "MUST", "MUST NOT", "REQUIRED",
   "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
   and "OPTIONAL" are to be interpreted PIM Join message, the Source Address is identified by being
   encoded as described an "Encoded-Source Address" ([RFC4601], section 4.9.1).
   Each Encoded-Source Address occurs in RFC 2119 the context of a particular
   group address, represented as an "Encoded-Group Address".  Together
   the Encoded-Source Address and
   indicate requirement levels for compliant PIM-SM implementations.

2.  Introduction

   It the Encoded-Group Address identify a
   multicast distribution tree.  The Encoded-Source Address contains an
   "encoding type" field.  The only value defined in [RFC4601] is sometimes convenient to add additional information 0.
   This specification is the first to PIM join
   messages.  The generic PIM assign another encoding format is not always optimal type
   value.

   In order to
   do this.  This document associate TLVs with a particular tree, this specification
   defines a new field encoding type for the Encoded-Source address, type 1.
   When type 1 is used, the Encoded-Source Address may contain a
   sequence of "Join Attributes", each of which is encoded as a TLV.
   Then the type 1 Encoded-Source Address, in the PIM context of the
   associated Encoded-Group Address, identifies a multicast distribution
   tree, and also specifies (via the Join message Attribute TLVs) the attributes
   that allows apply to the tree.  Apart from the fact that the type 1 Encoded-
   Source Address may contain Join Attributes, it is otherwise identical
   to use TLVs, hereby called the attribute field. type 0 Encoded-Source Address.

   This document does not contain the specification for any particular
   Join Attribute.  It specifies how Join Attributes are to be encoded
   into the Join messages, and it specifies generic procedures that are
   common to all Join Attributes. The content and purpose of this attribute field any
   particular Join Attribute is outside the scope of this document, only the generic encoding format document.

   The use of Join Attributes in "Dense Mode" PIM is described here. not considered.

3. Use of the Attribute Field in Join Messages Attributes

3.1.  Attribute join

   Attribute fields Sending Join Attributes

   Join Attributes are defined similar to encoded as TLVs into the Encoded-Source Address
   field of a PIM source Join message, as specified in section 3.3.1 below.
   Each attribute applies to same multicast distribution tree that is
   identified by the combination of the Encoded-Source Address and the
   associated Encoded-Group address.  The multicast distribution tree
   may be either a source-specific tree or a shared tree.

   The encoding of the "source address" field within the Encoded-Source
   Address is exactly the same for a type 1 Encoded-Source Address as defined
   for a type 0 Encoded-Source Address, as specified in [RFC4601].

   A source address without any additional
   TLV's should be processed identically type 1 Encoded-Source Address MUST contain at least one Join
   Attribute.  The way to specify that there are no Join Attributes for
   a source address in particular tree is to use the
   default source encoding. type 0 Encoded-Source Address.

   Multiple TLV's from Join Attributes of the same type or of different type are permitted in types may
   occur within a single source address in any order.

3.2.  Transitive Encoded-Source Address.  This specification
   does not require all attributes

   It may be desired of a given type to have routers occur
   contiguously.  There is no header field that understand the generic
   attribute format, forward specifies the attributes regardless number of whether they
   understand the TLV's encoded in
   attributes; rather the last attribute not.  For this the
   first bit in the Type field is reserved.  If this bit is set then the
   router MUST forward the TLV upstream in case the specially marked as such.

   Any PIM router that does not understand that type.  If this bit is the type 1 Encoded-Source
   Address will not set be able to process a PIM Join message that contains
   it.  Further, if the router MUST NOT
   forward use of any particular Join Attribute affects the TLV upstream in
   construction of the case multicast distribution tree, the router does tree may not understand be
   formed correctly unless the attribute is understood by all PIM
   routers that type.

3.3.  Attribute Hello Option

   A new receive it.  As a consequence, attributes are only
   useful within a single administrative domain (or perhaps a small set
   of contiguous, cooperating administrative domains) where it can be
   determined apriori that all deployed PIM source type has been defined to include routers understand the Attribute
   field.  This source type is included
   1 Encoded-Source address, as well as whatever specific attributes are
   in a normal use.

3.2. The Join Attribute Option in the PIM Join.  Each
   router on Hello

   To ensure that a connected network needs to be able type 1 Encoded-Source Address is not sent to a PIM
   neighbor that does not understand and
   parse the Join message.  Therefore we include this encoding, a new PIM hello Hello
   option, the "Join Attribute" option, is defined.  This option
   to advertise our capability to parse and process must be
   included in the new source type.

   We can only send a PIM Join which includes an attribute if ALL
   routers on the network support the new option.  (Even a Hello's of any PIM router which that is not the upstream neighbor must be able parse willing to the packet in
   order
   receive type 1 Encoded-Source Address.   A PIM router MUST NOT send a
   type 1 Encoded-Source Address to do Join suppression or overriding.)  Option value TBD.

   Having any PIM neighbor that has not
   included this option in its Hellos.

   Note that a PIM router that sends the attribute hello "Join Attribute" Hello option
   does not guarantee that all
   neighbors necessarily understand all every possible individual attributes. attribute type.  As there's
   there is no immediate way to act on a neighbor's incapability inability to process
   certain attribute types, it is not desired to have a hello option for
   each possible attribute type.

3.4.

3.3. Receiving Join Attributes

3.3.1. General Considerations

   A PIM router that receives a type 1 Encoded-Source Address MUST
   process the first attribute in it.  The result of processing that
   attribute may affect the following:

     - the construction of the associated multicast distribution tree

     - the processing of subsequent attributes of the same type that
       also occur in the type 1 Encoded-Source Address

     - the forwarding (or not) of the attribute itself and/or
       subsequently occurring attributes of the same type.

   If multiple types of attribute occur in a type 1 Encoded-Source
   Address, the first attribute of each type MUST be processed.

3.3.2. Transitive and Non-Transitive Attributes

   If a PIM router understands a particular attribute type, the
   attribute is processed as specified above.

   If a PIM router does not understand the type of a particular
   attribute, the PIM router either forwards that attribute or discards
   it, depending upon the setting of the attribute's F-bit.  If the F-
   bit is set, then the router MUST forward the attribute; if the F-bit
   is clear, then the router MUST discard it.

   If one or more non-transitive attributes are discarded, the rest of
   the Join Attributes (if any) are still forwarded.  If there are no
   Join Attributes left to forward, a Join with a type 0 Encoded-Source
   Address field would be forwarded.

3.3.3. Conflicting attributes

   It's Attributes

   It is possible that a router receives conflicting attribute
   information from different downstream routers. Conflicts only occur
   with attributes of the same type.  If two different attributes of two
   different types are received they should both be processed and
   forwarded.

       ( Edge A1 )            ( Edge B1 )---- [R1]
      /           \          /
     /             \        /
   [S]              ( Core )
     \             /        \
      \           /          \
       ( Edge A2 )            ( Edge B2 )---- [R2]

        Figure 2

   An example

   As an example, consider Figure 2, and suppose a join attribute in this case is an
   used to indicate a choice of exit router.  There are 2 receivers for
   the same group connected to Edge B1 and B2.  Suppose that edge router
   B1 prefers A1 as the exit point and B2 prefers A2 as exit point to
   reach the source S. If both Edge B1 and B2 send a Join including an
   attribute to prefer their exit router in the network and they cross
   the same core router, the core router will get conflicting attribute
   information for the source. If this happens we use the Attribute from
   the PIM adjacency with the numerically smallest IP address. In the
   case of IPv6, the link local address will be used. When two neighbors
   have the same IP address, either for IPv4 or IPv6, the interface
   index must be used as a tie breaker.  The attributes from other
   sending routers may MAY be kept around in case remembered; then if the best attribute gets
   pruned or expires, we are able to immediately use the second best
   attribute and converge quickly without waiting for the next periodic
   update.  If

   When a particular attribute type is specified, the specification MAY
   include a TLV has its own definition for conflict resolution it is preferred over procedure specific to that type.  If
   so, that conflict resolution procedure would be used instead of the
   described in this section.

   The conflict resolution above.

3.5.  Attribute Convergence

   An attribute is included procedure described in this section is also
   used by a router if there are conflicting transitive attributes that
   the router does not understand.

3.3.4. Attribute Change

   A PIM Join message together router may decide to change the set of attributes it has
   associated with a given multicast distribution tree.  This can happen
   if one of its downstream neighbors on the
   source information.  If tree has changed the attribute set of
   attributes.  It can also happen as a result of processing the
   attributes.  It can also happen for reasons outside the scope of this source is changed, we
   trigger
   specification (such as a change in configuration.)

   If a new PIM Join message router needs to change the set of attributes for a given
   tree, but does not change its upstream router.  This causes
   the new attribute to be propagated.  This neighbor for that tree, it
   MUST send a new attribute implicitly
   removes Join for that tree, specifying the old attribute upstream. new set of
   attributes.  If processing the new attribute
   results in set of attributes is the null set, the type 0
   Encoded-Source format MUST be used.

   If a PIM router needs to change in the distribution set of attributes for a given
   tree, and as a result changes its upstream neighbor for that tree, it
   sends a PIM Prune message may
   be sent.  This PIM to the old upstream neighbor.  The Prune does not need to carry any attribute, need
   to carry any attributes.

   When a PIM router receives a Join for a given tree, and the Join does
   not contain exactly the
   sender same set of attributes as the prune and prior Join, the source and group information is enough to
   identify
   set of attributes in the entry.  The attribute information is removed immediately
   and possibly a new Join becomes the entire new set of
   attributes.  No attribute is chosen information from the database if
   available.

3.6.  Multiple attributes

   A PIM prior Join can contain multiple attributes.  The is
   retained.  There is no way to advertise incremental changes to the
   set of attributes; any attributes that are
   encoded no longer present are
   considered to have been withdrawn.  If, as TLVs associated with the result of receiving a
   Join, a new PIM source type in router determines that the PIM
   message.  When set of attributes has changed,
   it will need to send a PIM new Join upstream, with multiple attributes is received, each
   type is processed separately.  For each type, the first attribute new set of
   that type is processed, and the action taken depends upon
   attributes.  (Of course, the type.
   This may or procedures for resolving attribute
   conflicts may not result in need to be applied first.)

   When a PIM router R1 receives a Prune for a given tree from a given
   downstream neighbor R2, where R2 had previously sent attributes
   applying to that tree, those attributes are considered to have been
   withdrawn.  Depending on the processing of attributes that R1 has received from its
   other downstream neighbors (if any) on the next attribute.
   Attributes tree, R1 may determine
   that the router understands but are not processed MUST be
   passed upstream unchanged.

3.7.  Applicability set of the attributes

   PIM Joins with attributes can be applied applying to both shared-trees rooted
   at a Rendezvous Point (RP) and shortest-path trees as described the tree has changed, in
   [RFC4601].

3.8.  PIM which
   case it needs to send a new Join, with the new attribute packet format

3.8.1. set, to its
   upstream neighbor on the tree.

3.4. PIM Attribute Packet Format

3.4.1. PIM Join packet format Packet Format

   There is no space in the default PIM source encoding to include a
   attribute field. Therefore we introduce a new source encoding type.
   The attributes are formatted as TLV's. The new Encoded source address
   looks like this:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Addr Family   | Encoding Type | Rsrvd   |S|W|R|  Mask Len     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               Source Address (Encoded-Source format)          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |F|S|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+.....
   |F|E| Attr Type | Length        | Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+.....
   |F|S|  Type
   |F|E| Attr_Type | Length        | Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+.....
        .                    .                     .
        .                    .                     .

     - Encoding Type: 1

     - F bit, Forward Unknown TLV. Transitive Attribute

       If this bit is set set, the TLV attribute is forwarded
   regardless if the router understands the Type.

   S a transitive attribute;
       otherwise it is a non-transitive attribute.  See section 3.3.2.

     - E bit, Bottom End of Stack. Attributes.  If this bit is set then this is the
       last TLV Join Attribute appearing in the stack.

   Type this Encoded-Source Address
       field.

     - "Attr_Type", a 6-bit field identifying the type of the TLV is 6 bits. Attribute.

     - Length field, a 1 octet field specifying the length in octets of
       the TLV is 1 byte. value field.

   The other fields are the same as described in the RFC 4601. [RFC4601].

   The source TLV encoding type: TBD.

3.8.2.

3.4.2. PIM Join Attribute Hello option Option

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      OptionType = TBD 26           |      OptionLength = 0        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Option type: TBD. 26.

4. IANA Considerations

   A new IANA registry is needed for PIM "PIM Join Attributes Types.
   Additionally, a new PIM Hello value needs Attribute Types".  These
   are values of the "Attr_Type" field depicted in section 3.3.1.
   Assignments are to be obtained from made according to the policy "IETF Review" as
   defined in [RFC5226].

   The PIM Hello Option values 17 through 65000 value 26 should be assigned by IANA to the "Join
   Attribute" option, with this document as the reference. [Assuming
   that 26 is still available.]

   [RFC4601] should have, but did not, create a registry for the
   "Encoding Type" field of the Encoded-Source Address format defined
   therein.  IANA should set up a registry for this, referencing
   [RFC4601].  Assignments should be made according to the policy "IETF
   Review" as defined in [RFC5226].  Two encoding types should be
   defined:

     - The encoding type 0 should be allocated, defined as "native
       encoding for the address family", and [RFC4601] should be the
       reference.

     - The encoding type 1 should be allocated, defined as "native
       encoding for the address family, but with zero or more PIM Join
       Attributes present", and this document should be the IANA. reference.

5. Security Considerations

   Security of the join attribute is only guaranteed by the security of
   the PIM packet, so the security considerations for PIM join packets
   as described in PIM-SM [RFC4601] apply here.  Additional security
   considerations may apply to specific attributes; if so, these will
   need to be documented in the specification of those attributes.

   Security considerations from [RFC5015] may apply as well.

6. Acknowledgments

   The authors would like to thank Stig Venaas, James Lingard, Bharat
   Joshi, Marshall Eubanks, Pekka Savola and Savola, Tom Pusateri Pusateri, and Elwyn Davies
   for their input.

7.  References

7.1.  Normative References

   [RFC4601]  Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas,
              "Protocol Independent Multicast - Sparse Mode (PIM-SM):
              Protocol Specification (Revised)", RFC 4601, August 2006.

7.2.  Informative References Authors' Addresses

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

   Email:

   E-mail: aboers@cisco.com

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

   Email:

   E-mail: ice@cisco.com

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

   Email:

   E-mail: erosen@cisco.com

8. Normative References

   [RFC2119] "Key words for use in RFCs to Indicate Requirement Levels",
   S. Bradner, RFC 2119, March 1997.

   [RFC4601] Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas,
   "Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol
   Specification (Revised)", RFC 4601, August 2006.

9. Informative References

   [RFC5015] "Bidirectional Protocol Independent Multicast", M. Handley,
   I. Kouvelas, T. Speakman, L. Vicisano, RFC 5015, October 2007.

   [RFC5226] "Guidelines for Writing an IANA Considerations Section in
   RFCs", T. Narten, H. Alvestrand, RFC 5226, May 2008.

10. Full Copyright Statement

   Copyright (C) The IETF Trust (2007). (2008).

   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.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

11. Intellectual Property

   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
   http://www.ietf.org/ipr.

   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
   ietf-ipr@ietf.org.

Acknowledgment

   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).