| < draft-ietf-msdp-spec-11.txt | draft-ietf-msdp-spec-12.txt > | |||
|---|---|---|---|---|
| Network Working Group David Meyer (Editor) | Network Working Group David Meyer (Editor) | |||
| INTERNET DRAFT Bill Fenner (Editor) | INTERNET DRAFT Bill Fenner (Editor) | |||
| Category Standards Track | Category Standards Track | |||
| August, 2001 | September, 2001 | |||
| Multicast Source Discovery Protocol (MSDP) | Multicast Source Discovery Protocol (MSDP) | |||
| <draft-ietf-msdp-spec-11.txt> | <draft-ietf-msdp-spec-12.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 3, line 16 ¶ | skipping to change at page 3, line 16 ¶ | |||
| When an RP in a PIM-SM domain first learns of a new sender, e.g. via | When an RP in a PIM-SM domain first learns of a new sender, e.g. via | |||
| PIM register messages, it constructs a "Source-Active" (SA) message | PIM register messages, it constructs a "Source-Active" (SA) message | |||
| and sends it to its MSDP peers. The SA message contains the following | and sends it to its MSDP peers. The SA message contains the following | |||
| fields: | 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. | |||
| Note that an RP that isn't a DR on a shared network SHOULD NOT | ||||
| originate SA's for directly connected sources on that shared network. | ||||
| Each MSDP peer receives and forwards the message away from the RP | Each MSDP peer receives and forwards the message away from the RP | |||
| address in a "peer-RPF flooding" fashion. The notion of peer-RPF | address in a "peer-RPF flooding" fashion. The notion of peer-RPF | |||
| flooding is with respect to forwarding SA messages. The Multicast RPF | flooding is with respect to forwarding SA messages. The Multicast RPF | |||
| Routing Information Base (MRIB) is examined to determine which peer | Routing Information Base (MRIB) is examined to determine which peer | |||
| towards the originating RP of the SA message is selected. Such a peer | towards the originating RP of the SA message is selected. Such a peer | |||
| is called an "RPF peer". See section 14 for the details of peer-RPF | is called an "RPF peer". See section 14 for the details of peer-RPF | |||
| forwarding. | forwarding. | |||
| If the MSDP peer receives the SA from a non-RPF peer towards the | If the MSDP peer receives the SA from a non-RPF peer towards the | |||
| originating RP, it will drop the message. Otherwise, it forwards the | originating RP, it will drop the message. Otherwise, it forwards the | |||
| skipping to change at page 4, line 21 ¶ | skipping to change at page 4, line 21 ¶ | |||
| 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, ConnectRetry and Peer | Timer, SA Cache Entry timer, KeepAlive timer, ConnectRetry and 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 so periodically as long as there | |||
| is data being sent by the source. There is one SA-Advertisement-Timer | is data being sent by the source. There is one SA-Advertisement-Timer | |||
| covering the sources that an RP may advertise. [SA-Advertisement- | covering the sources that an RP may advertise. [SA-Advertisement- | |||
| Period] MUST be 60 seconds. An RP MUST not send more than one | Period] MUST be 180 seconds. An RP MUST not send more than one | |||
| periodic SA message for a given (S,G) within an SA Advertisement | periodic SA message for a given (S,G) within an SA Advertisement | |||
| interval. Originating periodic SA messages is required to keep | interval. Originating periodic SA messages is required to keep | |||
| announcements alive in caches, and so that new receivers who join | announcements alive in caches. 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 11 ¶ | skipping to change at page 5, line 11 ¶ | |||
| implemenation SHOULD send all cached SA messages when a connection is | implemenation SHOULD send all cached SA messages when a connection is | |||
| established. Finally, the timer is deleted when the MSDP process is | established. Finally, the timer is deleted when the MSDP process is | |||
| deconfigured. | deconfigured. | |||
| 8.3. 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 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 [SA-Advertisement- | |||
| Period] + [SA-Hold-Down-Period]. | ||||
| 8.4. SA-Hold-Down Timer | 8.4. SA-Hold-Down Timer | |||
| When an SA message is received which creates (S,G) state, the | When an SA message is received which creates (S,G) state, the | |||
| (S,G)-SA message will be forwarded if the peer-RPF check succeeds. If | (S,G)-SA message will be forwarded if the peer-RPF check succeeds. If | |||
| the peer-RPF check succeeds and the (S,G)-SA message is not already | the peer-RPF check succeeds and the (S,G)-SA message is not already | |||
| in the SA cache, then the (S,G)-SA-Hold-Down timer is set to [SA- | in the SA cache, then the (S,G)-SA-Hold-Down timer is set to [SA- | |||
| Hold-Down-Period] seconds. When an (S,G)-SA message is received and | Hold-Down-Period] seconds. When an (S,G)-SA message is received and | |||
| an (S,G) entry already exists, the message is forwarded only if the | an (S,G) entry already exists, the message is forwarded only if the | |||
| (S,G)-SA-Hold-Down timer is not running. [SA-Hold-Down-Period] SHOULD | (S,G)-SA-Hold-Down timer is not running. [SA-Hold-Down-Period] SHOULD | |||
| skipping to change at page 9, line 32 ¶ | skipping to change at page 9, line 32 ¶ | |||
| N is the RPF neighbor of X with respect to R if | N is the RPF neighbor of X with respect to R if | |||
| (i). N == R (X has an MSDP peering with R). | (i). N == R (X has an MSDP peering with R). | |||
| (ii). N is the BGP NEXT_HOP of the active RPF route | (ii). N is the BGP NEXT_HOP of the active RPF route | |||
| for R. | for R. | |||
| (iii). The active RPF route for R is learned through a | (iii). The active RPF route for R is learned through a | |||
| distance-vector or path-vector routing protocol | distance-vector or path-vector routing protocol | |||
| (e.g. BGP, RIP, DVMRP) and N is the neighbor that | (e.g. BGP, RIP, DVMRP) and N is the neighbor that | |||
| advertised the active RPF route for R. | advertised the active RPF route for R if the | |||
| route was learned via a distance-vector or | ||||
| path-vector protocol, or N is the IGP next hop | ||||
| for if R was learned via a link-state protocol. | ||||
| (iv). N resides in an AS that is in the AS_PATH of the active | (iv). N resides in an AS that is in the AS_PATH of the active | |||
| RPF route for R, and N has the highest IP address among | RPF route for R, and N has the highest IP address among | |||
| the MSDP peers that reside in ASs in that AS_PATH. | the MSDP peers that reside in ASs in that AS_PATH. | |||
| (v). N is configured as the static RPF-peer for R. | (v). N is configured as the static RPF-peer for R. | |||
| 14.3. MSDP static RPF-peer semantics | 14.3. MSDP static RPF-peer semantics | |||
| If none of the rules (i) - (iv) are able to determine an RPF peer for | If none of the rules (i) - (iv) are able to determine an RPF peer for | |||
| skipping to change at page 14, line 29 ¶ | skipping to change at page 14, line 29 ¶ | |||
| state, they do not cause a state transition. Appropriate actions are | state, they do not cause a state transition. Appropriate actions are | |||
| listed for each event. | listed for each event. | |||
| *) KeepAlive timer expired: | *) KeepAlive timer expired: | |||
| -> Send KeepAlive TLV | -> Send KeepAlive TLV | |||
| -> Set KeepAlive timer to [KeepAlive-Period] | -> Set KeepAlive timer to [KeepAlive-Period] | |||
| *) KeepAlive TLV received: | *) KeepAlive TLV received: | |||
| -> Set Hold Timer to [HoldTime-Period] | -> Set Hold Timer to [HoldTime-Period] | |||
| *) Source-Active TLV received: | *) Source-Active TLV received: | |||
| -> Set Hold Timer to [HoldTime-Period] | -> Set Hold Timer to [HoldTime-Period] | |||
| -> Run Peer-RPF Forwarding algorithm (if caching, consider | -> Run Peer-RPF Forwarding algorithm (consider SA-Hold-Down | |||
| SA-Hold-Down Timer and SA-State Timer) | Timer and SA-State Timer) | |||
| -> Set KeepAlive timer to [KeepAlive-Period] for those peers the | -> Set KeepAlive timer to [KeepAlive-Period] for those peers | |||
| Source-Active TLV is forwarded to | the Source-Active TLV is forwarded to | |||
| -> Send information to PIM-SM | -> Send information to PIM-SM | |||
| -> If caching, store information | -> Store information in cache | |||
| *) Source-Active Request TLV received: | *) Source-Active Request TLV received: | |||
| -> Set Hold Timer to [HoldTime-Period] | -> Set Hold Timer to [HoldTime-Period] | |||
| -> If SA-Requests are accepted, send Source-Active Response TLV | -> If SA-Requests are accepted, send Source-Active Response | |||
| and set KeepAlive timer to [KeepAlive-Period] | TLV and set KeepAlive timer to [KeepAlive-Period] | |||
| *) Source-Active Response TLV received: | *) Source-Active Response TLV received: | |||
| -> Set Hold Timer to [HoldTime-Period] | -> Set Hold Timer to [HoldTime-Period] | |||
| -> If a corresponding SA-Request were previously sent, send | -> If a corresponding SA-Request were previously sent, send | |||
| information to PIM-SM. If not, an error has occured (event 11 | information to PIM-SM. If not, an error has occured | |||
| above) | (event 11 above) | |||
| -> If caching, store information | -> Store information in cache | |||
| 15.4. Peer-independent Events | 15.4. Peer-independent Events | |||
| There are also a number of events that affect more than one peering | There are also a number of events that affect more than one peering | |||
| session, but still require actions to be performed on a per-peer | session, but still require actions to be performed on a per-peer | |||
| basis. If the MSDP speaker does not cache SA messages, ignore all | basis. | |||
| events and actions pertaining to caching. | ||||
| *) SA-Advertisement-Timer expired: | *) SA-Advertisement-Timer expired: | |||
| -> Start periodic transmission of Source-Active TLV(s) | -> Start periodic transmission of Source-Active TLV(s) | |||
| -> Set KeepAlive timer to [KeepAlive-Period] each time a | -> Set KeepAlive timer to [KeepAlive-Period] each time a | |||
| Source-Active TLV is sent | Source-Active TLV is sent | |||
| *) MSDP learns of a new active internal source (e.g. PIM-SM | *) MSDP learns of a new active internal source (e.g. PIM-SM | |||
| register received for a new source): | register received for a new source): | |||
| -> Send Source-Active TLV | -> Send Source-Active TLV | |||
| -> Set KeepAlive timer to [KeepAlive-Period] | -> Set KeepAlive timer to [KeepAlive-Period] | |||
| *) Source-Active Request triggered (event not specified here): | *) Source-Active Request triggered (event not specified here): | |||
| skipping to change at page 22, line 49 ¶ | skipping to change at page 23, line 10 ¶ | |||
| 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 | |||
| 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| 2 | | | 5 | 12 |O| 2 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 2 | Reserved | | | 1 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 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: | |||
| End of changes. 15 change blocks. | ||||
| 25 lines changed or deleted | 28 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/ | ||||