| < draft-ietf-msdp-spec-15.txt | draft-ietf-msdp-spec-16.txt > | |||
|---|---|---|---|---|
| Network Working Group David Meyer | ||||
| (Editor) | ||||
| INTERNET DRAFT Bill Fenner | ||||
| (Editor) | ||||
| Category | ||||
| Standards Track | ||||
| April, 2003 | INTERNET-DRAFT Bill Fenner (Editor) | |||
| draft-ietf-msdp-spec-16.txt David Meyer (Editor) | ||||
| Category Informational | ||||
| Expires: November 2003 May 2003 | ||||
| Multicast Source Discovery Protocol (MSDP) | Multicast Source Discovery Protocol (MSDP) | |||
| <draft-ietf-msdp-spec-15.txt> | <draft-ietf-msdp-spec-16.txt> | |||
| Status of this Memo | Status of this Document | |||
| This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
| all provisions of Section 10 of RFC 2026. | all provisions of Section 10 of RFC2026. | |||
| Internet Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that other | Task Force (IETF), its areas, and its working groups. Note that | |||
| groups may also distribute working documents as Internet-Drafts. | other groups may also distribute working documents as Internet- | |||
| Drafts. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| Abstract | This document is a product of an individual. Comments are solicited | |||
| and should be addressed to the author(s). | ||||
| Copyright Notice | ||||
| Copyright (C) The Internet Society (2003). All Rights Reserved. | ||||
| Abstract | ||||
| The Multicast Source Discovery Protocol, MSDP, describes a mechanism | The Multicast Source Discovery Protocol, MSDP, describes a mechanism | |||
| to connect multiple PIM-SM domains together. Each PIM-SM domain uses | to connect multiple IP Version 4 Protocol Independent Multicast | |||
| its own independent Rendezvous Point (RP) and does not have to depend | Sparse-Mode (PIM-SM) [RFC2362] domains together. Each PIM-SM domain | |||
| on RPs in other domains. This draft is intended to document existing | uses its own independent Rendezvous Point (RP) and does not have to | |||
| MSDP implementations in the field. | depend on RPs in other domains. This draft is intended to document | |||
| existing MSDP implementations in the field. | ||||
| Copyright Notice | Table of Contents | |||
| Copyright (C) The Internet Society (2003). All Rights Reserved. | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | ||||
| 3. Procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | ||||
| 4. Caching. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | ||||
| 5. Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | ||||
| 5.1. SA-Advertisement-Timer. . . . . . . . . . . . . . . . . . . 7 | ||||
| 5.2. SA-Advertisement-Timer Processing . . . . . . . . . . . . . 8 | ||||
| 5.3. SA Cache Timeout (SA-State Timer) . . . . . . . . . . . . . 8 | ||||
| 5.4. Peer Hold Timer . . . . . . . . . . . . . . . . . . . . . . 8 | ||||
| 5.5. KeepAlive Timer . . . . . . . . . . . . . . . . . . . . . . 9 | ||||
| 5.6. ConnectRetry Timer. . . . . . . . . . . . . . . . . . . . . 9 | ||||
| 6. Intermediate MSDP Peers. . . . . . . . . . . . . . . . . . . . 9 | ||||
| 7. SA Filtering and Policy. . . . . . . . . . . . . . . . . . . . 10 | ||||
| 8. Encapsulated Data Packets. . . . . . . . . . . . . . . . . . . 10 | ||||
| 9. Other Scenarios. . . . . . . . . . . . . . . . . . . . . . . . 10 | ||||
| 10. MSDP Peer-RPF Forwarding. . . . . . . . . . . . . . . . . . . 11 | ||||
| 10.1. Definitions. . . . . . . . . . . . . . . . . . . . . . . . 11 | ||||
| 10.1.1. Multicast RPF Routing Information Base (MRIB). .. . . . 11 | ||||
| 10.1.2. Peer-RPF Route. . . . . . . . . . . . . . . . . . . . . 11 | ||||
| 10.1.3. Peer-RPF Forwarding Rules . . . . . . . . . . . . . . . 11 | ||||
| 10.2. MSDP mesh-group semantics. . . . . . . . . . . . . . . . . 13 | ||||
| 11. MSDP Connection State Machine . . . . . . . . . . . . . . . . 14 | ||||
| 11.1. Events . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | ||||
| 11.2. Actions. . . . . . . . . . . . . . . . . . . . . . . . . . 16 | ||||
| 11.3. Peer-specific Events . . . . . . . . . . . . . . . . . . . 16 | ||||
| 11.4. Peer-independent Events. . . . . . . . . . . . . . . . . . 17 | ||||
| 12. Packet Formats. . . . . . . . . . . . . . . . . . . . . . . . 17 | ||||
| 12.1. MSDP TLV format. . . . . . . . . . . . . . . . . . . . . . 17 | ||||
| 12.2. Defined TLVs . . . . . . . . . . . . . . . . . . . . . . . 18 | ||||
| 12.2.1. IPv4 Source-Active TLV. . . . . . . . . . . . . . . . . 18 | ||||
| 12.2.2. KeepAlive TLV . . . . . . . . . . . . . . . . . . . . . 20 | ||||
| 13. MSDP Error Handling . . . . . . . . . . . . . . . . . . . . . 20 | ||||
| 14. SA Data Encapsulation . . . . . . . . . . . . . . . . . . . . 21 | ||||
| 15. Applicability Statement . . . . . . . . . . . . . . . . . . . 21 | ||||
| 15.1. Between PIM Domains. . . . . . . . . . . . . . . . . . . . 21 | ||||
| 15.2. Between Anycast-RPs. . . . . . . . . . . . . . . . . . . . 21 | ||||
| 16. Intellectual Property . . . . . . . . . . . . . . . . . . . . 21 | ||||
| 17. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 22 | ||||
| 18. Security Considerations . . . . . . . . . . . . . . . . . . . 23 | ||||
| 19. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 | ||||
| 20. References. . . . . . . . . . . . . . . . . . . . . . . . . . 24 | ||||
| 20.1. Normative References . . . . . . . . . . . . . . . . . . . 24 | ||||
| 20.2. Informative References . . . . . . . . . . . . . . . . . . 25 | ||||
| 21. Editor's Addresses. . . . . . . . . . . . . . . . . . . . . . 25 | ||||
| 22. Full Copyright Statement. . . . . . . . . . . . . . . . . . . 25 | ||||
| 1. Introduction | 1. Introduction | |||
| The Multicast Source Discovery Protocol, MSDP, describes a mechanism | The Multicast Source Discovery Protocol, MSDP, describes a mechanism | |||
| to connect multiple PIM-SM domains together. Each PIM-SM domain uses | to connect multiple PIM Sparse-Mode (PIM-SM) [RFC2362] domains | |||
| its own independent RP(s) and does not have to depend on RPs in other | together. Each PIM-SM domain uses its own independent RP(s) and does | |||
| domains. Advantages of this approach include: | not have to depend on RPs in other domains. Advantages of this | |||
| approach include: | ||||
| o No Third-party resource dependencies on RP | o No Third-party resource dependencies on a domain's RP | |||
| PIM-SM domains can rely on their own RPs only. | PIM-SM domains can rely on their own RPs only. | |||
| o Receiver only Domains | o Receiver only Domains | |||
| Domains with only receivers get data without globally | Domains with only receivers get data without globally | |||
| advertising group membership. | advertising group membership. | |||
| Note that MSDP may be used with protocols other than PIM-SM, but such | Note that MSDP may be used with protocols other than PIM-SM, but such | |||
| usage is not specified in this memo. | usage is not specified in this memo. | |||
| The keywords MUST, MUST NOT, MAY, OPTIONAL, REQUIRED, RECOMMENDED, | 2. Overview | |||
| SHALL, SHALL NOT, SHOULD, SHOULD NOT are to be interpreted as defined | ||||
| in RFC 2119 [RFC2119]. | ||||
| 2. Overview | ||||
| MSDP-speaking routers in a PIM-SM [RFC2362] domain have a MSDP | MSDP-speaking routers in a PIM-SM domain have a MSDP peering | |||
| peering relationship with MSDP peers in another domain. The peering | relationship with MSDP peers in another domain. The peering | |||
| relationship is made up of a TCP connection in which control | relationship is made up of a TCP connection in which control | |||
| information is exchanged. Each domain has one or more connections to | information is exchanged. Each domain has one or more connections to | |||
| this virtual topology. | this virtual topology. | |||
| The purpose of this topology is to allow domains to discover | The purpose of this topology is to allow domains to discover | |||
| multicast sources from other domains. If the multicast sources are of | multicast sources from other domains. If the multicast sources are of | |||
| interest to a domain which has receivers, the normal source-tree | interest to a domain which has receivers, the normal source-tree | |||
| building mechanism in PIM-SM will be used to deliver multicast data | building mechanism in PIM-SM will be used to deliver multicast data | |||
| over an inter-domain distribution tree. | over an inter-domain distribution tree. | |||
| 3. Procedure | 3. Procedure | |||
| When an RP in a PIM-SM domain first learns of a new sender, e.g. via | When an RP in a PIM-SM domain first learns of a new sender, e.g. via | |||
| PIM register messages, it constructs a "Source-Active" (SA) message | PIM register messages, it constructs a "Source-Active" (SA) message | |||
| and sends it to its MSDP peers. All RPs, which intend to originate | and sends it to its MSDP peers. All RPs, which intend to originate or | |||
| or receive SA messages, must establish MSDP peering with other RPs, | receive SA messages, must establish MSDP peering with other RPs, | |||
| either directly or via an intermediate MSDP peer. The SA message | either directly or via an intermediate MSDP peer. The SA message | |||
| contains the following fields: | contains the following fields: | |||
| o Source address of the data source. | o Source address of the data source. | |||
| o Group address the data source sends to. | ||||
| o IP address of the RP. | o Group address the data source sends to. | |||
| o IP address of the RP. | ||||
| Note that an RP that isn't a DR on a shared network SHOULD NOT | Note that an RP that isn't a DR on a shared network SHOULD NOT | |||
| originate SA's for directly connected sources on that shared network; | originate SA's for directly connected sources on that shared network; | |||
| it should only originate in response to receiving Register messages | it should only originate in response to receiving Register messages | |||
| from the DR. | from the DR. | |||
| Each MSDP peer receives and forwards the message away from the RP | Each MSDP peer receives and forwards the message away from the RP | |||
| address in a "peer-RPF flooding" fashion. The notion of peer-RPF | address in a "peer-RPF flooding" fashion. The notion of peer-RPF | |||
| flooding is with respect to forwarding SA messages. The Multicast RPF | flooding is with respect to forwarding SA messages. The Multicast RPF | |||
| Routing Information Base (MRIB) is examined to determine which peer | Routing Information Base (MRIB) is examined to determine which peer | |||
| skipping to change at line 115 ¶ | skipping to change at page 6, line 34 ¶ | |||
| is called an "RPF peer". See section 13 for the details of peer-RPF | is called an "RPF peer". See section 13 for the details of peer-RPF | |||
| forwarding. | forwarding. | |||
| If the MSDP peer receives the SA from a non-RPF peer towards the | If the MSDP peer receives the SA from a non-RPF peer towards the | |||
| originating RP, it will drop the message. Otherwise, it forwards the | originating RP, it will drop the message. Otherwise, it forwards the | |||
| message to all its MSDP peers (except the one from which it received | message to all its MSDP peers (except the one from which it received | |||
| the SA message). | the SA message). | |||
| When an MSDP peer which is also an RP for its own domain receives a | When an MSDP peer which is also an RP for its own domain receives a | |||
| new SA message, it determines if there are any group members within | new SA message, it determines if there are any group members within | |||
| the domain interested in any group described by an (S,G) entry within | the domain interested in any group described by an (Source, Group), | |||
| the SA message. That is, the RP checks for a (*,G) entry with a non- | or (S,G) entry within the SA message. That is, the RP checks for a | |||
| empty outgoing interface list; this implies that some system in the | (*,G) entry with a non-empty outgoing interface list; this implies | |||
| domain is interested in the group. In this case, the RP triggers a | that some system in the domain is interested in the group. In this | |||
| (S,G) join event towards the data source as if a Join/Prune message | case, the RP triggers a (S,G) join event towards the data source as | |||
| was received addressed to the RP itself. This sets up a branch of the | if a Join/Prune message was received addressed to the RP itself. This | |||
| source-tree to this domain. Subsequent data packets arrive at the RP | sets up a branch of the source-tree to this domain. Subsequent data | |||
| via this tree branch, and are forwarded down the shared-tree inside | packets arrive at the RP via this tree branch, and are forwarded down | |||
| the domain. If leaf routers choose to join the source-tree they have | the shared-tree inside the domain. If leaf routers choose to join the | |||
| the option to do so according to existing PIM-SM conventions. | source-tree they have the option to do so according to existing PIM- | |||
| Finally, if an RP in a domain receives a PIM Join message for a new | SM conventions. Finally, if an RP in a domain receives a PIM Join | |||
| group G, the RP SHOULD trigger a (S,G) join event for each active | message for a new group G, the RP SHOULD trigger a (S,G) join event | |||
| (S,G) for that group in its SA cache. | for each active (S,G) for that group in its SA cache. | |||
| This procedure has been affectionately named flood-and-join because | This procedure has been affectionately named flood-and-join because | |||
| if any RP is not interested in the group, they can ignore the SA | if any RP is not interested in the group, they can ignore the SA | |||
| message. Otherwise, they join a distribution tree. | message. Otherwise, they join a distribution tree. | |||
| 4. Caching | 4. Caching | |||
| A MSDP speaker MUST cache SA messages. Caching allows pacing of MSDP | A MSDP speaker MUST cache SA messages. Caching allows pacing of MSDP | |||
| messages as well as reducing join latency for new receivers of a | messages as well as reducing join latency for new receivers of a | |||
| group G at an originating RP which has existing MSDP (S,G) state. In | group G at an originating RP which has existing MSDP (S,G) state. In | |||
| addition, caching greatly aids in diagnosis and debugging of various | addition, caching greatly aids in diagnosis and debugging of various | |||
| problems. | problems. | |||
| An MSDP speaker must provide a mechanism to reduce the forwarding of | An MSDP speaker must provide a mechanism to reduce the forwarding of | |||
| new SA's. The SA-cache is used to reduce storms and performs this | new SA's. The SA-cache is used to reduce storms and performs this by | |||
| by not forwarding SA's unless they are in the cache or are new SA | not forwarding SA's unless they are in the cache or are new SA | |||
| packets that the MSDP speaker will cache for the first time. The | packets that the MSDP speaker will cache for the first time. The SA- | |||
| SA-cache also reduces storms by advertising from the cache at a | cache also reduces storms by advertising from the cache at a period | |||
| period of no more than twice per SA-Advertisement-Timer interval and | of no more than twice per SA-Advertisement-Timer interval and not | |||
| not less than 1 time per SA Advertisment period. | less than 1 time per SA Advertisement period. | |||
| 5. Timers | 5. Timers | |||
| The main timers for MSDP are: SA-Advertisement-Timer, SA Cache Entry | The main timers for MSDP are: SA-Advertisement-Timer, SA Cache Entry | |||
| timer, Peer Hold Timer, KeepAlive timer, and ConnectRetry timer. | timer, Peer Hold Timer, KeepAlive timer, and ConnectRetry timer. Each | |||
| Each is considered below. | is considered below. | |||
| 5.1. SA-Advertisement-Timer | 5.1. SA-Advertisement-Timer | |||
| RPs which originate SA messages do so periodically as long as there | RPs which originate SA messages do so periodically as long as there | |||
| is data being sent by the source. There is one SA-Advertisement-Timer | is data being sent by the source. There is one SA-Advertisement-Timer | |||
| covering the sources that an RP may advertise. [SA-Advertisement- | covering the sources that an RP may advertise. [SA-Advertisement- | |||
| Period] MUST be 60 seconds. An RP MUST not send more than one | Period] MUST be 60 seconds. An RP MUST not send more than one | |||
| periodic SA message for a given (S,G) within an SA Advertisement | periodic SA message for a given (S,G) within an SA Advertisement | |||
| interval. Originating periodic SA messages is required to keep | interval. Originating periodic SA messages is required to keep | |||
| announcements alive in caches. Finally, an originating RP SHOULD | announcements alive in caches. Finally, an originating RP SHOULD | |||
| trigger the transmission of an SA message as soon as it receives data | trigger the transmission of an SA message as soon as it receives data | |||
| from an internal source for the first time. This initial SA message | from an internal source for the first time. This initial SA message | |||
| may be in addition to the periodic sa-message forwarded in that first | may be in addition to the periodic sa-message forwarded in that first | |||
| 60 seconds for that S,G. | 60 seconds for that (S,G). | |||
| 5.2. SA-Advertisement-Timer Processing | 5.2. SA-Advertisement-Timer Processing | |||
| An RP MUST spread the generation of periodic SA messages (i.e. | An RP MUST spread the generation of periodic SA messages (i.e. | |||
| messages advertising the active sources for which it is the RP) over | messages advertising the active sources for which it is the RP) over | |||
| its reporting interval (i.e. SA-Advertisement-Period). An RP starts | its reporting interval (i.e. SA-Advertisement-Period). An RP starts | |||
| the SA-Advertisement-Timer when the MSDP process is configured. When | the SA-Advertisement-Timer when the MSDP process is configured. When | |||
| the timer expires, an RP resets the timer to [SA-Advertisement- | the timer expires, an RP resets the timer to [SA-Advertisement- | |||
| Period] seconds, and begins the advertisement of its active sources. | Period] seconds, and begins the advertisement of its active sources. | |||
| Active sources are advertised in the following manner: An RP packs | Active sources are advertised in the following manner: An RP packs | |||
| its active sources into an SA message until the largest MSDP packet | its active sources into an SA message until the largest MSDP packet | |||
| that can be sent is built or there are no more sources, and then | that can be sent is built or there are no more sources, and then | |||
| sends the message. This process is repeated periodically within the | sends the message. This process is repeated periodically within the | |||
| SA-Advertisement-Period in such a way that all of the RP's sources | SA-Advertisement-Period in such a way that all of the RP's sources | |||
| are advertised. Note that since MSDP is a periodic protocol, an | are advertised. Note that since MSDP is a periodic protocol, an | |||
| implemenation SHOULD send all cached SA messages when a connection is | implementation SHOULD send all cached SA messages when a connection | |||
| established. Finally, the timer is deleted when the MSDP process is | is established. Finally, the timer is deleted when the MSDP process | |||
| deconfigured. | is de-configured. | |||
| 5.3. SA Cache Timeout (SA-State Timer) | 5.3. SA Cache Timeout (SA-State Timer) | |||
| Each entry in an SA Cache has an associated SA-State Timer. A | Each entry in an SA Cache has an associated SA-State Timer. A | |||
| (S,G)-SA-State-Timer is started when an (S,G)-SA message is initially | (S,G)-SA-State-Timer is started when an (S,G)-SA message is initially | |||
| received by an MSDP peer. The timer is reset to [SG-State-Period] if | received by an MSDP peer. The timer is reset to [SG-State-Period] if | |||
| another (S,G)-SA message is received before the (S,G)-SA-State Timer | another (S,G)-SA message is received before the (S,G)-SA-State Timer | |||
| expires. [SG-State-Period] MUST NOT be less than | expires. [SG-State-Period] MUST NOT be less than [SA-Advertisement- | |||
| [SA-Advertisement-Period] + [SA-Hold-Down-Period]. | Period] + [SA-Hold-Down-Period]. | |||
| 5.4. Peer Hold Timer | 5.4. Peer Hold Timer | |||
| The Hold Timer is initialized to [HoldTime-Period] when the peer's | The Hold Timer is initialized to [HoldTime-Period] when the peer's | |||
| transport connection is established, and is reset to [HoldTime- | transport connection is established, and is reset to [HoldTime- | |||
| Period] when any MSDP message is received. Finally, the timer is | Period] when any MSDP message is received. Finally, the timer is | |||
| deleted when the peer's transport connection is closed. | deleted when the peer's transport connection is closed. [HoldTime- | |||
| [HoldTime-Period] MUST be at least three seconds. The recommended | Period] MUST be at least three seconds. The recommended value for | |||
| value for [HoldTime-Period] is 75 seconds. | [HoldTime-Period] is 75 seconds. | |||
| 5.5. KeepAlive Timer | 5.5. KeepAlive Timer | |||
| Once an MSDP transport connection is established, each side of the | Once an MSDP transport connection is established, each side of the | |||
| connection sends a KeepAlive message and sets a KeepAlive timer. If | connection sends a KeepAlive message and sets a KeepAlive timer. If | |||
| the KeepAlive timer expires, the local system sends a KeepAlive | the KeepAlive timer expires, the local system sends a KeepAlive | |||
| message and restarts its KeepAlive timer. | message and restarts its KeepAlive timer. | |||
| The KeepAlive timer is set to [KeepAlive-Period] when the peer comes | The KeepAlive timer is set to [KeepAlive-Period] when the peer comes | |||
| up. The timer is reset to [KeepAlive-Period] each time an MSDP | up. The timer is reset to [KeepAlive-Period] each time an MSDP | |||
| message is sent to the peer, and reset when the timer expires. | message is sent to the peer, and reset when the timer expires. | |||
| Finally, the KeepAlive timer is deleted when the peer's transport | Finally, the KeepAlive timer is deleted when the peer's transport | |||
| connection is closed. | connection is closed. | |||
| [KeepAlive-Period] MUST be less than [HoldTime-Period], and MUST be | [KeepAlive-Period] MUST be less than [HoldTime-Period], and MUST be | |||
| at least one second. The recommended value for [KeepAlive-Period] is | at least one second. The recommended value for [KeepAlive-Period] is | |||
| 60 seconds. | 60 seconds. | |||
| 5.6. ConnectRetry Timer | 5.6. ConnectRetry Timer | |||
| The ConnectRetry timer is used by the MSDP peer with the lower IP | The ConnectRetry timer is used by the MSDP peer with the lower IP | |||
| address to transition from INACTIVE to CONNECTING states. There is | address to transition from INACTIVE to CONNECTING states. There is | |||
| one timer per peer, and the [ConnectRetry-Period] SHOULD be set to 30 | one timer per peer, and the [ConnectRetry-Period] SHOULD be set to 30 | |||
| seconds. The timer is initialized to [ConnectRetry-Period] when an | seconds. The timer is initialized to [ConnectRetry-Period] when an | |||
| MSDP speaker attempts to actively open a TCP connection to its peer | MSDP speaker attempts to actively open a TCP connection to its peer | |||
| (see section 15, event E2, action A2 ). When the timer expires, the | (see section 15, event E2, action A2 ). When the timer expires, the | |||
| peer retries the connection and the timer is reset to [ConnectRetry- | peer retries the connection and the timer is reset to [ConnectRetry- | |||
| Period]. It is deleted if either the connection transitions into | Period]. It is deleted if either the connection transitions into | |||
| ESTABLISHED state or the peer is deconfigured. | ESTABLISHED state or the peer is de-configured. | |||
| 6. Intermediate MSDP Peers | 6. Intermediate MSDP Peers | |||
| Intermediate MSDP speakers do not originate periodic SA messages on | Intermediate MSDP speakers do not originate periodic SA messages on | |||
| behalf of sources in other domains. In general, an RP MUST only | behalf of sources in other domains. In general, an RP MUST only | |||
| originate an SA for a source which would register to it, and ONLY RPs | originate an SA for a source which would register to it, and ONLY RPs | |||
| may originate SA messages. | may originate SA messages. | |||
| 7. SA Filtering and Policy | 7. SA Filtering and Policy | |||
| As the number of (S,G) pairs increases in the Internet, an RP may | As the number of (S,G) pairs increases in the Internet, an RP may | |||
| want to filter which sources it describes in SA messages. Also, | want to filter which sources it describes in SA messages. Also, | |||
| filtering may be used as a matter of policy which at the same time | filtering may be used as a matter of policy which at the same time | |||
| can reduce state. MSDP peers in transit domains should not filter | can reduce state. MSDP peers in transit domains should not filter SA | |||
| SA messages or the flood-and-join model can not guarantee that | messages or the flood-and-join model can not guarantee that sources | |||
| sources will be known throughout the Internet (i.e., SA filtering | will be known throughout the Internet (i.e., SA filtering by transit | |||
| by transit domains may cause undesired lack of connectivity). In | domains may cause undesired lack of connectivity). In general, policy | |||
| general, policy should be expressed using MBGP [RFC2283]. This | should be expressed using MBGP [RFC2283]. This will cause MSDP | |||
| will cause MSDP messages to flow in the desired direction and | messages to flow in the desired direction and peer-RPF fail | |||
| peer-RPF fail otherwise. An exception occurs at an administrative | otherwise. An exception occurs at an administrative scope [RFC2365] | |||
| scope [RFC2365] boundary. In particular, a SA message for a (S,G) | boundary. In particular, a SA message for a (S,G) MUST NOT be sent to | |||
| MUST NOT be sent to peers which are on the other side of an | peers which are on the other side of an administrative scope boundary | |||
| administrative scope boundary for G. | for G. | |||
| 8. Encapsulated Data Packets | 8. Encapsulated Data Packets | |||
| The RP MAY encapsulate multicast data from the source. An interested | The RP MAY encapsulate multicast data from the source. An interested | |||
| RP may decapsulate the packet, which SHOULD be forwarded as if a PIM | RP may decapsulate the packet, which SHOULD be forwarded as if a PIM | |||
| register encapsulated packet was received. That is, if packets are | register encapsulated packet was received. That is, if packets are | |||
| already arriving over the interface toward the source, then the | already arriving over the interface toward the source, then the | |||
| packet is dropped. Otherwise, if the outgoing interface list is non- | packet is dropped. Otherwise, if the outgoing interface list is non- | |||
| null, the packet is forwarded appropriately. Note that when doing | null, the packet is forwarded appropriately. Note that when doing | |||
| data encapsulation, an implementation MUST bound the time during | data encapsulation, an implementation MUST bound the time during | |||
| which packets are encapsulated. | which packets are encapsulated. | |||
| This allows for small bursts to be received before the multicast tree | This allows for small bursts to be received before the multicast tree | |||
| is built back toward the source's domain. For example, an | is built back toward the source's domain. For example, an | |||
| implementation SHOULD encapsulate at least the first packet to | implementation SHOULD encapsulate at least the first packet to | |||
| provide service to bursty sources. | provide service to bursty sources. | |||
| 9. Other Scenarios | 9. Other Scenarios | |||
| MSDP is not limited to deployment across different routing domains. | MSDP is not limited to deployment across different routing domains. | |||
| It can be used within a routing domain when it is desired to deploy | It can be used within a routing domain when it is desired to deploy | |||
| multiple RPs for the same group ranges such as with Anycast RP's. | multiple RPs for the same group ranges such as with Anycast RP's. As | |||
| As long as all RPs have a interconnected MSDP topology, each can | long as all RPs have a interconnected MSDP topology, each can learn | |||
| learn about active sources as well as RPs in other domains. | about active sources as well as RPs in other domains. | |||
| 10. MSDP Peer-RPF Forwarding | 10. MSDP Peer-RPF Forwarding | |||
| The MSDP Peer-RPF Forwarding rules are used for forwarding SA | The MSDP Peer-RPF Forwarding rules are used for forwarding SA | |||
| messages throughout an MSDP enabled internet. Unlike the RPF check | messages throughout an MSDP enabled internet. Unlike the RPF check | |||
| used when forwarding data packets, which generally compares the | used when forwarding data packets, which generally compares the | |||
| packet's source address against the interface upon which the packet | packet's source address against the interface upon which the packet | |||
| was received, the Peer-RPF check compares the RP address carried in | was received, the Peer-RPF check compares the RP address carried in | |||
| the SA message against the MSDP peer from which the message was | the SA message against the MSDP peer from which the message was | |||
| received. | received. | |||
| 10.1. Definitions | 10.1. Definitions | |||
| The following definitions are used in the description of the Peer-RPF | The following definitions are used in the description of the Peer-RPF | |||
| Forwarding Rules: | Forwarding Rules: | |||
| 10.1.1. Multicast RPF Routing Information Base (MRIB) | 10.1.1. Multicast RPF Routing Information Base (MRIB) | |||
| The MRIB is the multicast topology table. It is typically derived | The MRIB is the multicast topology table. It is typically derived | |||
| from the unicast routing table or from other routing protocols such | from the unicast routing table or from other routing protocols such | |||
| as multi-protocol BGP [RFC2283]. | as multi-protocol BGP [RFC2283]. | |||
| 10.1.2. Peer-RPF Route | 10.1.2. Peer-RPF Route | |||
| The Peer-RPF route is the route that the MRIB chooses for a given | The Peer-RPF route is the route that the MRIB chooses for a given | |||
| address. The Peer-RPF route for a SA's originating RP is used to | address. The Peer-RPF route for a SA's originating RP is used to | |||
| select the peer from which the SA is accepted. | select the peer from which the SA is accepted. | |||
| 10.2. Peer-RPF Forwarding Rules | 10.1.3. Peer-RPF Forwarding Rules | |||
| An SA message originated by R and received by X from N is | ||||
| accepted if N is the peer-RPF neighbor for X, and is discarded | ||||
| otherwise. | ||||
| MPP(R,N) MP(N,X) | An SA message originated by R and received by X from N is accepted if | |||
| R ---------....-------> N ------------------> X | N is the peer-RPF neighbor for X, and is discarded otherwise. | |||
| SA(S,G,R) SA(S,G,R) | ||||
| MP(N,X) is an MSDP peering between N and X. MPP(R,N) is | MPP(R,N) MP(N,X) | |||
| an MSDP peering path (zero or more MSDP peers) between | R ---------....-------> N ------------------> X | |||
| R and N, e.g. MPP(R,N) = MP(R, A) + MP(A, B) + MP(B, | SA(S,G,R) SA(S,G,R) | |||
| N). SA(S,G,R) is an SA message for source S on group G | ||||
| originated by an RP R. | ||||
| The peer-RPF neighbor N is chosen deterministically, using the | MP(N,X) is an MSDP peering between N and X. MPP(R,N) is an MSDP | |||
| first of the following rules that matches. In particular, | peering path (zero or more MSDP peers) between R and N, e.g. MPP(R,N) | |||
| N is the RPF neighbor of X with respect to R if | = MP(R, A) + MP(A, B) + MP(B, N). SA(S,G,R) is an SA message for | |||
| source S on group G originated by an RP R. | ||||
| (i). N == R (X has an MSDP peering with R). | The peer-RPF neighbor N is chosen deterministically, using the first | |||
| of the following rules that matches. In particular, N is the RPF | ||||
| neighbor of X with respect to R if | ||||
| (i). N == R (X has an MSDP peering with R). | ||||
| (ii). N is the eBGP NEXT_HOP of the Peer-RPF route | (ii). N is the eBGP NEXT_HOP of the Peer-RPF route for R. | |||
| for R. | ||||
| (iii). The Peer-RPF route for R is learned through a | (iii). The Peer-RPF route for R is learned through a | |||
| distance-vector or path-vector routing protocol | distance-vector or path-vector routing protocol | |||
| (e.g. BGP, RIP, DVMRP) and N is the neighbor that | (e.g. BGP, RIP, DVMRP) and N is the neighbor that | |||
| advertised the Peer-RPF route for R (e.g. N is the | advertised the Peer-RPF route for R (e.g. N is the iBGP | |||
| iBGP advertiser of the route for R), or N is the | advertiser of the route for R), or N is the IGP next hop | |||
| IGP next hop for R if the route for R is learned | for R if the route for R is learned via a link-state | |||
| via a link-state protocol (e.g. OSPF or ISIS). | protocol (e.g. OSPF [RFC2178] or IS-IS [RFC1142]). | |||
| (iv). N resides in the closest AS in the best path towards | (iv). N resides in the closest AS in the best path towards | |||
| R. If multiple MSDP peers reside in the closest AS, | R. If multiple MSDP peers reside in the closest AS, the | |||
| the peer with the highest IP address is the rpf-peer. | peer with the highest IP address is the rpf-peer. | |||
| (v). N is configured as the static RPF-peer for R. | (v). N is configured as the static RPF-peer for R. | |||
| MSDP peers, which are NOT in state ESTABLISHED (ie down peers), are | MSDP peers, which are NOT in state ESTABLISHED (i.e., down peers), | |||
| not eligible for peer RPF consideration. | are not eligible for peer RPF consideration. | |||
| 10.3. MSDP mesh-group semantics | 10.2. MSDP mesh-group semantics | |||
| An MSDP mesh-group is a operational mechanism for reducing SA | An MSDP mesh-group is a operational mechanism for reducing SA | |||
| flooding, typically in an intra-domain setting. In particular, when | flooding, typically in an intra-domain setting. In particular, when | |||
| some subset of a domain's MSDP speakers are fully meshed, they can be | some subset of a domain's MSDP speakers are fully meshed, they can be | |||
| configured into a mesh-group. | configured into a mesh-group. | |||
| Note that mesh-groups assume that a member doesn't have to forward an | Note that mesh-groups assume that a member doesn't have to forward an | |||
| SA to other members of the mesh-group because the originator will | SA to other members of the mesh-group because the originator will | |||
| forward to all members. To be able for the originator to forward to | forward to all members. To be able for the originator to forward to | |||
| all members (and to have each member also be a potential originator), | all members (and to have each member also be a potential originator), | |||
| the mesh-group must be a full mesh of MSDP peering among all members. | the mesh-group must be a full mesh of MSDP peering among all members. | |||
| The semantics of the mesh-group are as follows: | The semantics of the mesh-group are as follows: | |||
| (i). If a member R of a mesh-group M receives a SA message from an | (i). If a member R of a mesh-group M receives a SA message | |||
| MSDP peer that is also a member of mesh-group M, R accepts the | from an MSDP peer that is also a member of mesh-group M, | |||
| SA message and forwards it to all of its peers that are not | R accepts the SA message and forwards it to all of its | |||
| part of mesh-group M. R MUST NOT forward the SA message to | peers that are not part of mesh-group M. R MUST NOT | |||
| other members of mesh-group M. | forward the SA message to other members of mesh-group M. | |||
| (ii). If a member R of a mesh-group M receives an SA message from an | (ii). If a member R of a mesh-group M receives an SA message | |||
| MSDP peer that is not a member of mesh-group M, and the SA | from an MSDP peer that is not a member of mesh-group M, | |||
| message passes the peer-RPF check, then R forwards the SA | and the SA message passes the peer-RPF check, then R | |||
| message to all members of mesh-group M and to any other | forwards the SA message to all members of mesh-group M | |||
| msdp peers. | and to any other msdp peers. | |||
| 11. MSDP Connection State Machine | 11. MSDP Connection State Machine | |||
| MSDP uses TCP as its transport protocol. In a peering relationship, | MSDP uses TCP as its transport protocol. In a peering relationship, | |||
| one MSDP peer listens for new TCP connections on the well-known port | one MSDP peer listens for new TCP connections on the well-known port | |||
| 639. The other side makes an active connect to this port. The peer | 639. The other side makes an active connect to this port. The peer | |||
| with the higher IP address will listen. This connection establishment | with the higher IP address will listen. This connection establishment | |||
| algorithm avoids call collision. Therefore, there is no need for a | algorithm avoids call collision. Therefore, there is no need for a | |||
| call collision procedure. It should be noted, however, that the | call collision procedure. It should be noted, however, that the | |||
| disadvantage of this approach is that the startup time depends | disadvantage of this approach is that the startup time depends | |||
| completely upon the active side and its connect retry timer; the | completely upon the active side and its connect retry timer; the | |||
| passive side cannot cause the connection to be established. | passive side cannot cause the connection to be established. | |||
| An MSDP peer starts in the DISABLED state. MSDP peers establish | An MSDP peer starts in the DISABLED state. MSDP peers establish | |||
| peering sessions according to the following state machine: | peering sessions according to the following state machine: | |||
| --------------->+----------+ | --------------->+----------+ | |||
| / | DISABLED |<---------- | / | DISABLED |<---------- | |||
| | ------>+----------+ \ | | ------>+----------+ \ | |||
| | / |E1->A1 | | | / |E1->A1 | | |||
| | | | | | | | | | | |||
| | | V |E7->A7 | | | V |E7->A7 | |||
| | | +----------+ E3->A3 +--------+ | | | +----------+ E3->A3 +--------+ | |||
| | | | INACTIVE |------->| LISTEN | | | | | INACTIVE |------->| LISTEN | | |||
| | | +----------+ +--------+ | | | +----------+ +--------+ | |||
| | | E2->A2| ^ |E5->A5 | | | E2->A2| ^ |E5->A5 | |||
| | | | | | | | | | | | | |||
| | |E7->A6 V |E6 | | | |E7->A6 V |E6 | | |||
| | \ +------------+ | | | \ +------------+ | | |||
| | ------| CONNECTING | | | | ------| CONNECTING | | | |||
| | +------------+ | | | +------------+ | | |||
| E7->A8 | |E4->A4 | | E7->A8 | |E4->A4 | | |||
| E8->A8 | | | | E8->A8 | | | | |||
| E9->A8 | V | | E9->A8 | V | | |||
| \ +-------------+ / | \ +-------------+ / | |||
| --------------| ESTABLISHED |<--------- | --------------| ESTABLISHED |<--------- | |||
| +-------------+ | +-------------+ | |||
| | ^ | | ^ | |||
| | | | | | | |||
| E10->A9\______/ | E10->A9 \______/ | |||
| 11.1. Events | ||||
| E1) Enable MSDP peering with P | 11.1. Events | |||
| E2) Own IP address < P's IP address | ||||
| E3) Own IP address > P's IP address | ||||
| E4) TCP established (active side) | ||||
| E5) TCP established (passive side) | ||||
| E6) ConnectRetry timer expired | ||||
| E7) Disable MSDP peering with P | ||||
| (e.g. when one's own address is changed) | ||||
| E8) Hold Timer expired | ||||
| E9) MSDP TLV format error detected | ||||
| E10) Any other error detected | ||||
| 11.2. Actions | E1) Enable MSDP peering with P | |||
| E2) Own IP address < P's IP address | ||||
| E3) Own IP address > P's IP address | ||||
| E4) TCP established (active side) | ||||
| E5) TCP established (passive side) | ||||
| E6) ConnectRetry timer expired | ||||
| E7) Disable MSDP peering with P (e.g. when one's own address is | ||||
| changed) | ||||
| E8) Hold Timer expired | ||||
| E9) MSDP TLV format error detected | ||||
| E10) Any other error detected | ||||
| A1) Allocate resources for peering with P | 11.2. Actions | |||
| Compare one's own and peer's IP addresses | ||||
| A2) TCP active OPEN | ||||
| Set ConnectRetry timer to [ConnectRetry-Period] | ||||
| A3) TCP passive OPEN (listen) | ||||
| A4) Delete ConnectRetry timer | ||||
| Send KeepAlive TLV | ||||
| Set KeepAlive timer to [KeepAlive-Period] | ||||
| Set Hold Timer to [HoldTime-Period] | ||||
| A5) Send KeepAlive TLV | ||||
| Set KeepAlive timer to [KeepAlive-Period] | ||||
| Set Hold Timer to [HoldTime-Period] | ||||
| A6) Abort TCP active OPEN attempt | ||||
| Release resources allocated for peering with P | ||||
| A7) Abort TCP passive OPEN attempt | ||||
| Release resources allocated for peering with P | ||||
| A8) Close the TCP connection | ||||
| Release resources allocated for peering with P | ||||
| A9) Drop the packet | ||||
| 11.3. Peer-specific Events | A1) Allocate resources for peering with P Compare one's own and | |||
| peer's IP addresses | ||||
| A2) TCP active OPEN Set ConnectRetry timer to | ||||
| [ConnectRetry-Period] | ||||
| A3) TCP passive OPEN (listen) | ||||
| A4) Delete ConnectRetry timer Send KeepAlive TLV | ||||
| Set KeepAlive timer to [KeepAlive-Period] | ||||
| Set Hold Timer to [HoldTime-Period] | ||||
| A5) Send KeepAlive TLV | ||||
| Set KeepAlive timer to [KeepAlive-Period] | ||||
| Set Hold Timer to [HoldTime-Period] | ||||
| A6) Abort TCP active OPEN attempt | ||||
| Release resources allocated for peering with P | ||||
| A7) Abort TCP passive OPEN attempt | ||||
| Release resources allocated for peering with P | ||||
| A8) Close the TCP connection | ||||
| Release resources allocated for peering with P | ||||
| A9) Drop the packet | ||||
| 11.3. Peer-specific Events | ||||
| The following peer-specific events can occur in the ESTABLISHED | The following peer-specific events can occur in the ESTABLISHED | |||
| state, they do not cause a state transition. Appropriate actions are | state, they do not cause a state transition. Appropriate actions are | |||
| listed for each event. | listed for each event. | |||
| *) KeepAlive timer expired: | *) KeepAlive timer expired: | |||
| -> Send KeepAlive TLV | -> Send KeepAlive TLV | |||
| -> Set KeepAlive timer to [KeepAlive-Period] | -> Set KeepAlive timer to [KeepAlive-Period] | |||
| *) KeepAlive TLV received: | *) KeepAlive TLV received: | |||
| -> Set Hold Timer to [HoldTime-Period] | -> Set Hold Timer to [HoldTime-Period] | |||
| *) Source-Active TLV received: | *) Source-Active TLV received: | |||
| -> Set Hold Timer to [HoldTime-Period] | -> Set Hold Timer to [HoldTime-Period] | |||
| -> Run Peer-RPF Forwarding algorithm | -> Run Peer-RPF Forwarding algorithm | |||
| -> Set KeepAlive timer to [KeepAlive-Period] for those peers | -> Set KeepAlive timer to [KeepAlive-Period] for those peers | |||
| the Source-Active TLV is forwarded to | the Source-Active TLV is forwarded to | |||
| -> Send information to PIM-SM | -> Send information to PIM-SM | |||
| -> Store information in cache | -> Store information in cache | |||
| 11.4. Peer-independent Events | 11.4. Peer-independent Events | |||
| There are also a number of events that affect more than one peering | There are also a number of events that affect more than one peering | |||
| session, but still require actions to be performed on a per-peer | session, but still require actions to be performed on a per-peer | |||
| basis. | basis. | |||
| *) SA-Advertisement-Timer expired: | *) SA-Advertisement-Timer expired: | |||
| -> Start periodic transmission of Source-Active TLV(s) | -> Start periodic transmission of Source-Active TLV(s) | |||
| -> Set KeepAlive timer to [KeepAlive-Period] each time a | -> Set KeepAlive timer to [KeepAlive-Period] each time a | |||
| Source-Active TLV is sent | Source-Active TLV is sent | |||
| *) MSDP learns of a new active internal source (e.g. PIM-SM | *) MSDP learns of a new active internal source (e.g. PIM-SM | |||
| register received for a new source): | register received for a new source): | |||
| -> Send Source-Active TLV | -> Send Source-Active TLV | |||
| -> Set KeepAlive timer to [KeepAlive-Period] | -> Set KeepAlive timer to [KeepAlive-Period] | |||
| *) SG-State-Timer expired (one timer per cache entry): | *) SG-State-Timer expired (one timer per cache entry): | |||
| -> Implementation specific, typically mark the cache entry for | -> Implementation specific, typically mark the cache entry | |||
| deletion | for deletion | |||
| 12. Packet Formats | 12. Packet Formats | |||
| MSDP messages will be encoded in TLV format. If an implementation | MSDP messages are encoded in TLV format. If an implementation | |||
| receives a TLV that has length that is longer than expected, the TLV | receives a TLV that has length that is longer than expected, the TLV | |||
| SHOULD be accepted. Any additional data SHOULD be ignored and the | SHOULD be accepted. Any additional data SHOULD be ignored and the | |||
| MSDP session should not be reset. | MSDP session should not be reset. | |||
| 12.1. MSDP TLV format: | 12.1. MSDP TLV format | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Length | Value .... | | | Type | Length | Value .... | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type (8 bits) | Type (8 bits) | |||
| Describes the format of the Value field. | Describes the format of the Value field. | |||
| Length (16 bits) | Length (16 bits) | |||
| Length of Type, Length, and Value fields in octets. | Length of Type, Length, and Value fields in octets. | |||
| Minimum length required is 4 octets, except for | Minimum length required is 4 octets, except for | |||
| Keepalive messages. The maximum TLV length is 9192. | Keepalive messages. The maximum TLV length is 9192. | |||
| Value (variable length) | Value (variable length) | |||
| Format is based on the Type value. See below. The length of | Format is based on the Type value. See below. The length of | |||
| the value field is Length field minus 3. All reserved fields | the value field is Length field minus 3. All reserved fields | |||
| in the Value field MUST be transmitted as zeros and ignored on | in the Value field MUST be transmitted as zeros and ignored on | |||
| receipt. | receipt. | |||
| 12.2. Defined TLVs | 12.2. Defined TLVs | |||
| The following TLV Types are defined: | The following TLV Types are defined: | |||
| Code Type | Code Type | |||
| =========================================================== | =================================================== | |||
| 1 IPv4 Source-Active | 1 IPv4 Source-Active | |||
| 2 IPv4 Source-Active Request | 2 IPv4 Source-Active Request | |||
| 3 IPv4 Source-Active Response | 3 IPv4 Source-Active Response | |||
| 4 KeepAlive | 4 KeepAlive | |||
| 5 Reserved (Previously: Notification) | 5 Reserved (Previously: Notification) | |||
| Each TLV is described below. | Each TLV is described below. | |||
| In addition, the following TLV Types are assigned but not described | In addition, the following TLV Types are assigned but not described | |||
| in this memo: | in this memo: | |||
| Code Type | Code Type | |||
| =========================================================== | ==================================================== | |||
| 6 MSDP traceroute in progress | 6 MSDP traceroute in progress | |||
| 7 MSDP traceroute reply | 7 MSDP traceroute reply | |||
| 12.2.1. IPv4 Source-Active TLV | 12.2.1. IPv4 Source-Active TLV | |||
| The maximum size SA message that can be sent is 9192 octets. The 9192 | The maximum size SA message that can be sent is 9192 octets. The 9192 | |||
| octet size does not include the TCP, IP, layer-2 headers. | octet size does not include the TCP, IP, layer-2 headers. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 1 | x + y | Entry Count | | | 1 | x + y | Entry Count | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | RP Address | | | RP Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Reserved | Sprefix Len | \ | | Reserved | Sprefix Len | \ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ \ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ \ | |||
| | Group Address | ) z | | Group Address | ) z | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | |||
| | Source Address | / | | Source Address | / | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type | Type | |||
| IPv4 Source-Active TLV is type 1. | IPv4 Source-Active TLV is type 1. | |||
| Length x | Length x | |||
| Is the length of the control information in the message. x is | Is the length of the control information in the message. x is | |||
| 8 octets (for the first two 32-bit quantities) plus 12 times | 8 octets (for the first two 32-bit quantities) plus 12 times | |||
| Entry Count octets. | Entry Count octets. | |||
| Length y | Length y | |||
| If 0, then there is no data encapsulated. Otherwise an IPv4 | If 0, then there is no data encapsulated. Otherwise an IPv4 | |||
| packet follows and y is the value of the total length field | packet follows and y is the value of the total length field | |||
| in the header of the encapsulated IP packet. If there are | in the header of the encapsulated IP packet. If there are | |||
| multiple (S,G) entries in an SA message, only the last entry | multiple (S,G) entries in an SA message, only the last entry | |||
| may have encapsulated data and it must reflect the source and | may have encapsulated data and it must reflect the source and | |||
| destination addresses in the header of the encapsulated IP | destination addresses in the header of the encapsulated IP | |||
| packet. | packet. | |||
| Entry Count | Entry Count | |||
| Is the count of z entries (note above) which follow the RP | Is the count of z entries (note above) which follow the RP | |||
| address field. This is so multiple (S,G)s from the same domain | address field. This is so multiple (S,G)s from the same domain | |||
| can be encoded efficiently for the same RP address. An | can be encoded efficiently for the same RP address. An | |||
| SA message containing encapsulated data typically has an | SA message containing encapsulated data typically has an | |||
| entry count of 1 (i.e. only contains a single entry, for | entry count of 1 (i.e. only contains a single entry, for | |||
| the (S,G) representing the encapsulated packet). | the (S,G) representing the encapsulated packet). | |||
| RP Address | RP Address | |||
| The address of the RP in the domain the source has become | The address of the RP in the domain the source has become | |||
| active in. | active in. | |||
| Reserved | Reserved | |||
| The Reserved field MUST be transmitted as zeros and MUST be | The Reserved field MUST be transmitted as zeros and MUST be | |||
| ignored by a receiver. | ignored by a receiver. | |||
| Sprefix Len | Sprefix Len | |||
| The route prefix length associated with source address. | The route prefix length associated with source address. | |||
| This field MUST be transmitted as 32 (/32). | This field MUST be transmitted as 32 (/32). | |||
| Group Address | Group Address | |||
| The group address the active source has sent data to. | The group address the active source has sent data to. | |||
| Source Address | Source Address | |||
| The IP address of the active source. | The IP address of the active source. | |||
| Multiple (S,G) entries MAY appear in the same SA and can be batched | Multiple (S,G) entries MAY appear in the same SA and can be batched | |||
| for efficiency at the expense of data latency. This would typically | for efficiency at the expense of data latency. This would typically | |||
| occur on intermediate forwarding of SA messages. | occur on intermediate forwarding of SA messages. | |||
| 12.2.2. KeepAlive TLV | 12.2.2. KeepAlive TLV | |||
| A KeepAlive TLV is sent to an MSDP peer if and only if there were no | A KeepAlive TLV is sent to an MSDP peer if and only if there were no | |||
| MSDP messages sent to the peer within [KeepAlive-Period] seconds. | MSDP messages sent to the peer within [KeepAlive-Period] seconds. | |||
| This message is necessary to keep the MSDP connection alive. | This message is necessary to keep the MSDP connection alive. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 4 | 3 | | | 4 | 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| The length of the message is 3 octets which encompasses the one octet | The length of the message is 3 octets which encompasses the one octet | |||
| Type field and the two octet Length field. | Type field and the two octet Length field. | |||
| 13. MSDP Error Handling | 13. MSDP Error Handling | |||
| If an MSDP message is received with a TLV format error, the session | If an MSDP message is received with a TLV format error, the session | |||
| SHOULD be reset with that peer. MSDP messages with other errors, such | SHOULD be reset with that peer. MSDP messages with other errors, such | |||
| as unrecognized type code, received from MSDP peers, SHOULD be silently | as unrecognized type code, received from MSDP peers, SHOULD be | |||
| discarded and the session SHOULD not be reset. | silently discarded and the session SHOULD not be reset. | |||
| 14. SA Data Encapsulation | 14. SA Data Encapsulation | |||
| As discussed earlier, TCP encapsulation of data in SA messages MAY be | As discussed earlier, TCP encapsulation of data in SA messages MAY be | |||
| supported for backwards compatibility with legacy MSDP peers. | supported for backwards compatibility with legacy MSDP peers. | |||
| 15. Security Considerations | 15. Applicability Statement | |||
| An MSDP implementation MAY use IPsec [RFC2401] or MD5 to secure control | MSDP is used primarily in two deployment scenarios: | |||
| messages. In particular, the TCP connection between MSDP peers MAY | ||||
| be secured using IPsec or MD5. Implementations MUST be capable of | ||||
| working with peers which do not provide IPsec or MD5 security. | ||||
| 16. Acknowledgments | 15.1. Between PIM Domains | |||
| MSDP can be used between PIM domains to convey information about | ||||
| active sources available in other domains. MSDP peering used in such | ||||
| cases is generally one to one peering, and utilizes the deterministic | ||||
| peer-RPF rules described in this spec (i.e., does not use mesh- | ||||
| groups). Peerings can be aggregated on a single MSDP peer, typically | ||||
| from one to hundreds of peerings, similar in scale, although not | ||||
| necessarily consistent, with BGP peerings. | ||||
| 15.2. Between Anycast-RPs | ||||
| MSDP is also used between Anycast-RPs [RFC3446] within a PIM domain | ||||
| to synchronize information about the active sources being served by | ||||
| each Anycast-RP peer (by virtue of IGP reachability). MSDP peering | ||||
| used in this scenario is typically based on MSDP mesh groups, where | ||||
| anywhere from two to tens of peers can comprise a given mesh group, | ||||
| although more than ten is not typical. One or more of these mesh- | ||||
| group peers may then also have additional one-to-one peering with | ||||
| msdp peers outside that PIM domain as described in scenario A, for | ||||
| discovery of external sources. MSDP for anycast-RP without external | ||||
| MSDP peering is a valid deployment option and common. | ||||
| 16. Intellectual Property | ||||
| The IETF takes no position regarding the validity or scope of any | ||||
| intellectual property 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; neither does it represent that it | ||||
| has made any effort to identify any such rights. Information on the | ||||
| IETF's procedures with respect to rights in standards-track and | ||||
| standards-related documentation can be found in BCP-11. Copies of | ||||
| claims of rights made available for publication 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 implementors or users of this specification can | ||||
| be obtained from the IETF Secretariat. | ||||
| The IETF invites any interested party to bring to its attention any | ||||
| copyrights, patents or patent applications, or other proprietary | ||||
| rights which may cover technology that may be required to practice | ||||
| this standard. Please address the information to the IETF Executive | ||||
| Director. | ||||
| 17. Acknowledgments | ||||
| The editors would like to thank the original authors, Dino Farinacci, | The editors would like to thank the original authors, Dino Farinacci, | |||
| Yakov Rehkter, Peter Lothberg, Hank Kilmer, and Jermey Hall for their | Yakov Rehkter, Peter Lothberg, Hank Kilmer, and Jermey Hall for their | |||
| orginal contribution to the MSDP specification. In addition, Bill | original contribution to the MSDP specification. In addition, Bill | |||
| Nickless, John Meylor, Liming Wei, Manoj Leelanivas, Mark Turner, | Nickless, John Meylor, Liming Wei, Manoj Leelanivas, Mark Turner, | |||
| John Zwiebel, Cristina Radulescu-Banu, Brian Edwards, Selina | John Zwiebel, Cristina Radulescu-Banu, Brian Edwards, Selina | |||
| Priestley, IJsbrand Wijnands, Tom Pusateri, Kristofer Warell, Henning | Priestley, IJsbrand Wijnands, Tom Pusateri, Kristofer Warell, Henning | |||
| Eriksson, Thomas Eriksson, Dave Thaler, and Ravi Shekhar provided | Eriksson, Thomas Eriksson, Dave Thaler, and Ravi Shekhar provided | |||
| useful and productive design feedback and comments. Mike McBride, | useful and productive design feedback and comments. Mike McBride, | |||
| Leonard Giuliano, Swapna Yelamanchi, Toerless Eckert and Ishan Wu | Leonard Giuliano, Swapna Yelamanchi, Toerless Eckert, John Meylor and | |||
| contributed to the final version of the draft. | Ishan Wu contributed to the final version of the draft. | |||
| 17. Editors' Address: | 18. Security Considerations | |||
| David Meyer | An MSDP implementation MAY use IPsec [RFC2401] or MD5 to secure | |||
| Email: dmm@maoz.com | control messages. In particular, the TCP connection between MSDP | |||
| peers MAY be secured using IPsec or MD5. Implementations MUST be | ||||
| capable of working with peers which do not provide IPsec or MD5 | ||||
| security. SA Filters and limits should always be used with MSDP to | ||||
| limit the sources and groups that will be passed between RPs. For | ||||
| example, MSDP SA messages announcing the following (S,G) ranges that | ||||
| SHOULD NOT be globally routed: | ||||
| Bill Fenner | (*,224.0.1.2/32) SGI-Dogfight | |||
| AT&T Labs -- Research | (*,224.0.1.3/32) Rwhod | |||
| 75 Willow Road | (*,224.0.1.22/32) SVRLOC | |||
| Menlo Park, CA 94025 | (*,224.0.1.22/32) Microsoft-DS | |||
| Email: fenner@research.att.com | (*,224.0.1.35/32) SVRLOC-DA | |||
| (*,224.0.1.39/32) CISCO-RP-ANNOUNCE | ||||
| (*,224.0.1.40/32) CISCO-RP-DISCOVERY | ||||
| (*,224.0.2.2/32) SUN-RPC | ||||
| (*,224.77.0.0/16) Norton Ghost | ||||
| (*,224.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,225.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,225.1.2.3/32) Altiris | ||||
| (*,225.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,226.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,226.77.0.0/16) Norton Ghost | ||||
| (*,226.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,227.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,227.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,228.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,228.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,229.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,229.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,230.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,230.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,231.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,231.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,232.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,232.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,233.0.0.0/8) Source-Specific Multicast | ||||
| (*,233.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,233.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,234.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,234.42.42.42/32) Phoenix/StorageSoft ImageCast | ||||
| (*,234.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,234.142.142.42/31) Phoenix/StorageSoft ImageCast | ||||
| (*,234.142.142.44/30) Phoenix/StorageSoft ImageCast | ||||
| (*,234.142.142.48/28) Phoenix/StorageSoft ImageCast | ||||
| (*,234.142.142.64/26) Phoenix/StorageSoft ImageCast | ||||
| (*,234.142.142.128/29) Phoenix/StorageSoft ImageCast | ||||
| (*,234.142.142.136/30) Phoenix/StorageSoft ImageCast | ||||
| (*,234.142.142.140/31) Phoenix/StorageSoft ImageCast | ||||
| (*,234.142.142.142/32) Phoenix/StorageSoft ImageCast | ||||
| (*,235.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,235.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,236.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,236.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,237.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,237.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,238.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,238.128.0.0/24) Control plane of IGMP snoopers | ||||
| (*,239.0.0.0/8) Administratively Scoped Groups | ||||
| (*,239.0.0.0/24) Control plane of IGMP snoopers | ||||
| (*,239.128.0.0/24) Control plane of IGMP snoopers | ||||
| 18. REFERENCES | 19. IANA Considerations | |||
| [IANA] http://www.iana.org | This document defines seven MSDP TLV values. Values for new MSDP TLV | |||
| types are to be allocated using an IESG Approval or Standards Action | ||||
| processes. The policy for assigning new MSDP TLV values SHOULD BE | ||||
| defined in the document defining the new TLV values. | ||||
| [RFC768] Postel, J. "User Datagram Protocol", RFC 768, August, | 20. References | |||
| 1980. | ||||
| [RFC1191] Mogul, J., and S. Deering, "Path MTU Discovery", | 20.1. Normative References | |||
| RFC 1191, November 1990. | ||||
| [RFC1771] Rekhter, Y., and T. Li, "A Border Gateway Protocol 4 | [RFC1142] Oran, D. "OSI IS-IS Intra-domain Routing | |||
| (BGP-4)", RFC 1771, March 1995. | Protocol", RFC 1142, February 1990. | |||
| [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate | [RFC2178] Moy, J., "OSPF Version 2", RFC 2178, April, 1998. | |||
| Requirement Levels", RFC 2119, March, 1997. | ||||
| [RFC2283] Bates, T., Chandra, R., Katz, D., and Y. Rekhter., | [RFC2283] Bates, T., Chandra, R., Katz, D., and | |||
| "Multiprotocol Extensions for BGP-4", RFC 2283, | Y. Rekhter., "Multiprotocol Extensions for | |||
| February 1998. | BGP-4", RFC 2283, February 1998. | |||
| [RFC2362] Estrin D., et al., "Protocol Independent Multicast - | [RFC2362] Estrin D., et al., "Protocol Independent | |||
| Sparse Mode (PIM-SM): Protocol Specification", RFC | Multicast - Sparse Mode (PIM-SM): Protocol | |||
| 2362, June 1998. | Specification", RFC 2362, June 1998. | |||
| [RFC2365] Meyer, D. "Administratively Scoped IP Multicast", RFC | [RFC2365] Meyer, D. "Administratively Scoped IP Multicast", | |||
| 2365, July, 1998. | RFC 2365, July, 1998. | |||
| [RFC2401] Kent, S. and R. Atkinson, "Security Architecture for | [RFC2401] Kent, S. and R. Atkinson, "Security Architecture | |||
| the Internet Protocol", RFC 2401, November 1998. | for the Internet Protocol", RFC 2401, November 1998. | |||
| [RFC2784] Farinacci, D., et al., "Generic Routing Encapsulation | [RFC3446] Kim, D., et al., "Anycast Rendezvous Point (RP) | |||
| (GRE)", RFC 2784, March 2000. | Mechanism using Protocol Independent Multicast | |||
| (PIM) and Multicast Source Discovery Protocol | ||||
| (MSDP)", RFC 3446, January, 2003. | ||||
| 19. Full Copyright Statement | 20.2. Informative References | |||
| Copyright (C) The Internet Society (2003). All Rights Reserved. | [RFC2119] S. Bradner, "Key words for use in RFCs to | |||
| Indicate Requirement Levels", RFC 2119, March, | ||||
| 1997. | ||||
| 21. Editor's Addresses | ||||
| Bill Fenner | ||||
| AT&T Labs -- Research | ||||
| 75 Willow Road | ||||
| Menlo Park, CA 94025 | ||||
| Email: fenner@research.att.com | ||||
| David Meyer | ||||
| Email: dmm@maoz.com | ||||
| 22. Full Copyright Statement | ||||
| Copyright (C) The Internet Society (2003). All Rights Reserved. | ||||
| This document and translations of it may be copied and furnished to | This document and translations of it may be copied and furnished to | |||
| others, and derivative works that comment on or otherwise explain it | others, and derivative works that comment on or otherwise explain it | |||
| or assist in its implementation may be prepared, copied, published | or assist in its implementation may be prepared, copied, published | |||
| and distributed, in whole or in part, without restriction of any | and distributed, in whole or in part, without restriction of any | |||
| kind, provided that the above copyright notice and this paragraph are | kind, provided that the above copyright notice and this paragraph are | |||
| included on all such copies and derivative works. However, this | included on all such copies and derivative works. However, this | |||
| document itself may not be modified in any way, such as by removing | document itself may not be modified in any way, such as by removing | |||
| the copyright notice or references to the Internet Society or other | the copyright notice or references to the Internet Society or other | |||
| Internet organizations, except as needed for the purpose of | Internet organizations, except as needed for the purpose of | |||
| developing Internet standards in which case the procedures for | developing Internet standards in which case the procedures for | |||
| copyrights defined in the Internet Standards process must be | copyrights defined in the Internet Standards process must be | |||
| followed, or as required to translate it into languages other than | followed, or as required to translate it into languages other than | |||
| English. | English. | |||
| The limited permissions granted above are perpetual and will not be | The limited permissions granted above are perpetual and will not be | |||
| revoked by the Internet Society or its successors or assigns. | revoked by the Internet Society or its successors or assigns. | |||
| End of changes. 118 change blocks. | ||||
| 362 lines changed or deleted | 522 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||