idnits 2.17.1 draft-ietf-pim-join-attributes-06.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** It looks like you're using RFC 3978 boilerplate. You should update this to the boilerplate described in the IETF Trust License Policy document (see https://trustee.ietf.org/license-info), which is required now. -- Found old boilerplate from RFC 3978, Section 5.1 on line 18. -- Found old boilerplate from RFC 3978, Section 5.5, updated by RFC 4748 on line 465. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 476. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 483. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 489. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust Copyright Line does not match the current year -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (October 6, 2008) is 5681 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'R1' is mentioned on line 229, but not defined == Missing Reference: 'S' is mentioned on line 232, but not defined == Missing Reference: 'R2' is mentioned on line 235, but not defined ** Obsolete normative reference: RFC 4601 (Obsoleted by RFC 7761) -- Obsolete informational reference (is this intentional?): RFC 5226 (Obsoleted by RFC 8126) Summary: 2 errors (**), 0 flaws (~~), 4 warnings (==), 8 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 PIM WG Arjen Boers 3 Internet Draft IJsbrand Wijnands 4 Intended Status: Proposed Standard Eric C. Rosen 5 Expires: April 6, 2009 Cisco Systems, Inc. 7 October 6, 2008 9 The PIM Join Attribute Format 11 draft-ietf-pim-join-attributes-06.txt 13 Status of this Memo 15 By submitting this Internet-Draft, each author represents that any 16 applicable patent or other IPR claims of which he or she is aware 17 have been or will be disclosed, and any of which he or she becomes 18 aware will be disclosed, in accordance with Section 6 of BCP 79. 20 Internet-Drafts are working documents of the Internet Engineering 21 Task Force (IETF), its areas, and its working groups. Note that 22 other groups may also distribute working documents as Internet- 23 Drafts. 25 Internet-Drafts are draft documents valid for a maximum of six months 26 and may be updated, replaced, or obsoleted by other documents at any 27 time. It is inappropriate to use Internet-Drafts as reference 28 material or to cite them other than as "work in progress." 30 The list of current Internet-Drafts can be accessed at 31 http://www.ietf.org/ietf/1id-abstracts.txt. 33 The list of Internet-Draft Shadow Directories can be accessed at 34 http://www.ietf.org/shadow.html. 36 Abstract 38 A "Protocol Independent Multicast - Sparse Mode" Join message sent by 39 a given node identifies one or more multicast distribution trees that 40 that node wishes to join. Each tree is identified by a multicast 41 group address and a source address, which is possibly a "wild card". 42 Under certain conditions it can be useful, when joining a tree, to 43 specify additional information related to the construction of the 44 tree. However, there is up to now no way to do so. This document 45 describes a modification of the Join message that allows a node to 46 associate attributes with a particular tree. The attributes are 47 encoded in Type-Length-Value format. 49 Table of Contents 51 1 Specification of requirements ......................... 2 52 2 Introduction .......................................... 3 53 3 Use of Join Attributes ................................ 4 54 3.1 Sending Join Attributes ............................... 4 55 3.2 The Join Attribute Option in the PIM Hello ............ 4 56 3.3 Receiving Join Attributes ............................. 5 57 3.3.1 General Considerations ................................ 5 58 3.3.2 Transitive and Non-Transitive Attributes .............. 5 59 3.3.3 Conflicting Attributes ................................ 6 60 3.3.4 Attribute Change ...................................... 7 61 3.4 PIM Attribute Packet Format ........................... 8 62 3.4.1 PIM Join Packet Format ................................ 8 63 3.4.2 PIM Join Attribute Hello Option ....................... 9 64 4 IANA Considerations ................................... 9 65 5 Security Considerations ............................... 10 66 6 Acknowledgments ....................................... 10 67 7 Authors' Addresses .................................... 10 68 8 Normative References .................................. 11 69 9 Informative References ................................ 11 70 10 Full Copyright Statement .............................. 11 71 11 Intellectual Property ................................. 12 73 1. Specification of requirements 75 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 76 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 77 document are to be interpreted as described in [RFC2119]. 79 2. Introduction 81 In the protocol known as "Protocol Independent Multicast - Sparse 82 Mode" [RFC4601] (henceforth referred to as "PIM"), a Join message 83 sent by a given node may identify one or more multicast distribution 84 trees that that node wishes to join. Each tree is identified by a 85 multicast group address and a source address, which is possibly a 86 "wild card". Under certain conditions it can be useful, when joining 87 a tree, to specify additional information related to the construction 88 of the tree. However, there is up to now no way to do so. This 89 document describes a modification of the Join message that allows a 90 node to associate an attribute, encoded in Type-Length-Value (TLV) 91 format, with a particular tree that it wishes to join. These 92 attributes are known as "PIM Join Attributes". 94 In the PIM Join message, the Source Address is identified by being 95 encoded as an "Encoded-Source Address" ([RFC4601], section 4.9.1). 96 Each Encoded-Source Address occurs in the context of a particular 97 group address, represented as an "Encoded-Group Address". Together 98 the Encoded-Source Address and the Encoded-Group Address identify a 99 multicast distribution tree. The Encoded-Source Address contains an 100 "encoding type" field. The only value defined in [RFC4601] is 0. 101 This specification is the first to assign another encoding type 102 value. 104 In order to associate TLVs with a particular tree, this specification 105 defines a new encoding type for the Encoded-Source address, type 1. 106 When type 1 is used, the Encoded-Source Address may contain a 107 sequence of "Join Attributes", each of which is encoded as a TLV. 108 Then the type 1 Encoded-Source Address, in the context of the 109 associated Encoded-Group Address, identifies a multicast distribution 110 tree, and also specifies (via the Join Attribute TLVs) the attributes 111 that apply to the tree. Apart from the fact that the type 1 Encoded- 112 Source Address may contain Join Attributes, it is otherwise identical 113 to the type 0 Encoded-Source Address. 115 This document does not contain the specification for any particular 116 Join Attribute. It specifies how Join Attributes are to be encoded 117 into the Join messages, and it specifies generic procedures that are 118 common to all Join Attributes. The content and purpose of any 119 particular Join Attribute is outside the scope of this document. 121 The use of Join Attributes in "Protocol Independent Multicast - Dense 122 Mode" [RFC3973] is not considered. 124 3. Use of Join Attributes 126 3.1. Sending Join Attributes 128 Join Attributes are encoded as TLVs into the Encoded-Source Address 129 field of a PIM Join message, as specified in section 3.3.1 below. 130 Each attribute applies to same multicast distribution tree that is 131 identified by the combination of the Encoded-Source Address and the 132 associated Encoded-Group address. The multicast distribution tree 133 may be either a source-specific tree or a shared tree. 135 The encoding of the "source address" field within the Encoded-Source 136 Address is exactly the same for a type 1 Encoded-Source Address as 137 for a type 0 Encoded-Source Address, as specified in [RFC4601]. 139 A type 1 Encoded-Source Address MUST contain at least one Join 140 Attribute. The way to specify that there are no Join Attributes for 141 a particular tree is to use the type 0 Encoded-Source Address. 143 Multiple Join Attributes of the same type or of different types may 144 occur within a single Encoded-Source Address. This specification 145 does not require all attributes of a given type to occur 146 contiguously. There is no header field that specifies the number of 147 attributes; rather the last attribute is specially marked as such. 149 Any PIM router that does not understand the type 1 Encoded-Source 150 Address will not be able to process a PIM Join message that contains 151 it. Further, if the use of any particular Join Attribute affects the 152 construction of the multicast distribution tree, the tree may not be 153 formed correctly unless the attribute is understood by all PIM 154 routers that receive it. As a consequence, attributes are only 155 useful within a single administrative domain (or perhaps a small set 156 of contiguous, cooperating administrative domains) where it can be 157 determined a priori that all deployed PIM routers understand the type 158 1 Encoded-Source address, as well as whatever specific attributes are 159 in use. 161 3.2. The Join Attribute Option in the PIM Hello 163 To ensure that a type 1 Encoded-Source Address is not sent to a PIM 164 neighbor that does not understand this encoding, a new PIM Hello 165 option, the "Join Attribute" option, is defined. This option must be 166 included in the PIM Hello's of any PIM router that is willing to 167 receive type 1 Encoded-Source Address. A PIM router MUST NOT send a 168 type 1 Encoded-Source Address out any interface on which there is a 169 PIM neighbor that has not included this option in its Hellos. (Even 170 a router which is not the upstream neighbor must be able parse the 171 packet in order to do Join suppression or overriding.) 173 Note that a PIM router that sends the "Join Attribute" Hello option 174 does not necessarily understand every possible attribute type. As 175 there is no immediate way to act on a neighbor's inability to process 176 certain attribute types, it is not desired to have a hello option for 177 each possible attribute type. 179 3.3. Receiving Join Attributes 181 3.3.1. General Considerations 183 A PIM router that receives a type 1 Encoded-Source Address MUST 184 examine all the attributes in the order in which they appear. 186 The specification for a given attribute type MUST specify the 187 procedure to apply if there are multiple instances of that attribute 188 type. 190 Processing an attribute may affect the following: 192 - the construction of the associated multicast distribution tree 194 - the processing of other attributes of the same type that also 195 occur in the type 1 Encoded-Source Address 197 - the forwarding (or not) of the attribute itself and/or other 198 attributes of the same type that also occur in the type 1 199 Encoded-Source Address . 201 If the processing of a received attribute has any effect on the 202 construction of the multicast distribution tree or on the set of 203 attributes that are forwarded up the tree, then state MUST be 204 maintained associating the received attribute with the adjacency or 205 adjacencies from which it was received. 207 3.3.2. Transitive and Non-Transitive Attributes 209 If a PIM router understands a particular attribute type, the 210 attribute is processed as specified above. 212 If a PIM router does not understand the type of a particular 213 attribute, the PIM router either forwards that attribute or discards 214 it, depending upon the setting of the attribute's F-bit. If the F- 215 bit is set, then the router MUST forward the attribute; if the F-bit 216 is clear, then the router MUST discard it. 218 If one or more non-transitive attributes are discarded, the rest of 219 the Join Attributes (if any) are still forwarded. If there are no 220 Join Attributes left to forward, a Join with a type 0 Encoded-Source 221 Address field MUST be forwarded. 223 3.3.3. Conflicting Attributes 225 It is possible that a router receives conflicting attribute 226 information from different downstream routers. Conflicts only occur 227 with attributes of the same type. 229 ( Edge A1 ) ( Edge B1 )---- [R1] 230 / \ / 231 / \ / 232 [S] ( Core ) 233 \ / \ 234 \ / \ 235 ( Edge A2 ) ( Edge B2 )---- [R2] 237 Figure 2 239 As an example, consider Figure 2, and suppose a join attribute is 240 used to indicate a choice of exit router. There are 2 receivers for 241 the same group connected to Edge B1 and B2. Suppose that edge router 242 B1 prefers A1 as the exit point and B2 prefers A2 as exit point to 243 reach the source S. If both Edge B1 and B2 send a Join including an 244 attribute to prefer their exit router in the network and they cross 245 the same core router, the core router will get conflicting attribute 246 information for the source. If this happens we use the Attribute from 247 the PIM adjacency with the numerically smallest IP address. In the 248 case of IPv6, the link local address will be used. When two neighbors 249 have the same IP address, either for IPv4 or IPv6, the interface 250 index must be used as a tie breaker. The attributes from other 251 sending routers MAY be remembered; then if the adjacency that 252 supplied the selected attribute gets pruned or expires, we are able 253 to immediately use the attribute that was sent by the adjacency that 254 is next in the order of preference. This enables us to converge 255 quickly without waiting for the next periodic update. 257 When a particular attribute type is specified, the specification MAY 258 include a conflict resolution procedure specific to that type. If 259 so, that conflict resolution procedure MUST be used instead of the 260 procedure described in this section. 262 It is possible that a router will receive, from two different 263 adjacencies, transitive attributes of a given type. If the router 264 does not understand attributes of that type, and if the two 265 adjacencies have not sent the exact same set of attributes of that 266 type, then the conflict resolution procedure described in this 267 section MUST be applied to those attributes. Two adjacencies are 268 said to have sent the exact same set of attributes of a given type if 269 they have sent the same number of instances of that attribute, and if 270 corresponding instances are byte-for-byte identical. 272 3.3.4. Attribute Change 274 A PIM router may decide to change the set of attributes it has 275 associated with a given multicast distribution tree. This can happen 276 if one of its downstream neighbors on the tree has changed the set of 277 attributes. It can also happen as a result of processing the 278 attributes. It can also happen for reasons outside the scope of this 279 specification (such as a change in configuration.) 281 If a PIM router needs to change the set of attributes for a given 282 tree, but does not change its upstream neighbor for that tree, it 283 MUST send a new Join for that tree, specifying the new set of 284 attributes. If the new set of attributes is the null set, the type 0 285 Encoded-Source format MUST be used. 287 If a PIM router needs to change the set of attributes for a given 288 tree, and as a result changes its upstream neighbor for that tree, it 289 sends a Prune to the old upstream neighbor. The Prune does not need 290 to carry any attributes. 292 When a PIM router receives a Join for a given tree, and the Join does 293 not contain exactly the same set of attributes as the prior Join, the 294 set of attributes in the new Join becomes the entire new set of 295 attributes. No attribute information from the prior Join is 296 retained. There is no way to advertise incremental changes to the 297 set of attributes; any attributes that are no longer present are 298 considered to have been withdrawn. If, as the result of receiving a 299 Join, a PIM router determines that the set of attributes has changed, 300 it will need to send a new Join upstream, with the new set of 301 attributes. (Of course, the procedures for resolving attribute 302 conflicts may need to be applied first.) 304 When a PIM router R1 receives a Prune for a given tree from a given 305 downstream neighbor R2, where R2 had previously sent attributes 306 applying to that tree, those attributes are considered to have been 307 withdrawn. Depending on the attributes that R1 has received from its 308 other downstream neighbors (if any) on the tree, R1 may determine 309 that the set of attributes applying to the tree has changed, in which 310 case it needs to send a new Join, with the new attribute set, to its 311 upstream neighbor on the tree. 313 3.4. PIM Attribute Packet Format 315 3.4.1. PIM Join Packet Format 317 There is no space in the default PIM source encoding to include a 318 attribute field. Therefore we introduce a new source encoding type. 319 The attributes are formatted as TLV's. The new Encoded source address 320 looks like this: 322 0 1 2 3 323 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 324 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 325 | Addr Family | Encoding Type | Rsrvd |S|W|R| Mask Len | 326 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 327 | Source Address 328 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+..... 329 |F|E| Attr Type | Length | Value 330 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+..... 331 |F|E| Attr_Type | Length | Value 332 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+..... 333 . . . 334 . . . 336 - Encoding Type: 1 338 - F bit, Transitive Attribute 340 If this bit is set, the attribute is a transitive attribute; 341 otherwise it is a non-transitive attribute. See section 3.3.2. 343 - E bit, End of Attributes. If this bit is set then this is the 344 last Join Attribute appearing in this Encoded-Source Address 345 field. 347 - "Attr_Type", a 6-bit field identifying the type of the Attribute. 349 - Length field, a 1 octet field specifying the length in octets, 350 encoded as an unsigned binary integer, of the value field. 352 The other fields are the same as described in [RFC4601]. 354 3.4.2. PIM Join Attribute Hello Option 356 0 1 2 3 357 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 358 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 359 | OptionType = 26 | OptionLength = 0 | 360 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 362 Option type: 26. 364 4. IANA Considerations 366 A new IANA registry is needed for "PIM Join Attribute Types". These 367 are values of the "Attr_Type" field depicted in section 3.3.1. 368 Assignments are to be made according to the policy "IETF Review" as 369 defined in [RFC5226]. 371 The PIM Hello Option value 26 should be assigned by IANA to the "Join 372 Attribute" option, with this document as the reference. [Assuming 373 that 26 is still available.] 375 [RFC4601] should have, but did not, create a registry for the 376 "Encoding Type" field of the Encoded-Source Address format defined 377 therein. IANA should set up a registry for this, referencing both 378 this document and [RFC4601]. Assignments should be made according to 379 the policy "IETF Review" as defined in [RFC5226]. Two encoding types 380 should be defined: 382 - The encoding type 0 should be allocated, defined as "native 383 encoding for the address family", and [RFC4601] should be the 384 reference. 386 - The encoding type 1 should be allocated, defined as "native 387 encoding for the address family, but with zero or more PIM Join 388 Attributes present", and this document should be the reference. 390 5. Security Considerations 392 Security of the join attribute is only guaranteed by the security of 393 the PIM packet, so the security considerations for PIM join packets 394 as described in [RFC4601] apply here. Additional security 395 considerations may apply to specific attributes; if so, these will 396 need to be documented in the specification of those attributes. 398 Security considerations from [RFC5015] may apply as well. 400 6. Acknowledgments 402 The authors would like to thank Stig Venaas, James Lingard, Bharat 403 Joshi, Marshall Eubanks, Pekka Savola, Tom Pusateri, and Elwyn Davies 404 for their input. 406 7. Authors' Addresses 408 Arjen Boers 409 Cisco Systems, Inc. 410 Avda. Diagnoal, 682 411 Barcelona 08034 413 E-mail: aboers@cisco.com 415 IJsbrand Wijnands 416 Cisco Systems, Inc. 417 De kleetlaan 6a 418 Diegem 1831 419 Belgium 421 E-mail: ice@cisco.com 423 Eric C. Rosen 424 Cisco Systems, Inc. 425 1414 Massachusetts Avenue 426 Boxborough, MA, 01719 428 E-mail: erosen@cisco.com 430 8. Normative References 432 [RFC2119] "Key words for use in RFCs to Indicate Requirement Levels", 433 S. Bradner, RFC 2119, March 1997. 435 [RFC4601] Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas, 436 "Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol 437 Specification (Revised)", RFC 4601, August 2006. 439 9. Informative References 441 [RFC3973] "Protocol Independent Multicast - Dense Mode (PIM-DM): 442 Protocol Specification", A. Adams, J. Nicholas, W. Siadak. January 443 2005. 445 [RFC5015] "Bidirectional Protocol Independent Multicast", M. Handley, 446 I. Kouvelas, T. Speakman, L. Vicisano, RFC 5015, October 2007. 448 [RFC5226] "Guidelines for Writing an IANA Considerations Section in 449 RFCs", T. Narten, H. Alvestrand, RFC 5226, May 2008. 451 10. Full Copyright Statement 453 Copyright (C) The IETF Trust (2008). 455 This document is subject to the rights, licenses and restrictions 456 contained in BCP 78, and except as set forth therein, the authors 457 retain all their rights. 459 This document and the information contained herein are provided on an 460 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 461 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND 462 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS 463 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF 464 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 465 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 467 11. Intellectual Property 469 The IETF takes no position regarding the validity or scope of any 470 Intellectual Property Rights or other rights that might be claimed to 471 pertain to the implementation or use of the technology described in 472 this document or the extent to which any license under such rights 473 might or might not be available; nor does it represent that it has 474 made any independent effort to identify any such rights. Information 475 on the procedures with respect to rights in RFC documents can be 476 found in BCP 78 and BCP 79. 478 Copies of IPR disclosures made to the IETF Secretariat and any 479 assurances of licenses to be made available, or the result of an 480 attempt made to obtain a general license or permission for the use of 481 such proprietary rights by implementers or users of this 482 specification can be obtained from the IETF on-line IPR repository at 483 http://www.ietf.org/ipr. 485 The IETF invites any interested party to bring to its attention any 486 copyrights, patents or patent applications, or other proprietary 487 rights that may cover technology that may be required to implement 488 this standard. Please address the information to the IETF at 489 ietf-ipr@ietf.org.