| < draft-ietf-msdp-spec-08.txt | draft-ietf-msdp-spec-09.txt > | |||
|---|---|---|---|---|
| Network Working Group David Meyer (Editor) | Network Working Group David Meyer (Editor) | |||
| INTERNET DRAFT | INTERNET DRAFT Bill Fenner (Editor) | |||
| Category Standards Track | Category Standards Track | |||
| April, 2001 | May, 2001 | |||
| Multicast Source Discovery Protocol (MSDP) | Multicast Source Discovery Protocol (MSDP) | |||
| <draft-ietf-msdp-spec-08.txt> | <draft-ietf-msdp-spec-09.txt> | |||
| 1. Status of this Memo | 1. Status of this Memo | |||
| 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 RFC 2026. | |||
| 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 other | |||
| groups may also distribute working documents as Internet-Drafts. | groups may also distribute working documents as Internet-Drafts. | |||
| skipping to change at page 2, line 7 ¶ | skipping to change at page 2, line 7 ¶ | |||
| 2. Abstract | 2. 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 PIM-SM domains together. Each PIM-SM domain uses | |||
| its own independent RP(s) and does not have to depend on RPs in other | its own independent RP(s) and does not have to depend on RPs in other | |||
| domains. | domains. | |||
| 3. Copyright Notice | 3. Copyright Notice | |||
| Copyright (C) The Internet Society (2000). All Rights Reserved. | Copyright (C) The Internet Society (2001). All Rights Reserved. | |||
| 4. Introduction | 4. 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-SM domains together. Each PIM-SM domain uses | |||
| its own independent RP(s) and does not have to depend on RPs in other | its own independent RP(s) and does not have to depend on RPs in other | |||
| domains. Advantages of this approach include: | domains. Advantages of this approach include: | |||
| o No Third-party resource dependencies on RP | o No Third-party resource dependencies on 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 | ||||
| usage is not specified in this memo. | ||||
| The keywords MUST, MUST NOT, MAY, OPTIONAL, REQUIRED, RECOMMENDED, | The keywords MUST, MUST NOT, MAY, OPTIONAL, REQUIRED, RECOMMENDED, | |||
| SHALL, SHALL NOT, SHOULD, SHOULD NOT are to be interpreted as defined | SHALL, SHALL NOT, SHOULD, SHOULD NOT are to be interpreted as defined | |||
| in RFC 2119 [RFC2119]. | in RFC 2119 [RFC2119]. | |||
| 5. Overview | 5. Overview | |||
| MSDP-speaking routers in a PIM-SM [RFC2362] domain will have a MSDP | MSDP-speaking routers in a PIM-SM [RFC2362] domain have a MSDP | |||
| peering relationship with MSDP peers in another domain. The peering | peering relationship with MSDP peers in another domain. The peering | |||
| relationship will be 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 will have one or more | information is exchanged. Each domain has one or more connections to | |||
| connections to this virtual topology. | this virtual topology. | |||
| The purpose of this topology is to allow domains discover multicast | The purpose of this topology is to allow domains to discover | |||
| sources from other domains. If the multicast sources are of interest | multicast sources from other domains. If the multicast sources are of | |||
| to a domain which has receivers, the normal source-tree building | interest to a domain which has receivers, the normal source-tree | |||
| mechanism in PIM-SM will be used to deliver multicast data over an | building mechanism in PIM-SM will be used to deliver multicast data | |||
| inter-domain distribution tree. | over an inter-domain distribution tree. | |||
| We envision this virtual topology will essentially be congruent to | We envision this virtual topology will essentially be congruent to | |||
| the existing BGP topology used in the unicast-based Internet today. | the existing BGP topology used in the unicast-based Internet today. | |||
| That is, the TCP connections between MSDP peers are likely to be | That is, the TCP connections between MSDP peers are likely to be | |||
| congruent to the connections in the BGP routing system. | congruent to the connections in the BGP routing system. | |||
| 6. Procedure | 6. Procedure | |||
| A source in a PIM-SM domain originates traffic to a multicast group. | When an RP in a PIM-SM domain first learns of a new sender, e.g. via | |||
| The PIM DR which is directly connected to the source sends the data | PIM register messages, it constructs a "Source-Active" (SA) message | |||
| encapsulated in a PIM Register message to the RP in the domain. | and sends it to its MSDP peers. The SA message contains the following | |||
| fields: | ||||
| The RP will construct a "Source-Active" (SA) message and send it to | ||||
| its MSDP peers. The SA message 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 Group address the data source sends to. | |||
| o IP address of the RP. | o IP address of the RP. | |||
| 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 BGP routing | flooding is with respect to forwarding SA messages. The Multicast RPF | |||
| table is examined to determine which peer is the NEXT_HOP towards the | Routing Information Base (MRIB) is examined to determine which peer | |||
| originating RP of the SA message. Such a peer is called an "RPF | towards the originating RP of the SA message is selected. Such a peer | |||
| peer". See section 14 below for the details of peer-RPF forwarding. | is called an "RPF peer". See section 14 below for the details of | |||
| peer-RPF 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). | |||
| The flooding can be further constrained to children of the peer by | ||||
| interrogating BGP reachability information. That is, if a BGP peer | ||||
| advertises a route (back to you) and you are the next to last AS in | ||||
| the AS_PATH, the peer is using you as the NEXT_HOP. This is known in | ||||
| other circles as Split-Horizon with Poison Reverse. An implementation | ||||
| SHOULD NOT forward SA messages (which were originated from the RP | ||||
| address covered by a route) to peers which have not Poison Reversed | ||||
| that route. | ||||
| 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 it has any group members interested | new SA message, it determines if it has any group members interested | |||
| in the group which the SA message describes. That is, the RP checks | in the group which the SA message describes. That is, the RP checks | |||
| for a (*,G) entry with a non-empty outgoing interface list; this | for a (*,G) entry with a non-empty outgoing interface list; this | |||
| implies that the domain is interested in the group. In this case, the | implies that the domain is interested in the group. In this case, the | |||
| RP triggers a (S,G) join event towards the data source as if a | RP triggers a (S,G) join event towards the data source as if a | |||
| Join/Prune message was received addressed to the RP itself. This sets | Join/Prune message was received addressed to the RP itself. This sets | |||
| up a branch of the source-tree to this domain. Subsequent data | up a branch of the source-tree to this domain. Subsequent data | |||
| packets arrive at the RP which are forwarded down the shared-tree | packets arrive at the RP which are forwarded down the shared-tree | |||
| inside the domain. If leaf routers choose to join the source-tree | inside the domain. If leaf routers choose to join the source-tree | |||
| skipping to change at page 4, line 11 ¶ | skipping to change at page 4, line 7 ¶ | |||
| conventions. Finally, if an RP in a domain receives a PIM Join | conventions. Finally, if an RP in a domain receives a PIM Join | |||
| message for a new group G, the RP SHOULD trigger a (S,G) join event | message for a new group G, the RP SHOULD trigger a (S,G) join event | |||
| for each SA for that group in its cache. | for each SA for that group in its 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. | |||
| 7. Caching | 7. Caching | |||
| A MSDP speaker MUST cache SA messages. Caching allows pacing of MSDP | A MSDP speaker SHOULD cache SA messages. Caching allows pacing of | |||
| messages as well as reducing join latency for new receivers of a | MSDP messages as well as reducing join latency for new receivers of a | |||
| group G at an orginating 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. | |||
| 8. Timers | 8. Timers | |||
| The main timers for MSDP are: SA-Advertisement-Timer, SA-Hold-Down- | The main timers for MSDP are: SA-Advertisement-Timer, SA-Hold-Down- | |||
| Timer, SA Cache Entry timer, KeepAlive timer, and ConnectRetry and | Timer, SA Cache Entry timer, KeepAlive timer, ConnectRetry and Peer | |||
| Peer Hold Timer. Each is considered below. | Hold Timer. Each is considered below. | |||
| 8.1. SA-Advertisement-Timer | 8.1. SA-Advertisement-Timer | |||
| RPs which originate SA messages do it periodically as long as there | RPs which originate SA messages do it 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 important so that new | interval. Originating periodic SA messages is required to keep | |||
| receivers who join after a source has been active can get data | announcements alive in caches, and so that new receivers who join | |||
| quickly via the receiver's own RP. Finally, an originating RP SHOULD | after a source has been active can get data quickly via a non-caching | |||
| trigger the transmission of an SA message as soon as it receives data | RP. Finally, an originating RP SHOULD trigger the transmission of an | |||
| from an internal source for the first time. | SA message as soon as it receives data from an internal source for | |||
| the first time. | ||||
| 8.2. SA-Advertisement-Timer Processing | 8.2. SA-Advertisement-Timer Processing | |||
| An RP MUST spread the generation of periodic SA messages over its | An RP MUST spread the generation of periodic SA messages over its | |||
| reporting interval (i.e. SA-Advertisement-Period). An RP starts the | 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-Period] | timer expires, an RP resets the timer to [SA-Advertisement-Period] | |||
| seconds, and begins the advertisement of its active sources. Active | seconds, and begins the advertisement of its active sources. Active | |||
| sources are advertised in the following manner: An RP packs its | sources are advertised in the following manner: An RP packs its | |||
| active sources into an SA message until the largest MSDP packet that | active sources into an SA message until the largest MSDP packet that | |||
| skipping to change at page 5, line 20 ¶ | skipping to change at page 5, line 16 ¶ | |||
| 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 a MSDP peer. The timer is reset to [SA-State-Period] if | received by a MSDP peer. The timer is reset to [SA-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. [SA-State-Period] MUST NOT be less than 90 seconds. | expires. [SA-State-Period] MUST NOT be less than 90 seconds. | |||
| 8.4. SA-Hold-Down-Timer | 8.4. SA-Hold-Down-Timer | |||
| The per-(S,G) timer is set to [SA-Hold-Down-Period] when forwarding | The per-(S,G) timer is set to [SA-Hold-Down-Period] when forwarding | |||
| an SA message, and a SA message MUST only be forwarded when it's | an SA message, and a SA message MUST only be forwarded when its | |||
| associated timer is not running. [SA-Hold-Down-Period] SHOULD be set | associated timer is not running. [SA-Hold-Down-Period] SHOULD be set | |||
| to 30 seconds. A MSDP peer MUST NOT forward a (S,G)-SA message it has | to 30 seconds. A MSDP peer MUST NOT forward a (S,G)-SA message it has | |||
| received in during the previous [SA-Hold-Down-Period] seconds. | received in during the previous [SA-Hold-Down-Period] seconds. | |||
| Finally, the timer is deleted when the SA cache entry is deleted. | Finally, the timer is deleted when the SA cache entry is deleted. | |||
| 8.5. KeepAlive Timer | 8.5. Peer Hold Timer | |||
| The KeepAlive timer contols when to send MSDP KeepAlive messages. In | If a system has not received any MSDP message within the period | |||
| particular, the KeepAlive timer is used to reset the TCP connection | specified by the Hold Timer, then a Notification message with Hold | |||
| when the passive-connect side of the connection goes down. The | Timer Expired Error Code MUST be sent and the MSDP connection MUST be | |||
| KeepAlive timer is set to [KeepAlive-Period] when the passive-connect | closed. [Hold-Time-Period] MUST be at least three seconds. A | |||
| peer comes up. [KeepAlive-Period] SHOULD NOT be less that 75 seconds. | suggested value for [Hold-Time-Period] is 90 seconds. | |||
| The timer is reset to [KeepAlive-Period] upon receipt of an MSDP | ||||
| message from peer, and deleted when the timer expires or the | ||||
| passive-connect peer closes the connection. | ||||
| 8.6. ConnectRetry Timer | The Hold Timer is initialized to [Hold-Time-Period] when the peer's | |||
| transport connection is established, and is reset to [Hold-Time- | ||||
| Period] when any MSDP message is received. Finally, the timer is | ||||
| deleted when the peer's transport connection is closed. | ||||
| 8.6. KeepAlive Timer | ||||
| Once an MSDP transport connection is established, each side of the | ||||
| connection sends a KeepAlive message and sets a KeepAlive timer. If | ||||
| the KeepAlive timer expires, the local system sends a KeepAlive | ||||
| message and restarts its KeepAlive timer. | ||||
| The KeepAlive timer is set to [KeepAlive-Period] when the peer comes | ||||
| up. [KeepAlive-Period] SHOULD NOT be less than 75 seconds, and MUST | ||||
| NOT be less than [Hold-Time-Period]. The timer is reset to | ||||
| [KeepAlive-Period] each time an MSDP message is sent to peer, and | ||||
| reset when the timer expires. Finally, the KeepAlive timer is deleted | ||||
| when the peer's transport connection is closed. | ||||
| 8.7. ConnectRetry Timer | ||||
| The ConnectRetry timer is used by an MSDP peer to transition from | The ConnectRetry timer is used by an MSDP peer to transition from | |||
| INACTIVE to CONNECTING states. There is one timer per peer, and the | INACTIVE to CONNECTING states. There is one timer per peer, and the | |||
| [ConnectRetry-Period] SHOULD be set to 30 seconds. The timer is | [ConnectRetry-Period] SHOULD be set to 30 seconds. The timer is | |||
| initialized to [ConnectRetry-Period] when an MSDP peer's active | initialized to [ConnectRetry-Period] when an MSDP peer's active | |||
| connect attempt fails. When the timer expires, the peer retries the | connect attempt fails. When the timer expires, the peer retries the | |||
| connection and the timer is reset to [ConnectRetry-Period]. It is | connection and the timer is reset to [ConnectRetry-Period]. It is | |||
| deleted if either the connection transitions into ESTABLISHED state | deleted if either the connection transitions into ESTABLISHED state | |||
| or the peer is deconfigured. | or the peer is deconfigured. | |||
| 8.7. Peer Hold Timer | ||||
| If a system does not receive successive KeepAlive messages (or any SA | ||||
| message) within the period specified by the Hold Timer, then a | ||||
| Notification message with Hold Timer Expired Error Code MUST be sent | ||||
| and the MSDP connection MUST be closed. [Hold-Time-Period] MUST be at | ||||
| least three seconds. A suggested value for [Hold-Time-Period] is 90 | ||||
| seconds. | ||||
| The Hold Timer is initialized to [Hold-Time-Period] when the peer's | ||||
| transport connection is established, and is reset to [Hold-Time- | ||||
| Period] when any MSDP message is received. | ||||
| 9. Intermediate MSDP Peers | 9. Intermediate MSDP Peers | |||
| Intermediate RPs do not originate periodic SA messages on behalf of | Intermediate MSDP speakers do not originate periodic SA messages on | |||
| sources in other domains. In general, an RP MUST only originate an SA | behalf of sources in other domains. In general, an RP MUST only | |||
| for a source which would register to it. | originate an SA for a source which would register to it, and ONLY RPs | |||
| may originate SA messages. | ||||
| 10. SA Filtering and Policy | 10. 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. Only the RP co-located in the same domain as the | can reduce state. Only the RP co-located in the same domain as the | |||
| source can restrict SA messages. Note, however, that MSDP peers in | source can restrict SA messages. Note, however, that MSDP peers in | |||
| transit domains should not filter SA messages or the flood-and-join | transit domains should not filter SA messages or the flood-and-join | |||
| model can not guarantee that sources will be known throughout the | model can not guarantee that sources will be known throughout the | |||
| skipping to change at page 7, line 10 ¶ | skipping to change at page 7, line 10 ¶ | |||
| direction and peer-RPF fail otherwise. An exception occurs at an | direction and peer-RPF fail otherwise. An exception occurs at an | |||
| administrative scope [RFC2365] boundary. In particular, a SA message | administrative scope [RFC2365] boundary. In particular, a SA message | |||
| for a (S,G) MUST NOT be sent to peers which are on the other side of | for a (S,G) MUST NOT be sent to peers which are on the other side of | |||
| an administrative scope boundary for G. | an administrative scope boundary for G. | |||
| 11. SA Requests | 11. SA Requests | |||
| A MSDP speaker MAY accept SA-Requests from other MSDP peers. When an | A MSDP speaker MAY accept SA-Requests from other MSDP peers. When an | |||
| MSDP speaker receives an SA-Request for a group range, it will | MSDP speaker receives an SA-Request for a group range, it will | |||
| respond to the peer with a set of SA entries, in an SA-Response | respond to the peer with a set of SA entries, in an SA-Response | |||
| message, for all active sources sending to the group range requested | message, for all active sources in its SA cache sending to the group | |||
| in the SA-Request message. The peer that sends the request will not | requested in the SA-Request message. The peer that sends the request | |||
| flood the responding SA-Response message to other peers. See section | will not flood the responding SA-Response message to other peers. See | |||
| 17 for discussion of error handling relating to SA requests and | section 17 for discussion of error handling relating to SA requests | |||
| responses. | and responses. | |||
| 12. Encapsulated Data Packets | 12. Encapsulated Data Packets | |||
| For bursty sources, the RP may encapsulate multicast data from the | The RP may encapsulate multicast data from the source. An interested | |||
| source. An interested RP may decapsulate the packet, which SHOULD be | RP may decapsulate the packet, which SHOULD be forwarded as if a PIM | |||
| forwarded as if a PIM register encapsulated packet was received. That | register encapsulated packet was received. That is, if packets are | |||
| is, if packets are already arriving over the interface toward the | already arriving over the interface toward the source, then the | |||
| source, then the packet is dropped. Otherwise, if the outgoing | packet is dropped. Otherwise, if the outgoing interface list is non- | |||
| interface list is non-null, the packet is forwarded appropriately. | null, the packet is forwarded appropriately. Note that when doing | |||
| Note that when doing data encapsulation, an implementation MUST bound | data encapsulation, an implementation MUST bound the time during | |||
| 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. | |||
| 13. Other Scenarios | 13. 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 | |||
| skipping to change at page 8, line 12 ¶ | skipping to change at page 8, line 12 ¶ | |||
| interconnected MSDP topology, each can learn about active sources as | interconnected MSDP topology, each can learn about active sources as | |||
| well as RPs in other domains. | well as RPs in other domains. | |||
| 14. MSDP Peer-RPF Forwarding | 14. 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, the Peer-RPF check is against the | used when forwarding data packets, the Peer-RPF check is against the | |||
| RP address carried in the SA message. | RP address carried in the SA message. | |||
| 14.1. Peer-RPF Forwarding Rules | 14.1. Definitions | |||
| An SA message originated by R and received by X | The following definitions are used in the description of the Peer-RPF | |||
| from N is accepted if N is the peer-RPF neighbor for R, and is | Forwarding Rules: | |||
| discarded otherwise. | ||||
| MP(R,N) MP(N,X) | 14.1.1. Multicast RPF Routing Information Base (MRIB) | |||
| R ---------....-------> N ------------------> X | ||||
| SA(S,G,R) SA(S,G,R) | ||||
| Where MP(R,N) is an MSDP peering path (one or more | The MRIB is the multicast topology table. It is typically derived | |||
| MSDP peers) between R and N, and SA(S,G,R) is an | from the unicast routing table or from other routing protocols such | |||
| SA message for source S on group G orignated by | as multi-protocol BGP [RFC2283]. | |||
| an RP R. | ||||
| The peer-RPF neighbor is chosen deterministically, | 14.1.2. RPF Route | |||
| using the first of the following rules that matches. | ||||
| X accepts the SA from R forwarded by N if : | The RPF route is the route that the MRIB chooses for a given address. | |||
| The RPF route for a SA's originating RP is used to select the peer | ||||
| from which the SA is accepted. | ||||
| (i). R is the RPF neighbor of X if we have an MSDP peering | 14.2. Peer-RPF Forwarding Rules | |||
| with R (e.g. N == R). | ||||
| (ii). N is the RPF neighbor of X if N is a MSDP peer of | An SA message originated by R and received by X from N is | |||
| X and N is the next hop toward R. | accepted if N is the peer-RPF neighbor for X, and is discarded | |||
| otherwise. | ||||
| (iii) N is the RPF neighbor of X if N resides in the first AS | MPP(R,N) MP(N,X) | |||
| towards R and N has a higher IP address than any other | R ---------....-------> N ------------------> X | |||
| MSDP peer of X that resides in first AS towards R. | SA(S,G,R) SA(S,G,R) | |||
| (iv). N is the RPF neighbor of X if (intra-domain case): | Where MPP(R,N) is an MSDP peering path (zero or more MSDP | |||
| peers) between R and N. SA(S,G,R) is an SA message for source | ||||
| S on group G originated by an RP R. MP(N,X) is an MSDP | ||||
| peering between N and X. | ||||
| (a). N == R (i.e. N originated the SA), or | The peer-RPF neighbor 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 | ||||
| (b). X and N are part of a MSDP Mesh Group. Note that in | (i). N == R (X has an MSDP peering with R). | |||
| this case every member of mesh group is an peer-RPF | ||||
| neighbor of X. | ||||
| (v). If none of the above match, and we have an | (ii). N is the BGP NEXT_HOP of the active RPF route | |||
| MSDP default-peer configured, the MSDP | for R. | |||
| default-peer is the RPF neighbor. | ||||
| 14.2. MSDP default-peer semantics | (iii). The active RPF route for R is learned through a | |||
| distance-vector or path-vector routing protocol | ||||
| (e.g. BGP, RIP, DVMRP) and N is the neighbor that | ||||
| advertised the active RPF route for R. | ||||
| An MSDP default-peer is much like a default route. It is intended to | (iv). N resides in an AS that is in the AS_PATH of the active | |||
| be used in those cases where a stub network isn't running BGP. An | RPF route for R, and N has the highest IP address among | |||
| MSDP peer configured with a default-peer accepts all SA messages from | the MSDP peers that reside in ASs in that AS_PATH. | |||
| the default-peer. Note that a router running BGP SHOULD NOT allow | ||||
| configuration of default peers, since this allows the possibility for | ||||
| SA looping or black-holes to occur. | ||||
| 14.3. MSDP mesh-group semantics | (v). N is configured as the static RPF-peer for R. | |||
| 14.3. MSDP static RPF-peer semantics | ||||
| If none of the rules (i) - (iv) are able to determine an RPF peer for | ||||
| R, a longest-match lookup is performed in the static RPF peer table. | ||||
| This table MUST be able to contain a default entry, and SHOULD be | ||||
| able to contain prefix or per-host (RP) entries. This table | ||||
| statically maps RP addresses to peers, and allows configuration of | ||||
| topology that is e.g. unknown to the MRIB. | ||||
| The result of the longest-match lookup of an RP address R in the | ||||
| static RPF peer table is an MSDP peer, which is the RPF neighbor for | ||||
| R. | ||||
| 14.4. MSDP mesh-group semantics | ||||
| A MSDP mesh-group is a operational mechanism for reducing SA | A 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, then can be | some subset of a domain's MSDP speakers are fully meshed, then can be | |||
| configured into a mesh-group. The semantics of the mesh-group are as | configured into a mesh-group. | |||
| follows: | ||||
| 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 | ||||
| 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), | ||||
| the mesh-group must be a full mesh of MSDP peering among all members. | ||||
| 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 from an | |||
| MSDP peer that is also a member of mesh-group M, R accepts the | MSDP peer that is also a member of mesh-group M, R accepts the | |||
| SA message and forwards it to all of it's peers that are not | SA message and forwards it to all of its peers that are not | |||
| part of any mesh-group. R MUST NOT forward the SA message to | part of any mesh-group. R MUST NOT forward the SA message to | |||
| other members of mesh-group M. | other members of mesh-group M. | |||
| (ii). If a member R of a mesh-group M receives a SA message from an | (ii). If a member R of a mesh-group M receives a SA message from an | |||
| MSDP peer that is not a member of mesh-group M, and the SA | MSDP peer that is not a member of mesh-group M, and the SA | |||
| message passes the peer-RPF check, then R forwards the SA | message passes the peer-RPF check, then R forwards the SA | |||
| message to all members of mesh-group M. | message to all members of mesh-group M. | |||
| (iii). Cross mesh-group forwarding | ||||
| If a member R of a mesh-groups M and N receives an SA | ||||
| message from an MSDP peer in mesh-group M, R forwards the SA | ||||
| to its MSDP peers in mesh-group N if it receives that SA | ||||
| message from a peer that is in the same mesh-group as its | ||||
| peer-RPF neighbor for that SA. | ||||
| For example, consider the case in which three routers (R1, R2, | ||||
| and R3) and three mesh-groups (A, B, and C) are arranged in a | ||||
| triangle, e.g., | ||||
| [R2] {A,B} | ||||
| / \ | ||||
| / \ | ||||
| / \ | ||||
| / \ | ||||
| {A,C} [R1]--------[R3] {B,C} | ||||
| Now, when R1 receives an SA message from R2 and R1's | ||||
| peer-RPF neighbor for this SA lies in mesh-group A, R1 | ||||
| forwards the SA message its peers in other mesh-groups | ||||
| (in particular, R3 in mesh-group C). Similarly, if R3's | ||||
| peer-RPF neighbor lies in mesh-group B, R3 will forward an | ||||
| SA message from R2. In this case, both R1 and R3 will send | ||||
| SA messages to each other (because they share common mesh-group | ||||
| C), but neither of them will forward any further the SA messages | ||||
| received from each other (as their peer-RPF neighbors do | ||||
| not lie in mesh-group C). | ||||
| Note that since mesh-groups suspend peer-RPF checking of SAs received | Note that since mesh-groups suspend peer-RPF checking of SAs received | |||
| from a mesh-group member ((i). above), they allow for mis- | from a mesh-group member ((i). above), they allow for mis- | |||
| configuration to cause SA looping. | configuration to cause SA looping. | |||
| 15. MSDP Connection Establishment | 15. MSDP Connection Establishment | |||
| MSDP messages will be encapsulated in a TCP connection. An MSDP peer | MSDP messages will be encapsulated in a TCP connection. An MSDP peer | |||
| listens for new TCP connections on port 639. One side of the MSDP | listens for new TCP connections on port 639. One side of the MSDP | |||
| peering relationship will listen on the well-known port and the other | peering relationship will listen on the well-known port and the other | |||
| side will do an active connect to the well-known port. The side with | side will do an active connect to the well-known port. The side with | |||
| skipping to change at page 12, line 13 ¶ | skipping to change at page 13, line 13 ¶ | |||
| disabled | disabled | |||
| 16. Packet Formats | 16. Packet Formats | |||
| MSDP messages will be encoded in TLV format. If an implementation | MSDP messages will be 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. | SHOULD be accepted. Any additional data SHOULD be ignored. | |||
| 16.1. MSDP TLV format: | 16.1. MSDP TLV format: | |||
| 0 1 2 3 | ||||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 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. | Keepalive messages. The maximum TLV length is 1400. | |||
| 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. | |||
| 16.2. Defined TLVs | 16.2. Defined TLVs | |||
| The following TLV Types are defined: | The following TLV Types are defined: | |||
| skipping to change at page 13, line 5 ¶ | skipping to change at page 13, line 47 ¶ | |||
| 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 Notification | 5 Notification | |||
| Each TLV is described below. | Each TLV is described below. | |||
| In addition, the following TLV Types are assigned but not described | ||||
| in this memo: | ||||
| Code Type | ||||
| =========================================================== | ||||
| 6 MSDP traceroute in progress | ||||
| 7 MSDP traceroute reply | ||||
| 16.2.1. IPv4 Source-Active TLV | 16.2.1. IPv4 Source-Active TLV | |||
| The maximum size SA message that can be sent is 1400 octets. If an | The maximum size SA message that can be sent is 1400 octets. If an | |||
| MSDP peer needs to originate a message with information greater than | MSDP peer needs to originate a message with information greater than | |||
| 1400 octets, it sends successive 1400 octet or smaller messages. The | 1400 octets, it sends successive 1400 octet or smaller messages. The | |||
| 1400 octet size does not include the TCP, IP, layer-2 headers. | 1400 octet size does not include the TCP, IP, layer-2 headers. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / | |||
| skipping to change at page 13, line 52 ¶ | skipping to change at page 15, line 10 ¶ | |||
| 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. | can be encoded efficiently for the same RP address. | |||
| 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 ignored | The Reserved field MUST be transmitted as zeros and MUST be | |||
| 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). An Invalid | This field MUST be transmitted as 32 (/32). An Invalid | |||
| Sprefix Len Notification SHOULD be sent upon receipt | Sprefix Len Notification SHOULD be sent upon receipt | |||
| of any other value. | of any other value. | |||
| Group Address | Group Address | |||
| The group address the active source has sent data to. | The group address the active source has sent data to. | |||
| skipping to change at page 14, line 29 ¶ | skipping to change at page 15, line 36 ¶ | |||
| 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. | |||
| 16.2.2. IPv4 Source-Active Request TLV | 16.2.2. IPv4 Source-Active Request TLV | |||
| The Source-Active Request is used to request SA-state from a MSDP | The Source-Active Request is used to request SA-state from a MSDP | |||
| peer. If an RP in a domain receives a PIM Join message for a group, | peer. If an RP in a domain receives a PIM Join message for a group, | |||
| creates (*,G) state and wants to know all active sources for group G, | creates (*,G) state and wants to know all active sources for group G, | |||
| it may send an SA-Request message for the group. | it may send an SA-Request message for the group. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 2 | 8 | Reserved | | | 2 | 8 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Group Address Prefix | | | Group Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type | Type | |||
| IPv4 Source-Active Request TLV is type 2. | IPv4 Source-Active Request TLV is type 2. | |||
| Reserved | Reserved | |||
| Must be transmitted as zero and ignored on receipt. | Must be transmitted as zero and ignored on receipt. | |||
| Group Address | Group Address | |||
| The group address the MSDP peer is requesting. | The group address the MSDP peer is requesting. | |||
| 16.2.3. IPv4 Source-Active Response TLV | 16.2.3. IPv4 Source-Active Response TLV | |||
| The Source-Active Response is sent in response to a Source-Active | The Source-Active Response is sent in response to a Source-Active | |||
| Request message. The Source-Active Response message has the same | Request message. The Source-Active Response message has the same | |||
| format as a Source-Active message but does not allow encapsulation of | format as a Source-Active message but does not allow encapsulation of | |||
| multicast data. | multicast data. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 3 | x | .... | | | 3 | x | .... | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type | Type | |||
| IPv4 Source-Active Response TLV is type 3. | IPv4 Source-Active Response TLV is type 3. | |||
| Length x | Length x | |||
| Is the length of the control information in the message. x is 8 | Is the length of the control information in the message. x is 8 | |||
| skipping to change at page 15, line 36 ¶ | skipping to change at page 16, line 37 ¶ | |||
| 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 after a period of time. This message | MSDP messages sent to the peer after a period of time. This message | |||
| is necessary for the active connect side of the MSDP connection. The | is necessary for the active connect side of the MSDP connection. The | |||
| passive connect side of the connection knows that the connection will | passive connect side of the connection knows that the connection will | |||
| be reestablished when a TCP SYN packet is sent from the active | be reestablished when a TCP SYN packet is sent from the active | |||
| connect side. However, the active connect side will not know when the | connect side. However, the active connect side will not know when the | |||
| passive connect side goes down. Therefore, the KeepAlive timeout will | passive connect side goes down. Therefore, the KeepAlive timeout will | |||
| be used to reset the TCP connection. | be used to reset the TCP connection. | |||
| 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. | |||
| 16.2.5. Notification TLV | 16.2.5. Notification TLV | |||
| A Notification message is sent when an error condition is detected, | A Notification message is sent when an error condition is detected, | |||
| and has the following form: | and has the following form: | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 5 | x + 5 |O| Error Code | | | 5 | x + 5 |O| Error Code | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Error subcode | ... | | | Error subcode | ... | | |||
| +-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+ | | |||
| | Data | | | Data | | |||
| | ... | | | ... | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 16, line 41 ¶ | skipping to change at page 17, line 47 ¶ | |||
| 1 Message Header Error Section 17.1 | 1 Message Header Error Section 17.1 | |||
| 2 SA-Request Error Section 17.2 | 2 SA-Request Error Section 17.2 | |||
| 3 SA-Message/SA-Response Error Section 17.3 | 3 SA-Message/SA-Response Error Section 17.3 | |||
| 4 Hold Timer Expired Section 17.4 | 4 Hold Timer Expired Section 17.4 | |||
| 5 Finite State Machine Error Section 17.5 | 5 Finite State Machine Error Section 17.5 | |||
| 6 Notification Section 17.6 | 6 Notification Section 17.6 | |||
| 7 Cease Section 17.7 | 7 Cease Section 17.7 | |||
| Error subcode: | Error subcode: | |||
| This one-octet unsigned integer provides more specific information | This one-octet unsigned integer provides more specific information | |||
| about the reported error. Each Error Code may have one or more Error | about the reported error. Each Error Code may have one or more | |||
| Error | ||||
| Subcodes associated with it. If no appropriate Error Subcode is | Subcodes associated with it. If no appropriate Error Subcode is | |||
| defined, then a zero (Unspecific) value is used for the Error Subcode | defined, then a zero (Unspecific) value is used for the Error | |||
| Subcode | ||||
| field, and the O-bit must be cleared (i.e. the connection will be | field, and the O-bit must be cleared (i.e. the connection will be | |||
| closed). The used notation in the error description below is: MC = | closed). The used notation in the error description below is: MC = | |||
| Must Close connection = O-bit clear; CC = Can Close connection = | Must Close connection = O-bit clear; CC = Can Close connection = | |||
| O-bit might be cleared. | O-bit MAY be cleared. | |||
| Message Header Error subcodes: | Message Header Error subcodes: | |||
| 0 - Unspecific (MC) | 0 - Unspecific (MC) | |||
| 2 - Bad Message Length (MC) | 2 - Bad Message Length (MC) | |||
| 3 - Bad Message Type (CC) | 3 - Bad Message Type (CC) | |||
| SA-Request Error subcodes: | SA-Request Error subcodes (the O-bit is always clear): | |||
| 0 - Unspecific (MC) | 0 - Unspecific (MC) | |||
| 1 - Invalid Group (MC) | 1 - Invalid Group (MC) | |||
| SA-Message/SA-Response Error subcodes | SA-Message/SA-Response Error subcodes | |||
| 0 - Unspecific (MC) | 0 - Unspecific (MC) | |||
| 1 - Invalid Entry Count (CC) | 1 - Invalid Entry Count (CC) | |||
| 2 - Invalid RP Address (MC) | 2 - Invalid RP Address (MC) | |||
| 3 - Invalid Group Address (MC) | 3 - Invalid Group Address (MC) | |||
| 4 - Invalid Source Address (MC) | 4 - Invalid Source Address (MC) | |||
| 5 - Invalid Sprefix Length (MC) | 5 - Invalid Sprefix Length (MC) | |||
| 6 - Looping SA (Self is RP) (MC) | 6 - Looping SA (Self is RP) (MC) | |||
| 7 - Unknown Encapsulation (MC) | 7 - Unknown Encapsulation (MC) | |||
| 8 - Administrative Scope Boundary Violated (MC) | 8 - Administrative Scope Boundary Violated (MC) | |||
| Hold Timer Expired subcodes (the O-bit is always clear): | Hold Timer Expired subcodes (the O-bit is always clear): | |||
| 0 - Unspecific (MC) | 0 - Unspecific (MC) | |||
| Finite State Machine Error subcodes: | Finite State Machine Error subcodes (the O-bit is always clear): | |||
| 0 - Unspecific (MC) | 0 - Unspecific (MC) | |||
| 1 - Unexpected Message Type FSM Error (MC) | 1 - Unexpected Message Type FSM Error (MC) | |||
| Notification subcodes (the O-bit is always clear): | Notification subcodes (the O-bit is always clear): | |||
| 0 - Unspecific (MC) | 0 - Unspecific (MC) | |||
| Cease subcodes (the O-bit is always clear): | Cease subcodes (the O-bit is always clear): | |||
| 0 - Unspecific (MC) | 0 - Unspecific (MC) | |||
| 17. MSDP Error Handling | 17. MSDP Error Handling | |||
| This section describes actions to be taken when errors are detected | This section describes actions to be taken when errors are detected | |||
| while processing MSDP messages. MSDP Error Handling is similar to | while processing MSDP messages. MSDP Error Handling is similar to | |||
| that of BGP [RFC1771]. | that of BGP [RFC1771]. | |||
| When any of the conditions described here are detected, a | When any of the conditions described here are detected, a | |||
| Notification message with the indicated Error Code, Error Subcode, | Notification message with the indicated Error Code, Error Subcode, | |||
| and Data fields is sent. In addition, the MSDP connection might be | and Data fields is sent. In addition, the MSDP connection MAY be | |||
| closed. If no Error Subcode is specified, then a zero (Unspecific) | closed. If no Error Subcode is specified, then a zero (Unspecific) | |||
| must be used. | must be used. | |||
| The phrase "the MSDP connection is closed" means that the transport | The phrase "the MSDP connection is closed" means that the transport | |||
| protocol connection has been closed and that all resources for that | protocol connection has been closed and that all resources for that | |||
| MSDP connection have been deallocated. | MSDP connection have been deallocated. | |||
| 17.1. Message Header Error Handling | 17.1. Message Header Error Handling | |||
| All errors detected while processing the Message Header are indicated | All errors detected while processing the Message Header are indicated | |||
| skipping to change at page 18, line 44 ¶ | skipping to change at page 19, line 44 ¶ | |||
| Error Subcode is set to Bad Message Type. | Error Subcode is set to Bad Message Type. | |||
| 17.2. SA-Request Error Handling | 17.2. SA-Request Error Handling | |||
| The SA-Request Error code is used to signal the receipt of a SA | The SA-Request Error code is used to signal the receipt of a SA | |||
| request at a MSDP peer when an invalid group address requested. | request at a MSDP peer when an invalid group address requested. | |||
| When a MSDP peer receives a request for an invalid group, it returns | When a MSDP peer receives a request for an invalid group, it returns | |||
| the following notification: | the following notification: | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 5 | 16 |O| 2 | | | 5 | 12 |O| 2 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | 2 | Reserved | Gprefix Len | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Gprefix | | | 2 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Invalid Group Address | | | Group Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 17.3. SA-Message/SA-Response Error Handling | 17.3. SA-Message/SA-Response Error Handling | |||
| The SA-Message/SA-Response Error code is used to signal the receipt | The SA-Message/SA-Response Error code is used to signal the receipt | |||
| of a erroneous SA Message at an MSDP peer, or the receipt of an SA- | of a erroneous SA Message at an MSDP peer, or the receipt of an SA- | |||
| Response Message by a peer that did not issue a SA-Request. It has | Response Message by a peer that did not issue a SA-Request. It has | |||
| the following form: | the following form: | |||
| 17.3.1. Invalid Entry Count (IEC) | 17.3.1. Invalid Entry Count (IEC) | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 5 | 6 |O| 3 | | | 5 | 6 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 1 | IEC | | | 1 | Entry Count | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 17.3.2. Invalid RP Address | 17.3.2. Invalid RP Address | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 5 | 12 |O| 3 | | | 5 | 12 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 2 | Reserved | | | 2 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Invalid RP Address | | | RP Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 17.3.3. Invalid Group Address | 17.3.3. Invalid Group Address | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 5 | 12 |O| 3 | | | 5 | 12 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 3 | Reserved | | | 3 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Invalid Group Address | | | Group Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 17.3.4. Invalid Source Address | 17.3.4. Invalid Source Address | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 5 | 12 |O| 3 | | | 5 | 12 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 4 | Reserved | | | 4 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Invalid Source Address | | | Source Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 17.3.5. Invalid Sprefix Length (ISL) | 17.3.5. Invalid Sprefix Length (ISL) | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 5 | 6 |O| 3 | | | 5 | 6 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 5 | ISL | | | 5 | Sprefix Len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 17.3.6. Looping SAs (Self is RP in received SA) | 17.3.6. Looping SAs (Self is RP in received SA) | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 5 | x + 5 |O| 3 | | | 5 | x + 5 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 6 | Looping SA Message .... | | 6 | SA Message .... | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Length x | Length x | |||
| x is the length of the looping SA message contained in the data | x is the length of the looping SA message contained in the data | |||
| field of the Notification message. | field of the Notification message. | |||
| 17.3.7. Unknown Encapsulation | 17.3.7. Unknown Encapsulation | |||
| This notification is sent on receipt of SA data that is encapsulated | This notification is sent on receipt of SA data that is encapsulated | |||
| in an unknown encapsulation type. See section 18 for known | in an unknown encapsulation type. See section 18 for known | |||
| encapsulations. | encapsulations. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 5 | x + 5 |O| 3 | | | 5 | x + 5 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 7 | SA Message .... | | 7 | SA Message .... | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Length x | Length x | |||
| x is the length of the SA message (which contained data which | x is the length of the SA message (which contained data which | |||
| was encapsulated in some unknown way) that is contained in the | was encapsulated in some unknown way) that is contained in the | |||
| data field of the Notification message. | data field of the Notification message. | |||
| 17.3.8. Administrative Scope Boundary Violated | 17.3.8. Administrative Scope Boundary Violated | |||
| This notification is used when an SA message is received for a group | This notification is used when an SA message is received for a group | |||
| G from a peer which is across an administrative scope boundary for G. | G from a peer which is across an administrative scope boundary for G. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 5 | 16 |O| 3 | | | 5 | 12 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | 8 | Reserved | Gprefix Len | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Gprefix | | | 8 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Group Address | | | Group Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 17.4. Hold Time Expired | 17.4. Hold Time Expired | |||
| If a system does not receive successive KeepAlive or any SA Message | If a system has not received any MSDP message within the period | |||
| and/or Notification messages within the period specified in the Hold | specified in the Hold Timer, the notification message with Hold Timer | |||
| Timer, the notification message with Hold Timer Expired Error Code | Expired Error Code and no additional data MUST be sent and the MSDP | |||
| and no additional data MUST be sent and the MSDP connection closed. | connection closed. | |||
| 17.5. Finite State Machine Error Handling | 17.5. Finite State Machine Error Handling | |||
| Any error detected by the MSDP Finite State Machine (e.g., receipt of | Any error detected by the MSDP Finite State Machine (e.g., receipt of | |||
| an unexpected event) is indicated by sending the Notification message | an unexpected event) is indicated by sending the Notification message | |||
| with Error Code Finite State Machine Error. | with Error Code Finite State Machine Error. | |||
| 17.6. Notification Message Error Handling | 17.6. Notification Message Error Handling | |||
| If a node sends a Notification message, and there is an error in that | If a node sends a Notification message, and there is an error in that | |||
| skipping to change at page 22, line 19 ¶ | skipping to change at page 23, line 27 ¶ | |||
| 17.7. Cease | 17.7. Cease | |||
| In absence of any fatal errors (that are indicated in this section), | In absence of any fatal errors (that are indicated in this section), | |||
| an MSDP node may choose at any given time to close its MSDP | an MSDP node may choose at any given time to close its MSDP | |||
| connection by sending the Notification message with Error Code Cease. | connection by sending the Notification message with Error Code Cease. | |||
| However, the Cease Notification message MUST NOT be used when a fatal | However, the Cease Notification message MUST NOT be used when a fatal | |||
| error indicated by this section does exist. | error indicated by this section does exist. | |||
| 18. SA Data Encapsulation | 18. SA Data Encapsulation | |||
| This section describes UDP, GRE, and TCP encapsulation of SA data. | This section describes UDP, GRE, and TCP encapsulation of data | |||
| Encapsulation type is a configuration option. | packets to be included with SA messages. Encapsulation type is a | |||
| configuration option. | ||||
| 18.1. UDP Data Encapsulation | 18.1. UDP Data Encapsulation | |||
| Data packets MAY be encapsulated in UDP. In this case, the UDP | Data packets MAY be encapsulated in UDP. In this case, the UDP | |||
| pseudo-header has the following form: | pseudo-header has the following form: | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Source Port | Destination Port | | | Source Port | Destination Port | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Length | Checksum | | | Length | Checksum | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Origin RP Address | | | Origin RP Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| The Source port, Destination Port, Length, and Checksum are used | The Source port, Destination Port, Length, and Checksum are used | |||
| skipping to change at page 23, line 31 ¶ | skipping to change at page 24, line 32 ¶ | |||
| Originating RP Address | Originating RP Address | |||
| The Originating RP Address is the address of the RP sending | The Originating RP Address is the address of the RP sending | |||
| the encapsulated data. | the encapsulated data. | |||
| 18.2. GRE Encapsulation | 18.2. GRE Encapsulation | |||
| MSDP SA-data MAY be encapsulated in GRE using protocol type [MSDP- | MSDP SA-data MAY be encapsulated in GRE using protocol type [MSDP- | |||
| GRE-ProtocolType]. The GRE header and payload packet have the | GRE-ProtocolType]. The GRE header and payload packet have the | |||
| following form: | following form: | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |C| Reserved0 | Ver | [MSDP-GRE-ProtocolType] |\ | |C| Reserved0 | Ver | [MSDP-GRE-ProtocolType] |\ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GRE Header | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GRE Header | |||
| | Checksum (optional) | Reserved1 |/ | | Checksum (optional) | Reserved1 |/ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Originating RP IPv4 Address |\ | | Originating RP IPv4 Address |\ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Payload | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Payload | |||
| | (S,G) Data Packet .... / | | (S,G) Data Packet .... / | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 24, line 23 ¶ | skipping to change at page 25, line 30 ¶ | |||
| feedback, it retransmits with the same PMTU, causing subsequently | feedback, it retransmits with the same PMTU, causing subsequently | |||
| transmitted packets to be dropped. | transmitted packets to be dropped. | |||
| 18.3. TCP Data Encapsulation | 18.3. TCP Data Encapsulation | |||
| As discussed earlier, encapsulation of data in SA messages MAY be | As discussed earlier, encapsulation of data in SA messages MAY be | |||
| supported for backwards compatibility with legacy MSDP peers. | supported for backwards compatibility with legacy MSDP peers. | |||
| 19. IANA Considerations | 19. IANA Considerations | |||
| The IANA should assigne 0x0009 from the IANA SNAP Protocol IDs [IANA] | The IANA should assign 0x0009 from the IANA SNAP Protocol IDs [IANA] | |||
| to MSDP-GRE-ProtocolType. | to MSDP-GRE-ProtocolType. | |||
| 20. Security Considerations | 20. Security Considerations | |||
| An MSDP implementation MAY use IPsec [RFC1825] or keyed MD5 [RFC1828] | An MSDP implementation MAY use IPsec [RFC2401] or keyed MD5 [RFC1828] | |||
| to secure control messages. When encapsulating SA data in GRE, | to secure control messages. When encapsulating data packets in GRE, | |||
| security should be relatively similar to security in a normal IPv4 | security should be relatively similar to security in a normal IPv4 | |||
| network, as routing using GRE follows the same routing that IPv4 uses | network, as routing using GRE follows the same routing that IPv4 uses | |||
| natively. Route filtering will remain unchanged. However packet | natively. Route filtering will remain unchanged. However packet | |||
| filtering at a firewall requires either that a firewall look inside | filtering at a firewall requires either that a firewall look inside | |||
| the GRE packet or that the filtering is done on the GRE tunnel | the GRE packet or that the filtering is done on the GRE tunnel | |||
| endpoints. In those environments in which this is considered to be a | endpoints. In those environments in which this is considered to be a | |||
| security issue it may be desirable to terminate the tunnel at the | security issue it may be desirable to terminate the tunnel at the | |||
| firewall. | firewall. | |||
| 21. Acknowledgments | 21. Acknowledgments | |||
| The editor would like to thank the original authors, Dino Farinacci, | The editor 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 | orginal contribution to the MSDP specification. In addition, Bill | |||
| Nickless, John Meylor, Liming Wei, Manoj Leelanivas, Mark Turner, | Fenner, Bill Nickless, John Meylor, Liming Wei, Manoj Leelanivas, | |||
| John Zwiebel, Cristina Radulescu-Banu and IJsbrand Wijnands provided | Mark Turner, John Zwiebel, Cristina Radulescu-Banu, Brian Edwards and | |||
| useful and productive design feedback and comments. In addition to | IJsbrand Wijnands provided useful and productive design feedback and | |||
| many other contributions, Tom Pusateri helped to clarify the | comments. In addition to many other contributions, Tom Pusateri | |||
| connection state machine, Dave Thaler helped to clarify the | helped to clarify the connection state machine, Dave Thaler helped to | |||
| Notification message types, and countless others helped to clarify | clarify the Notification message types. Ravi Shekhar helped clarify | |||
| the semantics of mesh-groups, and countless others helped to clarify | ||||
| the Peer-RPF rules. | the Peer-RPF rules. | |||
| 22. Editor's Address: | 22. Editors' Address: | |||
| David Meyer | David Meyer | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| 170 Tasman Drive | 170 Tasman Drive | |||
| San Jose, CA, 95134 | San Jose, CA, 95134 | |||
| Email: dmm@cisco.com | Email: dmm@cisco.com | |||
| Bill Fenner | ||||
| AT&T Labs -- Research | ||||
| 75 Willow Road | ||||
| Menlo Park, CA 94025 | ||||
| Email: fenner@research.att.com | ||||
| 23. REFERENCES | 23. REFERENCES | |||
| [IANA] www.iana.org | [IANA] www.iana.org | |||
| [RFC1700] J. Reynolds and J. Postel, "Assigned Numbers", RFC 1700, | ||||
| October, 1994. | ||||
| [RFC2784] Farinacci, D., et al., "Generic Routing Encapsulation | [RFC2784] Farinacci, D., et al., "Generic Routing Encapsulation | |||
| (GRE)", RFC 2784, March 2000. | (GRE)", RFC 2784, March 2000. | |||
| [RFC768] Postel, J. "User Datagram Protocol", RFC 768, August, | [RFC768] Postel, J. "User Datagram Protocol", RFC 768, August, | |||
| 1980. | 1980. | |||
| [RFC1191] Mogul, J., and S. Deering, "Path MTU Discovery", | [RFC1191] Mogul, J., and S. Deering, "Path MTU Discovery", | |||
| RFC 1191, November 1990. | RFC 1191, November 1990. | |||
| [RFC1771] Rekhter, Y., and T. Li, "A Border Gateway Protocol 4 | [RFC1771] Rekhter, Y., and T. Li, "A Border Gateway Protocol 4 | |||
| (BGP-4)", RFC 1771, March 1995. | (BGP-4)", RFC 1771, March 1995. | |||
| [RFC1825] Atkinson, R., "Security Architecture for the Internet | [RFC2401] Kent, S. and R. Atkinson, "Security Architecture for | |||
| Protocol", RFC 1825, August, 1995. | the Internet Protocol", RFC 2401, November 1998. | |||
| [RFC1828] P. Metzger and W. Simpson, "IP Authentication using | [RFC1828] P. Metzger and W. Simpson, "IP Authentication using | |||
| Keyed MD5", RFC 1828, August, 1995. | Keyed MD5", RFC 1828, August, 1995. | |||
| [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate | [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate | |||
| Requirement Levels", RFC 2119, March, 1997. | Requirement Levels", RFC 2119, March, 1997. | |||
| [RFC2283] Bates, T., Chandra, R., Katz, D., and Y. Rekhter., | [RFC2283] Bates, T., Chandra, R., Katz, D., and Y. Rekhter., | |||
| "Multiprotocol Extensions for BGP-4", RFC 2283, | "Multiprotocol Extensions for BGP-4", RFC 2283, | |||
| February 1998. | February 1998. | |||
| End of changes. 90 change blocks. | ||||
| 169 lines changed or deleted | 248 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/ | ||||