| < draft-ietf-msdp-spec-02.txt | draft-ietf-msdp-spec-03.txt > | |||
|---|---|---|---|---|
| Network Working Group Dino Farinacci | Network Working Group Dino Farinacci | |||
| INTERNET DRAFT Procket Networks | INTERNET DRAFT Procket Networks | |||
| Yakov Rekhter | Yakov Rekhter | |||
| David Meyer | David Meyer | |||
| Cisco Systems | Cisco Systems | |||
| Peter Lothberg | Peter Lothberg | |||
| Sprint | Sprint | |||
| Hank Kilmer | Hank Kilmer | |||
| Jeremy Hall | Jeremy Hall | |||
| UUnet | UUnet | |||
| Category Standards Track | Category Standards Track | |||
| January, 2000 | January, 2000 | |||
| Multicast Source Discovery Protocol (MSDP) | Multicast Source Discovery Protocol (MSDP) | |||
| <draft-ietf-msdp-spec-02.txt> | <draft-ietf-msdp-spec-03.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 14 ¶ | skipping to change at page 2, line 14 ¶ | |||
| 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 (20000). All Rights Reserved. | Copyright (C) The Internet Society (2000). 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 | |||
| skipping to change at page 3, line 8 ¶ | skipping to change at page 3, line 8 ¶ | |||
| cache Source Active (SA) messages (see below). MSDP is a | cache Source Active (SA) messages (see below). MSDP is a | |||
| periodic protocol. | periodic protocol. | |||
| 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 | |||
| An RP (or other MSDP SA originator) in a PIM-SM [RFC2362] domain will | An RP (or other MSDP SA originator) in a PIM-SM [RFC2362] domain will | |||
| have a MSDP peering relationship with a MSDP speaker in another | have a MSDP peering relationship with a MSDP peers in another domain. | |||
| domain. The peering relationship will be made up of a TCP connection | The peering relationship will be made up of a TCP connection in which | |||
| in which control information exchanged. Each domain will have one or | control information exchanged. Each domain will have one or more | |||
| more connections to this virtual topology. | connections to this virtual topology. | |||
| The purpose of this topology is to have domains discover multicast | The purpose of this topology is to have domains discover multicast | |||
| sources from other domains. If the multicast sources are of interest | sources from other domains. If the multicast sources are of interest | |||
| to a domain which has receivers, the normal source-tree building | to a domain which has receivers, the normal source-tree building | |||
| mechanism in PIM-SM will be used to deliver multicast data over an | mechanism in PIM-SM will be used to deliver multicast data over an | |||
| inter-domain distribution tree. | 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 speakers can be realized by | That is, the TCP connections between MSDP peers can be realized by | |||
| the underlying BGP routing system. | the underlying BGP routing system. | |||
| 6. Procedure | 6. Procedure | |||
| A source in a PIM-SM domain originates traffic to a multicast group. | A source in a PIM-SM domain originates traffic to a multicast group. | |||
| The PIM DR which is directly connected to the source sends the data | The PIM DR which is directly connected to the source sends the data | |||
| encapsulated in a PIM Register message to the RP in the domain. | encapsulated in a PIM Register message to the RP in the domain. | |||
| The RP will construct a "Source-Active" (SA) message and send it to | The RP will construct a "Source-Active" (SA) message and send it to | |||
| its MSDP peers. The SA message contains the following fields: | 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 BGP routing | |||
| table is examined to determine which peer is the NEXT_HOP towards the | table is examined to determine which peer is the NEXT_HOP towards the | |||
| originating RP of the SA message. Such a peer is called an "RPF | originating RP of the SA message. Such a peer is called an "RPF | |||
| peer". See section 10 below for the details of peer-RPF forwarding. | 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. | message to all its MSDP peers. | |||
| The flooding can be further constrained to children of the peer by | The flooding can be further constrained to children of the peer by | |||
| interrogating BGP reachability information. That is, if a BGP peer | 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 | 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 | 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 | other circles as Split-Horizon with Poison Reverse. An implementation | |||
| skipping to change at page 4, line 38 ¶ | skipping to change at page 4, line 38 ¶ | |||
| 7. Controlling State | 7. Controlling State | |||
| While RPs which receive SA messages are not required to keep MSDP | While RPs which receive SA messages are not required to keep MSDP | |||
| (S,G) state, an RP SHOULD cache SA messages by default. The advantage | (S,G) state, an RP SHOULD cache SA messages by default. The advantage | |||
| of caching is that newly formed MSDP peers can get MSDP (S,G) state | of caching is that newly formed MSDP peers can get MSDP (S,G) state | |||
| sooner and therefore reduce join latency for new joiners. In | sooner and therefore reduce join latency for new joiners. In | |||
| addition, caching greatly aids in diagnosis and debugging of various | addition, caching greatly aids in diagnosis and debugging of various | |||
| problems. | problems. | |||
| 7.1. 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 timers, and KeepAlive timer. | Timer, SA Cache Entry timer, KeepAlive timer, and ConnectRetry and | |||
| Peer Hold Timer. Each is considered below. | ||||
| 7.1.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- | |||
| Timer] MUST be 60 seconds. An RP will not send more than one SA | Period] MUST be 60 seconds. An RP will not send more than one | |||
| message for a given (S,G) within an SA Advertisement interval. | periodic SA message for a given (S,G) within an SA Advertisement | |||
| Originating periodic SA messages is important so that new receivers | interval. Originating periodic SA messages is important so that new | |||
| who join after a source has been active can get data quickly via the | receivers who join after a source has been active can get data | |||
| receiver's own RP when it is not caching SA state. | quickly via the receiver's own RP when it is not caching SA state. | |||
| 7.1.1.1. SA-Advertisement-Timer Processing | ||||
| When an RP is processing a PIM register message, it encapsulates the | ||||
| data (if any) in an SA message and sends the SA message it to each of | ||||
| its peers. The RP starts the SA Advertisement-Timer for the (S,G) at | ||||
| this time. When the timer expires, and there is (S,G) state for a | ||||
| source within the RP's domain, an (S,G)-SA message is sent to each | ||||
| peer and the timer is reset to [SA-Advertisement-Timer] seconds. If | ||||
| no (S,G) state exists, the timer is deleted. | ||||
| The following table summarizes (S,G)-SA-Advertisement-Timer | ||||
| processing: | ||||
| Set to | When | Applies to | ||||
| [SA-Advertisement-Timer] | created off Register packet | (S,G) | ||||
| Reset to | When | Applies to | ||||
| [SA-Advertisement-Timer] | Timer expires and (S,G) | (S,G) | ||||
| | state exists and was | | ||||
| | created by a register | | ||||
| Deleted | When | Applies to | 8.2. SA-Advertisement-Timer Processing | |||
| [SA-Advertisement-Timer] | Timer expires and (S,G) | (S,G) | ||||
| | state has expired | | ||||
| Note that a caching implementation may also wish to check the SA- | An RP starts the SA-Advertisement-Timer when the MSDP process is | |||
| Cache on this timer event. | configured. When the timer expires, an RP advertises any candidate | |||
| internal sources to its peers and resets the timer to [SA- | ||||
| Advertisement-Period] seconds. The timer is deleted when the MSDP | ||||
| process is deconfigured. Note that a caching implementation may also | ||||
| wish to check the SA-Cache on this timer event. | ||||
| 7.1.2. SA Cache Timeout (SA-State-Timer) | 8.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 is started when an (S,G)-SA message is | (S,G)-SA-State-Timer is started when an (S,G)-SA message is initially | |||
| initially received by a caching MSDP speaker. The timer is reset to | received by a caching MSDP peer. The timer is reset to [SA-State- | |||
| [SA-State-Timer] if another (S,G)-SA message is received before the | Period] if another (S,G)-SA message is received before the (S,G)-SA- | |||
| (S,G)-SA-State-Timer expires. [SA-State-Timer] MUST NOT be less than | State-Timer expires. [SA-State-Period] MUST NOT be less than 90 | |||
| 90 seconds. The following table summarizes SA-State-Timer | seconds. | |||
| processing: | ||||
| Set to | When | Applies to | ||||
| [SA-State-Timer] | creating (S,G)-SA cache | (S,G)-SA Cache Entry | ||||
| | entry (on receipt of a | | ||||
| | (S,G)-SA message) | | ||||
| Reset to | When | Applies to | ||||
| [SA-State-Timer] | On receipt of (S,G)-SA | (S,G)-SA Cache Entry | ||||
| | message | | ||||
| Deleted | When | Applies to | ||||
| (S,G) SA Cache | Timer expires | (S,G)-SA Cache Entry | ||||
| entry | | | ||||
| 7.1.3. SA-Hold-Down-Timer | 8.4. SA-Hold-Down-Timer | |||
| A caching MSDP speaker SHOULD NOT forward an SA message it has | A caching MSDP peer SHOULD NOT forward an SA message it has received | |||
| received in the last SA-Hold-Down interval. [SA-Hold-Down-Timer] | in during the previous [SA-Hold-Down-Period] seconds. [SA-Hold-Down- | |||
| SHOULD be set to 30 seconds. The following table summarizes SA-Hold- | Period] SHOULD be set to 30 seconds. The timer is set to [SA-Hold- | |||
| Down-Timer processing: | Down-Period] upon receipt of an (S,G)-SA message, and reset to [SA- | |||
| Hold-Down-Period] when forwarding an (S,G)-SA message. Finally, the | ||||
| timer is deleted when the (S,G)-SA cache entry is deleted. | ||||
| Set to | When | Applies to | 8.5. KeepAlive Timer | |||
| [SA-Hold-Down-Timer] | Upon receipt of | (S,G)-SA Cache Entry | ||||
| | (S,G)-SA message | | ||||
| Reset to | When | Applies to | The KeepAlive timer is used by the active connect side of the MSDP | |||
| [SA-Hold-Down-Timer] | When forwarding (S,G)-SA | (S,G)-SA Cache Entry | connection to track the state of the passive-connect side of the | |||
| | message | | connection. In particular, the KeepAlive timer is be used to reset | |||
| the TCP connection when the passive-connect side of the connection | ||||
| goes down. The KeepAlive timer is set to [KeepAlive-Period] when | ||||
| passive-connect peer comes up. [KeepAlive-Period] SHOULD NOT be less | ||||
| that 75 seconds. The timer is reset to [KeepAlive-Period] upon | ||||
| receipt of data from peer, and deleted when the timer expires or the | ||||
| passive-connect peer closes the connection. | ||||
| Deleted | When | Applies to | 8.6. ConnectRetry Timer | |||
| (S,G)-SA-Hold-Down-Timer] | (S,G)-SA entry is | (S,G)-SA Cache Entry | ||||
| deleted | ||||
| 7.1.4. KeepAlive Timer | The ConnectRetry timer is used by an MSDP peer to transition from | |||
| INACTIVE to CONNECTING states. There is one timer per peer, and the | ||||
| [ConnectRetry-Period] SHOULD be set to 30 seconds. The timer is | ||||
| initialized to [ConnectRetry-Period] when an MSDP peer's active | ||||
| connect attempt fails. When the timer expires, the peer retries the | ||||
| connection and the timer is is reset to [ConnectRetry-Period]. It is | ||||
| deleted deleted if either the connection transitions into ESTABLISHED | ||||
| state or the peer is deconfigured. | ||||
| Set to | When | Applies to | 8.7. Peer Hold Timer | |||
| [KeepAliver-Timer] | passive-connect peer comes | each peer | ||||
| | up | | ||||
| Reset to | When | Applies to | If a system does not receive successive KeepAlive messages (or any SA | |||
| [KeepAliver-Timer] | Receipt of data from peer | each peer | 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 MUST be connection closed. [Hold-Time-Period] MUST be at | ||||
| least three seconds. A suggested value for [Hold-Time-Period] is 90 | ||||
| seconds. | ||||
| Deleted | When | Applies to | The Hold Timer is initialized to [Hold-Time-Period] when the peer's | |||
| KeepAliver-Timer | Timer expires | each peer | transport connection is established, and is reset to [Hold-Time- | |||
| | or passive-connect peer | | Period] when either a KeepAlive or any SA message is received. | |||
| | closes connection | | ||||
| 7.2. Intermediate MSDP Speakers | 9. Intermediate MSDP Peers | |||
| Intermediate RPs do not originate periodic SA messages on behalf of | Intermediate RPs do not originate periodic SA messages on behalf of | |||
| sources in other domains. In general, an RP MUST only originate an SA | sources in other domains. In general, an RP MUST only originate an SA | |||
| for its own sources. | for its own sources. | |||
| 7.3. 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 | |||
| Internet (i.e., SA filtering by transit domains can cause undesired | Internet (i.e., SA filtering by transit domains can cause undesired | |||
| lack of connectivity). In general, policy should be expressed using | lack of connectivity). In general, policy should be expressed using | |||
| MBGP [RFC2283]. This will cause MSDP messages will flow in the | MBGP [RFC2283]. This will cause MSDP messages will flow in the | |||
| desired direction and peer-RPF fail otherwise. An exception occurs at | desired direction and peer-RPF fail otherwise. An exception occurs at | |||
| an administrative scope [RFC2365] boundary. In particular, a SA | an administrative scope [RFC2365] boundary. In particular, a SA | |||
| message for a (S,G) MUST NOT be sent to peers which are on the other | message for a (S,G) MUST NOT be sent to peers which are on the other | |||
| side of an administrative scope boundary for G. | side of an administrative scope boundary for G. | |||
| 7.4. SA Requests | 11. SA Requests | |||
| If an MSDP peer decides to cache SA state, it MAY accept SA-Requests | If an MSDP peer decides to cache SA state, it MAY accept SA-Requests | |||
| from other MSDP peers. When an MSDP peer receives an SA-Request for a | from other MSDP peers. When an MSDP peer receives an SA-Request for a | |||
| group range, it will respond to the peer with a set of SA entries, in | group range, it will respond to the peer with a set of SA entries, in | |||
| an SA-Response message, for all active sources sending to the group | an SA-Response message, for all active sources sending to the group | |||
| range requested in the SA-Request message. The peer that sends the | range requested in the SA-Request message. The peer that sends the | |||
| request will not flood the responding SA-Response message to other | request will not flood the responding SA-Response message to other | |||
| peers. See section 12 for discussion of error handling relating to SA | peers. See section 17 for discussion of error handling relating to SA | |||
| requests and responses. | requests and responses. | |||
| 8. Encapsulated Data Packets | 12. Encapsulated Data Packets | |||
| For bursty sources, the RP may encapsulate multicast data from the | For bursty sources, the RP may encapsulate multicast data from the | |||
| source. An interested RP may decapsulate the packet, which SHOULD be | source. An interested RP may decapsulate the packet, which SHOULD be | |||
| forwarded as if a PIM register encapsulated packet was received. That | forwarded as if a PIM register encapsulated packet was received. That | |||
| is, if packets are already arriving over the interface toward the | is, if packets are already arriving over the interface toward the | |||
| source, then the packet is dropped. Otherwise, if the outgoing | source, then the packet is dropped. Otherwise, if the outgoing | |||
| interface list is non-null, the packet is forwarded appropriately. | interface list is non-null, the packet is forwarded appropriately. | |||
| Note that when doing data encapsulation, an implementation MUST bound | Note that when doing data encapsulation, an implementation MUST bound | |||
| the time during which the source which are encapsulated. | the time during which the source which 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 | 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 | |||
| multiple RPs for different group ranges. As long as all RPs have a | multiple RPs for different group ranges. As long as all RPs have a | |||
| 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. Another example is the Anycast RP | well as RPs in other domains. | |||
| mechanism [ANYCASTRP]. | ||||
| 10. 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. | |||
| 10.1. Peer-RPF Forwarding Rules | 14.1. Peer-RPF Forwarding Rules | |||
| An SA message originated by an MSDP originator R and received by a | An SA message originated by an MSDP originator R and received by a | |||
| MSDP router from MSDP peer N is accepted if N is the appropriate RPF | MSDP router from MSDP peer N is accepted if N is the appropriate RPF | |||
| neighbor for originator R, and discarded otherwise. | neighbor for originator R, and discarded otherwise. | |||
| The RPF neighbor is chosen using the first of the following rules | The RPF neighbor is chosen using the first of the following rules | |||
| that matches: | that matches: | |||
| (i). R is the RPF neighbor if we have an MSDP peering with R. | (i). R is the RPF neighbor if we have an MSDP peering with R. | |||
| skipping to change at page 9, line 23 ¶ | skipping to change at page 9, line 5 ¶ | |||
| route), but no external MBGP peerings with them, | route), but no external MBGP peerings with them, | |||
| pick one via a deterministic rule. | pick one via a deterministic rule. | |||
| (vi). The internal MBGP advertiser of the router towards R is | (vi). The internal MBGP advertiser of the router towards R is | |||
| the RPF neighbor if we have an MSDP peering with it. | the RPF neighbor if we have an MSDP peering with it. | |||
| (v). If none of the above match, and we have an MSDP | (v). If none of the above match, and we have an MSDP | |||
| default-peer configured, the MSDP default-peer is | default-peer configured, the MSDP default-peer is | |||
| the RPF neighbor. | the RPF neighbor. | |||
| 10.2. MSDP default-peer semantics | 14.2. MSDP default-peer semantics | |||
| A MSDP default-peer is much like a default route. It is intended to | A MSDP default-peer is much like a default route. It is intended to | |||
| be used in those cases where a stub network isn't running BGP or | be used in those cases where a stub network isn't running BGP or | |||
| MBGP. A MSDP speaker configured with a default-peer accepts all SA | MBGP. An MSDP peer configured with a default-peer accepts all SA | |||
| messages from the default-peer. Note that a router running BGP or | messages from the default-peer. Note that a router running BGP or | |||
| MBGP SHOULD NOT allow configuration of default peers, since this | MBGP SHOULD NOT allow configuration of default peers, since this | |||
| allows the possibility for SA looping to occur. | allows the possibility for SA looping to occur. | |||
| 11. MSDP Connection Establishment | 15. MSDP Connection Establishment | |||
| MSDP messages will be encapsulated in a TCP connection using well- | MSDP messages will be encapsulated in a TCP connection. An MSDP peer | |||
| known port 639. One side of the MSDP peering relationship will listen | listens for new TCP connections on port 639. One side of the MSDP | |||
| on the well-known port and the other side will do an active connect | peering relationship will listen on the well-known port and the other | |||
| on the well-known port. The side with the higher peer IP address will | side will do an active connect on the well-known port. The side with | |||
| do the listen. This connection establishment algorithm avoids call | the higher peer IP address will do the listen. This connection | |||
| collision. Therefore, there is no need for a call collision | establishment algorithm avoids call collision. Therefore, there is no | |||
| procedure. It should be noted, however, that the disadvantage of this | need for a call collision procedure. It should be noted, however, | |||
| approach is that it may result in longer startup times at the passive | that the disadvantage of this approach is that it may result in | |||
| end. | longer startup times at the passive end. | |||
| An MSDP speaker starts in the INACTIVE state. MSDP speakers establish | An MSDP peer starts in the INACTIVE state. MSDP peers establish | |||
| peering sessions according to the following state machine: | peering sessions according to the following state machine: | |||
| De-configured or | De-configured or | |||
| disabled | disabled | |||
| +-------------------------------------------+ | +-------------------------------------------+ | |||
| | | | | | | |||
| | | | | | | |||
| Enable | | Enable | | |||
| +-----|--------->+----------+ | | +-----|--------->+----------+ | | |||
| | | +->| INACTIVE |----------------+ | | | | +->| INACTIVE |----------------+ | | |||
| | | | +----------+ | | | | | | +----------+ | | | |||
| Deconf'ed | | | /|\ /|\ | Higher Address | Deconf'ed | | | /|\ /|\ | | Lower Address | |||
| or | | | | | | | | or | | | | | | | | |||
| disabled | | | | | \|/ | | disabled | | | | | \|/ | | |||
| | | | | | | +-------------+ | | | | | | | +-------------+ | |||
| | | | | | +---------------| CONNECTING | | | | | | | +---------------| CONNECTING | | |||
| | | | | | Timeout or +-------------+ | | | | | | Timeout or +-------------+ | |||
| | | | | | Local Address Change | | | | | | | Local Address Change | | |||
| \|/ \|/ | | | | | \|/ \|/ | | | | | |||
| +----------+ | | | | | +----------+ | | | | | |||
| | DISABLED | | | +---------------------+ | TCP Established | | DISABLED | | | +---------------------+ | TCP Established | |||
| +----------+ | | | | | +----------+ | | | | | |||
| /|\ /|\ | | Connection Timeout, | | | /|\ /|\ | | Connection Timeout, | | | |||
| | | | | Local Address change, | | | | | | | Local Address change, | | | |||
| | | | | Authorization Failure | | | | | | | Authorization Failure | | | |||
| | | | | | | | | | | | | | | |||
| | | | | | \|/ | | | | | | \|/ | |||
| | | | | +-------------+ | | | | | +-------------+ | |||
| | | Local | | | ESTABLISHED | | | | Local | | | ESTABLISHED | | |||
| | | Address | | Lower Address +-------------+ | | | Address | | Higher Address +-------------+ | |||
| | | Change | \|/ /|\ | | | | Change | \|/ /|\ | | |||
| | | | +--------+ | | | | | | +--------+ | | | |||
| | | +--| LISTEN |--------------------+ | | | | +--| LISTEN |--------------------+ | | |||
| | | +--------+ TCP Accept | | | | +--------+ TCP Accept | | |||
| | | | | | | | | | | |||
| | | | | | | | | | | |||
| | +---------------+ | | | +---------------+ | | |||
| | De-configured or | | | De-configured or | | |||
| | disabled | | | disabled | | |||
| | | | | | | |||
| +------------------------------------------------------+ | +------------------------------------------------------+ | |||
| De-configured or | De-configured or | |||
| disabled | disabled | |||
| 12. 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. | |||
| 12.1. MSDP TLV format: | 16.1. MSDP TLV format: | |||
| 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. The | Length of Type, Length, and Value fields in octets. The | |||
| minimum length required is 3 octets. | minimum length required is 4 octets. The total length | |||
| of the TLV should be a multiple of 2 octets. | ||||
| 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. | the value field is Length field minus 3. All reserved fields | |||
| in the Value field MUST be transmitted as zeros and ignored on | ||||
| receipt. | ||||
| 12.2. Defined TLVs | 16.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 Notification | 5 Notification | |||
| Each TLV is described below. | Each TLV is described below. | |||
| 12.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 messages. The 1400 octet | 1400 octets, it sends successive 1400-octet messages. The 1400 octet | |||
| size does not include the TCP, IP, layer-2 headers. | size does not include the TCP, IP, layer-2 headers. | |||
| 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 | / | |||
| skipping to change at page 12, line 50 ¶ | skipping to change at page 13, line 8 ¶ | |||
| 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 ignored | |||
| by a receiver. | 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 | ||||
| Sprefix Len Notification SHOULD be sent upon receipt | ||||
| 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. | |||
| Source Address | Source Address | |||
| The IP address of the active source. | The IP address of the active source. | |||
| Multiple SA TLVs MAY appear in the same message and can be batched | Multiple SA TLVs MAY appear in the same message 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. 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 caching | The Source-Active Request is used to request SA-state from a caching | |||
| MSDP peer. If an RP in a domain receives a PIM Join message for a | MSDP 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, creates (*,G) state and wants to know all active sources for | |||
| group G, and it has been configured to peer with an SA-state caching | group G, and it has been configured to peer with an SA-state caching | |||
| peer, it may send an SA-Request message for the group. | peer, it may send an SA-Request message for the group. | |||
| 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 | Gprefix Len | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Group Address | | | Group Address Prefix | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type | Type | |||
| IPv4 Source-Active Request TLV is type 2. | IPv4 Source-Active Request TLV is type 2. | |||
| Reserved | Gprefix Len | |||
| The Reserved field MUST be transmitted as zeros and ignored | The route prefix length associated with the group address prefix. | |||
| by a receiver. | ||||
| Group Address | Group Address | |||
| The group address the MSDP peer is requesting. | The group address the MSDP peer is requesting. | |||
| 12.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 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 | |||
| octets (for the first two 32-bit quantities) plus 12 times Entry | octets (for the first two 32-bit quantities) plus 12 times Entry | |||
| Count octets. | Count octets. | |||
| 12.2.4. KeepAlive TLV | 16.2.4. 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 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 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 | 4 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 4 | 3 | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| The length of the message is 4 octets which encompasses the 1-octet | The length of the message is 3 octets which encompasses the one octet | |||
| Type field and the 2-octet Length field, plus the Reserved field. The | Type field and the two octet Length field. | |||
| Reserved field MUST be transmitted as zeros and ignored by a | ||||
| receiver. | ||||
| 12.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 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 | | |||
| | ... | | | ... | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type | Type | |||
| The Notification TLV is type 7. | The Notification TLV is type 5. | |||
| Length | Length | |||
| Length is a two octet field with value x + 5, where x is | Length is a two octet field with value x + 5, where x is | |||
| the length of the notification data field. | the length of the notification data field. | |||
| O-bit | O-bit | |||
| Open-bit. If reset, the connection will be closed [MASC]. | Open-bit. If clear, the connection will be closed. | |||
| Error code | Error code | |||
| This 7-bit unsigned integer indicates the type of Notification. | This 7-bit unsigned integer indicates the type of Notification. | |||
| The following Error Codes have been defined: | The following Error Codes have been defined: | |||
| Error Code Symbolic Name Reference | Error Code Symbolic Name Reference | |||
| 1 Message Header Error Section 12.3 | 1 Message Header Error Section 17.1 | |||
| 2 SA-Request Error Section 17.2 | ||||
| 2 Finite State Machine Error Section 12.4 | 3 SA-Message/SA-Response Error Section 17.3 | |||
| 4 Hold Timer Expired Section 17.4 | ||||
| 3 Notification Message Error Section 12.5 | 5 Finite State Machine Error Section 17.5 | |||
| 6 Notification Section 17.6 | ||||
| 4 SA-Request Error Section 12.6 | 7 Cease Section 17.7 | |||
| 5 SA-Response Error Section 12.7 | ||||
| 6 SA-Message Error Section 12.8 | ||||
| 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 reset (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 reset; CC = Can Close connection = | Must Close connection = O-bit clear; CC = Can Close connection = | |||
| O-bit might be reset [MASC]. | O-bit might be cleared. | |||
| Message Header Error subcodes: | Message Header Error subcodes: | |||
| 0 - Unspecific (MC) | 0 - Unspecific (MC) | |||
| 1 - Bad Message Length (MC) | 2 - Bad Message Length (MC) | |||
| 2 - Bad Message Type (MC) | 3 - Bad Message Type (CC) | |||
| SA-Request Error subcodes: | ||||
| 0 - Unspecific (MC) | ||||
| 1 - Does not cache SA (MC) | ||||
| 2 - Invalid Group (MC) | ||||
| SA-Message/SA-Response Error subcodes | ||||
| 0 - Unspecific (MC) | ||||
| 1 - Invalid Entry Count (CC) | ||||
| 2 - Invalid RP Address (MC) | ||||
| 3 - Invalid Group Address (MC) | ||||
| 4 - Invalid Source Address (MC) | ||||
| 5 - Invalid Sprefix Length (MC) | ||||
| 6 - Looping SA (Self is RP) (MC) | ||||
| 7 - Unknown Encapsulation (MC) | ||||
| 8 - Administrative Scope Boundary Violated (MC) | ||||
| Hold Timer Expired subcodes (the O-bit is always clear): | ||||
| 0 - Unspecific (MC) | ||||
| Finite State Machine Error subcodes: | Finite State Machine Error subcodes: | |||
| 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 reset): | Notification subcodes (the O-bit is always clear): | |||
| 0 - Unspecific (CC) | 0 - Unspecific (MC) | |||
| SA-Request Error subcodes: | Cease subcodes (the O-bit is always clear): | |||
| 0 - Not caching (MC) | 0 - Unspecific (MC) | |||
| 0 - Invalid Group Address prefix (CC) | ||||
| SA-Reponse Error subcodes: | 17. MSDP Error Handling | |||
| 0 - Didn't send Request (MC) | This section describes actions to be taken when errors are detected | |||
| while processing MSDP messages. MSDP Error Handling is similar to | ||||
| that of BGP [RFC1771]. | ||||
| SA-Message Error subcodes | When any of the conditions described here are detected, a | |||
| Notification message with the indicated Error Code, Error Subcode, | ||||
| and Data fields is sent. In addition, the MSDP connection might be | ||||
| closed. If no Error Subcode is specified, then a zero (Unspecific) | ||||
| must be used. | ||||
| 0 - Invalid Entry Count (CC) | The phrase "the MSDP connection is closed" means that the transport | |||
| 1 - Invalid RP Address (CC) | protocol connection has been closed and that all resources for that | |||
| 2 - Invalid Group Address (CC) | MSDP connection have been deallocated. | |||
| 3 - Invalid Source Address (CC) | ||||
| 4 - Invalid Sprefix Length (CC) | ||||
| 5 - Looping SA (Self is RP) (CC) | ||||
| 6 - Unknown Encapsulation (MC) | ||||
| 12.3. 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 | |||
| by sending the Notification message with Error Code Message Header | by sending the Notification message with Error Code Message Header | |||
| Error. The Error Subcode describes the specific nature of the error. | Error. The Error Subcode describes the specific nature of the error. | |||
| The Data field contains the erroneous Message (including the message | The Data field contains the erroneous Message (including the message | |||
| header). | header). | |||
| If the Length field of the message header is less than 4 or greater | If the Length field of the message header is less than 4 or greater | |||
| than 1400, or the length of a Keepalive message is not equal to 4, | than 1400, or the length of a KeepAlive message is not equal to 3, | |||
| then the Error Subcode is set to Bad Message Length. | then the Error Subcode is set to Bad Message Length. | |||
| If the Type field of the message header is not recognized, then the | If the Type field of the message header is not recognized, then the | |||
| Error Subcode is set to Bad Message Type. | Error Subcode is set to Bad Message Type. | |||
| 12.4. Finite State Machine Error Handling | 17.2. SA-Request Error Handling | |||
| Any error detected by the MSDP Finite State Machine (e.g., receipt of | ||||
| an unexpected event) is indicated by sending the Notification message | ||||
| with Error Code Finite State Machine Error. | ||||
| 12.5. Notification Message Error Handling | ||||
| If a node sends a Notification message, and there is an error in that | ||||
| message, and the O-bit of that message is not reset, a Notification | ||||
| with O-bit reset, Error Code of Notification Error, and subcode | ||||
| Unspecific must be sent. In addition, the Data field must include | ||||
| the Notification message that triggered the error. However, if the | ||||
| erroneous Notification message had the O-bit reset, then any error, | ||||
| such as an unrecognized Error Code or Error Subcode, should be | ||||
| noticed, logged locally, and brought to the attention of the | ||||
| administrator of the remote node. | ||||
| 12.6. 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 non-caching MSDP speaker, or at a caching MSDP speaker | request at a non-caching MSDP peer, or at a caching MSDP peer when an | |||
| when an invalid group address requested. | invalid group address requested. | |||
| When a non-caching MSDP speaker receives an SA-Request, it returns | When a non-caching MSDP peer receives an SA-Request, it returns the | |||
| the following notification and closes the connection: | following notification: | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 7 | 16 |O| 4 | | | 5 | 12 |O| 2 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 0x0 | Reserved | | | 1 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Group Address | | | Group Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Source Address | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| If a caching MSDP speaker receives a request for an invalid group, it | If a caching MSDP peer receives a request for an invalid group, it | |||
| returns the following notification and closes the connection: | returns the following notification: | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 7 | 12 |O| 4 | | | 5 | 12 |O| 2 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 0x1 | Reserved | | | 2 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Invalid Group Address | | | Invalid Group Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 12.7. SA-Response Error Handling | 17.3. SA-Message/SA-Response Error Handling | |||
| The SA-Response Error code is used to signal the receipt of a SA | ||||
| Response at MSDP speaker which did not issue a SA-Request to the | ||||
| peer. It has the following form: | ||||
| 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | 7 | 8 |O| 5 | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | 0x0 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| 12.8. SA-Message Error Handling | ||||
| The SA-Message Error code is used to signal the receipt of an SA | The SA-Message/SA-Response Error code is used to signal the receipt | |||
| message that contains invalid data. | 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 | ||||
| the following form: | ||||
| 12.8.1. Invalid Entry Count | 17.3.1. Invalid Entry Count (IEC) | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | 7 | 12 |O| 6 | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | 0x0 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Invalid Entry Count | | | 5 | 6 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 1 | IEC | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| 12.8.2. Invalid RP Address | 17.3.2. Invalid RP Address | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 7 | 12 |O| 6 | | | 5 | 12 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 0x1 | Reserved | | | 2 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Invalid RP Address | | | Invalid RP Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 12.8.3. Invalid Group Address | 17.3.3. Invalid Group Address | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 7 | 12 |O| 6 | | | 5 | 12 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 0x2 | Reserved | | | 3 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Invalid Group Address | | | Invalid Group Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 12.8.4. Invalid Source Address | 17.3.4. Invalid Source Address | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 7 | 12 |O| 6 | | | 5 | 12 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 0x3 | Reserved | | | 4 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Invalid Source Address | | | Invalid Source Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 12.9. Invalid Sprefix Length | 17.3.5. Invalid Sprefix Length (ISL) | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | 7 | 12 |O| 6 | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | 0x4 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Invalid Sprefix Length | | | 5 | 6 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 5 | ISL | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| 12.10. Looping SAs (Self is RP in received SA) | 17.3.6. Looping SAs (Self is RP in received SA) | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 7 | 8 |O| 6 | | | 5 | x + 5 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 0x5 | Reserved | | | 6 | Looping SA Message .... | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 12.11. Unknown Encapsulation | Length x | |||
| x is the length of the looping SA message contained in the data | ||||
| field of the Notification message. | ||||
| 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 12.12 for known | in an unknown encapsulation type. See section 18 for known | |||
| encapsulations. | encapsulations. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 7 | 8 |O| 6 | | | 5 | x + 5 |O| 3 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 0x6 | Reserved | | | 7 | SA Message .... | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 12.12. SA Data Encapsulation | Length x | |||
| x is the length of the SA message (which contained data which | ||||
| was encapsulated in some unknown way) that is with contained in the | ||||
| data field of the Notification message. | ||||
| This section describes UDP and GRE encapsulation of SA data. | 17.3.8. Adminstrative Scope Boundary Violated | |||
| 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. | ||||
| 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 | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | 8 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Peer IP Address | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Group Address | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| 17.4. Hold Time Expired | ||||
| If a system does not receive successive KEEPALIVE or any SA Message | ||||
| and/or Notification messages within the period specified in the Hold | ||||
| Timer, then the notification message with Hold Timer Expired Error | ||||
| Code must be sent and the MSDP connection closed. | ||||
| 17.5. Finite State Machine Error Handling | ||||
| Any error detected by the MSDP Finite State Machine (e.g., receipt of | ||||
| an unexpected event) is indicated by sending the Notification message | ||||
| with Error Code Finite State Machine Error. | ||||
| 17.6. Notification Message Error Handling | ||||
| If a node sends a Notification message, and there is an error in that | ||||
| message, and the O-bit of that message is not clear, a Notification | ||||
| with O-bit clear, Error Code of Notification Error, and subcode | ||||
| Unspecific must be sent. In addition, the Data field must include | ||||
| the Notification message that triggered the error. However, if the | ||||
| erroneous Notification message had the O-bit clear, then any error, | ||||
| such as an unrecognized Error Code or Error Subcode, should be | ||||
| noticed, logged locally, and brought to the attention of the | ||||
| administrator of the remote node. | ||||
| 17.7. Cease | ||||
| 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 | ||||
| connection by sending the Notification message with Error Code Cease. | ||||
| However, the Cease Notification message MUST NOT be used when a fatal | ||||
| error indicated by this section does exist. | ||||
| 18. SA Data Encapsulation | ||||
| This section describes UDP, GRE, and TCPC encapsulation of SA data. | ||||
| Encapsulation type is a configuration option. | Encapsulation type is a configuration option. | |||
| 12.12.1. UDP Data Encapsulation | 18.1. UDP Data Encapsulation | |||
| MSDP SA-data MAY be encapsulated in UDP. In this case, the UDP | Data packets MAY be encapsulated in UDP. In this case, the UDP | |||
| psuedo-header has the following form: | pseudo-header has the following form: | |||
| 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 | ||||
| Source Port | according to RFC 768. Source and Destination ports are known via an | |||
| Port to be used by the remote end, and is known via | implementation-specific method (e.g. per-peer configuration). | |||
| configuration. | ||||
| Destination Port | ||||
| The Destination Port is set to the remote endpoint's Source port, | ||||
| and is known via configuration. | ||||
| Length | ||||
| Length is the length in octets of this user datagram | ||||
| including this header and the data. The minimum value | ||||
| of the length is twelve. | ||||
| Checksum | Checksum | |||
| The checksum is computed according to RFC 768 [RFC768]. | The checksum is computed according to RFC 768 [RFC768]. | |||
| 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. | |||
| 12.12.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]. | GRE-ProtocolType]. The GRE header and payload packet have the | |||
| following form: | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Delivery Headers ..... | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |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 .... / | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 12.12.2.1. GRE Encapsulation and PMTU Discovery [RFC1191] | 18.2.1. GRE Encapsulation and Path MTU Discovery [RFC1191] | |||
| Existing implementations of GRE, when using IPv4 as the Delivery | Existing implementations of GRE, when using IPv4 as the Delivery | |||
| Header, do not implement Path MTU discovery and do not set the Don't | Header, do not implement Path MTU discovery and do not set the Don't | |||
| Fragment bit in the Delivery Header. This can cause large packets to | Fragment bit in the Delivery Header. This can cause large packets to | |||
| become fragmented within the tunnel and reassembled at the tunnel | become fragmented within the tunnel and reassembled at the tunnel | |||
| exit (independent of whether the payload packet is using PMTU). If a | exit (independent of whether the payload packet is using PMTU). If a | |||
| tunnel entry point were to use Path MTU discovery, however, that | tunnel entry point were to use Path MTU discovery, however, that | |||
| tunnel entry point would also need to relay ICMP unreachable error | tunnel entry point would also need to relay ICMP unreachable error | |||
| messages (in particular the "fragmentation needed and DF set" code) | messages (in particular the "fragmentation needed and DF set" code) | |||
| back to the originator of the packet, which is not required by the | back to the originator of the packet, which is not required by the | |||
| GRE specification [GRE]. Failure to properly relay Path MTU | GRE specification [GRE]. Failure to properly relay Path MTU | |||
| information to an originator can result in the following behavior: | information to an originator can result in the following behavior: | |||
| the originator sets the don't fragment bit, the packet gets dropped | the originator sets the don't fragment bit, the packet gets dropped | |||
| within the tunnel, but since the originator doesn't receive proper | within the tunnel, but since the originator doesn't receive proper | |||
| 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. | |||
| 13. Security Considerations | 18.3. TCP Data Encapsulation | |||
| As discussed earlier, encapsulation of data in SA messages MAY be | ||||
| supported for backwards compatibility with legacy MSDP peers. | ||||
| 19. Security Considerations | ||||
| An MSDP implementation MAY use IPsec [RFC1825] or keyed MD5 [RFC1828] | An MSDP implementation MAY use IPsec [RFC1825] or keyed MD5 [RFC1828] | |||
| to secure control messages. When encapsulating SA data in GRE, | to secure control messages. When encapsulating SA data 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. | |||
| 14. Acknowledgments | 20. Acknowledgments | |||
| The authors would like to thank Dave Thaler, Bill Nickless, John | The authors would like to thank Bill Nickless, John Meylor, Liming | |||
| Meylor, Liming Wei, Manoj Leelanivas, Mark Turner, John Zwiebel, and | Wei, Manoj Leelanivas, Mark Turner, John Zwiebel, and Cristina | |||
| Cristina Radulescu-Banu for their design feedback and comments. Bill | Radulescu-Banu for their design feedback and comments. In addition to | |||
| Fenner also made many contributions, including clarification of the | many other contributions, Tom Pusateri helped to clarify the | |||
| connection state machine, Dave Thaler helped to clarify the | ||||
| Notification message types, and Bill Fenner helped to clarify the | ||||
| Peer-RPF rules. | Peer-RPF rules. | |||
| 15. Author's Address: | 21. Author's Address: | |||
| Dino Farinacci | Dino Farinacci | |||
| Procket Networks | Procket Networks | |||
| 3850 No. First St., Ste. C | 3850 No. First St., Ste. C | |||
| San Jose, CA 95134 | San Jose, CA 95134 | |||
| Email: dino@procket.com | Email: dino@procket.com | |||
| Yakov Rehkter | Yakov Rehkter | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| 170 Tasman Drive | 170 Tasman Drive | |||
| skipping to change at page 25, line 5 ¶ | skipping to change at page 25, line 5 ¶ | |||
| 3060 Williams Drive | 3060 Williams Drive | |||
| Fairfax, VA 22031 | Fairfax, VA 22031 | |||
| Email: jhall@uu.net | Email: jhall@uu.net | |||
| 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 | |||
| 16. REFERENCES | 22. REFERENCES | |||
| [ANYCASTRP] Meyer, et. al, "Anycast RP mechanism using PIM and | ||||
| MSDP", draft-ietf-mboned-anycast-rp-04.txt, November, | ||||
| 1999. Work in Progress. | ||||
| [GRE] Farinacci, D., et al., "Generic Routing Encapsulation | [GRE] Farinacci, D., et al., "Generic Routing Encapsulation | |||
| (GRE)", draft-meyer-gre-update-02.txt, January, | (GRE)", draft-meyer-gre-update-02.txt, January, | |||
| 2000. Work in Progress. | 2000. Work in Progress. | |||
| [MASC] Estrin, D., et al., "The Multicast Address-Set Claim | ||||
| (MASC) Protocol", draft-ietf-malloc-masc-04.txt, | ||||
| October, 1999. Work in Progress. | ||||
| [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 | ||||
| (BGP-4)", RFC 1771, March 1995. | ||||
| [RFC1825] Atkinson, R., "Security Architecture for the Internet | [RFC1825] Atkinson, R., "Security Architecture for the Internet | |||
| Protocol", RFC 1825, August, 1995. | Protocol", RFC 1825, August, 1995. | |||
| [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., | |||
| End of changes. 137 change blocks. | ||||
| 304 lines changed or deleted | 318 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/ | ||||