One document matched: draft-ietf-pim-sm-v2-new-07.ps


%!PS-Adobe-3.0
%%Creator: groff version 1.17.2
%%CreationDate: Sun Mar  2 17:19:56 2003
%%DocumentNeededResources: font Courier-Bold
%%+ font Times-Bold
%%+ font Times-Roman
%%+ font Courier
%%+ font Times-Italic
%%DocumentSuppliedResources: file starg-assert.ps
%%+ file sg-assert.ps
%%+ file sgrpt-override.ps
%%+ file sending-sg-std.ps
%%+ file sending-starg-std.ps
%%+ file sending-starstarrp-std.ps
%%+ file sgrpt-std.ps
%%+ file sg-std.ps
%%+ file starg-std.ps
%%+ file starstarrp-std.ps
%%+ file register-std.ps
%%+ procset grops 1.17 2
%%Pages: 104
%%PageOrder: Ascend
%%Orientation: Portrait
%%EndComments
%%BeginProlog
%%BeginResource: procset grops 1.17 2
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/MANUAL{
statusdict begin/manualfeed true store end
}bind def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}bind def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/FL{
currentgray exch setgray fill setgray
}bind def
/BL/fill load def
/LW/setlinewidth load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne{def}{pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[]0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{}def
}bind def
/PEND{
clear
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%IncludeResource: font Courier-Bold
%%IncludeResource: font Times-Bold
%%IncludeResource: font Times-Roman
%%IncludeResource: font Courier
%%IncludeResource: font Times-Italic
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
/Times-Italic@0 ENC0/Times-Italic RE/Courier@0 ENC0/Courier RE
/Times-Roman@0 ENC0/Times-Roman RE/Times-Bold@0 ENC0/Times-Bold RE
/Courier-Bold@0 ENC0/Courier-Bold RE
%%EndProlog
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Courier-Bold@0 SF(Internet Engineering Task Force)72 85 Q(PIM WG)
210 E 246(INTERNET-DRAFT Bill)72 98 R(Fenner/AT&T)6 E 144
(draft-ietf-pim-sm-v2-new-07.ps Mark)72 111 R(Handley/ICIR)6 E
(Hugh Holbrook/Cisco)390 124 Q(Isidor Kouvelas/Cisco)378 137 Q 6(2M)432
150 S(arch 2003)-6 E(Expires: September 2003)366 163 Q/F1 14
/Times-Bold@0 SF(Pr)113.147 188 Q
(otocol Independent Multicast - Sparse Mode \(PIM-SM\):)-.252 E(Pr)
193.353 201 Q(otocol Speci\214cation \(Re)-.252 E(vised\))-.21 E/F2 11
/Times-Bold@0 SF(Status of this Document)72 246 Q/F3 11/Times-Roman@0 SF
(This document is an Internet-Draft and is in full conformance with all\
 pro)72 262.6 Q(visions of Section 10 of)-.165 E(RFC2026.)72 275.6 Q
(Internet-Drafts are w)72 301.6 Q
(orking documents of the Internet Engineering T)-.11 E(ask F)-.88 E
(orce \(IETF\), its areas,)-.165 E(and its w)72 314.6 Q(orking groups.)
-.11 E(Note that other groups may also distrib)5.5 E(ute w)-.22 E
(orking documents as)-.11 E(Internet-Drafts.)72 327.6 Q
(Internet-Drafts are draft documents v)72 353.6 Q
(alid for a maximum of six months and may be updated,)-.275 E
(replaced, or obsoleted by other documents at an)72 366.6 Q 2.75(yt)
-.165 G 2.75(ime. It)-2.75 F(is inappropriate to use Internet- Drafts)
2.75 E(as reference material or to cite them other than as "w)72 379.6 Q
(ork in progress.")-.11 E
(The list of current Internet-Drafts can be accessed at http://www)72
405.6 Q(.ietf.or)-.715 E(g/ietf/1id-abstracts.txt)-.198 E
(The list of Internet-Draft Shado)72 431.6 Q 2.75(wD)-.275 G
(irectories can be accessed at http://www)-2.75 E(.ietf.or)-.715 E
(g/shado)-.198 E -.715(w.)-.275 G(html.).715 E
(This document is a product of the IETF PIM WG.)72 457.6 Q
(Comments should be addressed to the authors,)5.5 E(or the WG')72 470.6
Q 2.75(sm)-.605 G(ailing list at pim@catarina.usc.edu.)-2.75 E F2
(Abstract)267.534 489.6 Q F3(This document speci\214es Protocol Indepen\
dent Multicast - Sparse Mode \(PIM-SM\).)97 512.2 Q(PIM-SM is a multica\
st routing protocol that can use the underlying unicast routing)97 525.2
Q(information base or a separate multicast-capable routing information \
base.)97 538.2 Q(It b)5.5 E(uilds)-.22 E
(unidirectional shared trees rooted at a Rendezv)97 551.2 Q
(ous Point \(RP\) per group, and)-.22 E
(optionally creates shortest-path trees per source.)97 564.2 Q
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 232.471
(elas [P)-.165 F(age 1])-.165 E EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 13/Times-Bold@0 SF -1.196
(Ta)239.126 85 S(ble of Contents)1.196 E/F2 10/Times-Roman@0 SF
(1. Introduction)97 123 Q F0 11(......................)3.56 G F2(4)11.5
E(2. T)97 135 Q(erminology)-.7 E F0 11(......................)1.48 G F2
(4)11.5 E(2.1. De\214nitions)107 147 Q F0 11(.....................)4.8 G
F2(4)11.5 E(2.2. Pseudocode Notation)107 159 Q F0 11(..................)
5.23 G F2(5)11.5 E(3. PIM-SM Protocol Ov)97 171 Q(ervie)-.15 E(w)-.25 E
F0 11(.................)8.27 G F2(5)11.5 E(4. Protocol Speci\214cation)
97 183 Q F0 11(...................)5.64 G F2(9)11.5 E
(4.1. PIM Protocol State)107 195 Q F0 11(...................).08 G F2(9)
11.5 E(4.1.1. General Purpose State)117 207 Q F0 11(................)
11.63 G F2(10)6.5 E(4.1.2. \(*,*,RP\) State)117 219 Q F0 11
(...................)2.86 G F2(10)6.5 E(4.1.3. \(*,G\) State)117 231 Q
F0 11(....................)1.62 G F2(10)6.5 E(4.1.4. \(S,G\) State)117
243 Q F0 11(....................)1.06 G F2(11)6.5 E
(4.1.5. \(S,G,rpt\) State)117 255 Q F0 11(...................)1.2 G F2
(13)6.5 E(4.1.6. State Summarization Macros)117 267 Q F0 11
(..............)11.9 G F2(13)6.5 E(4.2. Data P)107 279 Q(ack)-.15 E
(et F)-.1 E(orw)-.15 E(arding Rules)-.1 E F0 11(...............)9.77 G
F2(16)6.5 E(4.2.1. Last hop switcho)117 291 Q -.15(ve)-.15 G 2.5(rt).15
G 2.5(ot)-2.5 G(he SPT)-2.5 E F0 11(..............)2.47 G F2(19)6.5 E
(4.2.2. Setting and Clearing the \(S,G\) SPT bit)117 303 Q F0 11
(............)1.33 G F2(19)6.5 E
(4.3. Designated Routers \(DR\) and Hello Messages)107 315 Q F0 11
(...........)2.06 G F2(20)6.5 E(4.3.1. Sending Hello Messages)117 327 Q
F0 11(................)1.62 G F2(20)6.5 E(4.3.2. DR Election)117 339 Q
F0 11(...................)9.53 G F2(21)6.5 E
(4.3.3. Reducing Prune Propag)117 351 Q(ation Delay on LANs)-.05 E F0 11
(..........)2.24 G F2(23)6.5 E(4.4. PIM Re)107 363 Q(gister Messages)
-.15 E F0 11(.................)9.41 G F2(25)6.5 E(4.4.1. Sending Re)117
375 Q(gister Messages from the DR)-.15 E F0 11(...........)6.36 G F2(25)
6.5 E(4.4.2. Recei)117 387 Q(ving Re)-.25 E(gister Messages at the RP)
-.15 E F0 11(...........)12.72 G F2(29)6.5 E
(4.5. PIM Join/Prune Messages)107 399 Q F0 11(................)13.56 G
F2(30)6.5 E(4.5.1. Recei)117 411 Q(ving \(*,*,RP\) Join/Prune Messages)
-.25 E F0 11(...........)5.9 G F2(30)6.5 E(4.5.2. Recei)117 423 Q
(ving \(*,G\) Join/Prune Messages)-.25 E F0 11(............)4.66 G F2
(33)6.5 E(4.5.3. Recei)117 435 Q(ving \(S,G\) Join/Prune Messages)-.25 E
F0 11(............)4.1 G F2(36)6.5 E(4.5.4. Recei)117 447 Q
(ving \(S,G,rpt\) Join/Prune Messages)-.25 E F0 11(...........)4.24 G F2
(39)6.5 E(4.5.5. Sending \(*,*,RP\) Join/Prune Messages)117 459 Q F0 11
(...........)13.42 G F2(43)6.5 E
(4.5.6. Sending \(*,G\) Join/Prune Messages)117 471 Q F0 11
(............)12.18 G F2(47)6.5 E
(4.5.7. Sending \(S,G\) Join/Prune Messages)117 483 Q F0 11
(............)11.62 G F2(50)6.5 E(4.5.8. \(S,G,rpt\) Periodic Messages)
117 495 Q F0 11(...............)1.49 G F2(54)6.5 E
(4.5.9. State Machine for \(S,G,rpt\) T)117 507 Q(riggered Messages)-.35
E F0 11(.........)4.09 G F2(55)6.5 E(4.6. PIM Assert Messages)107 519 Q
F0 11(..................)3.29 G F2(58)6.5 E
(4.6.1. \(S,G\) Assert Message State Machine)117 531 Q F0 11
(............)8.03 G F2(58)6.5 E
(4.6.2. \(*,G\) Assert Message State Machine)117 543 Q F0 11
(............)8.59 G F2(64)6.5 E(4.6.3. Assert Metrics)117 555 Q F0 11
(...................).65 G F2(69)6.5 E(4.6.4. AssertCancel Messages)117
567 Q F0 11(................)5.8 G F2(70)6.5 E
(4.6.5. Assert State Macros)117 579 Q F0 11(.................)6.21 G F2
(71)6.5 E(4.7. PIM Multicast Border Router Beha)107 591 Q(vior)-.2 E F0
11(.............)2.24 G F2(73)6.5 E
(4.7.1. Sources External to the PIM-SM Domain)117 603 Q F0 11
(...........)3.43 G F2(73)6.5 E
(4.7.2. Sources Internal to the PIM-SM Domain)117 615 Q F0 11
(...........)6.21 G F2(74)6.5 E(4.8. PIM Bootstrap and RP Disco)107 627
Q -.15(ve)-.15 G(ry).15 E F0 11(..............)11.36 G F2(74)6.5 E
(4.8.1. Group-to-RP Mapping)117 639 Q F0 11(................)9.67 G F2
(75)6.5 E(4.8.2. Hash Function)117 651 Q F0 11(...................).64 G
F2(76)6.5 E(4.9. Source-Speci\214c Multicast)107 663 Q F0 11
(.................).65 G F2(77)6.5 E
(4.9.1. Protocol Modi\214cations for SSM destination addresses)117 675 Q
F0 11(.......)8.42 G F2(77)6.5 E(4.9.2. PIM-SSM-only Routers)117 687 Q
F0 11(................)4.66 G F2(77)6.5 E(4.10. PIM P)107 699 Q(ack)-.15
E(et F)-.1 E(ormats)-.15 E F0 11(..................)3.68 G F2(78)6.5 E
(4.10.1. Encoded Source and Group Address F)117 711 Q(ormats)-.15 E F0
11(.........)11.1 G F2(79)6.5 E(4.10.2. Hello Message F)117 723 Q(ormat)
-.15 E F0 11(................)4.55 G F2(81)6.5 E F0(Fenner/Handle)72 769
Q(y/Holbrook/K)-.165 E(ouv)-.385 E 232.471(elas [P)-.165 F(age 2])-.165
E EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 10/Times-Roman@0 SF
(4.10.3. Re)117 84 Q(gister Message F)-.15 E(ormat)-.15 E F0 11
(...............)7.34 G F1(84)6.5 E(4.10.4. Re)117 96 Q
(gisterStop Message F)-.15 E(ormat)-.15 E F0 11(..............)2.75 G F1
(84)6.5 E(4.10.5. Join/Prune Message F)117 108 Q(ormat)-.15 E F0 11
(..............)11.49 G F1(85)6.5 E
(4.10.5.1. Group Set Source List Rules)127 120 Q F0 11(.............)
4.81 G F1(88)6.5 E(4.10.5.2. Group Set Fragmentation)127 132 Q F0 11
(..............)3.84 G F1(90)6.5 E(4.10.6. Assert Message F)117 144 Q
(ormat)-.15 E F0 11(................)1.22 G F1(91)6.5 E(4.11. PIM T)107
156 Q(imers)-.35 E F0 11(....................)9.74 G F1(92)6.5 E
(4.12. T)107 168 Q(imer V)-.35 E(alues)-1.11 E F0 11
(....................)4.75 G F1(93)6.5 E(5. IAN)97 180 Q 2.5(AC)-.35 G
(onsiderations)-2.5 E F0 11(...................)7.11 G F1(96)6.5 E
(5.1. PIM Address F)107 192 Q(amily)-.15 E F0 11(..................)6.76
G F1(96)6.5 E(5.2. PIM Hello Options)107 204 Q F0 11
(...................).08 G F1(97)6.5 E(6. Security Considerations)97 216
Q F0 11(..................)12.17 G F1(97)6.5 E
(6.1. Attacks based on for)107 228 Q(ged messages)-.18 E F0 11
(..............)8.49 G F1(97)6.5 E(6.1.1. F)117 240 Q(or)-.15 E
(ged link-local messages)-.18 E F0 11(...............)5.15 G F1(97)6.5 E
(6.1.2. F)117 252 Q(or)-.15 E(ged unicast messages)-.18 E F0 11
(................)1.4 G F1(97)6.5 E
(6.2. Non-cryptographic Authentication Mechanisms)107 264 Q F0 11
(..........)9.42 G F1(98)6.5 E(6.3. Authentication using IPsec)107 276 Q
F0 11(................)10.23 G F1(98)6.5 E
(6.3.1. Protecting link-local multicast messages)117 288 Q F0 11
(...........)7.87 G F1(98)6.5 E(6.3.2. Protecting unicast messages)117
300 Q F0 11(...............)2.04 G F1(99)6.5 E(6.3.2.1. Re)127 312 Q
(gister messages)-.15 E F0 11(................)9.55 G F1(99)6.5 E
(6.3.2.2. Re)127 324 Q(gister Stop messages)-.15 E F0 11
(...............)2.46 G F1(99)6.5 E(6.4. Denial of Service Attacks)107
336 Q F0 11(.................)1.22 G F1(99)6.5 E(7. Authors' Addresses)
97 348 Q F0 11(....................)1.35 G F1(100)1.5 E(8. Ackno)97 360
Q(wledgments)-.25 E F0 11(....................)5.76 G F1(100)1.5 E
(9. References)97 372 Q F0 11(......................)8.58 G F1(100)1.5 E
(10. Inde)97 384 Q(x)-.15 E F0 11(.......................)11.63 G F1
(102)1.5 E/F2 13/Times-Bold@0 SF(List of Figur)247.674 436 Q(es)-.234 E
F1(Figure 1. Per)97 474 Q(-\(S,G\) re)-.2 E
(gister state-machine at a DR)-.15 E F0 11(............).06 G F1(25)6.5
E(Figure 2. Do)97 486 Q(wnstream \(*,*,RP\) per)-.25 E(-interf)-.2 E
(ace state-machine)-.1 E F0 11(.........)4.58 G F1(31)6.5 E
(Figure 3. Do)97 498 Q(wnstream \(*,G\) per)-.25 E(-interf)-.2 E
(ace state-machine)-.1 E F0 11(..........)3.34 G F1(34)6.5 E
(Figure 4. Do)97 510 Q(wnstream per)-.25 E(-interf)-.2 E
(ace \(S,G\) state-machine)-.1 E F0 11(..........)2.78 G F1(37)6.5 E
(Figure 5. Do)97 522 Q(wnstream per)-.25 E(-interf)-.2 E
(ace \(S,G,rpt\) state-machine)-.1 E F0 11(.........)2.92 G F1(40)6.5 E
(Figure 6. Upstream \(*,*,RP\) state-machine)97 534 Q F0 11
(..............)1.08 G F1(44)6.5 E
(Figure 7. Upstream \(*,G\) state-machine)97 546 Q F0 11(..............)
13.59 G F1(47)6.5 E(Figure 8. Upstream \(S,G\) state-machine)97 558 Q F0
11(..............)13.03 G F1(50)6.5 E
(Figure 9. Upstream \(S,G,rpt\) state-machine for triggered messages)97
570 Q F0 11(.......)2.64 G F1(55)6.5 E(Figure 10. Per)97 582 Q(-interf)
-.2 E(ace \(S,G\) Assert State-machine)-.1 E F0 11(...........)7.1 G F1
(59)6.5 E(Figure 11. \(*,G\) Assert State-machine)97 594 Q F0 11
(...............)6.5 G F1(65)6.5 E F0(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 232.471(elas [P)-.165 F(age 3])-.165 E
EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF(1.)72
85 Q/F2 14/Times-Bold@0 SF(Intr)5.5 E(oduction)-.252 E F0
(This document speci\214es a protocol for ef)72 101.6 Q
(\214ciently routing multicast groups that may span wide-)-.275 E
(area \(and inter)72 114.6 Q(-domain\) internets.)-.22 E
(This protocol is called Protocol Independent Multicast - Sparse)5.5 E(\
Mode \(PIM-SM\) because, although it may use the underlying unicast rou\
ting to pro)72 127.6 Q(vide re)-.165 E -.165(ve)-.275 G(rse-).165 E
(path information for multicast tree b)72 140.6 Q
(uilding, it is not dependent on an)-.22 E 2.75(yp)-.165 G
(articular unicast routing)-2.75 E(protocol.)72 153.6 Q(PIM-SM v)72
170.2 Q(ersion 2 w)-.165 E
(as originally speci\214ed in RFC 2117, and re)-.11 E
(vised in RFC 2362.)-.275 E(This)5.5 E(document is intended to obsolete\
 RFC 2362, and to correct a number of de\214ciencies that ha)72 183.2 Q
-.165(ve)-.22 G(been identi\214ed with the w)72 196.2 Q(ay PIM-SM w)-.11
E(as pre)-.11 E(viously speci\214ed.)-.275 E(As f)5.5 E
(ar as possible, this document)-.11 E
(speci\214es the same protocol as RFC 2362, and only di)72 209.2 Q -.165
(ve)-.275 G -.198(rg).165 G(es from the beha).198 E
(vior intended by RFC)-.22 E(2362 when the pre)72 222.2 Q
(viously speci\214ed beha)-.275 E(vior w)-.22 E(as clearly incorrect.)
-.11 E(Routers implemented)5.5 E(according to the speci\214cation in th\
is document will be able to successfully interoperate with)72 235.2 Q
(routers implemented according to RFC 2362.)72 248.2 Q F1(2.)72 274.2 Q
F2 -1.288(Te)5.5 G(rminology)1.288 E F0(In this document, the k)72 290.8
Q .33 -.165(ey w)-.11 H(ords "MUST", "MUST NO).055 E(T", "REQ)-.44 E
(UIRED", "SHALL", "SHALL)-.11 E(NO)72 303.8 Q(T", "SHOULD", "SHOULD NO)
-.44 E(T", "RECOMMENDED", "MA)-.44 E(Y", and "OPTION)-1.155 E
(AL" are to)-.385 E
(be interpreted as described in RFC 2119 and indicate requirement le)72
316.8 Q -.165(ve)-.275 G(ls for compliant PIM-SM).165 E
(implementations.)72 329.8 Q F1(2.1.)72 355.8 Q/F3 13/Times-Bold@0 SF
(De\214nitions)5.5 E F0(This speci\214cation uses a number of terms to \
refer to the roles of routers participating in PIM-SM.)72 372.4 Q
(The follo)72 385.4 Q(wing terms ha)-.275 E .33 -.165(ve s)-.22 H
(pecial signi\214cance for PIM-SM:).165 E(Rendezv)72 402 Q
(ous Point \(RP\):)-.22 E(An RP is a router that has been con\214gured \
to be used as the root of the non-source-)105 415 Q(speci\214c distrib)
105 428 Q(ution tree for a multicast group.)-.22 E
(Join messages from recei)5.5 E -.165(ve)-.275 G(rs for a group).165 E
(are sent to)105 441 Q -.11(wa)-.275 G(rds the RP).11 E 2.75(,a)-1.221 G
(nd data from senders is sent to the RP so that recei)-2.75 E -.165(ve)
-.275 G(rs can).165 E(disco)105 454 Q -.165(ve)-.165 G 2.75(rw).165 G
(ho the senders are, and start to recei)-2.75 E .33 -.165(ve t)-.275 H
(raf).165 E(\214c destined for the group.)-.275 E
(Designated Router \(DR\):)72 470.6 Q 2.75(As)105 483.6 S
(hared-media LAN lik)-2.75 E 2.75(eE)-.11 G(thernet may ha)-2.75 E .33
-.165(ve m)-.22 H(ultiple PIM-SM routers connected to it.).165 E(If)5.5
E(the LAN has directly connected hosts, then a single one of these rout\
ers, the DR, will act)105 496.6 Q
(on behalf of those hosts with respect to the PIM-SM protocol.)105 509.6
Q 2.75(As)5.5 G(ingle DR is elected per)-2.75 E(interf)105 522.6 Q
(ace \(LAN or otherwise\) using a simple election process.)-.11 E(MRIB)
72 539.2 Q(Multicast Routing Information Base.)105 552.2 Q
(This is the multicast topology table, which is)5.5 E(typically deri)105
565.2 Q -.165(ve)-.275 G 2.75(df).165 G
(rom the unicast routing table, or routing protocols such as MBGP that)
-2.75 E(carry multicast-speci\214c topology information.)105 578.2 Q
(In PIM-SM, the MRIB is used to decide)5.5 E
(where to send Join/Prune messages.)105 591.2 Q 2.75(As)5.5 G
(econdary function of the MRIB is to pro)-2.75 E(vide)-.165 E(routing m\
etrics for destination addresses, these metrics are used when sending a\
nd)105 604.2 Q(processing Assert messages.)105 617.2 Q(RPF Neighbor)72
633.8 Q(RPF stands for "Re)105 646.8 Q -.165(ve)-.275 G(rse P).165 E
(ath F)-.165 E(orw)-.165 E 2.75(arding". The)-.11 F
(RPF Neighbor of a router with respect to)2.75 E(an address is the neig\
hbor that the MRIB indicates should be used to forw)105 659.8 Q
(ard pack)-.11 E(ets to)-.11 E(that address.)105 672.8 Q(In the case of\
 a PIM-SM multicast group, the RPF neighbor is the router that)5.5 E
2.75(aJ)105 685.8 S(oin message for that group w)-2.75 E
(ould be directed to, in the absence of modifying Assert)-.11 E(state.)
105 698.8 Q(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E
174.721(elas Section)-.165 F 2.75(2.1. [P)2.75 F(age 4])-.165 E EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E 12.529(TIB T)72 85 R
(ree Information Base.)-.385 E
(This is the collection of state at a PIM router that has been created)
5.5 E(by recei)105 98 Q
(ving PIM Join/Prune messages, PIM Assert messages, and IGMP or MLD)
-.275 E(information from local hosts.)105 111 Q
(It essentially stores the state of all multicast distrib)5.5 E(ution)
-.22 E(trees at that router)105 124 Q(.)-.605 E 3.355(MFIB Multicast)72
140.6 R -.165(Fo)2.75 G(rw).165 E(arding Information Base.)-.11 E
(The TIB holds all the state that is necessary to)5.5 E(forw)105 153.6 Q
(ard multicast pack)-.11 E(ets at a router)-.11 E 5.5(.H)-.605 G -.275
(ow)-5.5 G -2.365 -.275(ev e).275 H .88 -.44(r, a).275 H
(lthough this speci\214cation de\214nes).44 E(forw)105 166.6 Q
(arding in terms of the TIB, to actually forw)-.11 E(ard pack)-.11 E
(ets using the TIB is v)-.11 E(ery)-.165 E(inef)105 179.6 Q 2.75
(\214cient. Instead)-.275 F 2.75(ar)2.75 G
(eal router implementation will normally b)-2.75 E(uild an ef)-.22 E
(\214cient MFIB)-.275 E(from the TIB state to perform forw)105 192.6 Q
2.75(arding. Ho)-.11 F 2.75(wt)-.275 G
(his is done is implementation-speci\214c,)-2.75 E
(and is not discussed in this document.)105 205.6 Q(Upstream)72 222.2 Q
-1.265 -.88(To w)105 235.2 T(ards the root of the tree.).77 E
(The root of tree may either be the source or the RP)5.5 E
(depending on the conte)105 248.2 Q(xt.)-.165 E(Do)72 264.8 Q(wnstream)
-.275 E -.836 -1.012(Aw a)105 277.8 T 2.75(yf)1.012 G
(rom the root of the tree.)-2.75 E/F1 11/Times-Bold@0 SF(2.2.)72 303.8 Q
/F2 13/Times-Bold@0 SF(Pseudocode Notation)5.5 E F0 1.76 -.88(We u)72
320.4 T(se set notation in se).88 E -.165(ve)-.275 G
(ral places in this speci\214cation.).165 E/F3 11/Courier@0 SF 6.6(A\()
72 337 S(+\) B)-6.6 E F0(is the union of tw)94 350 Q 2.75(os)-.11 G
(ets A and B.)-2.75 E F3 6.6(A\()72 366.6 S(-\) B)-6.6 E F0
(is the elements of set A that are not in set B.)94 379.6 Q F3(NULL)72
396.2 Q F0(is the empty set or list.)94 409.2 Q
(In addition we use C-lik)72 425.8 Q 2.75(es)-.11 G(yntax:)-2.75 E
15.796(=d)72 442.4 S(enotes assignment of a v)-15.796 E(ariable.)-.275 E
6.842(== denotes)72 459 R 2.75(ac)2.75 G(omparison for equality)-2.75 E
(.)-.715 E 9.383(!= denotes)72 475.6 R 2.75(ac)2.75 G
(omparison for inequality)-2.75 E(.)-.715 E
(Braces { and } are used for grouping.)72 492.2 Q F1(3.)72 521.8 Q/F4 14
/Times-Bold@0 SF(PIM-SM Pr)5.5 E(otocol Ov)-.252 E(er)-.14 E(view)-.14 E
F0(This section pro)72 538.4 Q(vides an o)-.165 E -.165(ve)-.165 G(rvie)
.165 E 2.75(wo)-.275 G 2.75(fP)-2.75 G(IM-SM beha)-2.75 E(vior)-.22 E
5.5(.I)-.605 G 2.75(ti)-5.5 G 2.75(si)-2.75 G
(ntended as an introduction to ho)-2.75 E(w)-.275 E(PIM-SM w)72 551.4 Q
(orks, and is)-.11 E F1(NO)2.75 E(T)-.44 E F0(de\214niti)2.75 E -.165
(ve)-.275 G 5.5(.F).165 G(or the de\214niti)-5.665 E .33 -.165(ve s)
-.275 H(peci\214cation, see Section 4.).165 E
(PIM relies on an underlying topology-g)72 568 Q
(athering protocol to populate a routing table with routes.)-.055 E(Thi\
s routing table is called the MRIB or Multicast Routing Information Bas\
e.)72 581 Q(The routes in this)5.5 E(table may be tak)72 594 Q
(en directly from the unicast routing table, or it may be dif)-.11 E
(ferent and pro)-.275 E(vided by)-.165 E 2.75(as)72 607 S
(eparate routing protocol such as MBGP [1]. Re)-2.75 E -.055(ga)-.165 G
(rdless of ho).055 E 2.75(wi)-.275 G 2.75(ti)-2.75 G 2.75(sc)-2.75 G
(reated, the primary role of)-2.75 E
(the MRIB in the PIM protocol is to pro)72 620 Q(vide the ne)-.165 E
(xt hop router along a multicast-capable path to)-.165 E
(each destination subnet.)72 633 Q(The MRIB is used to determine the ne)
5.5 E(xt hop neighbor to which an)-.165 E 2.75(yP)-.165 G(IM)-2.75 E
(Join/Prune message is sent.)72 646 Q(Data \215o)5.5 E(ws along the re)
-.275 E -.165(ve)-.275 G(rse path of the Join messages.).165 E(Thus, in)
5.5 E(contrast to the unicast RIB which speci\214es the ne)72 659 Q
(xt hop that a data pack)-.165 E(et w)-.11 E(ould tak)-.11 E 2.75(et)
-.11 G 2.75(og)-2.75 G(et)-2.75 E/F5 11/Times-Italic@0 SF(to)2.75 E F0
(some subnet, the MRIB gi)72 672 Q -.165(ve)-.275 G 2.75(sr).165 G
-2.365 -.275(ev e)-2.75 H
(rse-path information, and indicates the path that a multicast).275 E
(data pack)72 685 Q(et w)-.11 E(ould tak)-.11 E(e)-.11 E F5(fr)2.75 E
(om)-.495 E F0(its origin subnet to the router that has the MRIB.)2.75 E
(Lik)72 701.6 Q 2.75(ea)-.11 G(ll multicast routing protocols that impl\
ement the service model from RFC 1112 [3], PIM-)-2.75 E
(SM must be able to route data pack)72 714.6 Q
(ets from sources to recei)-.11 E -.165(ve)-.275 G
(rs without either the sources or).165 E(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 182.971(elas Section)-.165 F 2.75
(3. [P)2.75 F(age 5])-.165 E EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(recei)72 85 Q -.165(ve)-.275
G(rs kno).165 E(wing a-priori of the e)-.275 E(xistence of the others.)
-.165 E(This is essentially done in three phases,)5.5 E
(although as senders and recei)72 98 Q -.165(ve)-.275 G
(rs may come and go at an).165 E 2.75(yt)-.165 G
(ime, all three phases may be occur)-2.75 E(simultaneously)72 111 Q(.)
-.715 E/F1 11/Times-Bold@0 SF(Phase One: RP T)72 137 Q -.198(re)-.814 G
(e).198 E F0(In phase one, a multicast recei)72 153.6 Q -.165(ve)-.275 G
2.75(re).165 G(xpresses its interest in recei)-2.915 E(ving traf)-.275 E
(\214c destined for a multicast)-.275 E 2.75(group. T)72 166.6 R
(ypically it does this using IGMP [6] or MLD [4], b)-.88 E
(ut other mechanisms might also serv)-.22 E(e)-.165 E(this purpose.)72
179.6 Q(One of the recei)5.5 E -.165(ve)-.275 G(r').165 E 2.75(sl)-.605
G(ocal routers is elected as the Designated Router \(DR\) for that)-2.75
E 2.75(subnet. On)72 192.6 R(recei)2.75 E(ving the recei)-.275 E -.165
(ve)-.275 G(r').165 E 2.75(se)-.605 G
(xpression of interest, the DR then sends a PIM Join message)-2.915 E
(to)72 205.6 Q -.11(wa)-.275 G(rds the RP for that multicast group.).11
E(This Join message is kno)5.5 E(wn as a \(*,G\) Join because it)-.275 E
(joins group G for all sources to that group.)72 218.6 Q
(The \(*,G\) Join tra)5.5 E -.165(ve)-.22 G(ls hop-by-hop to).165 E -.11
(wa)-.275 G(rds the RP for).11 E(the group, and in each router it passe\
s through, multicast tree state for group G is instantiated.)72 231.6 Q
(Ev)72 244.6 Q(entually the \(*,G\) Join either reaches the RP)-.165 E
2.75(,o)-1.221 G 2.75(rr)-2.75 G
(eaches a router that already has \(*,G\) Join)-2.75 E
(state for that group.)72 257.6 Q(When man)5.5 E 2.75(yr)-.165 G(ecei)
-2.75 E -.165(ve)-.275 G(rs join the group, their Join messages con).165
E -.165(ve)-.44 G -.198(rg).165 G 2.75(eo).198 G 2.75(nt)-2.75 G(he)
-2.75 E(RP)72 270.6 Q 2.75(,a)-1.221 G(nd form a distrib)-2.75 E
(ution tree for group G that is rooted at the RP)-.22 E 5.5(.T)-1.221 G
(his is kno)-5.5 E(wn as the RP T)-.275 E(ree)-.385 E
(\(RPT\), and is also kno)72 283.6 Q(wn as the shared tree because it i\
s shared by all sources sending to that)-.275 E 2.75(group. Join)72
296.6 R(messages are resent periodically so long as the recei)2.75 E
-.165(ve)-.275 G 2.75(rr).165 G(emains in the group.)-2.75 E(When)5.5 E
(all recei)72 309.6 Q -.165(ve)-.275 G(rs on a leaf-netw).165 E(ork lea)
-.11 E .33 -.165(ve t)-.22 H
(he group, the DR will send a PIM \(*,G\) Prune message).165 E(to)72
322.6 Q -.11(wa)-.275 G(rds the RP for that multicast group. Ho).11 E
(we)-.275 E -.165(ve)-.275 G 2.75(ri).165 G 2.75(ft)-2.75 G
(he Prune message is not sent for an)-2.75 E 2.75(yr)-.165 G(eason,)
-2.75 E(the state will e)72 335.6 Q -.165(ve)-.275 G(ntually time out.)
.165 E 2.75(Am)72 352.2 S(ulticast data sender just starts sending data\
 destined for a multicast group.)-2.75 E(The sender')5.5 E 2.75(sl)-.605
G(ocal)-2.75 E(router \(DR\) tak)72 365.2 Q(es those data pack)-.11 E
(ets, unicast-encapsulates them, and sends them directly to the)-.11 E
(RP)72 378.2 Q 5.5(.T)-1.221 G(he RP recei)-5.5 E -.165(ve)-.275 G 2.75
(st).165 G(hese encapsulated data pack)-2.75 E
(ets, decapsulates them, and forw)-.11 E(ards them onto)-.11 E
(the shared tree.)72 391.2 Q(The pack)5.5 E(ets then follo)-.11 E 2.75
(wt)-.275 G(he \(*,G\) multicast tree state in the routers on the RP)
-2.75 E -.385(Tr)72 404.2 S(ee, being replicated where).385 E -.165(ve)
-.275 G 2.75(rt).165 G(he RP T)-2.75 E(ree branches, and e)-.385 E -.165
(ve)-.275 G(ntually reaching all the recei).165 E -.165(ve)-.275 G(rs)
.165 E(for that multicast group.)72 417.2 Q
(The process of encapsulating data pack)5.5 E
(ets to the RP is called re)-.11 E(gistering,)-.165 E
(and the encapsulation pack)72 430.2 Q(ets are kno)-.11 E(wn as PIM Re)
-.275 E(gister pack)-.165 E(ets.)-.11 E
(At the end of phase one, multicast traf)72 446.8 Q(\214c is \215o)-.275
E(wing encapsulated to the RP)-.275 E 2.75(,a)-1.221 G(nd then nati)
-2.75 E -.165(ve)-.275 G(ly o).165 E -.165(ve)-.165 G(r).165 E
(the RP tree to the multicast recei)72 459.8 Q -.165(ve)-.275 G(rs.).165
E F1(Phase T)72 498.8 Q -.11(wo)-.814 G 2.75(:R).11 G(egister Stop)-2.75
E F0(Re)72 515.4 Q(gister)-.165 E(-encapsulation of data pack)-.22 E
(ets is inef)-.11 E(\214cient for tw)-.275 E 2.75(or)-.11 G(easons:)
-2.75 E 7.15<8345>72 532 S(ncapsulation and decapsulation may be relati)
-7.15 E -.165(ve)-.275 G(ly e).165 E(xpensi)-.165 E .33 -.165(ve o)-.275
H(perations for a router to).165 E
(perform, depending on whether or not the router has appropriate hardw)
83 545 Q(are for these tasks.)-.11 E 7.15<8354>72 561.6 S(ra)-7.535 E
-.165(ve)-.22 G(ling all the w).165 E(ay to the RP)-.11 E 2.75(,a)-1.221
G(nd then back do)-2.75 E(wn the shared tree may entail the pack)-.275 E
(ets)-.11 E(tra)83 574.6 Q -.165(ve)-.22 G(ling a relati).165 E -.165
(ve)-.275 G(ly long distance to reach recei).165 E -.165(ve)-.275 G
(rs that are close to the sender).165 E 5.5(.F)-.605 G(or some)-5.665 E
(applications, this increased latenc)83 587.6 Q 2.75(yi)-.165 G 2.75(su)
-2.75 G(ndesirable.)-2.75 E(Although Re)72 604.2 Q(gister)-.165 E
(-encapsulation may continue inde\214nitely)-.22 E 2.75(,f)-.715 G
(or these reasons, the RP will)-2.75 E
(normally choose to switch to nati)72 617.2 Q .33 -.165(ve f)-.275 H
(orw).165 E 2.75(arding. T)-.11 F 2.75(od)-.88 G 2.75(ot)-2.75 G
(his, when the RP recei)-2.75 E -.165(ve)-.275 G 2.75(sar).165 G -.165
(eg)-2.75 G(ister).165 E(-)-.22 E(encapsulated data pack)72 630.2 Q(et \
from source S on group G, it will normally initiate an \(S,G\) source-)
-.11 E(speci\214c Join to)72 643.2 Q -.11(wa)-.275 G(rds S.).11 E
(This Join message tra)5.5 E -.165(ve)-.22 G(ls hop-by-hop to).165 E
-.11(wa)-.275 G(rds S, instantiating \(S,G\)).11 E
(multicast tree state in the routers along the path.)72 656.2 Q
(\(S,G\) multicast tree state is used only to forw)5.5 E(ard)-.11 E
(pack)72 669.2 Q(ets for group G if those pack)-.11 E
(ets come from source S.)-.11 E(Ev)5.5 E
(entually the Join message reaches)-.165 E(S')72 682.2 Q 2.75(ss)-.605 G
(ubnet or a router that already has \(S,G\) multicast tree state, and t\
hen pack)-2.75 E(ets from S start to)-.11 E<8d6f>72 695.2 Q 2.75(wf)
-.275 G(ollo)-2.75 E(wing the \(S,G\) tree state to)-.275 E -.11(wa)
-.275 G(rds the RP).11 E 5.5(.T)-1.221 G(hese data pack)-5.5 E
(ets may also reach routers)-.11 E(with \(*,G\) state along the path to)
72 708.2 Q -.11(wa)-.275 G(rds the RP - if so, the).11 E 2.75(yc)-.165 G
(an short-cut onto the RP tree at this)-2.75 E(point.)72 721.2 Q
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 182.971
(elas Section)-.165 F 2.75(3. [P)2.75 F(age 6])-.165 E EP
%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(While the RP is in the proc\
ess of joining the source-speci\214c tree for S, the data pack)72 85 Q
(ets will)-.11 E(continue being encapsulated to the RP)72 98 Q 5.5(.W)
-1.221 G(hen pack)-5.5 E(ets from S also start to arri)-.11 E .33 -.165
(ve n)-.275 H(ati).165 E -.165(ve)-.275 G(ly at the).165 E(the RP)72 111
Q 2.75(,t)-1.221 G(he RP will be recei)-2.75 E(ving tw)-.275 E 2.75(oc)
-.11 G(opies of each of these pack)-2.75 E 2.75(ets. At)-.11 F
(this point, the RP starts)2.75 E(to discard the encapsulated cop)72 124
Q 2.75(yo)-.11 G 2.75(ft)-2.75 G(hese pack)-2.75 E
(ets, and it sends a Re)-.11 E(gisterStop message back to S')-.165 E(s)
-.605 E(DR to pre)72 137 Q -.165(ve)-.275 G
(nt the DR unnecessarily encapsulating the pack).165 E(ets.)-.11 E
(At the end of phase 2, traf)72 153.6 Q(\214c will be \215o)-.275 E
(wing nati)-.275 E -.165(ve)-.275 G
(ly from S along a source-speci\214c tree to the).165 E(RP)72 166.6 Q
2.75(,a)-1.221 G(nd from there along the shared tree to the recei)-2.75
E -.165(ve)-.275 G 2.75(rs. Where).165 F(the tw)2.75 E 2.75(ot)-.11 G
(rees intersect, traf)-2.75 E<8c63>-.275 E
(may transfer from the source-speci\214c tree to the RP tree, and so a)
72 179.6 Q -.22(vo)-.22 G(id taking a long detour via the).22 E(RP)72
192.6 Q(.)-1.221 E(It should be noted that a sender may start sending b\
efore or after a recei)72 209.2 Q -.165(ve)-.275 G 2.75(rj).165 G
(oins the group, and)-2.75 E(thus phase tw)72 222.2 Q 2.75(om)-.11 G
(ay happen before the shared tree to the recei)-2.75 E -.165(ve)-.275 G
2.75(ri).165 G 2.75(sb)-2.75 G(uilt.)-2.97 E/F1 11/Times-Bold@0 SF
(Phase 3: Shortest-P)72 261.2 Q(ath T)-.11 E -.198(re)-.814 G(e).198 E
F0(Although ha)72 277.8 Q(ving the RP join back to)-.22 E -.11(wa)-.275
G(rds the source remo).11 E -.165(ve)-.165 G 2.75(st).165 G
(he encapsulation o)-2.75 E -.165(ve)-.165 G(rhead, it does).165 E
(not completely optimize the forw)72 290.8 Q(arding paths.)-.11 E -.165
(Fo)5.5 G 2.75(rm).165 G(an)-2.75 E 2.75(yr)-.165 G(ecei)-2.75 E -.165
(ve)-.275 G(rs the route via the RP may).165 E(in)72 303.8 Q -.22(vo)
-.44 G(lv).22 E 2.75(eas)-.165 G(igni\214cant detour when compared with\
 the shortest path from the source to the recei)-2.75 E -.165(ve)-.275 G
-.605(r.).165 G 1.76 -.88(To o)72 320.4 T(btain lo).88 E
(wer latencies, a router on the recei)-.275 E -.165(ve)-.275 G(r').165 E
2.75(sL)-.605 G(AN, typically the DR, may optionally)-2.75 E(initiate a\
 transfer from the shared tree to a source-speci\214c shortest-path tre\
e \(SPT\).)72 333.4 Q 1.76 -.88(To d)5.5 H 2.75(ot).88 G(his, it)-2.75 E
(issues an \(S,G\) Join to)72 346.4 Q -.11(wa)-.275 G(rds S.).11 E
(This instantiates state in the routers along the path to S.)5.5 E(Ev)72
359.4 Q(entually this join either reaches S')-.165 E 2.75(ss)-.605 G
(ubnet, or reaches a router that already has \(S,G\) state.)-2.75 E
(When this happens, data pack)72 372.4 Q(ets from S start to \215o)-.11
E 2.75(wf)-.275 G(ollo)-2.75 E(wing the \(S,G\) state until the)-.275 E
2.75(yr)-.165 G(each the)-2.75 E(recei)72 385.4 Q -.165(ve)-.275 G -.605
(r.).165 G(At this point the recei)72 402 Q -.165(ve)-.275 G 2.75(r\()
.165 G(or a router upstream of the recei)-2.75 E -.165(ve)-.275 G
(r\) will be recei).165 E(ving tw)-.275 E 2.75(oc)-.11 G(opies of the)
-2.75 E(data - one from the SPT and one from the RPT)72 415 Q 5.5(.W)
-.814 G(hen the \214rst traf)-5.5 E(\214c starts to arri)-.275 E .33
-.165(ve f)-.275 H(rom the).165 E(SPT)72 428 Q 2.75(,t)-.814 G
(he DR or upstream router starts to drop the pack)-2.75 E
(ets for G from S that arri)-.11 E .33 -.165(ve v)-.275 H
(ia the RP tree.).165 E
(In addition, it sends an \(S,G\) Prune message to)72 441 Q -.11(wa)
-.275 G(rds the RP).11 E 5.5(.T)-1.221 G(his is kno)-5.5 E
(wn as an \(S,G,rpt\) Prune.)-.275 E(The Prune message tra)72 454 Q
-.165(ve)-.22 G(ls hop-by-hop, instantiating state along the path to)
.165 E -.11(wa)-.275 G(rds the RP).11 E(indicating that traf)72 467 Q
(\214c from S for G should NO)-.275 E 2.75(Tb)-.44 G 2.75(ef)-2.75 G
(orw)-2.75 E(arded in this direction.)-.11 E(The prune is)5.5 E(propag)
72 480 Q
(ated until it reaches the RP or a router that still needs the traf)
-.055 E(\214c from S for other recei)-.275 E -.165(ve)-.275 G(rs.).165 E
(By no)72 496.6 Q 1.43 -.715(w, t)-.275 H(he recei).715 E -.165(ve)-.275
G 2.75(rw).165 G(ill be recei)-2.75 E(ving traf)-.275 E
(\214c from S along the shortest-path tree between the)-.275 E(recei)72
509.6 Q -.165(ve)-.275 G 2.75(ra).165 G(nd S.)-2.75 E
(In addition, the RP is recei)5.5 E(ving the traf)-.275 E
(\214c from S, b)-.275 E(ut this traf)-.22 E(\214c is no longer)-.275 E
(reaching the recei)72 522.6 Q -.165(ve)-.275 G 2.75(ra).165 G
(long the RP tree.)-2.75 E(As f)5.5 E(ar as the recei)-.11 E -.165(ve)
-.275 G 2.75(ri).165 G 2.75(sc)-2.75 G(oncerned, this is the \214nal)
-2.75 E(distrib)72 535.6 Q(ution tree.)-.22 E F1(Sour)72 574.6 Q
(ce-speci\214c J)-.198 E(oins)-.165 E F0(IGMPv3 permits a recei)72 591.2
Q -.165(ve)-.275 G 2.75(rt).165 G 2.75(oj)-2.75 G
(oin a group and specify that it only w)-2.75 E(ants to recei)-.11 E .33
-.165(ve t)-.275 H(raf).165 E(\214c for a)-.275 E(group if that traf)72
604.2 Q(\214c comes from a particular source.)-.275 E(If a recei)5.5 E
-.165(ve)-.275 G 2.75(rd).165 G(oes this, and no other recei)-2.75 E
-.165(ve)-.275 G(r).165 E(on the LAN requires all the traf)72 617.2 Q
(\214c for the group, then the DR may omit performing a \(*,G\) join to)
-.275 E(set up the shared tree, and instead issue a source-speci\214c \
\(S,G\) join only)72 630.2 Q(.)-.715 E(The range of multicast addresses\
 from 232.0.0.0 to 232.255.255.255 is currently set aside for)72 646.8 Q
(source-speci\214c multicast in IPv4.)72 659.8 Q -.165(Fo)5.5 G 2.75(rg)
.165 G(roups in this range, recei)-2.75 E -.165(ve)-.275 G
(rs should only issue source-).165 E(speci\214c IGMPv3 joins.)72 672.8 Q
(If a PIM router recei)5.5 E -.165(ve)-.275 G 2.75(san).165 G
(on-source-speci\214c join for a group in this)-2.75 E
(range, it should ignore it, as described in Section 4.9.)72 685.8 Q
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 182.971
(elas Section)-.165 F 2.75(3. [P)2.75 F(age 7])-.165 E EP
%%Page: 8 8
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF(Sour)
72 85 Q(ce-speci\214c Prunes)-.198 E F0(IGMPv3 also permits a recei)72
101.6 Q -.165(ve)-.275 G 2.75(rt).165 G 2.75(oj)-2.75 G
(oin a group and specify that it only w)-2.75 E(ants to recei)-.11 E .33
-.165(ve t)-.275 H(raf).165 E(\214c for)-.275 E 2.75(ag)72 114.6 S
(roup if that traf)-2.75 E<8c63>-.275 E/F2 11/Times-Italic@0 SF
(does not)2.75 E F0(come from a speci\214c source or sources.)2.75 E
(In this case, the DR will)5.5 E(perform a \(*,G\) join as normal, b)72
127.6 Q(ut may combine this with an \(S,G,rpt\) prune for each of the)
-.22 E(sources the recei)72 140.6 Q -.165(ve)-.275 G 2.75(rd).165 G
(oes not wish to recei)-2.75 E -.165(ve)-.275 G(.).165 E F1
(Multi-access T)72 179.6 Q(ransit LANs)-.814 E F0(The o)72 196.2 Q -.165
(ve)-.165 G(rvie).165 E 2.75(ws)-.275 G 2.75(of)-2.75 G
(ar has concerned itself with point-to-point links.)-2.86 E(Ho)5.5 E(we)
-.275 E -.165(ve)-.275 G .88 -.44(r, u).165 H(sing multi-access).44 E
(LANs such as Ethernet for transit is not uncommon.)72 209.2 Q
(This can cause complications for three)5.5 E(reasons:)72 222.2 Q 7.15
<8354>72 238.8 S .22 -.11(wo o)-8.03 H 2.75(rm).11 G
(ore routers on the LAN may issue \(*,G\) Joins to dif)-2.75 E
(ferent upstream routers on the)-.275 E(LAN because the)83 251.8 Q 2.75
(yh)-.165 G -2.475 -.22(av e)-2.75 H(inconsistent MRIB entries re)2.97 E
-.055(ga)-.165 G(rding ho).055 E 2.75(wt)-.275 G 2.75(or)-2.75 G
(each the RP)-2.75 E 5.5(.B)-1.221 G(oth paths)-5.5 E
(on the RP tree will be set up, causing tw)83 264.8 Q 2.75(oc)-.11 G
(opies of all the shared tree traf)-2.75 E(\214c to appear on the)-.275
E(LAN.)83 277.8 Q 7.15<8354>72 294.4 S .22 -.11(wo o)-8.03 H 2.75(rm).11
G(ore routers on the LAN may issue \(S,G\) Joins to dif)-2.75 E
(ferent upstream routers on the)-.275 E(LAN because the)83 307.4 Q 2.75
(yh)-.165 G -2.475 -.22(av e)-2.75 H(inconsistent MRIB entries re)2.97 E
-.055(ga)-.165 G(rding ho).055 E 2.75(wt)-.275 G 2.75(or)-2.75 G
(each source S.)-2.75 E(Both)5.5 E
(paths on the source-speci\214c tree will be set up, causing tw)83 320.4
Q 2.75(oc)-.11 G(opies of all the traf)-2.75 E(\214c from S to)-.275 E
(appear on the LAN.)83 333.4 Q 7.15<8341>72 350 S(router on the LAN may\
 issue a \(*,G\) Join to one upstream router on the LAN, and another)
-4.4 E(router on the LAN may issue an \(S,G\) Join to a dif)83 363 Q
(ferent upstream router on the same LAN.)-.275 E -.385(Tr)83 376 S(af)
.385 E(\214c from S may reach the LAN o)-.275 E -.165(ve)-.165 G 2.75
(rb).165 G(oth the RPT and the SPT)-2.75 E 5.5(.I)-.814 G 2.75(ft)-5.5 G
(he recei)-2.75 E -.165(ve)-.275 G 2.75(rb).165 G(ehind the)-2.75 E(do)
83 389 Q(wnstream \(*,G\) router doesn')-.275 E 2.75(ti)-.198 G
(ssue an \(S,G,rpt\) prune, then this condition w)-2.75 E(ould persist.)
-.11 E(All of these problems are caused by there being more than one up\
stream router with join state for)72 405.6 Q
(the group or source-group pair)72 418.6 Q 5.5(.P)-.605 G
(IM does not pre)-5.5 E -.165(ve)-.275 G
(nt such duplicate joins from occurring -).165 E
(instead when duplicate data pack)72 431.6 Q
(ets appear on the LAN from dif)-.11 E(ferent routers, these routers)
-.275 E(notice this, and then elect a single forw)72 444.6 Q(arder)-.11
E 5.5(.T)-.605 G(his election is performed using PIM Assert)-5.5 E
(messages, which resolv)72 457.6 Q 2.75(et)-.165 G(he problem in f)-2.75
E -.22(avo)-.11 G 2.75(ro).22 G 2.75(ft)-2.75 G
(he upstream router which has \(S,G\) state, or if)-2.75 E
(neither or both router has \(S,G\) state, then in f)72 470.6 Q -.22
(avo)-.11 G 2.75(ro).22 G 2.75(ft)-2.75 G
(he router with the best metric to the RP for)-2.75 E
(RP trees, or the best metric to the source to source-speci\214c trees.)
72 483.6 Q(These Assert messages are also recei)72 500.2 Q -.165(ve)
-.275 G 2.75(db).165 G 2.75(yt)-2.75 G(he do)-2.75 E
(wnstream routers on the LAN, and these cause)-.275 E
(subsequent Join messages to be sent to the upstream router that w)72
513.2 Q(on the Assert.)-.11 E F1(RP Disco)72 539.2 Q -.11(ve)-.11 G(ry)
.11 E F0(PIM-SM routers need to kno)72 555.8 Q 2.75(wt)-.275 G
(he address of the RP for each group for which the)-2.75 E 2.75(yh)-.165
G -2.475 -.22(av e)-2.75 H(\(*,G\))2.97 E 2.75(state. This)72 568.8 R(a\
ddress is obtained either through a bootstrap mechanism or through stat\
ic)2.75 E(con\214guration.)72 581.8 Q(One dynamic w)72 598.4 Q(ay to do\
 this is to use the Bootstrap Router \(BSR\) mechanism [7]. One router \
in)-.11 E(each PIM domain is elected the Bootstrap Router through a sim\
ple election process.)72 611.4 Q(All the)5.5 E(routers in the domain th\
at are con\214gured to be candidates to be RPs periodically unicast the\
ir)72 624.4 Q(candidac)72 637.4 Q 2.75(yt)-.165 G 2.75(ot)-2.75 G
(he BSR.)-2.75 E
(From the candidates, the BSR picks an RP-set, and periodically)5.5 E
(announces this set in a Bootstrap message.)72 650.4 Q
(Bootstrap messages are \215ooded hop-by-hop)5.5 E
(throughout the domain until all routers in the domain kno)72 663.4 Q
2.75(wt)-.275 G(he RP-Set.)-2.75 E 1.76 -.88(To m)72 680 T
(ap a group to an RP).88 E 2.75(,ar)-1.221 G
(outer hashes the group address into the RP-set using an order)-2.75 E
(-)-.22 E(preserving hash function \(one that minimizes changes if the \
RP set changes\).)72 693 Q(The resulting RP is)5.5 E
(the one that it uses as the RP for that group.)72 706 Q(Fenner/Handle)
72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 182.971(elas Section)-.165 F
2.75(3. [P)2.75 F(age 8])-.165 E EP
%%Page: 9 9
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF(4.)72
85 Q/F2 14/Times-Bold@0 SF(Pr)5.5 E(otocol Speci\214cation)-.252 E F0
(The speci\214cation of PIM-SM is brok)72 101.6 Q(en into se)-.11 E
-.165(ve)-.275 G(ral parts:).165 E 7.15<8353>72 118.2 S
(ection 4.1 details the protocol state stored.)-7.15 E 7.15<8353>72
134.8 S(ection 4.2 speci\214es the data pack)-7.15 E(et forw)-.11 E
(arding rules.)-.11 E 7.15<8353>72 151.4 S(ection 4.3. speci\214es Desi\
gnated Router \(DR\) election and the rules for sending and processing)
-7.15 E(Hello messages.)83 164.4 Q 7.15<8353>72 181 S
(ection 4.4 speci\214es the PIM Re)-7.15 E
(gister generation and processing rules.)-.165 E 7.15<8353>72 197.6 S(e\
ction 4.5 speci\214es the PIM Join/Prune generation and processing rule\
s.)-7.15 E 7.15<8353>72 214.2 S
(ection 4.6 speci\214es the PIM Assert generation and processing rules.)
-7.15 E 7.15<8353>72 230.8 S(ection 4.8 speci\214es the RP disco)-7.15 E
-.165(ve)-.165 G(ry mechanisms.).165 E 7.15<8354>72 247.4 S(he subset o\
f PIM required to support Source-Speci\214c Multicast, PIM-SSM, is desc\
ribed in)-7.15 E(Section 4.9.)83 260.4 Q 7.15<8350>72 277 S(IM pack)
-7.15 E(et formats are speci\214ed in Section 4.10.)-.11 E 7.15<8341>72
293.6 S(summary of PIM-SM timers and their def)-4.4 E(ault v)-.11 E
(alues is gi)-.275 E -.165(ve)-.275 G 2.75(ni).165 G 2.75(nS)-2.75 G
(ection 4.11.)-2.75 E F1(4.1.)72 319.6 Q/F3 13/Times-Bold@0 SF(PIM Pr)
5.5 E(otocol State)-.234 E F0(This section speci\214es all the protocol\
 state that a PIM implementation should maintain in order to)72 336.2 Q
(function correctly)72 349.2 Q 5.5(.W)-.715 G 2.75(et)-6.38 G
(erm this state the)-2.75 E/F4 11/Times-Italic@0 SF -1.947 -.605(Tr e)
2.75 H 2.75(eI).605 G(nformation Base)-2.75 E F0
(or TIB, as it holds the state of all)2.75 E(the multicast distrib)72
362.2 Q(ution trees at this router)-.22 E 5.5(.I)-.605 G 2.75(nt)-5.5 G
(his speci\214cation we de\214ne PIM mechanisms in)-2.75 E
(terms of the TIB.)72 375.2 Q(Ho)5.5 E(we)-.275 E -.165(ve)-.275 G .88
-.44(r, o).165 H(nly a v).44 E(ery simple implementation w)-.165 E
(ould actually implement pack)-.11 E(et)-.11 E(forw)72 388.2 Q
(arding operations in terms of this state.)-.11 E
(Most implementations will use this state to b)5.5 E(uild a)-.22 E
(multicast forw)72 401.2 Q(arding table, which w)-.11 E
(ould then be updated when the rele)-.11 E -.275(va)-.275 G
(nt state in the TIB).275 E(changes.)72 414.2 Q
(Although we specify precisely the state to be k)72 430.8 Q
(ept, this does not mean that an implementation of)-.11 E
(PIM-SM needs to hold the state in this form.)72 443.8 Q
(This is actually an abstract state de\214nition, which is)5.5 E
(needed in order to specify the router')72 456.8 Q 2.75(sb)-.605 G(eha)
-2.75 E(vior)-.22 E 5.5(.A)-.605 G
(PIM-SM implementation is free to hold)-2.75 E(whate)72 469.8 Q -.165
(ve)-.275 G 2.75(ri).165 G(nternal state it requires, and will still be\
 conformant with this speci\214cation so long as it)-2.75 E
(results in the same e)72 482.8 Q(xternally visible protocol beha)-.165
E(vior as an abstract router that holds the)-.22 E(follo)72 495.8 Q
(wing state.)-.275 E 1.76 -.88(We d)72 512.4 T -.275(iv).88 G
(ide TIB state into four sections:).275 E(\(*,*,RP\) state)72 529 Q
(State that maintains per)97 542 Q(-RP trees, for all groups serv)-.22 E
(ed by a gi)-.165 E -.165(ve)-.275 G 2.75(nR).165 G -1.221(P.)-2.75 G
(\(*,G\) state)72 558.6 Q(State that maintains the RP tree for G.)97
571.6 Q(\(S,G\) state)72 588.2 Q(State that maintains a source-speci\
\214c tree for source S and group G.)97 601.2 Q(\(S,G,rpt\) state)72
617.8 Q(State that maintains source-speci\214c information about source\
 S on the RP tree for G.)97 630.8 Q -.165(Fo)5.5 G(r).165 E -.165(ex)97
643.8 S(ample, if a source is being recei).165 E -.165(ve)-.275 G 2.75
(do).165 G 2.75(nt)-2.75 G
(he source-speci\214c tree, it will normally ha)-2.75 E .33 -.165(ve b)
-.22 H(een).165 E(pruned of)97 656.8 Q 2.75(ft)-.275 G(he RP tree.)-2.75
E(This prune state is \(S,G,rpt\) state.)5.5 E
(The state that should be k)72 673.4 Q(ept is described belo)-.11 E 4.18
-.715(w. O)-.275 H 2.75(fc).715 G
(ourse, implementations will only maintain)-2.75 E
(state when it is rele)72 686.4 Q -.275(va)-.275 G(nt to forw).275 E
(arding operations - for e)-.11 E(xample, the "NoInfo" state might be)
-.165 E(assumed from the lack of other state information, rather than b\
eing held e)72 699.4 Q(xplicitly)-.165 E(.)-.715 E(Fenner/Handle)72 769
Q(y/Holbrook/K)-.165 E(ouv)-.385 E 174.721(elas Section)-.165 F 2.75
(4.1. [P)2.75 F(age 9])-.165 E EP
%%Page: 10 10
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF 2.75
(4.1.1. General)72 85 R(Pur)2.75 E(pose State)-.11 E F0 2.75(Ar)72 101.6
S(outer holds the follo)-2.75 E(wing non-group-speci\214c state:)-.275 E
-.165(Fo)97 118.2 S 2.75(re).165 G(ach interf)-2.75 E(ace:)-.11 E 7.15
<834f>122 134.8 S -.165(ve)-7.15 G(rride Interv).165 E(al)-.275 E 7.15
<8350>122 151.4 S(ropag)-7.15 E(ation Delay)-.055 E 7.15<8353>122 168 S
(uppression state: One of {"Enable", "Disable"})-7.15 E F1
(Neighbor State:)122 184.6 Q F0 -.165(Fo)133 201.2 S 2.75(re).165 G
(ach neighbor:)-2.75 E 7.15<8349>158 217.8 S(nformation from neighbor')
-7.15 E 2.75(sH)-.605 G(ello)-2.75 E 7.15<834e>158 234.4 S(eighbor')
-7.15 E 2.75(sG)-.605 G(en ID.)-2.75 E 7.15<834e>158 251 S(eighbor li)
-7.15 E -.165(ve)-.275 G(ness timer \(NL).165 E(T\))-1.012 E F1
(Designated Router \(DR\) State:)122 267.6 Q F0 7.15<8344>133 284.2 S
(esignated Router')-7.15 E 2.75(sI)-.605 G 2.75(PA)-2.75 G(ddress)-2.75
E 7.15<8344>133 300.8 S(R')-7.15 E 2.75(sD)-.605 G 2.75(RP)-2.75 G
(riority)-2.75 E(The Ov)72 317.4 Q(erride Interv)-.165 E(al, the Propag)
-.275 E(ation Delay and the Interf)-.055 E
(ace suppression state are described in)-.11 E
(section 4.3.3. Designated Router state is described in section 4.3.)72
330.4 Q F1 2.75(4.1.2. \(*,*,RP\))72 356.4 R(State)2.75 E F0 -.165(Fo)72
373 S 2.75(re).165 G -.165(ve)-3.025 G(ry RP a router k).165 E
(eeps the follo)-.11 E(wing state:)-.275 E F1(\(*,*,RP\) state:)97 389.6
Q F0 -.165(Fo)122 402.6 S 2.75(re).165 G(ach interf)-2.75 E(ace:)-.11 E
F1(PIM \(*,*,RP\) J)147 419.2 Q(oin/Prune State:)-.165 E F0 7.15<8353>
172 435.8 S
(tate: One of {"NoInfo" \(NI\), "Join" \(J\), "PrunePending" \(PP\)})
-7.15 E 7.15<8350>172 452.4 S(rune Pending T)-7.15 E(imer \(PPT\))-.385
E 7.15<834a>172 469 S(oin/Prune Expiry T)-7.15 E(imer \(ET\))-.385 E
(Not interf)122 485.6 Q(ace speci\214c:)-.11 E 7.15<8355>147 502.2 S
(pstream Join/Prune T)-7.15 E(imer \(JT\))-.385 E 7.15<834c>147 518.8 S
(ast RPF Neighbor to)-7.15 E -.11(wa)-.275 G(rds RP that w).11 E
(as used)-.11 E(PIM \(*,*,RP\) Join/Prune state is the result of recei)
72 535.4 Q(ving PIM \(*,*,RP\) Join/Prune messages on this)-.275 E
(interf)72 548.4 Q(ace, and is speci\214ed in section 4.5.1.)-.11 E(The\
 upstream \(*,*,RP\) Join/Prune timer is used to send out periodic Join\
\(*,*,RP\) messages, and)72 565 Q(to o)72 578 Q -.165(ve)-.165 G
(rride Prune\(*,*,RP\) messages from peers on an upstream LAN interf)
.165 E(ace.)-.11 E(The last RPF neighbor to)72 594.6 Q -.11(wa)-.275 G
(rds the RP is stored because if the MRIB changes then the RPF).11 E
(neighbor to)72 607.6 Q -.11(wa)-.275 G(rds the RP may change.).11 E
(If it does so, then we need to trigger a ne)5.5 E 2.75(wJ)-.275 G
(oin\(*,*,RP\) to)-2.75 E(the ne)72 620.6 Q 2.75(wu)-.275 G
(pstream neighbor and a Prune\(*,*,RP\) to the old upstream neighbor)
-2.75 E 5.5(.S)-.605 G(imilarly)-5.5 E 2.75(,i)-.715 G 2.75(fa)-2.75 G(\
router detects through a changed GenID in a Hello message that the upst\
ream neighbor to)72 633.6 Q -.11(wa)-.275 G(rds).11 E(the RP has reboot\
ed, then it should re-instantiate state by sending a Join\(*,*,RP\).)72
646.6 Q(These)5.5 E(mechanisms are speci\214ed in Section 4.5.5.)72
659.6 Q F1 2.75(4.1.3. \(*,G\))72 685.6 R(State)2.75 E F0 -.165(Fo)72
702.2 S 2.75(re).165 G -.165(ve)-3.025 G(ry group G a router k).165 E
(eeps the follo)-.11 E(wing state:)-.275 E(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.1.3. [P)2.75 F(age 10])-.165 E EP
%%Page: 11 11
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF
(\(*,G\) state:)97 85 Q F0 -.165(Fo)122 98 S 2.75(re).165 G(ach interf)
-2.75 E(ace:)-.11 E F1(Local Membership:)147 114.6 Q F0
(State: One of {"NoInfo", "Include"})172 127.6 Q F1(PIM \(*,G\) J)147
144.2 Q(oin/Prune State:)-.165 E F0 7.15<8353>172 160.8 S
(tate: One of {"NoInfo" \(NI\), "Join" \(J\), "PrunePending" \(PP\)})
-7.15 E 7.15<8350>172 177.4 S(rune Pending T)-7.15 E(imer \(PPT\))-.385
E 7.15<834a>172 194 S(oin/Prune Expiry T)-7.15 E(imer \(ET\))-.385 E F1
(\(*,G\) Assert W)147 210.6 Q(inner State)-.198 E F0 7.15<8353>172 227.2
S(tate: One of {"NoInfo" \(NI\), "I lost Assert" \(L\), "I w)-7.15 E
(on Assert" \(W\)})-.11 E 7.15<8341>172 243.8 S(ssert T)-7.15 E
(imer \(A)-.385 E(T\))-1.221 E 7.15<8341>172 260.4 S(ssert winner')-7.15
E 2.75(sI)-.605 G 2.75(PA)-2.75 G(ddress)-2.75 E 7.15<8341>172 277 S
(ssert winner')-7.15 E 2.75(sA)-.605 G(ssert Metric)-2.75 E(Not interf)
122 293.6 Q(ace speci\214c:)-.11 E 7.15<8355>147 310.2 S
(pstream Join/Prune T)-7.15 E(imer \(JT\))-.385 E 7.15<834c>147 326.8 S
(ast RP Used)-7.15 E 7.15<834c>147 343.4 S(ast RPF Neighbor to)-7.15 E
-.11(wa)-.275 G(rds RP that w).11 E(as used)-.11 E(Local membership is \
the result of the local membership mechanism \(such as IGMP or MLD\))72
360 Q(running on that interf)72 373 Q 2.75(ace. It)-.11 F(need not be k)
2.75 E(ept if this router is not the DR on that interf)-.11 E
(ace unless)-.11 E(this router w)72 386 Q
(on a \(*,G\) assert on this interf)-.11 E
(ace for this group, although implementations may)-.11 E(optionally k)72
399 Q(eep this state in case the)-.11 E 2.75(yb)-.165 G
(ecome the DR or assert winner)-2.75 E 5.5(.W)-.605 G 2.75(er)-6.38 G
(ecommend storing)-2.75 E
(this information if possible, as it reduces latenc)72 412 Q 2.75(yc)
-.165 G(on)-2.75 E -.165(ve)-.44 G -.198(rg).165 G
(ing to stable operating conditions after a).198 E -.11(fa)72 425 S
(ilure causing a change of DR.).11 E(This information is used by the)5.5
E/F2 11/Courier@0 SF(pim_include\(*,G\))2.75 E F0(macro)2.75 E
(described in section 4.1.6.)72 438 Q
(PIM \(*,G\) Join/Prune state is the result of recei)72 454.6 Q
(ving PIM \(*,G\) Join/Prune messages on this)-.275 E(interf)72 467.6 Q
(ace, and is speci\214ed in section 4.5.2. The state is used by the mac\
ros that calculate the)-.11 E(outgoing interf)72 480.6 Q
(ace list in section 4.1.6, and in the)-.11 E F2(JoinDesired\(*,G\))2.75
E F0(macro \(de\214ned in)2.75 E(section 4.5.6\) that is used in decidi\
ng whether a Join\(*,G\) should be sent upstream.)72 493.6 Q
(\(*,G\) Assert W)72 510.2 Q
(inner state is the result of sending or recei)-.44 E
(ving \(*,G\) Assert messages on this)-.275 E(interf)72 523.2 Q 2.75
(ace. It)-.11 F(is speci\214ed in section 4.6.2.)2.75 E(The upstream \(\
*,G\) Join/Prune timer is used to send out periodic Join\(*,G\) message\
s, and to)72 539.8 Q -.165(ove)72 552.8 S
(rride Prune\(*,G\) messages from peers on an upstream LAN interf).165 E
(ace.)-.11 E(The last RP used must be stored because if the RP Set chan\
ges \(section 4.8\) then state must be)72 569.4 Q(torn do)72 582.4 Q
(wn and reb)-.275 E(uilt for groups whose RP changes.)-.22 E
(The last RPF neighbor to)72 599 Q -.11(wa)-.275 G
(rds the RP is stored because if the MRIB changes then the RPF).11 E
(neighbor to)72 612 Q -.11(wa)-.275 G(rds the RP may change.).11 E
(If it does so, then we need to trigger a ne)5.5 E 2.75(wJ)-.275 G
(oin\(*,G\) to the)-2.75 E(ne)72 625 Q 2.75(wu)-.275 G
(pstream neighbor and a Prune\(*,G\) to the old upstream neighbor)-2.75
E 5.5(.S)-.605 G(imilarly)-5.5 E 2.75(,i)-.715 G 2.75(far)-2.75 G(outer)
-2.75 E(detects through a changed GenID in a Hello message that the ups\
tream neighbor to)72 638 Q -.11(wa)-.275 G(rds the RP).11 E(has reboote\
d, then it should re-instantiate state by sending a Join\(*,G\).)72 651
Q(These mechanisms are)5.5 E(speci\214ed in Section 4.5.6.)72 664 Q F1
2.75(4.1.4. \(S,G\))72 690 R(State)2.75 E F0 -.165(Fo)72 706.6 S 2.75
(re).165 G -.165(ve)-3.025 G(ry source/group pair \(S,G\) a router k)
.165 E(eeps the follo)-.11 E(wing state:)-.275 E(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.1.4. [P)2.75 F(age 11])-.165 E EP
%%Page: 12 12
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF
(\(S,G\) state:)97 85 Q F0 -.165(Fo)122 101.6 S 2.75(re).165 G
(ach interf)-2.75 E(ace:)-.11 E F1(Local Membership:)147 118.2 Q F0
(State: One of {"NoInfo", "Include"})172 131.2 Q F1(PIM \(S,G\) J)147
147.8 Q(oin/Prune State:)-.165 E F0 7.15<8353>172 164.4 S
(tate: One of {"NoInfo" \(NI\), "Join" \(J\), "PrunePending" \(PP\)})
-7.15 E 7.15<8350>172 181 S(rune Pending T)-7.15 E(imer \(PPT\))-.385 E
7.15<834a>172 197.6 S(oin/Prune Expiry T)-7.15 E(imer \(ET\))-.385 E F1
(\(S,G\) Assert W)147 214.2 Q(inner State)-.198 E F0 7.15<8353>172 230.8
S(tate: One of {"NoInfo" \(NI\), "I lost Assert" \(L\), "I w)-7.15 E
(on Assert" \(W\)})-.11 E 7.15<8341>172 247.4 S(ssert T)-7.15 E
(imer \(A)-.385 E(T\))-1.221 E 7.15<8341>172 264 S(ssert winner')-7.15 E
2.75(sI)-.605 G 2.75(PA)-2.75 G(ddress)-2.75 E 7.15<8341>172 280.6 S
(ssert winner')-7.15 E 2.75(sA)-.605 G(ssert Metric)-2.75 E(Not interf)
122 297.2 Q(ace speci\214c:)-.11 E 7.15<8355>147 313.8 S
(pstream \(S,G\) Join/Prune T)-7.15 E(imer \(JT\))-.385 E 7.15<834c>147
330.4 S(ast RPF Neighbor to)-7.15 E -.11(wa)-.275 G(rds S that w).11 E
(as used)-.11 E 7.15<8353>147 347 S
(PT bit \(indicates \(S,G\) state is acti)-7.15 E -.165(ve)-.275 G(\))
.165 E 7.15<8328>147 363.6 S(S,G\) K)-7.15 E(eepAli)-.275 E .33 -.165
(ve T)-.275 H(imer \(KA)-.22 E(T\))-1.221 E(Local membership is the res\
ult of the local source-speci\214c membership mechanism \(such as)72
380.2 Q(IGMP v)72 393.2 Q(ersion 3\) running on that interf)-.165 E
(ace and specifying that this particular source should be)-.11 E 2.75
(included. As)72 406.2 R
(stored here, this state is the resulting state after an)2.75 E 2.75(yI)
-.165 G(GMPv3 inconsistencies ha)-2.75 E -.165(ve)-.22 G(been resolv)72
419.2 Q 2.75(ed. It)-.165 F(need not be k)2.75 E
(ept if this router is not the DR on that interf)-.11 E
(ace unless this router)-.11 E -.11(wo)72 432.2 S 2.75(na\().11 G
(S,G\) assert on this interf)-2.75 E(ace for this group.)-.11 E(Ho)5.5 E
(we)-.275 E -.165(ve)-.275 G .88 -.44(r, w).165 H 2.75(er).44 G
(ecommend storing this)-2.75 E
(information if possible, as it reduces latenc)72 445.2 Q 2.75(yc)-.165
G(on)-2.75 E -.165(ve)-.44 G -.198(rg).165 G
(ing to stable operating conditions after a).198 E -.11(fa)72 458.2 S
(ilure causing a change of DR.).11 E(This information is used by the)5.5
E/F2 11/Courier@0 SF(pim_include\(S,G\))2.75 E F0(macro)2.75 E
(described in section 4.1.6.)72 471.2 Q
(PIM \(S,G\) Join/Prune state is the result of recei)72 487.8 Q
(ving PIM \(S,G\) Join/Prune messages on this)-.275 E(interf)72 500.8 Q
(ace, and is speci\214ed in section 4.5.2. The state is used by the mac\
ros that calculate the)-.11 E(outgoing interf)72 513.8 Q
(ace list in section 4.1.6, and in the)-.11 E F2(JoinDesired\(S,G\))2.75
E F0(macro \(de\214ned in)2.75 E(section 4.5.7\) that is used in decidi\
ng whether a Join\(S,G\) should be sent upstream.)72 526.8 Q
(\(S,G\) Assert W)72 543.4 Q
(inner state is the result of sending or recei)-.44 E
(ving \(S,G\) Assert messages on this)-.275 E(interf)72 556.4 Q 2.75
(ace. It)-.11 F(is speci\214ed in section 4.6.1.)2.75 E(The upstream \(\
S,G\) Join/Prune timer is used to send out periodic Join\(S,G\) message\
s, and to)72 573 Q -.165(ove)72 586 S
(rride Prune\(S,G\) messages from peers on an upstream LAN interf).165 E
(ace.)-.11 E(The last RPF neighbor to)72 602.6 Q -.11(wa)-.275 G
(rds S is stored because if the MRIB changes then the RPF neighbor).11 E
(to)72 615.6 Q -.11(wa)-.275 G(rds S may change.).11 E
(If it does so, then we need to trigger a ne)5.5 E 2.75(wJ)-.275 G
(oin\(S,G\) to the ne)-2.75 E 2.75(wu)-.275 G(pstream)-2.75 E
(neighbor and a Prune\(S,G\) to the old upstream neighbor)72 628.6 Q 5.5
(.S)-.605 G(imilarly)-5.5 E 2.75(,i)-.715 G 2.75(ft)-2.75 G
(he router detects through a)-2.75 E
(changed GenID in a Hello message that the upstream neighbor to)72 641.6
Q -.11(wa)-.275 G(rds S has rebooted, then it).11 E
(should re-instantiate state by sending a Join\(S,G\).)72 654.6 Q
(These mechanisms are speci\214ed in Section)5.5 E(4.5.7.)72 667.6 Q
(The SPTbit is used to indicate whether forw)72 684.2 Q
(arding is taking place on the \(S,G\) Shortest P)-.11 E(ath T)-.165 E
(ree)-.385 E(\(SPT\) or on the \(*,G\) tree.)72 697.2 Q 2.75(Ar)5.5 G
(outer can ha)-2.75 E .33 -.165(ve \()-.22 H
(S,G\) state and still be forw).165 E(arding on \(*,G\) state)-.11 E
(during the interv)72 710.2 Q
(al when the source-speci\214c tree is being constructed.)-.275 E
(When SPTbit is F)5.5 E(ALSE,)-.814 E(only \(*,G\) forw)72 723.2 Q
(arding state is used to forw)-.11 E(ard pack)-.11 E(ets from S to G.)
-.11 E(When SPTbit is TR)5.5 E(UE, both)-.44 E(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.1.4. [P)2.75 F(age 12])-.165 E EP
%%Page: 13 13
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(\(*,G\) and \(S,G\) forw)72
85 Q(arding state are used.)-.11 E(The \(S,G\) K)72 101.6 Q(eepali)-.275
E .33 -.165(ve T)-.275 H(imer is updated by data being forw)-.22 E
(arded using this \(S,G\) forw)-.11 E(arding state.)-.11 E
(It is used to k)72 114.6 Q(eep \(S,G\) state ali)-.11 E .33 -.165(ve i)
-.275 H 2.75(nt).165 G(he absence of e)-2.75 E(xplicit \(S,G\) Joins.)
-.165 E(Amongst other things,)5.5 E(this is necessary for the so-called\
 "turnaround rules" - when the RP uses \(S,G\) joins to stop)72 127.6 Q
(encapsulation, and then \(S,G\) prunes to pre)72 140.6 Q -.165(ve)-.275
G(nt traf).165 E(\214c from unnecessarily reaching the RP)-.275 E(.)
-1.221 E/F1 11/Times-Bold@0 SF 2.75(4.1.5. \(S,G,r)72 166.6 R
(pt\) State)-.11 E F0 -.165(Fo)72 183.2 S 2.75(re).165 G -.165(ve)-3.025
G(ry source/group pair \(S,G\) for which a router also has \(*,G\) stat\
e, it also k).165 E(eeps the)-.11 E(follo)72 196.2 Q(wing state:)-.275 E
F1(\(S,G,r)97 212.8 Q(pt\) state:)-.11 E F0 -.165(Fo)122 229.4 S 2.75
(re).165 G(ach interf)-2.75 E(ace:)-.11 E F1(Local Membership:)147 246 Q
F0(State: One of {"NoInfo", "Exclude"})172 259 Q F1(PIM \(S,G,r)147
275.6 Q(pt\) J)-.11 E(oin/Prune State:)-.165 E F0 7.15<8353>172 292.2 S
(tate: One of {"NoInfo", "Pruned", "PrunePending"})-7.15 E 7.15<8350>172
308.8 S(rune Pending T)-7.15 E(imer \(PPT\))-.385 E 7.15<834a>172 325.4
S(oin/Prune Expiry T)-7.15 E(imer \(ET\))-.385 E(Not interf)122 342 Q
(ace speci\214c:)-.11 E F1(Upstr)147 358.6 Q(eam \(S,G,r)-.198 E(pt\) J)
-.11 E(oin/Prune State:)-.165 E F0 7.15<8353>172 375.2 S
(tate: One of {"NotJoined\(*,G\)", "NotPruned\(S,G,rpt\)",)-7.15 E
("Pruned\(S,G,rpt\)"})183 388.2 Q 7.15<834f>172 404.8 S -.165(ve)-7.15 G
(rride T).165 E(imer \(O)-.385 E(T\))-.44 E(Local membership is the res\
ult of the local source-speci\214c membership mechanism \(such as)72
421.4 Q(IGMPv3\) running on that interf)72 434.4 Q
(ace and specifying that although there is \(*,G\) Include state, this)
-.11 E(particular source should be e)72 447.4 Q 2.75(xcluded. As)-.165 F
(stored here, this state is the resulting state after an)2.75 E(y)-.165
E(IGMPv3 inconsistencies between LAN members ha)72 460.4 Q .33 -.165
(ve b)-.22 H(een resolv).165 E 2.75(ed. It)-.165 F(need not be k)2.75 E
(ept if this)-.11 E(router is not the DR on that interf)72 473.4 Q
(ace unless this router w)-.11 E(on a \(*,G\) assert on this interf)-.11
E(ace for this)-.11 E 2.75(group. Ho)72 486.4 R(we)-.275 E -.165(ve)
-.275 G .88 -.44(r, w).165 H 2.75(er).44 G
(ecommend storing this information if possible, as it reduces latenc)
-2.75 E(y)-.165 E(con)72 499.4 Q -.165(ve)-.44 G -.198(rg).165 G
(ing to stable operating conditions after a f).198 E
(ailure causing a change of DR.)-.11 E(This)5.5 E
(information is used by the)72 512.4 Q/F2 11/Courier@0 SF
(pim_exclude\(S,G\))2.75 E F0(macro described in section 4.1.6.)2.75 E
(PIM \(S,G,rpt\) Join/Prune state is the result of recei)72 529 Q
(ving PIM \(S,G,rpt\) Join/Prune messages on)-.275 E(this interf)72 542
Q(ace, and is speci\214ed in section 4.5.4. The state is used by the ma\
cros that calculate the)-.11 E(outgoing interf)72 555 Q(ace list in sec\
tion 4.1.6, and in the rules for adding Prune\(S,G,rpt\) messages to)
-.11 E(Join\(*,G\) messages speci\214ed in section 4.5.8.)72 568 Q
(The upstream \(S,G,rpt\) Join/Prune state is used along with the Ov)72
584.6 Q(erride T)-.165 E(imer to send the correct)-.385 E -.165(ove)72
597.6 S(rride messages in response to Join/Prune messages sent by upstr\
eam peers on a LAN.).165 E(This)5.5 E(state and beha)72 610.6 Q
(vior are speci\214ed in section 4.5.9.)-.22 E F1 2.75(4.1.6. State)72
636.6 R(Summarization Macr)2.75 E(os)-.198 E F0
(Using this state, we de\214ne the follo)72 653.2 Q
(wing "macro" de\214nitions which we will use in the descriptions)-.275
E(of the state machines and pseudocode in the follo)72 666.2 Q
(wing sections.)-.275 E
(The most important macros are those that de\214ne the outgoing interf)
72 682.8 Q(ace list \(or "olist"\) for the)-.11 E(rele)72 695.8 Q -.275
(va)-.275 G(nt state.).275 E(An olist can be "immediate" if it is b)5.5
E(uilt directly from the state of the rele)-.22 E -.275(va)-.275 G
(nt type.).275 E -.165(Fo)72 708.8 S 2.75(re).165 G
(xample, the immediate_olist\(S,G\) is the olist that w)-2.915 E
(ould be b)-.11 E(uilt if the router only had \(S,G\))-.22 E
(state and no \(*,G\) or \(S,G,rpt\) state.)72 721.8 Q
(In contrast, the "inherited" olist inherits state from other)5.5 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.1.6. [P)2.75 F(age 13])-.165 E EP
%%Page: 14 14
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E 2.75(types. F)72 85 R(or e)
-.165 E(xample, the inherited_olist\(S,G\) is the olist that is rele)
-.165 E -.275(va)-.275 G(nt for forw).275 E(arding a pack)-.11 E(et)-.11
E(from S to G using both source-speci\214c and group-speci\214c state.)
72 98 Q
(There is no immediate_olist\(S,G,rpt\) as \(S,G,rpt\) state is ne)72
114.6 Q -.055(ga)-.165 G(ti).055 E .33 -.165(ve s)-.275 H
(tate - it remo).165 E -.165(ve)-.165 G 2.75(si).165 G(nterf)-2.75 E
(aces in)-.11 E
(the \(*,G\) olist from the olist that is actually used to forw)72 127.6
Q(ard traf)-.11 E 2.75(\214c. The)-.275 F(inherited_olist\(S,G,rpt\) is)
2.75 E(therefore the olist that w)72 140.6 Q(ould be used for a pack)
-.11 E(et from S to G forw)-.11 E(arding on the RP tree.)-.11 E(It is a)
5.5 E(strict subset of immediate_olist\(*,G\).)72 153.6 Q
(Generally speaking, the inherited olists are used for forw)72 170.2 Q
(arding, and the immediate_olists are)-.11 E(used to mak)72 183.2 Q 2.75
(ed)-.11 G(ecisions about state maintenance.)-2.75 E/F1 11/Courier@0 SF
(immediate_olist\(*,*,RP\) =)72 209.2 Q(joins\(*,*,RP\))98.4 222.2 Q
(immediate_olist\(*,G\) =)72 248.2 Q
(joins\(*,G\) \(+\) pim_include\(*,G\) \(-\) lost_assert\(*,G\))98.4
261.2 Q(immediate_olist\(S,G\) =)72 287.2 Q
(joins\(S,G\) \(+\) pim_include\(S,G\) \(-\) lost_assert\(S,G\))98.4
300.2 Q(inherited_olist\(S,G,rpt\) =)72 326.2 Q 6.6(\(j)124.8 339.2 S
(oins\(*,*,RP\(G\)\) \(+\) joins\(*,G\) \(-\) prunes\(S,G,rpt\) \))-6.6
E(\(+\) \( pim_include\(*,G\) \(-\) pim_exclude\(S,G\)\))98.4 352.2 Q
(\(-\) \( lost_assert\(*,G\) \(+\) lost_assert\(S,G,rpt\) \))98.4 365.2
Q(inherited_olist\(S,G\) =)72 391.2 Q
(inherited_olist\(S,G,rpt\) \(+\) immediate_olist\(S,G\))98.4 404.2 Q F0
(The macros pim_include\(*,G\) and pim_include\(S,G\) indicate the inte\
rf)72 420.8 Q(aces to which traf)-.11 E(\214c might)-.275 E(be forw)72
433.8 Q(arded because of hosts that are local members on that interf)
-.11 E 2.75(ace. Note)-.11 F(that normally only)2.75 E
(the DR cares about local membership, b)72 446.8 Q
(ut when an assert happens, the assert winner tak)-.22 E(es o)-.11 E
-.165(ve)-.165 G(r).165 E(responsibility for forw)72 459.8 Q
(arding traf)-.11 E(\214c to local members that ha)-.275 E .33 -.165
(ve r)-.22 H(equested traf).165 E(\214c on a group or)-.275 E
(source/group pair)72 472.8 Q(.)-.605 E F1(pim_include\(*,G\) =)72 502.4
Q 6.6({a)91.8 515.4 S(ll interfaces I such that:)-6.6 E 6.6(\(\(I)105
528.4 S(_am_DR\( I \) AND lost_assert\(*,G,I\) == FALSE \))-6.6 E
(OR AssertWinner\(*,G,I\) == me \))118.2 541.4 Q 6.6
(AND local_receiver_include\(*,G,I\))105 554.4 R(})6.6 E
(pim_include\(S,G\) =)72 580.4 Q 6.6({a)98.4 593.4 S
(ll interfaces I such that:)-6.6 E 6.6(\(\()111.6 606.4 S
(I_am_DR\( I \) AND lost_assert\(S,G,I\) == FALSE \))-6.6 E
(OR AssertWinner\(S,G,I\) == me \))124.8 619.4 Q 6.6
(AND local_receiver_include\(S,G,I\))118.2 632.4 R(})6.6 E
(pim_exclude\(S,G\) =)72 658.4 Q 6.6({a)98.4 671.4 S
(ll interfaces I such that:)-6.6 E 6.6(\(\()111.6 684.4 S
(I_am_DR\( I \) AND lost_assert\(S,G,I\) == FALSE \))-6.6 E
(OR AssertWinner\(S,G,I\) == me \))124.8 697.4 Q 6.6
(AND local_receiver_exclude\(S,G,I\))118.2 710.4 R(})6.6 E F0
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.1.6. [P)2.75 F(age 14])-.165 E EP
%%Page: 15 15
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(The clause "local_recei)72
85 Q -.165(ve)-.275 G
(r_include\(S,G,I\)" is true if the IGMP/MLD module or other local).165
E(membership mechanism has determined that there are local members on i\
nterf)72 98 Q(ace I that desire to)-.11 E(recei)72 111 Q .33 -.165(ve t)
-.275 H(raf).165 E(\214c sent speci\214cally by S to G.)-.275 E
("local_recei)5.5 E -.165(ve)-.275 G(r_include\(*,G,I\)" is true if the)
.165 E(IGMP/MLD module or other local membership mechanism has determin\
ed that there are local)72 124 Q(members on interf)72 137 Q
(ace I that desire to recei)-.11 E .33 -.165(ve a)-.275 H(ll traf).165 E
(\214c sent to G.)-.275 E("local_recei)5.5 E -.165(ve)-.275 G(r_e).165 E
(xclude\(S,G,I\))-.165 E(is true if local_recei)72 150 Q -.165(ve)-.275
G(r_include\(*,G,I\) is true b).165 E
(ut none of the local members desire to recei)-.22 E -.165(ve)-.275 G
(traf)72 163 Q(\214c from S.)-.275 E
(The set "joins\(*,*,RP\)" is the set of all interf)72 179.6 Q
(aces on which the router has recei)-.11 E -.165(ve)-.275 G 2.75(d\()
.165 G(*,*,RP\) Joins:)-2.75 E/F1 11/Courier@0 SF(joins\(*,*,RP\) =)72
196.2 Q 6.6({a)98.4 209.2 S(ll interfaces I such that)-6.6 E
(DownstreamJPState\(*,*,RP,I\) is either Join or)111.6 222.2 Q
(PrunePending })138 235.2 Q F0(Do)72 251.8 Q(wnstreamJPState\(*,*,RP)
-.275 E
(,I\) is the state of the \214nite state machine in section 4.5.1.)
-1.221 E(The set "joins\(*,G\)" is the set of all interf)72 268.4 Q
(aces on which the router has recei)-.11 E -.165(ve)-.275 G 2.75(d\()
.165 G(*,G\) Joins:)-2.75 E F1(joins\(*,G\) =)72 285 Q 6.6({a)98.4 298 S
(ll interfaces I such that)-6.6 E
(DownstreamJPState\(*,G,I\) is either Join or PrunePending })111.6 311 Q
F0(Do)72 327.6 Q(wnstreamJPState\(*,G,I\) is the state of the \214nite \
state machine in section 4.5.2.)-.275 E
(The set "joins\(S,G\)" is the set of all interf)72 344.2 Q
(aces on which the router has recei)-.11 E -.165(ve)-.275 G 2.75(d\()
.165 G(S,G\) Joins:)-2.75 E F1(joins\(S,G\) =)72 360.8 Q 6.6({a)98.4
373.8 S(ll interfaces I such that)-6.6 E
(DownstreamJPState\(S,G,I\) is either Join or PrunePending })111.6 386.8
Q F0(Do)72 403.4 Q(wnstreamJPState\(S,G,I\) is the state of the \214nit\
e state machine in section 4.5.3.)-.275 E
(The set "prunes\(S,G,rpt\)" is the set of all interf)72 420 Q
(aces on which the router has recei)-.11 E -.165(ve)-.275 G 2.75(d\()
.165 G(*,G\) joins)-2.75 E(and \(S,G,rpt\) prunes.)72 433 Q F1
(prunes\(S,G,rpt\) =)72 449.6 Q 6.6({a)98.4 462.6 S
(ll interfaces I such that)-6.6 E
(DownstreamJPState\(S,G,rpt,I\) is Prune or PruneTmp })111.6 475.6 Q F0
(Do)72 492.2 Q(wnstreamJPState\(S,G,rpt,I\) is the state of the \214nit\
e state machine in section 4.5.4.)-.275 E
(The set "lost_assert\(*,G\)" is the set of all interf)72 508.8 Q
(aces on which the router has recei)-.11 E -.165(ve)-.275 G 2.75(d\()
.165 G(*,G\) joins)-2.75 E -.22(bu)72 521.8 S 2.75(th).22 G
(as lost a \(*,G\) assert.)-2.75 E
(The macro lost_assert\(*,G,I\) is de\214ned in Section 4.6.5.)5.5 E F1
(lost_assert\(*,G\) =)72 538.4 Q 6.6({a)98.4 551.4 S
(ll interfaces I such that)-6.6 E(lost_assert\(*,G,I\) == TRUE })111.6
564.4 Q F0(The set "lost_assert\(S,G,rpt\)" is the set of all interf)72
581 Q(aces on which the router has recei)-.11 E -.165(ve)-.275 G 2.75
(d\().165 G(*,G\))-2.75 E(joins b)72 594 Q
(ut has lost an \(S,G\) assert.)-.22 E
(The macro lost_assert\(S,G,rpt,I\) is de\214ned in Section 4.6.5.)5.5 E
F1(lost_assert\(S,G,rpt\) =)72 610.6 Q 6.6({a)98.4 623.6 S
(ll interfaces I such that)-6.6 E(lost_assert\(S,G,rpt,I\) == TRUE })
111.6 636.6 Q F0(The set "lost_assert\(S,G\)" is the set of all interf)
72 653.2 Q(aces on which the router has recei)-.11 E -.165(ve)-.275 G
2.75(d\().165 G(S,G\) joins)-2.75 E -.22(bu)72 666.2 S 2.75(th).22 G
(as lost an \(S,G\) assert.)-2.75 E
(The macro lost_assert\(S,G,I\) is de\214ned in Section 4.6.5.)5.5 E F1
(lost_assert\(S,G\) =)72 682.8 Q 6.6({a)98.4 695.8 S
(ll interfaces I such that)-6.6 E(lost_assert\(S,G,I\) == TRUE })111.6
708.8 Q F0(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E
160.971(elas Section)-.165 F 2.75(4.1.6. [P)2.75 F(age 15])-.165 E EP
%%Page: 16 16
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(The follo)72 85 Q
(wing pseudocode macro de\214nitions are also used in man)-.275 E 2.75
(yp)-.165 G(laces in the speci\214cation.)-2.75 E
(Basically RPF' is the RPF neighbor to)72 98 Q -.11(wa)-.275 G
(rds an RP or source unless a PIM-Assert has o).11 E -.165(ve)-.165 G
(rridden).165 E(the normal choice of neighbor)72 111 Q(.)-.605 E/F1 11
/Courier@0 SF(neighbor RPF'\(*,G\) {)85.2 130 Q
(if \( I_Am_Assert_Loser\(*,G,RPF_interface\(RP\(G\)\)\) \) {)111.6 143
Q(return AssertWinner\(*, G, RPF_interface\(RP\(G\)\) \))144.6 156 Q 6.6
(}e)111.6 169 S(lse {)-6.6 E(return MRIB.next_hop\( RP\(G\) \))144.6 182
Q(})111.6 195 Q(})85.2 208 Q(neighbor RPF'\(S,G,rpt\) {)85.2 233 Q
(if\( I_Am_Assert_Loser\(S, G, RPF_interface\(RP\(G\)\) \) \) {)111.6
246 Q(return AssertWinner\(S, G, RPF_interface\(RP\(G\)\) \))144.6 259 Q
6.6(}e)111.6 272 S(lse {)-6.6 E(return RPF'\(*,G\))144.6 285 Q(})111.6
298 Q(})85.2 311 Q(neighbor RPF'\(S,G\) {)85.2 336 Q
(if \( I_Am_Assert_Loser\(S, G, RPF_interface\(S\) \)\) {)111.6 349 Q
(return AssertWinner\(S, G, RPF_interface\(S\) \))144.6 362 Q 6.6(}e)
111.6 375 S(lse {)-6.6 E(return MRIB.next_hop\( S \))144.6 388 Q(})111.6
401 Q(})85.2 414 Q F0
(RPF'\(*,G\) and RPF'\(S,G\) indicate the neighbor from which data pack)
72 436.6 Q(ets should be coming and)-.11 E
(to which joins should be sent on the RP tree and SPT respecti)72 449.6
Q -.165(ve)-.275 G(ly).165 E(.)-.715 E(RPF'\(S,G,rpt\) is basically RPF\
'\(*,G\) modi\214ed by the result of an Assert\(S,G\) on)72 466.2 Q
(RPF_interf)72 479.2 Q 2.75(ace\(RP\(G\)\). In)-.11 F(such a case, pack)
2.75 E(ets from S will be originating from a dif)-.11 E(ferent router)
-.275 E(than RPF'\(*,G\).)72 492.2 Q(If we only ha)5.5 E .33 -.165(ve a)
-.22 H(cti).165 E .33 -.165(ve \()-.275 H
(*,G\) Join state, we need to accept pack).165 E(ets from)-.11 E(RPF'\(\
S,G,rpt\), and add a Prune\(S,G,rpt\) to the periodic Join\(*,G\) messa\
ges that we send to)72 505.2 Q(RPF'\(*,G\) \(See Section 4.5.8\).)72
518.2 Q(The function)72 534.8 Q F1(MRIB.next_hop\( S \))2.75 E F0
(returns the ne)2.75 E(xt-hop PIM neighbor to)-.165 E -.11(wa)-.275 G
(rd the host S, as).11 E(indicated by the current MRIB.)72 547.8 Q
(If S is directly adjacent, then)5.5 E F1(MRIB.next_hop\( S \))2.75 E F0
(returns)2.75 E 2.75(NULL. At)72 560.8 R(the RP for G,)2.75 E F1
(MRIB.next_hop\( RP\(G \)\))2.75 E F0(returns NULL.)2.75 E(I_Am_Assert_\
Loser\(S, G, I\) is true if the Assert start machine \(in section 4.6.1\
\) for \(S,G\) on)72 577.4 Q(Interf)72 590.4 Q
(ace I is in "I am Assert Loser" state.)-.11 E(I_Am_Assert_Loser\(*, G,\
 I\) is true if the Assert start machine \(in section 4.6.2\) for \(*,G\
\) on)72 607 Q(Interf)72 620 Q(ace I is in "I am Assert Loser" state.)
-.11 E/F2 11/Times-Bold@0 SF(4.2.)72 646 Q/F3 13/Times-Bold@0 SF(Data P)
5.5 E(ack)-.13 E(et F)-.13 E(orwarding Rules)-.325 E F0(The PIM-SM pack)
72 662.6 Q(et forw)-.11 E(arding rules are de\214ned belo)-.11 E 2.75
(wi)-.275 G 2.75(np)-2.75 G(seudocode.)-2.75 E F1(iif)97 679.2 Q F0
(is the incoming interf)2.75 E(ace of the pack)-.11 E(et.)-.11 E F1(S)97
692.2 Q F0(is the source address of the pack)2.75 E(et.)-.11 E F1(G)97
705.2 Q F0(is the destination address of the pack)2.75 E
(et \(group address\).)-.11 E F1(RP)97 718.2 Q F0
(is the address of the Rendezv)2.75 E(ous Point for this group.)-.22 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 169.221
(elas Section)-.165 F 2.75(4.2. [P)2.75 F(age 16])-.165 E EP
%%Page: 17 17
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Courier@0 SF
(RPF_interface\(S\))97 85 Q F0(is the interf)2.75 E
(ace the MRIB indicates w)-.11 E(ould be used to route pack)-.11 E(ets)
-.11 E(to S.)97 98 Q F1(RPF_interface\(RP\))97 111 Q F0(is the interf)
2.75 E(ace the MRIB indicates w)-.11 E(ould be used to route pack)-.11 E
(ets)-.11 E(to RP)97 124 Q 2.75(,e)-1.221 G
(xcept at the RP when it is the decapsulation interf)-2.915 E
(ace \(the "virtual" interf)-.11 E(ace on)-.11 E(which re)97 137 Q
(gister pack)-.165 E(ets are recei)-.11 E -.165(ve)-.275 G(d\).).165 E
(First, we restart \(or start\) the K)72 153.6 Q(eepali)-.275 E .33
-.165(ve t)-.275 H
(imer if the source is on a directly connected subnet.).165 E
(Second, we check to see if the SPT bit should be set because we')72
170.2 Q .33 -.165(ve n)-.55 H .55 -.275(ow s).165 H(witched from the RP)
.275 E(tree to the SPT)72 183.2 Q(.)-.814 E(Ne)72 199.8 Q
(xt we check to see whether the pack)-.165 E
(et should be accepted based on TIB state and the interf)-.11 E(ace)-.11
E(that the pack)72 212.8 Q(et arri)-.11 E -.165(ve)-.275 G 2.75(do).165
G(n.)-2.75 E(If the pack)72 229.4 Q(et should be forw)-.11 E
(arded using \(S,G\) state, we then b)-.11 E(uild an outgoing interf)
-.22 E(ace list for)-.11 E(the pack)72 242.4 Q 2.75(et. If)-.11 F
(this list is not empty)2.75 E 2.75(,t)-.715 G
(hen we restart the \(S,G\) state k)-2.75 E(eepali)-.11 E .33 -.165
(ve t)-.275 H(imer).165 E(.)-.605 E(If the pack)72 259 Q
(et should be forw)-.11 E
(arded using \(*,*,RP\) or \(*,G\) state, then we just b)-.11 E
(uild an outgoing)-.22 E(interf)72 272 Q(ace list for the pack)-.11 E
(et. W)-.11 E 2.75(ea)-.88 G
(lso check if we should initiate a switch to start recei)-2.75 E
(ving this)-.275 E(source on a shortest path tree.)72 285 Q
(Finally we remo)72 301.6 Q .33 -.165(ve t)-.165 H(he incoming interf)
.165 E(ace from the outgoing interf)-.11 E(ace list we')-.11 E .33 -.165
(ve c)-.55 H(reated, and if).165 E(the resulting outgoing interf)72
314.6 Q(ace list is not empty)-.11 E 2.75(,w)-.715 G 2.75(ef)-2.75 G
(orw)-2.75 E(ard the pack)-.11 E(et out of those interf)-.11 E(aces.)
-.11 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 169.221
(elas Section)-.165 F 2.75(4.2. [P)2.75 F(age 17])-.165 E EP
%%Page: 18 18
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(On receipt on a data from S to G on interf)72 85 Q(ace iif:)-.11 E/F1
11/Courier@0 SF(if\( DirectlyConnected\(S\) == TRUE \) {)78.6 111 Q
(set KeepaliveTimer\(S,G\) to Keepalive_Period)111.6 124 Q(#)111.6 137 Q
F0(Note: re)6.6 E(gister state transition may happen as a result)-.165 E
F1(#)111.6 150 Q F0(of restarting K)6.6 E(eepali)-.275 E -.165(ve)-.275
G -.385(Ti).165 G(mer).385 E 2.75(,a)-.44 G(nd must be dealt with here.)
-2.75 E F1(})78.6 163 Q(Update_SPTbit\(S,G,iif\))78.6 189 Q
(oiflist = NULL)78.6 202 Q(if\( iif == RPF_interface\(S\) AND UpstreamJ\
PState\(S,G\) == Joined \) {)78.6 228 Q
(oiflist = inherited_olist\(S,G\))98.4 241 Q(if\( oiflist != NULL \) {)
98.4 254 Q(restart KeepaliveTimer\(S,G\))124.8 267 Q(})98.4 280 Q 6.6
(}e)78.6 293 S
(lse if\( iif == RPF_interface\(RP\) AND SPTbit\(S,G\) == FALSE\) {)-6.6
E(oiflist = inherited_olist\(S,G,rpt\))91.8 306 Q
(CheckSwitchToSpt\(S,G\))91.8 319 Q 6.6(}e)78.6 332 S(lse {)-6.6 E(#)
98.4 345 Q F0(Note: RPF check f)6.6 E(ailed)-.11 E F1
(if \( SPTbit\(S,G\) == TRUE AND iif is in inherited_olist\(S,G\) \) {)
98.4 358 Q(send Assert\(S,G\) on iif)118.2 371 Q 6.6(}e)98.4 384 S
(lse if \( SPTbit\(S,G\) == FALSE AND)-6.6 E
(iif is in inherited_olist\(S,G,rpt\) {)177.6 397 Q
(send Assert\(*,G\) on iif)118.2 410 Q(})98.4 423 Q(})78.6 436 Q
(oiflist = oiflist \(-\) iif)78.6 462 Q
(forward packet on all interfaces in oiflist)78.6 475 Q F0
(This pseudocode emplo)72 494 Q(ys se)-.11 E -.165(ve)-.275 G
(ral "macro" de\214nitions:).165 E F1(DirectlyConnected\(S\))72 510.6 Q
F0(is TR)2.75 E(UE if the source S is on an)-.44 E 2.75(ys)-.165 G
(ubnet that is directly connected)-2.75 E(to this router \(or for pack)
72 523.6 Q(ets originating on this router\).)-.11 E F1
(inherited_olist\(S,G\))72 540.2 Q F0(and)2.75 E F1
(inherited_olist\(S,G,rpt\))2.75 E F0(are de\214ned in Section 4.1.)2.75
E(Basically)72 569.8 Q F1(inherited_olist\(S,G\))2.75 E F0
(is the outgoing interf)2.75 E(ace list for pack)-.11 E(ets forw)-.11 E
(arded on)-.11 E(\(S,G\) state taking into account \(*,*,RP\) state, \(\
*,G\) state, asserts, etc.)72 582.8 Q F1(inherited_olist\(S,G,rpt\))72
599.4 Q F0(is the outgoing interf)2.75 E(ace for pack)-.11 E(ets forw)
-.11 E(arded on \(*,*,RP\))-.11 E(or \(*,G\) state taking into account \
\(S,G,rpt\) prune state, and asserts, etc.)72 612.4 Q
(Update_SPTbit\(S,G,iif\) is de\214ned in section 4.2.2.)72 629 Q
(CheckSwitchT)72 645.6 Q(oSpt\(S,G\) is de\214ned in section 4.2.1.)-.88
E(UpstreamJPState\(S,G\) is the state of the \214nite state machine in \
section 4.5.7.)72 662.2 Q -.275(Ke)72 678.8 S(epali).275 E -.165(ve)
-.275 G(_Period is de\214ned in Section 4.11.).165 E
(Data triggered PIM-Assert messages sent from the abo)72 695.4 Q .33
-.165(ve f)-.165 H(orw).165 E(arding code should be rate-limited)-.11 E
(in a implementation-dependent manner)72 708.4 Q(.)-.605 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 169.221
(elas Section)-.165 F 2.75(4.2. [P)2.75 F(age 18])-.165 E EP
%%Page: 19 19
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF 2.75
(4.2.1. Last)72 85 R(hop switcho)2.75 E -.11(ve)-.11 G 2.75(rt).11 G
2.75(ot)-2.75 G(he SPT)-2.75 E F0
(In Sparse-Mode PIM, last-hop routers join the shared tree to)72 101.6 Q
-.11(wa)-.275 G(rds the RP).11 E 2.75(.O)-1.221 G(nce traf)-2.75 E
(\214c from)-.275 E(sources to joined groups arri)72 114.6 Q -.165(ve)
-.275 G 2.75(sa).165 G 2.75(tal)-2.75 G
(ast-hop router it has the option of switching to recei)-2.75 E .33
-.165(ve t)-.275 H(he).165 E(traf)72 127.6 Q
(\214c on a shortest path tree \(SPT\).)-.275 E
(The decision for a router to switch to the SPT is controlled as follo)
72 144.2 Q(ws:)-.275 E/F2 11/Courier@0 SF(void)108 176.2 Q
(CheckSwitchToSpt\(S,G\) {)108 189.2 Q
(if \( \( pim_include\(*,G\) \(-\) pim_exclude\(S,G\))121.2 202.2 Q
(\(+\) pim_include\(S,G\) != NULL \))167.4 215.2 Q
(AND SwitchToSptDesired\(S,G\) \) {)154.2 228.2 Q
(restart KeepAliveTimer\(S,G\);)167.4 241.2 Q(})121.2 254.2 Q(})108
267.2 Q F0(SwitchT)72 299.2 Q(oSptDesired\(S,G\) is a polic)-.88 E 2.75
(yf)-.165 G(unction that is implementation de\214ned. An "in\214nite)
-2.75 E(threshold" polic)72 312.2 Q 2.75(yc)-.165 G
(an be implemented making SwitchT)-2.75 E(oSptDesired\(S,G\) return f)
-.88 E(alse all the time.)-.11 E 2.75(A")72 325.2 S
(switch on \214rst pack)-2.75 E(et" polic)-.11 E 2.75(yc)-.165 G
(an be implemented by making SwitchT)-2.75 E(oSptDesired\(S,G\) return)
-.88 E(true once a single pack)72 338.2 Q(et has been recei)-.11 E -.165
(ve)-.275 G 2.75(df).165 G(or the source and group.)-2.75 E F1 2.75
(4.2.2. Setting)72 377.2 R(and Clearing the \(S,G\) SPT bit)2.75 E F0
(The \(S,G\) SPTbit is used to distinguish whether to forw)72 393.8 Q
(ard on \(*,*,RP\)/\(*,G\) or on \(S,G\) state.)-.11 E(When switching f\
rom the RP tree to the source tree, there is a transition period when d\
ata is)72 406.8 Q(arri)72 419.8 Q(ving due to upstream \(*,*,RP\)/\(*,G\
\) state while upstream \(S,G\) state is being established)-.275 E
(during which time a router should continue to forw)72 432.8 Q
(ard only on \(*,*,RP\)/\(*,G\) state.)-.11 E(This pre)5.5 E -.165(ve)
-.275 G(nts).165 E(temporary black-holes that w)72 445.8 Q
(ould be caused by sending a Prune\(S,G,rpt\) before the upstream)-.11 E
(\(S,G\) state has \214nished being established.)72 458.8 Q
(Thus, when a pack)72 475.4 Q(et arri)-.11 E -.165(ve)-.275 G
(s, the \(S,G\) SPTbit is updated as follo).165 E(ws:)-.275 E F2(void)
108 507.4 Q(Update_SPTbit\(S,G,iif\) {)108 520.4 Q
(if \( iif == RPF_interface\(S\))121.2 533.4 Q
(AND JoinDesired\(S,G\) == TRUE)160.8 546.4 Q
(AND \( DirectlyConnected\(S\) == TRUE)160.8 559.4 Q
(OR RPF_interface\(S\) != RPF_interface\(RP\))200.4 572.4 Q
(OR inherited_olist\(S,G,rpt\) == NULL)200.4 585.4 Q
(OR RPF'\(S,G\) == RPF'\(*,G\) \) \) {)200.4 598.4 Q
(Set SPTbit\(S,G\) to TRUE)141 611.4 Q(})121.2 624.4 Q(})108 637.4 Q F0
(Additionally a router sets SPTbit\(S,G\) to TR)72 656.4 Q
(UE when it recei)-.44 E -.165(ve)-.275 G 2.75(sa).165 G 2.75(nA)-2.75 G
(ssert\(S,G\) on)-2.75 E(RPF_interf)72 669.4 Q(ace\(S\).)-.11 E F2
(JoinDesired\(S,G\))72 686 Q F0
(is de\214ned in Section 4.5.7, and indicates whether we ha)2.75 E .33
-.165(ve t)-.22 H(he appropriate).165 E
(\(S,G\) Join state to wish to send a Join\(S,G\) upstream.)72 699 Q
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.2.2. [P)2.75 F(age 19])-.165 E EP
%%Page: 20 20
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(Basically Update_SPTbit will set the SPT bit if we ha)72 85 Q .33 -.165
(ve t)-.22 H(he appropriate \(S,G\) join state and the).165 E(pack)72 98
Q(et arri)-.11 E -.165(ve)-.275 G 2.75(do).165 G 2.75(nt)-2.75 G
(he correct upstream interf)-2.75 E
(ace for S, and one or more of the follo)-.11 E(wing)-.275 E
(conditions applies:)72 111 Q 14(1. The)72 127.6 R(source is directly c\
onnected, in which case the switch to the SPT is a no-op.)2.75 E 14
(2. The)72 144.2 R(RPF interf)2.75 E(ace to S is dif)-.11 E
(ferent from the RPF interf)-.275 E(ace to the RP)-.11 E 5.5(.T)-1.221 G
(he pack)-5.5 E(et arri)-.11 E -.165(ve)-.275 G 2.75(do).165 G(n)-2.75 E
(RPF_interf)97 157.2 Q(ace\(S\), and so the SPT must ha)-.11 E .33 -.165
(ve b)-.22 H(een completed.).165 E 14(3. No-one)72 173.8 R -.11(wa)2.75
G(nts the pack).11 E(et on the RP tree.)-.11 E 14(4. RPF'\(S,G\))72
190.4 R(== RPF'\(*,G\).)2.75 E(In this case the router will ne)5.5 E
-.165(ve)-.275 G 2.75(rb).165 G 2.75(ea)-2.75 G
(ble to tell if the SPT has)-2.75 E
(been completed, so it should just switch immediately)97 203.4 Q(.)-.715
E(In the case where the RPF interf)72 220 Q
(ace is the same for the RP and for S, b)-.11 E(ut RPF'\(S,G\) and)-.22
E(RPF'\(*,G\) dif)72 233 Q(fer)-.275 E 2.75(,t)-.44 G(hen we w)-2.75 E
(ait for an Assert\(S,G\) which indicates that the upstream router with)
-.11 E(\(S,G\) state belie)72 246 Q -.165(ve)-.275 G 2.75(st).165 G
(he SPT has been completed.)-2.75 E(Ho)5.5 E(we)-.275 E -.165(ve)-.275 G
2.75(ri).165 G(tem \(3\) abo)-2.75 E .33 -.165(ve i)-.165 H 2.75(sn).165
G(eeded because)-2.75 E(there may not be an)72 259 Q 2.75(y\()-.165 G
(*,G\) state to trigger an Assert\(S,G\) to happen.)-2.75 E(The SPT bit\
 is cleared in the \(S,G\) upstream state machine \(see Section 4.5.7\)\
 when)72 275.6 Q(JoinDesired\(S,G\) becomes F)72 288.6 Q(ALSE.)-.814 E
/F1 11/Times-Bold@0 SF(4.3.)72 327.6 Q/F2 13/Times-Bold@0 SF
(Designated Routers \(DR\) and Hello Messages)5.5 E F0 2.75(As)72 344.2
S(hared-media LAN lik)-2.75 E 2.75(eE)-.11 G(thernet may ha)-2.75 E .33
-.165(ve m)-.22 H(ultiple PIM-SM routers connected to it.).165 E(If the)
5.5 E(LAN has directly connected hosts, then a single one of these rout\
ers, the DR, will act on behalf of)72 357.2 Q
(those hosts with respect to the PIM-SM protocol.)72 370.2 Q
(Because the distinction between LANs and)5.5 E(point-to-point interf)72
383.2 Q(aces can sometimes be blurred, and because routers may also ha)
-.11 E .33 -.165(ve m)-.22 H(ulticast).165 E(host functionality)72 396.2
Q 2.75(,t)-.715 G(he PIM-SM speci\214cation mak)-2.75 E
(es no distinction between the tw)-.11 E 2.75(o. Thus)-.11 F(DR)2.75 E
(election will happen on all interf)72 409.2 Q(aces, LAN or otherwise.)
-.11 E(DR election is performed using Hello messages.)72 425.8 Q
(Hello messages are also the w)5.5 E(ay that option)-.11 E(ne)72 438.8 Q
(gotiation tak)-.165 E(es place in PIM, so that additional functionalit\
y can be enabled, or parameters)-.11 E(tuned.)72 451.8 Q F1 2.75
(4.3.1. Sending)72 490.8 R(Hello Messages)2.75 E F0
(PIM-Hello messages are sent periodically on each PIM-enabled interf)72
507.4 Q 2.75(ace. The)-.11 F 2.75(ya)-.165 G(llo)-2.75 E 2.75(war)-.275
G(outer to)-2.75 E
(learn about the neighboring PIM routers on each interf)72 520.4 Q 2.75
(ace. Hello)-.11 F(messages are also the)2.75 E
(mechanism used to elect a Designated Router \(DR\), and to ne)72 533.4
Q(gotiate additional capabilities A)-.165 E
(router must record the Hello information recei)72 546.4 Q -.165(ve)
-.275 G 2.75(df).165 G(rom each PIM neighbor)-2.75 E(.)-.605 E
(Hello messages MUST be sent on all acti)72 563 Q .33 -.165(ve i)-.275 H
(nterf).165 E(aces, including ph)-.11 E(ysical point-to-point links,)
-.055 E(and are multicast to address 224.0.0.13 \(the ALL-PIM-R)72 576 Q
(OUTERS group\).)-.44 E/F3 11/Times-Italic@0 SF 2.024 -1.012(We n)99.75
592.6 T(ote that some implementations do not send Hello messa)1.012 E
-.11(ge)-.11 G 2.75(so).11 G 2.75(np)-2.75 G(oint-to-point)-2.75 E 2.75
(interfaces. This)97 605.6 R(is non-compliant behavior)2.75 E 5.5(.A)
-1.221 G(compliant PIM r)-2.75 E(outer MUST send)-.495 E(Hello messa)97
618.6 Q -.11(ge)-.11 G(s, e).11 E(ven on point-to-point interfaces.)
-.165 E F0 2.75(Ap)72 635.2 S(er interf)-2.75 E(ace hello timer \(HT\(I\
\)\) is used to trigger sending Hello messages on each acti)-.11 E -.165
(ve)-.275 G(interf)72 648.2 Q 2.75(ace. When)-.11 F
(PIM is enabled on an interf)2.75 E
(ace or a router \214rst starts, the hello timer of that)-.11 E(interf)
72 661.2 Q(ace is set to a random v)-.11 E(alue between 0 and)-.275 E/F4
11/Courier@0 SF(Triggered_Hello_Delay)2.75 E F0 5.5(.T)C(his pre)-5.5 E
-.165(ve)-.275 G(nts).165 E
(synchronization of Hello messages if multiple routers are po)72 674.2 Q
(wered on simultaneously)-.275 E 5.5(.A)-.715 G(fter the)-5.5 E
(initial randomized interv)72 687.2 Q(al, Hello messages must be sent e)
-.275 E -.165(ve)-.275 G(ry).165 E F4(Hello_Period)2.75 E F0 2.75
(seconds. The)2.75 F(hello timer should not be reset e)72 700.2 Q
(xcept when it e)-.165 E(xpires.)-.165 E(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.3.1. [P)2.75 F(age 20])-.165 E EP
%%Page: 21 21
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(Note that neighbors will no\
t accept Join/Prune or Assert messages from a router unless the)72 85 Q
2.75(yh)-.165 G -2.475 -.22(av e)-2.75 H
(\214rst heard a Hello message from that router)72 98 Q 5.5(.T)-.605 G
(hus if a router needs to send a Join/Prune or Assert)-5.5 E
(message on an interf)72 111 Q(ace on which it has not yet sent a Hello\
 message, then it MUST immediately)-.11 E(send the rele)72 124 Q -.275
(va)-.275 G(nt Hello message without w).275 E
(aiting for the Hello timer to e)-.11 E(xpire, follo)-.165 E(wed by the)
-.275 E(Join/Prune or Assert message.)72 137 Q
(The DR_Election_Priority Option allo)72 153.6 Q(ws a netw)-.275 E
(ork administrator to gi)-.11 E .33 -.165(ve p)-.275 H(reference to a)
.165 E(particular router in the DR election process by gi)72 166.6 Q
(ving it a numerically lar)-.275 E(ger DR Election Priority)-.198 E(.)
-.715 E(The DR_Election_Priority Option SHOULD be included in e)72 179.6
Q -.165(ve)-.275 G(ry Hello message, e).165 E -.165(ve)-.275 G 2.75(ni)
.165 G 2.75(fn)-2.75 G 2.75(oD)-2.75 G(R)-2.75 E(election priority is e)
72 192.6 Q(xplicitly con\214gured on that interf)-.165 E 2.75(ace. This)
-.11 F(is necessary because priority-)2.75 E
(based DR election is only enabled when all neighbors on an interf)72
205.6 Q(ace adv)-.11 E(ertise that the)-.165 E 2.75(ya)-.165 G(re)-2.75
E(capable of using the DR Election Priority Option.)72 218.6 Q(The def)
5.5 E(ault priority is 1.)-.11 E(The Generation_Identi\214er \(GenID\) \
Option SHOULD be included in all Hello messages.)72 235.2 Q(The)5.5 E
(GenID option contains a randomly generated 32-bit v)72 248.2 Q
(alue that is re)-.275 E(generated each time PIM)-.165 E(forw)72 261.2 Q
(arding is started or restarted on the interf)-.11 E
(ace, including when the router itself restarts.)-.11 E(When)5.5 E 2.75
(aH)72 274.2 S(ello message with a ne)-2.75 E 2.75(wG)-.275 G
(enID is recei)-2.75 E -.165(ve)-.275 G 2.75(df).165 G(rom a neighbor)
-2.75 E 2.75(,a)-.44 G .33 -.165(ny o)-2.75 H
(ld Hello information about).165 E(that neighbor SHOULD be discarded an\
d superseded by the information from the ne)72 287.2 Q 2.75(wH)-.275 G
(ello)-2.75 E 2.75(message. This)72 300.2 R(may cause a ne)2.75 E 2.75
(wD)-.275 G 2.75(Rt)-2.75 G 2.75(ob)-2.75 G 2.75(ec)-2.75 G
(hosen on that interf)-2.75 E(ace.)-.11 E(The LAN_Prune_Delay Option SH\
OULD be included in all Hello messages sent on multi-access)72 316.8 Q
(LANs. This option adv)72 329.8 Q(ertises a router')-.165 E 2.75(sc)
-.605 G(apability to use v)-2.75 E(alues other than the def)-.275 E
(ault for the)-.11 E(Propag)72 342.8 Q(ation_Delay and Ov)-.055 E
(erride_Interv)-.165 E(al which af)-.275 E
(fect the setting of the Prune Pending,)-.275 E(Upstream Join and Ov)72
355.8 Q(erride T)-.165 E(imers \(de\214ned in section 4.11\).)-.385 E
1.76 -.88(To a)72 372.4 T(llo).88 E 2.75(wn)-.275 G .55 -.275(ew o)-2.75
H 2.75(rr).275 G(ebooting routers to learn of PIM neighbors quickly)
-2.75 E 2.75(,w)-.715 G(hen a Hello message is)-2.75 E(recei)72 385.4 Q
-.165(ve)-.275 G 2.75(df).165 G(rom a ne)-2.75 E 2.75(wn)-.275 G
(eighbor)-2.75 E 2.75(,o)-.44 G 2.75(raH)-2.75 G(ello message with a ne)
-2.75 E 2.75(wG)-.275 G(enID is recei)-2.75 E -.165(ve)-.275 G 2.75(df)
.165 G(rom an e)-2.75 E(xisting)-.165 E(neighbor)72 398.4 Q 2.75(,an)
-.44 G .55 -.275(ew H)-2.75 H
(ello message should be sent on this interf).275 E
(ace after a randomized delay between)-.11 E 2.75(0a)72 411.4 S(nd)-2.75
E/F1 11/Courier@0 SF(Triggered_Hello_Delay)2.75 E F0 5.5(.T)C
(his triggered message need not change the timing of the)-5.5 E
(scheduled periodic message.)72 424.4 Q
(If a router needs to send a Join/Prune to the ne)5.5 E 2.75(wn)-.275 G
(eighbor or send)-2.75 E
(an Assert message in response to an Assert message from the ne)72 437.4
Q 2.75(wn)-.275 G(eighbor before this)-2.75 E(randomized delay has e)72
450.4 Q(xpired, then it MUST immediately send the rele)-.165 E -.275(va)
-.275 G(nt without Hello).275 E(message without w)72 463.4 Q
(aiting for the Hello timer to e)-.11 E(xpire, follo)-.165 E
(wed by the Join/Prune or Assert)-.275 E 2.75(message. If)72 476.4 R
(it does not do this, then the ne)2.75 E 2.75(wn)-.275 G
(eighbor will discard the Join/Prune or Assert)-2.75 E(message.)72 489.4
Q(Before an interf)72 506 Q(ace goes do)-.11 E
(wn or changes IP address, a Hello message with a zero HoldT)-.275 E
(ime)-.385 E(should be sent immediately \(with the old IP address if th\
e IP address changed\).)72 519 Q(This will cause)5.5 E
(PIM neighbors to remo)72 532 Q .33 -.165(ve t)-.165 H
(his neighbor \(or its old IP address\) immediately).165 E(.)-.715 E/F2
11/Times-Bold@0 SF 2.75(4.3.2. DR)72 558 R(Election)2.75 E F0
(When a PIM-Hello message is recei)72 574.6 Q -.165(ve)-.275 G 2.75(do)
.165 G 2.75(ni)-2.75 G(nterf)-2.75 E(ace I the follo)-.11 E
(wing information about the sending)-.275 E(neighbor is recorded:)72
587.6 Q F1(neighbor.interface)97 604.2 Q F0(The interf)122 617.2 Q
(ace on which the Hello message arri)-.11 E -.165(ve)-.275 G(d.).165 E
F1(neighbor.ip_address)97 633.8 Q F0(The IP address of the PIM neighbor)
122 646.8 Q(.)-.605 E F1(neighbor.genid)97 663.4 Q F0
(The Generation ID of the PIM neighbor)122 676.4 Q(.)-.605 E F1
(neighbor.dr_priority)97 693 Q F0(The DR Priority \214eld of the PIM ne\
ighbor if it is present in the Hello message.)122 706 Q(Fenner/Handle)72
769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.3.2. [P)2.75 F(age 21])-.165 E EP
%%Page: 22 22
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Courier@0 SF
(neighbor.dr_priority_present)97 85 Q F0 2.75<418d>122 98 S
(ag indicating if the DR Priority \214eld w)-2.75 E
(as present in the Hello message.)-.11 E F1(neighbor.timeout)97 114.6 Q
F0 2.75(At)122 127.6 S(imer v)-2.75 E
(alue to time out the neighbor state when it becomes stale.)-.275 E
(The Neighbor Li)122 140.6 Q -.165(ve)-.275 G(ness T).165 E(imer \(NL)
-.385 E(T\(N,I\)\) is reset to)-1.012 E F1(Hello_Holdtime)2.75 E F0
(\(from the)2.75 E(Hello Holdtime option\) whene)122 153.6 Q -.165(ve)
-.275 G 2.75(raH).165 G(ello message is recei)-2.75 E -.165(ve)-.275 G
2.75(dc).165 G(ontaining a Holdtime)-2.75 E(option, or to)122 166.6 Q F1
(Default_Hello_Holdtime)2.75 E F0(if the Hello message does not contain)
2.75 E(the Holdtime option.)122 179.6 Q
(Neighbor state is deleted when the neighbor timeout e)72 196.2 Q
(xpires.)-.165 E(The function for computing the DR on interf)72 222.2 Q
(ace I is:)-.11 E F1(host)85.2 241.2 Q(DR\(I\) {)85.2 254.2 Q(dr = me)
111.6 267.2 Q(for each neighbor on interface I {)111.6 280.2 Q
(if \( dr_is_better\( neighbor, dr, I \) == TRUE \) {)138 293.2 Q
(dr = neighbor)164.4 306.2 Q(})138 319.2 Q(})111.6 332.2 Q(return dr)
111.6 345.2 Q(})85.2 358.2 Q F0
(The function used for comparing DR "metrics" on interf)72 380.8 Q
(ace I is:)-.11 E F1(bool)85.2 399.8 Q(dr_is_better\(a,b,I\) {)85.2
412.8 Q(if\( there is a neighbor n on I for which n.dr_priority_present)
111.6 425.8 Q(is false \) {)164.4 438.8 Q
(return a.ip_address > b.ip_address)138 451.8 Q 6.6(}e)111.6 464.8 S
(lse {)-6.6 E(return \( a.dr_priority > b.dr_priority \) OR)138 477.8 Q
6.6(\(a)158.9 490.8 S(.dr_priority == b.dr_priority AND)-6.6 E
(a.ip_address > b.ip_address \))197.4 503.8 Q(})111.6 516.8 Q(})85.2
529.8 Q F0(The tri)72 548.8 Q(vial function)-.275 E F1(I_am_DR\(I\))2.75
E F0(is de\214ned to aid readability:)2.75 E F1(bool)85.2 567.8 Q
(I_am_DR\(I\) {)85.2 580.8 Q(return DR\(I\) == me)99.5 593.8 Q(})85.2
606.8 Q F0(The DR election priority is a 32-bit unsigned number and the\
 numerically lar)72 629.4 Q(ger priority is al)-.198 E -.11(wa)-.11 G
(ys).11 E 2.75(preferred. A)72 642.4 R(router')2.75 E 2.75(si)-.605 G
(dea of the current DR on an interf)-2.75 E
(ace can change when a PIM-Hello)-.11 E(message is recei)72 655.4 Q
-.165(ve)-.275 G(d, when a neighbor times out, or when a router').165 E
2.75(so)-.605 G(wn DR priority changes.)-3.025 E(If)5.5 E(the router be\
comes the DR or ceases to be the DR, this will normally cause the DR Re)
72 668.4 Q(gister state-)-.165 E(machine to change state.)72 681.4 Q
(Subsequent actions are determined by that state-machine.)5.5 E/F2 11
/Times-Italic@0 SF 2.024 -1.012(We n)99.75 698 T
(ote that some PIM implementations do not send Hello messa)1.012 E -.11
(ge)-.11 G 2.75(so).11 G 2.75(np)-2.75 G(oint-to-)-2.75 E
(point interfaces, and so cannot perform DR election on suc)97 711 Q
2.75(hi)-.165 G 2.75(nterfaces. This)-2.75 F(in non-)2.75 E
(compliant behavior)97 724 Q 5.5(.D)-1.221 G 2.75(Re)-5.5 G
(lection MUST be performed on ALL active PIM-SM)-2.75 E F0
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.3.2. [P)2.75 F(age 22])-.165 E EP
%%Page: 23 23
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Italic@0 SF
(interfaces.)97 85 Q/F2 11/Times-Bold@0 SF 2.75(4.3.3. Reducing)72 124 R
(Prune Pr)2.75 E(opagation Delay on LANs)-.198 E F0
(In addition to the information recorded for the DR Election, the follo)
72 140.6 Q(wing per neighbor)-.275 E
(information is obtained from the LAN Prune Delay Hello option:)72 153.6
Q/F3 11/Courier@0 SF(neighbor.lan_prune_delay_present)97 170.2 Q F0 2.75
<418d>122 183.2 S(ag indicating if the LAN Prune Delay option w)-2.75 E
(as present in the Hello message.)-.11 E F3(neighbor.tracking_support)97
199.8 Q F0 2.75<418d>122 212.8 S(ag storing the v)-2.75 E
(alue of the T bit in the LAN Prune Delay option if it is present in)
-.275 E(the Hello message. This indicates the neighbor')122 225.8 Q 2.75
(sc)-.605 G(apability to disable Join message)-2.75 E(suppression.)122
238.8 Q F3(neighbor.lan_delay)97 255.4 Q F0(The LAN Delay \214eld of th\
e LAN Prune Delay option \(if present\) in the Hello)122 268.4 Q
(message.)122 281.4 Q F3(neighbor.override_interval)97 298 Q F0(The Ov)
122 311 Q(erride_Interv)-.165 E
(al \214eld of the LAN Prune Delay option \(if present\) in the Hello)
-.275 E(message.)122 324 Q(The additional state described abo)72 340.6 Q
.33 -.165(ve i)-.165 H 2.75(sd).165 G
(eleted along with the DR neighbor state when the)-2.75 E
(neighbor timeout e)72 353.6 Q(xpires.)-.165 E(Just lik)72 370.2 Q 2.75
(et)-.11 G(he DR priority option, the information pro)-2.75 E
(vided in the LAN Prune Delay option is not)-.165 E
(used unless all neighbors on a link adv)72 383.2 Q
(ertise the option. The function belo)-.165 E 2.75(wc)-.275 G
(omputes this state:)-2.75 E F3(bool)85.2 402.2 Q
(lan_delay_enabled\(I\) {)85.2 415.2 Q
(for each neighbor on interface I {)111.6 428.2 Q
(if \( neighbor.lan_prune_delay_present == false \) {)138 441.2 Q
(return false)164.4 454.2 Q(})138 467.2 Q(})111.6 480.2 Q(return true)
111.6 493.2 Q(})85.2 506.2 Q F0
(The LAN Delay inserted by a router in the LAN Prune Delay option e)72
528.8 Q(xpresses the e)-.165 E(xpected)-.165 E(message propag)72 541.8 Q
(ation delay on the link and should be con\214gurable by the system adm\
inistrator)-.055 E 2.75(.I)-.605 G(t)-2.75 E
(is used by upstream routers to \214gure out ho)72 554.8 Q 2.75(wl)-.275
G(ong the)-2.75 E 2.75(ys)-.165 G(hould w)-2.75 E(ait for a Join o)-.11
E -.165(ve)-.165 G(rride message).165 E(before pruning an interf)72
567.8 Q(ace.)-.11 E(PIM implementors should enforce a lo)72 584.4 Q
(wer bound on the permitted v)-.275 E(alues for this delay to allo)-.275
E(w)-.275 E(for scheduling and processing delays within their router)72
597.4 Q 5.5(.S)-.605 G(uch delays may cause recei)-5.5 E -.165(ve)-.275
G(d).165 E(messages to be processed later as well as triggered messages\
 to be sent later than intended.)72 610.4 Q
(Setting this LAN Prune Delay to too lo)72 623.4 Q 2.75(wav)-.275 G
(alue may result in temporary forw)-3.025 E(arding outages)-.11 E
(because a do)72 636.4 Q(wnstream router will not be able to o)-.275 E
-.165(ve)-.165 G(rride a neighbor').165 E 2.75(sP)-.605 G
(rune message before the)-2.75 E(upstream neighbor stops forw)72 649.4 Q
(arding.)-.11 E(When all routers on a link are in a position to ne)72
666 Q(gotiate a dif)-.165 E(ferent than def)-.275 E(ault Propag)-.11 E
(ation Delay)-.055 E(,)-.715 E(the lar)72 679 Q(gest v)-.198 E
(alue from those adv)-.275 E
(ertised by each neighbor is chosen. The function for computing)-.165 E
(the Propag)72 692 Q(ation Delay of interf)-.055 E(ace I is:)-.11 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.3.3. [P)2.75 F(age 23])-.165 E EP
%%Page: 24 24
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Courier@0 SF
(time_interval)85.2 85 Q(Propagation_Delay\(I\) {)85.2 98 Q
(if \( lan_delay_enabled\(I\) == false \) {)111.6 111 Q
(return LAN_delay_default)138 124 Q(})111.6 137 Q(delay = 0)111.6 150 Q
(for each neighbor on interface I {)111.6 163 Q
(if \( neighbor.lan_delay > delay \) {)138 176 Q
(delay = neighbor.lan_delay)164.4 189 Q(})138 202 Q(})111.6 215 Q
(return delay)111.6 228 Q(})85.2 241 Q F0 1.76 -.88(To a)72 263.6 T -.22
(vo).66 G(id synchronization of o).22 E -.165(ve)-.165 G
(rride messages when multiple do).165 E(wnstream routers share a multi-)
-.275 E(access link, sending of such messages is delayed by a small ran\
dom amount of time. The period)72 276.6 Q(of randomization should repre\
sent the size of the PIM router population on the link.)72 289.6 Q
(Each router)5.5 E -.165(ex)72 302.6 S(presses its vie).165 E 2.75(wo)
-.275 G 2.75(ft)-2.75 G(he amount of randomization necessary in the Ov)
-2.75 E(erride Delay \214eld of the)-.165 E(LAN Prune Delay option.)72
315.6 Q(When all routers on a link are in a position to ne)72 332.2 Q
(gotiate a dif)-.165 E(ferent than def)-.275 E(ault Ov)-.11 E
(erride Delay)-.165 E(,)-.715 E(the lar)72 345.2 Q(gest v)-.198 E
(alue from those adv)-.275 E
(ertised by each neighbor is chosen. The function for computing)-.165 E
(the Ov)72 358.2 Q(erride Interv)-.165 E(al of interf)-.275 E(ace I is:)
-.11 E F1(time_interval)85.2 377.2 Q(Override_Interval\(I\) {)85.2 390.2
Q(if \( lan_delay_enabled\(I\) == false \) {)111.6 403.2 Q
(return t_override_default)138 416.2 Q(})111.6 429.2 Q(delay = 0)111.6
442.2 Q(for each neighbor on interface I {)111.6 455.2 Q
(if \( neighbor.override_interval > delay \) {)138 468.2 Q
(delay = neighbor.override_interval)164.4 481.2 Q(})138 494.2 Q(})111.6
507.2 Q(return delay)111.6 520.2 Q(})85.2 533.2 Q F0(Although the mecha\
nisms are not speci\214ed in this document, it is possible for upstream\
 routers to)72 555.8 Q -.165(ex)72 568.8 S
(plicitly track the join membership of indi).165 E(vidual do)-.275 E
(wnstream routers if Join suppression is)-.275 E 2.75(disabled. A)72
581.8 R(router can adv)2.75 E(ertise its willingness to disable Join su\
ppression by using the T bit in)-.165 E
(the LAN Prune Delay Hello option. Unless all PIM routers on a link ne)
72 594.8 Q(gotiate this capability)-.165 E(,)-.715 E -.165(ex)72 607.8 S
(plicit tracking and the disabling of the Join suppression mechanism ar\
e not possible. The).165 E
(function for computing the state of Suppression on interf)72 620.8 Q
(ace I is:)-.11 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385
E 160.971(elas Section)-.165 F 2.75(4.3.3. [P)2.75 F(age 24])-.165 E EP
%%Page: 25 25
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Courier@0 SF(bool)85.2
85 Q(Suppression_Enabled\(I\) {)85.2 98 Q
(if \( lan_delay_enabled\(I\) == false \) {)111.6 111 Q(return true)138
124 Q(})111.6 137 Q(for each neighbor on interface I {)111.6 150 Q
(if \( neighbor.tracking_support == false \) {)138 163 Q(return true)
164.4 176 Q(})138 189 Q(})111.6 202 Q(return false)111.6 215 Q(})85.2
228 Q F0(Note that the setting of Suppression_Enabled\(I\) af)72 247 Q
(fects the v)-.275 E(alue of t_suppressed \(see section)-.275 E(4.11\).)
72 260 Q/F2 11/Times-Bold@0 SF(4.4.)72 286 Q/F3 13/Times-Bold@0 SF
(PIM Register Messages)5.5 E F2(Ov)72 312 Q(er)-.11 E(view)-.11 E F0(Th\
e Designated Router \(DR\) on a LAN or point-to-point link encapsulates\
 multicast pack)72 328.6 Q(ets from)-.11 E
(local sources to the RP for the rele)72 341.6 Q -.275(va)-.275 G
(nt group unless it recently recei).275 E -.165(ve)-.275 G 2.75(daR).165
G -.165(eg)-2.75 G(ister Stop message).165 E
(for that \(S,G\) or \(*,G\) from the RP)72 354.6 Q 5.5(.W)-1.221 G
(hen the DR recei)-5.5 E -.165(ve)-.275 G 2.75(saR).165 G -.165(eg)-2.75
G(ister Stop message from the RP).165 E(,)-1.221 E(it starts a Re)72
367.6 Q(gister Stop timer to maintain this state.)-.165 E
(Just before the Re)5.5 E(gister Stop timer e)-.165 E(xpires,)-.165 E
(the DR sends a Null-Re)72 380.6 Q(gister Message to the RP to allo)
-.165 E 2.75(wt)-.275 G(he RP to refresh the Re)-2.75 E(gister Stop)
-.165 E(information at the DR.)72 393.6 Q(If the Re)5.5 E
(gister Stop timer actually e)-.165 E(xpires, the DR will resume)-.165 E
(encapsulating pack)72 406.6 Q(ets from the source to the RP)-.11 E(.)
-1.221 E F2 2.75(4.4.1. Sending)72 445.6 R(Register Messages fr)2.75 E
(om the DR)-.198 E F0(Ev)72 462.2 Q
(ery PIM-SM router has the capability to be a DR.)-.165 E
(The state machine belo)5.5 E 2.75(wi)-.275 G 2.75(su)-2.75 G(sed to)
-2.75 E(implement Re)72 475.2 Q(gister functionality)-.165 E 5.5(.F)
-.715 G(or the purposes of speci\214cation, we represent the mechanism)
-5.665 E(to encapsulate pack)72 488.2 Q(ets to the RP as a Re)-.11 E
(gister)-.165 E(-T)-.22 E(unnel interf)-.495 E
(ace, which is added to or remo)-.11 E -.165(ve)-.165 G(d).165 E
(from the \(S,G\) olist.)72 501.2 Q(The tunnel interf)5.5 E
(ace then tak)-.11 E(es part in the normal pack)-.11 E(et forw)-.11 E
(arding rules is)-.11 E(speci\214ed in Section 4.2.)72 514.2 Q(If re)72
530.8 Q(gister state is maintained, it is maintained only for directly \
connected sources, and is)-.165 E(per)72 543.8 Q 2.75(-\(S,G\). There)
-.22 F(are four states in the DR')2.75 E 2.75(sp)-.605 G(er)-2.75 E
(-\(S,G\) Re)-.22 E(gister state-machine:)-.165 E F2 -.165(Jo)72 560.4 S
(in \(J\)).165 E F0(The re)97 573.4 Q
(gister tunnel is "joined" \(the join is actually implicit, b)-.165 E
(ut the DR acts as if the RP has)-.22 E
(joined the DR on the tunnel interf)97 586.4 Q(ace\).)-.11 E F2
(Prune \(P\))72 603 Q F0(The re)97 616 Q
(gister tunnel is "pruned" \(this occurs when a Re)-.165 E
(gister Stop is recei)-.165 E -.165(ve)-.275 G(d\).).165 E F2 -.165(Jo)
72 632.6 S(in P).165 E(ending \(JP\))-.22 E F0(The re)97 645.6 Q
(gister tunnel is pruned b)-.165 E
(ut the DR is contemplating adding it back.)-.22 E F2(No Inf)72 662.2 Q
2.75(o\()-.275 G(NI\))-2.75 E F0(No information.)97 675.2 Q(This is the\
 initial state, and the state when the router is not the DR.)5.5 E
(In addition, a Re)72 691.8 Q(gisterStop timer \(RST\) is k)-.165 E
(ept if the state machine in not in the No Info state.)-.11 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.4.1. [P)2.75 F(age 25])-.165 E EP
%%Page: 26 26
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E 27 237 396 496 -259.476 325
108 344.476 PBEGIN
%%BeginDocument: register-std.ps
%%Creator: idraw
%%DocumentFonts: Helvetica Times-Italic
%%Pages: 1
%%BoundingBox: 27 237 523 562
%%EndComments

%%BeginIdrawPrologue
/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

%%EndIdrawPrologue

/arrowHeight 8 def
/arrowWidth 4 def

/IdrawDict 52 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
/parenleft/parenright/asterisk/plus/comma/minus/period/slash
/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
/guillemotright/onequarter/onehalf/threequarters/questiondown
/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
/yacute/thorn/ydieresis
] def
/Helvetica reencodeISO def
/Times-Italic reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 /FontBBox load 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.956649 0 0 0.956649 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22.5 179.5 ] concat
%I 9
895 699
1080 656
1099 489
1095 292
1019 185
900 139
620 141
441 142
336 230
9 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22.5 179.5 ] concat
%I 5
301 697
180 733
220 806
292 814
295 745
5 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22.5 179.5 ] concat
%I 3
894 696
604 633
350 694
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22.5 179.5 ] concat
%I 3
894 696
607 806
343 725
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22.5 179.5 ] concat
%I 3
892 695
815 496
879 311
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22.5 179.5 ] concat
%I 3
889 261
1002 482
922 659
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22.5 179.5 ] concat
%I 3
302 698
644 564
864 307
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22.5 179.5 ] concat
%I 3
891 265
575 417
336 661
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22.5 179.5 ] concat
%I 2
891 264
350 264
2 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22.5 179.5 ] concat
%I 3
301 698
382 483
319 308
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22.5 179.5 ] concat
%I 3
299 263
205 474
273 657
3 BSpl
%I 2
End

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22.5 179.5 ] concat
%I
301 697 48 48 Elli
End

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 273.5 -36.5 ] concat
%I
301 697 48 48 Elli
End

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22.5 -36.5 ] concat
%I
301 697 48 48 Elli
End

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 273.5 179.5 ] concat
%I
301 697 48 48 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 116.5 533 ] concat
%I
[
(Join)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 118 322.5 ] concat
%I
[
(No)
(Info)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 409 315.5 ] concat
%I
[
(Prune)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 417 531.5 ] concat
%I
[
(JP)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 30 582.5 ] concat
%I
[
(RP Changed)
([update reg tunnel])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 260 539 ] concat
%I
[
(RP Changed)
([Add reg tunnel])
([Cancel RegStop timer])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 477 505 ] concat
%I
[
(CouldRegister\(S,G\))
(-> FALSE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 126.5 422.5 ] concat
%I
[
(CouldRegister\(S,G\))
(-> FALSE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 212 498 ] concat
%I
[
(RegStop received from RP)
([Set RegStop timer to)
(randomized RSI - probetime])
([Remove reg tunnel])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 246 307.5 ] concat
%I
[
(CouldRegister\(S,G\))
(-> FALSE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 36 473 ] concat
%I
[
(CouldRegister\(S,G\))
(->TRUE)
([Add reg tunnel)
(to olist\(S,G\)])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 200.5 580.5 ] concat
%I
[
(RegStop timer expires)
([Add reg tunnel to olist\(S,G\)] )
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 209 381 ] concat
%I
[
(RP Changed)
([Add reg tunnel to olist\(S,G\)])
([Cancel RegStop timer])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-times-medium-r-normal--8-80-75-75-p-44-iso8859-1
Times-Italic 8 SetF
%I t
[ 1 0 0 1 49.5 326.5 ] concat
%I
[
(Note: RegStop)
(timer doesn't)
(run in NoInfo)
(state)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 356 466 ] concat
%I
[
(RegStop received )
(from RP)
([Set RegStop timer)
(to randomized RSI)
(-probetime])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 422 405.5 ] concat
%I
[
(RegStop timer)
(expired)
([Send Null Register])
([Set RegStop timer)
(to probetime])
] Text
End

End %I eop

showpage


end
%%EndDocument
end PEND/F1 11/Times-Bold@0 SF(Figur)188.294 383.476 Q 2.75(e1)-.198 G
2.75(:P)-2.75 G(er)-2.97 E(-\(S,G\) r)-.407 E
(egister state-machine at a DR)-.198 E F0(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.4.1. [P)2.75 F(age 26])-.165 E EP
%%Page: 27 27
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(Per)72 85 Q(-\(S,G\) re)-.22
E(gister state-machine at a DR in tab)-.165 E(ular form:)-.22 E .44 LW
503.986 95.75 72 95.75 DL/F1 11/Times-Bold@0 SF(Ev)306.447 106 Q(ent)
-.11 E 503.986 110.75 134.757 110.75 DL(Pr)73.083 126.5 Q .33 -.165
(ev S)-.198 H(tate).165 E(Register)137.382 121 Q(-)-.407 E(Stop T)
137.382 134 Q(imer)-.198 E(expir)137.382 147 Q(es)-.198 E(CouldRegister)
207.572 121 Q(\255>T)207.572 134 Q(rue)-.814 E(CouldRegister)282.822 121
Q(\255>F)282.822 134 Q(alse)-.275 E(Register)369.787 121 Q(-)-.407 E
(Stop)369.787 134 Q -.198(re)369.787 147 S(cei).198 E -.11(ve)-.11 G(d)
.11 E(RP changed)437.326 121 Q 503.986 151.75 72 151.75 DL 503.986
153.75 72 153.75 DL F0 66.527(--)137.382 164 S 2.75(>Js)-66.527 G 32.691
(tate -)-2.75 F 63.876(--)83.302 G(add re)207.572 177 Q 2.75(gt)-.165 G
(unnel)-2.75 E F1(No Inf)73.083 170.5 Q 2.75(o\()-.275 G(NI\))-2.75 E
503.986 181.75 72 181.75 DL F0 -64.217 66.527(-- -)137.382 192 T 2.75
(>N)-66.527 G 2.75(Is)-2.75 G 37.08(tate ->)-2.75 F 2.75(Ps)2.75 G
23.143(tate ->)-2.75 F 2.75(Js)2.75 G(tate)-2.75 E(remo)282.822 205 Q
.33 -.165(ve r)-.165 H .33 -.165(eg t).165 H(unnel).165 E F1 -.165(Jo)
73.083 218 S(in \(J\)).165 E F0(remo)369.787 205 Q -.165(ve)-.165 G
(tunnel; set)369.787 218 Q(Re)369.787 231 Q(gister)-.165 E(-Stop)-.22 E
(timer\(*\))369.787 244 Q(update re)437.326 205 Q(g)-.165 E(tunnel)
437.326 218 Q 503.986 248.75 72 248.75 DL(-> J state)137.382 259 Q
71.587(--)30.381 G 2.75(>N)-71.587 G 2.75(Is)-2.75 G 37.08(tate ->)-2.75
F 2.75(Ps)2.75 G 23.143(tate ->)-2.75 F 2.75(Js)2.75 G(tate)-2.75 E
(add re)137.382 272 Q 2.75(gt)-.165 G 79.924(unnel remo)-2.75 F .33
-.165(ve r)-.165 H .33 -.165(eg t).165 H(unnel).165 E F1 -.165(Jo)73.083
278.5 S(in P).165 E(ending)-.22 E(\(JP\))73.083 291.5 Q F0(set Re)
369.787 272 Q(gister)-.165 E(-)-.22 E(Stop timer\(*\))369.787 285 Q
(add re)437.326 272 Q(g)-.165 E(tunnel; cancel)437.326 285 Q(Re)437.326
298 Q(gister)-.165 E(-Stop)-.22 E(timer)437.326 311 Q 503.986 315.75 72
315.75 DL(-> JP state)137.382 326 Q 71.587(--)24.265 G 2.75(>N)-71.587 G
2.75(Is)-2.75 G 37.08(tate -)-2.75 F(-> J state)63.876 E(remo)282.822
339 Q .33 -.165(ve r)-.165 H .33 -.165(eg t).165 H(unnel).165 E F1
(Prune \(P\))73.083 358.5 Q F0(set Re)137.382 339 Q(gister)-.165 E(-)
-.22 E(Stop)137.382 352 Q(timer\(**\);)137.382 365 Q(send null)137.382
378 Q(re)137.382 391 Q(gister)-.165 E(add re)437.326 339 Q(g)-.165 E
(tunnel; cancel)437.326 352 Q(Re)437.326 365 Q(gister)-.165 E(-Stop)-.22
E(timer)437.326 378 Q 503.986 395.75 72 395.75 DL 435.701 110.75 435.701
395.75 DL 368.162 110.75 368.162 395.75 DL 281.197 110.75 281.197 395.75
DL 205.947 110.75 205.947 395.75 DL 134.757 95.75 134.757 395.75 DL
136.757 95.75 136.757 395.75 DL 503.986 95.75 503.986 395.75 DL 72 95.75
72 395.75 DL(Notes:)72 413.6 Q/F2 11/Courier@0 SF(\(*\))72 430.2 Q F0
(The Re)2.75 E(gisterStopT)-.165 E(imer is set to a random v)-.385 E
(alue chosen uniformly from the interv)-.275 E(al \( 0.5 *)-.275 E(Re)97
443.2 Q(gister_Suppression_T)-.165 E(ime, 1.5 * Re)-.385 E
(gister_Suppression_T)-.165 E(ime\) minus)-.385 E(Re)97 456.2 Q
(gister_Probe_T)-.165 E(ime;)-.385 E(Subtracting of)97 472.8 Q 2.75(fR)
-.275 G -.165(eg)-2.75 G(ister_Probe_T).165 E
(ime is a bit unnecessary because it is really small)-.385 E
(compared to Re)97 485.8 Q(gister_Suppression_T)-.165 E(ime, b)-.385 E
(ut w)-.22 E(as in the old spec and is k)-.11 E(ept for)-.11 E
(compatibility)97 498.8 Q(.)-.715 E(\(**\) The Re)72 515.4 Q
(gisterStopT)-.165 E(imer is set to Re)-.385 E(gister_Probe_T)-.165 E
(ime.)-.385 E(The follo)72 532 Q(wing actions are de\214ned:)-.275 E F1
(Add Register T)72 558 Q(unnel)-1.012 E F0 2.75(AR)72 574.6 S -.165(eg)
-2.75 G(ister).165 E(-T)-.22 E(unnel virtual interf)-.495 E
(ace, VI, is created \(if it doesn')-.11 E 2.75(ta)-.198 G(lready e)
-2.75 E(xist\) with its)-.165 E(encapsulation tar)72 587.6 Q
(get being RP\(G\).)-.198 E(Do)5.5 E
(wnstreamJPState\(S,G,VI\) is set to Join state, causing the)-.275 E
(tunnel interf)72 600.6 Q(ace to be added to)-.11 E F2
(immediate_olist\(S,G\))2.75 E F0(.)A F1(Remo)72 626.6 Q .22 -.11(ve R)
-.11 H(egister T).11 E(unnel)-1.012 E F0(VI is the Re)72 643.2 Q(gister)
-.165 E(-T)-.22 E(unnel virtual interf)-.495 E
(ace with encapsulation tar)-.11 E(get of RP\(G\).)-.198 E(Do)72 656.2 Q
(wnstreamJPState\(S,G,VI\) is set to NoInfo state, causing the tunnel i\
nterf)-.275 E(ace to be remo)-.11 E -.165(ve)-.165 G(d).165 E(from)72
669.2 Q F2(immediate_olist\(S,G\))2.75 E F0 5.5(.I)C 2.75(fD)-5.5 G
-.275(ow)-2.75 G
(nstreamJPState\(S,G,VI\) is NoInfo for all \(S,G\), then).275 E
(VI can be deleted.)72 682.2 Q(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165
E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.4.1. [P)2.75 F
(age 27])-.165 E EP
%%Page: 28 28
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF
(Update Register T)72 85 Q(unnel)-1.012 E F0
(This action occurs when RP\(G\) changes.)72 101.6 Q(VI_old is the Re)72
118.2 Q(gister)-.165 E(-T)-.22 E(unnel virtual interf)-.495 E
(ace with encapsulation tar)-.11 E(get old_RP\(G\).)-.198 E 2.75(AR)5.5
G -.165(eg)-2.75 G(ister).165 E(-)-.22 E -.495(Tu)72 131.2 S
(nnel virtual interf).495 E(ace, VI_ne)-.11 E 1.43 -.715(w, i)-.275 H
2.75(sc).715 G(reated \(if it doesn')-2.75 E 2.75(ta)-.198 G(lready e)
-2.75 E(xist\) with its encapsulation)-.165 E(tar)72 144.2 Q
(get being ne)-.198 E 2.75(w_RP\(G\). Do)-.275 F
(wnstreamJPState\(S,G,VI_old\) is set to NoInfo state and)-.275 E(Do)72
157.2 Q(wnstreamJPState\(S,G,VI_ne)-.275 E(w\) is set to Join state.)
-.275 E(If Do)5.5 E(wnstreamJPState\(S,G,VI_old\) is)-.275 E
(NoInfo for all \(S,G\), then VI_old can be deleted.)72 170.2 Q
(Note that we can not simply change the encapsulation tar)72 186.8 Q
(get of VI_old because not all groups)-.198 E
(using that encapsulation tunnel will ha)72 199.8 Q .33 -.165(ve m)-.22
H -.165(ove).165 G 2.75(dt).165 G 2.75(ot)-2.75 G(he same ne)-2.75 E
2.75(wR)-.275 G -1.221(P.)-2.75 G F1(CouldRegister\(S,G\))72 225.8 Q F0
(The macro "CouldRe)72 242.4 Q
(gister" in the state machine is de\214ned as:)-.165 E/F2 11/Courier@0
SF(Bool CouldRegister\(S,G\) {)85.2 261.4 Q
(return \( I_am_DR\( RPF_interface\(S\) \) AND)105 274.4 Q
(KeepaliveTimer\(S,G\) is running AND)164.4 287.4 Q
(DirectlyConnected\(S\) == TRUE \))164.4 300.4 Q(})85.2 313.4 Q F0
(Note that on reception of a pack)72 336 Q
(et at the DR from a directly connected source,)-.11 E F2
(KeepaliveTimer\(S,G\))72 349 Q F0(needs to be set by the pack)2.75 E
(et forw)-.11 E(arding rules)-.11 E/F3 11/Times-Italic@0 SF(befor)2.75 E
(e)-.407 E F0(computing)2.75 E F2(CouldRegister\(S,G\))72 362 Q F0
(in the re)2.75 E(gister state machine, or the \214rst pack)-.165 E
(et from a source w)-.11 E(on')-.11 E 2.75(tb)-.198 G(e)-2.75 E(re)72
375 Q(gistered.)-.165 E F1(Encapsulating data pack)72 414 Q
(ets in the Register T)-.11 E(unnel)-1.012 E F0(Conceptually)72 430.6 Q
2.75(,t)-.715 G(he Re)-2.75 E(gister T)-.165 E(unnel is an interf)-.495
E(ace with a smaller MTU than the underlying IP)-.11 E(interf)72 443.6 Q
(ace to)-.11 E -.11(wa)-.275 G(rds the RP).11 E 5.5(.I)-1.221 G 2.75(Pf)
-5.5 G(ragmentation on pack)-2.75 E(ets forw)-.11 E(arded on the Re)-.11
E(gister T)-.165 E(unnel is)-.495 E
(performed based upon this smaller MTU.)72 456.6 Q
(The encapsulating DR may perform P)5.5 E(ath-MTU)-.165 E(Disco)72 469.6
Q -.165(ve)-.165 G(ry to the RP to determine the ef).165 E(fecti)-.275 E
.33 -.165(ve M)-.275 H(TU of the tunnel.).165 E(This smaller MTU tak)5.5
E(es both)-.11 E(the outer IP header and the PIM re)72 482.6 Q
(gister header o)-.165 E -.165(ve)-.165 G(rhead into account.).165 E
(If a multicast pack)5.5 E(et is)-.11 E(fragmented on the w)72 495.6 Q
(ay into the Re)-.11 E(gister T)-.165 E
(unnel, each fragment is encapsulated indi)-.495 E(vidually so)-.275 E
(contains IP)72 508.6 Q 2.75(,P)-1.221 G(IM, and inner IP headers.)-2.75
E(In IPv6, an ICMP Fragmentation Required message may be sent by the en\
capsulating DR.)72 525.2 Q(Just lik)72 541.8 Q 2.75(ea)-.11 G .33 -.165
(ny f)-2.75 H(orw).165 E(arded pack)-.11 E
(et, the TTL of the original data pack)-.11 E
(et is decremented before it is)-.11 E(encapsulated in the Re)72 554.8 Q
(gister T)-.165 E(unnel.)-.495 E
(The IP ECN bits should be copied from the original pack)72 571.4 Q
(et to the IP header of the encapsulating)-.11 E(pack)72 584.4 Q 2.75
(et. The)-.11 F 2.75(yS)-.165 G(HOULD NO)-2.75 E 2.75(Tb)-.44 G 2.75(es)
-2.75 G(et independently by the encapsulating router)-2.75 E(.)-.605 E
(The Dif)72 601 Q
(fserv Code Point \(DSCP\) should be copied from the original pack)-.275
E(et to the IP header of the)-.11 E(encapsulating pack)72 614 Q 2.75
(et. It)-.11 F(MA)2.75 E 2.75(Yb)-1.155 G 2.75(es)-2.75 G
(et independently by the encapsulating router)-2.75 E 2.75(,b)-.44 G
(ased upon static)-2.75 E(con\214guration or traf)72 627 Q
(\214c classi\214cation.)-.275 E
(See [2] for more discussion on setting the DSCP on)5.5 E(tunnels.)72
640 Q F1(Handling RegisterStop\(*,G\) Messages at the DR)72 666 Q F0
(An old RP might send a Re)72 682.6 Q
(gisterStop message with the source address set to all-zeros.)-.165 E
(This w)5.5 E(as)-.11 E
(the normal course of action in RFC 2326 when the Re)72 695.6 Q
(gister message matched ag)-.165 E(ainst \(*,G\) state)-.055 E
(at the RP)72 708.6 Q 2.75(,a)-1.221 G(nd w)-2.75 E(as de\214ned as mea\
ning "stop encapsulating all sources for this group".)-.11 E(Ho)5.5 E
(we)-.275 E -.165(ve)-.275 G -.44(r,).165 G(the beha)72 721.6 Q
(vior of such a Re)-.22 E
(gisterStop\(*,G\) is ambiguous or incorrect in some circumstances.)
-.165 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.4.1. [P)2.75 F(age 28])-.165 E EP
%%Page: 29 29
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E 1.76 -.88(We s)72 85 T
(pecify that an RP should not send Re).88 E
(gisterStop\(*,G\) messages, b)-.165 E(ut for compatibility)-.22 E 2.75
(,aD)-.715 G(R)-2.75 E(should be able to accept one if it is recei)72 98
Q -.165(ve)-.275 G(d.).165 E 2.75(AR)72 114.6 S -.165(eg)-2.75 G
(isterStop\(*,G\) should be treated as a Re).165 E
(gisterStop\(S,G\) for all e)-.165 E(xisting \(S,G\) Re)-.165 E
(gister state)-.165 E 2.75(machines. A)72 127.6 R
(router should not apply a Re)2.75 E
(gisterStop\(*,G\) to sources that become acti)-.165 E .33 -.165(ve a)
-.275 H(fter the).165 E(Re)72 140.6 Q(gisterStop\(*,G\) w)-.165 E
(as recei)-.11 E -.165(ve)-.275 G(d.).165 E/F1 11/Times-Bold@0 SF 2.75
(4.4.2. Recei)72 179.6 R(ving Register Messages at the RP)-.11 E F0
(When an RP recei)72 196.2 Q -.165(ve)-.275 G 2.75(saR).165 G -.165(eg)
-2.75 G(ister message, the course of action is decided according to the)
.165 E(follo)72 209.2 Q(wing pseudocode:)-.275 E/F2 11/Courier@0 SF
(packet_arrives_on_rp_tunnel\( pkt \) {)72 228.2 Q
(if\( outer.dst is not one of my addresses \) {)98.4 241.2 Q
(drop the packet silently.)124.8 254.2 Q(#)124.8 267.2 Q F0
(note that this should not happen if the lo)6.6 E(wer layer is w)-.275 E
(orking)-.11 E F2(})98.4 280.2 Q
(if\( I_am_RP\( G \) && outer.dst == RP\(G\) \) {)98.4 293.2 Q
(restart KeepaliveTimer\(S,G\))124.8 306.2 Q
(if\(\( inherited_olist\(S,G\) == NULL \) OR SPTbit\(S,G\)\) {)124.8
319.2 Q(send RegisterStop\(S,G\) to outer.src)151.2 332.2 Q 6.6(}e)124.8
345.2 S(lse {)-6.6 E(if\( ! pkt.NullRegisterBit \) {)151.2 358.2 Q
(decapsulate and pass the inner packet to the normal)177.6 371.2 Q
(forwarding path for forwarding on the \(*,G\) tree.)177.6 384.2 Q(})
151.2 397.2 Q(})124.8 410.2 Q 6.6(}e)98.4 423.2 S(lse {)-6.6 E
(send RegisterStop\(S,G\) to outer.src)124.8 436.2 Q(#)124.8 449.2 Q F0
(Note \(*\))6.6 E F2(})98.4 462.2 Q(})72 475.2 Q(outer.dst)72 510.8 Q F0
(is the IP destination address of the encapsulating header)2.75 E(.)
-.605 E F2(outer.src)72 536.8 Q F0
(is the IP source address of the encapsulating header)2.75 E 2.75(,i)
-.44 G(.e., the DR')-2.75 E 2.75(sa)-.605 G(ddress.)-2.75 E F2
(I_am_RP\(G\))72 562.8 Q F0(is true if the group-to-RP mapping indicate\
s that this router is the RP for the)2.75 E(group.)72 575.8 Q
(Note \(*\): This may block traf)72 592.4 Q(\214c from S for Re)-.275 E
(gister_Suppression_T)-.165 E(ime if the DR learned about a)-.385 E(ne)
97 605.4 Q 2.75(wg)-.275 G(roup-to-RP mapping before the RP did.)-2.75 E
(Ho)5.5 E(we)-.275 E -.165(ve)-.275 G .88 -.44(r, t).165 H(his doesn')
.44 E 2.75(tm)-.198 G(atter unless we \214gure)-2.75 E(out some w)97
618.4 Q(ay for the RP to also accept \(*,G\) joins when it doesn')-.11 E
2.75(ty)-.198 G(et realize that it is about)-2.75 E
(to become the RP for G.)97 631.4 Q
(This will all get sorted out once the RP learns the ne)5.5 E 2.75(wg)
-.275 G(roup-to-rp)-2.75 E 2.75(mapping. W)97 644.4 R 2.75(ed)-.88 G
(ecided to do nothing about this and just accept the f)-2.75 E
(act that PIM may suf)-.11 E(fer)-.275 E(interrupted \(*,G\) connecti)97
657.4 Q(vity follo)-.275 E(wing an RP change.)-.275 E -.275(Ke)72 674 S
(epali).275 E -.165(ve)-.275 G -.385(Ti).165 G
(mer\(S,G\) is restarted at the RP when pack).385 E(ets arri)-.11 E .33
-.165(ve o)-.275 H 2.75(nt).165 G(he proper tunnel interf)-2.75 E(ace.)
-.11 E(This may cause the upstream \(S,G\) state machine to trigger a j\
oin if the inherited_olist\(S,G\) is not)72 687 Q(NULL;)72 700 Q
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.4.2. [P)2.75 F(age 29])-.165 E EP
%%Page: 30 30
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(An RP should preserv)72 85 Q
2.75(e\()-.165 G(S,G\) state that w)-2.75 E
(as created in response to a Re)-.11 E(gister message for at least)-.165
E 2.75(\(3*R)72 98 S -.165(eg)-2.75 G(ister_Suppression_T).165 E
(ime \), otherwise the RP may stop joining \(S,G\) before the DR for S)
-.385 E(has restarted sending re)72 111 Q 2.75(gisters. T)-.165 F(raf)
-.385 E(\214c w)-.275 E(ould then be interrupted until the Re)-.11 E
(gisterStop timer)-.165 E -.165(ex)72 124 S(pires at the DR.).165 E
(Thus, at the RP)72 140.6 Q 2.75(,K)-1.221 G(eepali)-3.025 E -.165(ve)
-.275 G -.385(Ti).165 G(mer\(S,G\) should be restarted to \( 3 * Re).385
E(gister_Suppression_T)-.165 E(ime +)-.385 E(Re)72 153.6 Q
(gister_Probe_T)-.165 E(ime \).)-.385 E(Just lik)72 170.2 Q 2.75(ea)-.11
G .33 -.165(ny f)-2.75 H(orw).165 E(arded pack)-.11 E
(et, the TTL of the original data pack)-.11 E
(et is decremented after it is)-.11 E(decapsulated from the Re)72 183.2
Q(gister T)-.165 E(unnel.)-.495 E
(The IP ECN bits should be copied from the IP header of the Re)72 199.8
Q(gister pack)-.165 E(et to the decapsulated)-.11 E(pack)72 212.8 Q(et.)
-.11 E(The Dif)72 229.4 Q(fserv Code Point \(DSCP\) should be copied fr\
om the IP header of the Re)-.275 E(gister pack)-.165 E(et to)-.11 E
(the decapsulated pack)72 242.4 Q 2.75(et. The)-.11 F(RP MA)2.75 E 2.75
(Yr)-1.155 G(etain the DSCP of the inner pack)-2.75 E
(et, or re-classify the)-.11 E(pack)72 255.4 Q(et and apply a dif)-.11 E
(ferent DSCP)-.275 E 5.5(.S)-1.221 G
(cenarios where each of these might be useful are discussed)-5.5 E
(in [2].)72 268.4 Q/F1 11/Times-Bold@0 SF(4.5.)72 294.4 Q/F2 13
/Times-Bold@0 SF(PIM J)5.5 E(oin/Prune Messages)-.195 E F0 2.75(AP)72
311 S(IM Join/Prune message consists of a list of groups and a list of \
Joined and Pruned sources for)-2.75 E(each group.)72 324 Q
(When processing a recei)5.5 E -.165(ve)-.275 G 2.75(dJ).165 G
(oin/Prune message, each Joined or Pruned source for a)-2.75 E
(Group is ef)72 337 Q(fecti)-.275 E -.165(ve)-.275 G(ly considered indi)
.165 E(vidually)-.275 E 2.75(,a)-.715 G
(nd applies to one or more of the follo)-2.75 E(wing state)-.275 E 2.75
(machines. When)72 350 R(considering a Join/Prune message whose PIM Des\
tination \214eld addresses this)2.75 E(router)72 363 Q 2.75(,\()-.44 G
(*,G\) Joins and Prunes can af)-2.75 E
(fect both the \(*,G\) and \(S,G,rpt\) do)-.275 E
(wnstream state machines,)-.275 E
(while \(*,*,RP\), \(S,G\) and \(S,G,rpt\) Joins and Prunes can only af)
72 376 Q(fect their respecti)-.275 E .33 -.165(ve d)-.275 H -.275(ow)
.165 G(nstream).275 E(state machines.)72 389 Q(When considering a Join/\
Prune message whose PIM Destination \214eld addresses)5.5 E
(another router)72 402 Q 2.75(,m)-.44 G
(ost Join or Prune messages could af)-2.75 E
(fect each upstream state machine.)-.275 E(In general, a PIM Join/Prune\
 message should only be accepted for processing if it comes from a)72
418.6 Q(kno)72 431.6 Q(wn PIM neighbor)-.275 E 5.5(.A)-.605 G
(PIM router hears about PIM neighbors through PIM Hello messages.)-2.75
E(If)5.5 E 2.75(ar)72 444.6 S(outer recei)-2.75 E -.165(ve)-.275 G 2.75
(saJ).165 G(oin/Prune message from a particular IP source address and i\
t has not seen a)-2.75 E(PIM Hello message from that source address, th\
en the Join/Prune message SHOULD be)72 457.6 Q
(discarded without further processing.)72 470.6 Q
(In addition, if the Hello message from a neighbor w)5.5 E(as)-.11 E(au\
thenticated using IPsec AH \(see section 6.3\) then all Join/Prune mess\
ages from that neighbor)72 483.6 Q
(MUST also be authenticated using IPsec AH.)72 496.6 Q 1.76 -.88(We n)72
513.2 T(ote that some older PIM implementations incorrectly f).88 E
(ail to send Hello messages on point-)-.11 E(to-point interf)72 526.2 Q
(aces, so we also RECOMMEND that a con\214guration option be pro)-.11 E
(vided to allo)-.165 E(w)-.275 E
(interoperation with such older routers, b)72 539.2 Q
(ut that this con\214guration option SHOULD NO)-.22 E 2.75(Tb)-.44 G(e)
-2.75 E(enabled by def)72 552.2 Q(ault.)-.11 E F1 2.75(4.5.1. Recei)72
591.2 R(ving \(*,*,RP\) J)-.11 E(oin/Prune Messages)-.165 E F0(The per)
72 607.8 Q(-interf)-.22 E(ace state-machine for recei)-.11 E
(ving \(*,*,RP\) Join/Prune Messages is gi)-.275 E -.165(ve)-.275 G 2.75
(nb).165 G(elo)-2.75 E -.715(w.)-.275 G(There are three states:)72 620.8
Q F1(NoInf)97 637.4 Q 2.75(o\()-.275 G(NI\))-2.75 E F0(The interf)122
650.4 Q(ace has no \(*,*,RP\) Join state and no timers running.)-.11 E
F1 -.165(Jo)97 667 S(in \(J\)).165 E F0(The interf)122 680 Q
(ace has \(*,*,RP\) Join state which will cause us to forw)-.11 E
(ard pack)-.11 E(ets destined)-.11 E(for an)122 693 Q 2.75(yg)-.165 G
(roup handled by RP from this interf)-2.75 E(ace e)-.11 E
(xcept if there is also \(S,G,rpt\) prune)-.165 E(information \(see Sec\
tion 4.5.4\) or the router lost an assert on this interf)122 706 Q(ace.)
-.11 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.5.1. [P)2.75 F(age 30])-.165 E EP
%%Page: 31 31
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF
(PruneP)97 85 Q(ending \(PP\))-.22 E F0(The router has recei)122 98 Q
-.165(ve)-.275 G 2.75(daP).165 G(rune\(*,*,RP\) on this interf)-2.75 E
(ace from a do)-.11 E(wnstream neighbor)-.275 E(and is w)122 111 Q
(aiting to see whether the prune will be o)-.11 E -.165(ve)-.165 G
(rridden by another do).165 E(wnstream)-.275 E(router)122 124 Q 5.5(.F)
-.605 G(or forw)-5.665 E
(arding purposes, the PrunePending state functions e)-.11 E(xactly lik)
-.165 E 2.75(et)-.11 G(he)-2.75 E(Join state.)122 137 Q
(In addition the state-machine uses tw)72 153.6 Q 2.75(ot)-.11 G(imers:)
-2.75 E F1(ExpiryT)97 170.2 Q(imer \(ET\))-.198 E F0
(This timer is restarted when a v)122 183.2 Q
(alid Join\(*,*,RP\) is recei)-.275 E -.165(ve)-.275 G 2.75(d. Expiry)
.165 F(of the)2.75 E(ExpiryT)122 196.2 Q(imer causes the interf)-.385 E
(ace state to re)-.11 E -.165(ve)-.275 G(rt to NoInfo for this RP).165 E
(.)-1.221 E F1(PruneP)97 212.8 Q(endingT)-.22 E(imer \(PPT\))-.198 E F0
(This timer is set when a v)122 225.8 Q(alid Prune\(*,*,RP\) is recei)
-.275 E -.165(ve)-.275 G 2.75(d. Expiry).165 F(of the)2.75 E
(PrunePendingT)122 238.8 Q(imer causes the interf)-.385 E
(ace state to re)-.11 E -.165(ve)-.275 G(rt to NoInfo for this RP).165 E
(.)-1.221 E 309 365 225 225 -208 208 193.5 465.8 PBEGIN
%%BeginDocument: starstarrp-std.ps
%%Creator: idraw
%%DocumentFonts: Helvetica
%%Pages: 1
%%BoundingBox: 309 365 534 573
%%EndComments

%%BeginIdrawPrologue
/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

%%EndIdrawPrologue

/arrowHeight 8 def
/arrowWidth 4 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
/parenleft/parenright/asterisk/plus/comma/minus/period/slash
/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
/guillemotright/onequarter/onehalf/threequarters/questiondown
/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
/yacute/thorn/ydieresis
] def
/Helvetica reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 /FontBBox load 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 7.56686e-15 7.25873e-43 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.956649 0 0 0.956649 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 3
897 575
917 407
701 461
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 4
897 576
977 608
977 544
929 560
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 4
621 701
589 781
653 781
637 733
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 5
621 509
653 445
621 429
589 445
605 477
5 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
845 605
749 525
653 525
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
845 605
717 621
653 685
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
621 701
781 701
829 637
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
621 509
669 605
637 669
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
621 701
573 605
605 541
3 BSpl
%I 2
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 289.5 129.5 ] concat
%I
173 605 32 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 369.5 437.5 ] concat
%I
[
(NI)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 289.5 225.5 ] concat
%I
173 605 32 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 372 533 ] concat
%I
[
(J)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 401.5 177.5 ] concat
%I
173 605 32 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 480 484.5 ] concat
%I
[
(PP)
] Text
End

End %I eop

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 346 595 ] concat
%I
[
(\(*,*,RP\) Join)
([Restart ET])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 506 500 ] concat
%I
[
(\(*,*,RP\) Prune)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 491 429 ] concat
%I
[
(ET Expires)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 401 511 ] concat
%I
[
(\(*,*,RP\) Join)
([Restart ET])
([Cancel PPT])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 324.5 492.5 ] concat
%I
[
(ET )
(Expires)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 377.5 473 ] concat
%I
[
(\(*,*,RP\) Join)
([Start ET])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 350.5 392 ] concat
%I
[
(\(*,*,RP\) Prune)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 419 546.5 ] concat
%I
[
(\(*,*,RP\) Prune)
([Start PPT])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 402.495 447.502 ] concat
%I
[
(PPT Expires)
([Send PruneEcho])
] Text
End

End %I eop

showpage


end
%%EndDocument
end PEND F1(Figur)167.009 504.8 Q 2.75(e2)-.198 G 2.75(:D)-2.75 G -.11
(ow)-2.75 G(nstr).11 E(eam \(*,*,RP\) per)-.198 E
(-interface state-machine)-.407 E F0(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.5.1. [P)2.75 F(age 31])-.165 E EP
%%Page: 32 32
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(Do)72 85 Q
(wnstream \(*,*,RP\) per)-.275 E(-interf)-.22 E
(ace state-machine in tab)-.11 E(ular form:)-.22 E .44 LW 503.987 95.75
72 95.75 DL/F1 11/Times-Bold@0 SF(Ev)319.511 106 Q(ent)-.11 E 503.987
110.75 157.982 110.75 DL(Pr)78.888 120 Q .33 -.165(ev S)-.198 H(tate)
.165 E(Recei)169.314 121 Q -.11(ve)-.11 G -.165(Jo)169.314 134 S
(in\(*,*,RP\)).165 E(Recei)254.449 121 Q .22 -.11(ve P)-.11 H(rune).11 E
(\(*,*,RP\))254.449 134 Q(Prune P)342.4 121 Q(ending)-.22 E -.198(Ti)
342.4 134 S(mer Expir).198 E(es)-.198 E(Expiry T)432.826 121 Q(imer)
-.198 E(Expir)432.826 134 Q(es)-.198 E 503.987 138.75 72 138.75 DL
503.987 140.75 72 140.75 DL F0(-> J state)169.314 151 Q(-> NI state)
45.326 E 86.763(--)40.816 G F1(NoInf)78.888 164 Q 2.75(o\()-.275 G(NI\))
-2.75 E F0(start Expiry)169.314 164 Q -.385(Ti)169.314 177 S(mer).385 E
503.987 181.75 72 181.75 DL(-> J state)169.314 192 Q(-> PP state)45.326
E 86.763(--)40.189 G 2.75(>N)-86.763 G 2.75(Is)-2.75 G(tate)-2.75 E F1
-.165(Jo)78.888 205 S(in \(J\)).165 E F0(restart Expiry)169.314 205 Q
-.385(Ti)169.314 218 S(mer).385 E(start Prune)254.449 205 Q(Pending T)
254.449 218 Q(imer)-.385 E 503.987 222.75 72 222.75 DL(-> J state)
169.314 233 Q(-> PP state)45.326 E(-> NI state)40.189 E(-> NI state)
43.291 E F1(Prune P)78.888 252.5 Q(ending)-.22 E(\(PP\))78.888 265.5 Q
F0(restart Expiry)169.314 246 Q -.385(Ti)169.314 259 S(mer; cancel).385
E(Prune Pending)169.314 272 Q -.385(Ti)169.314 285 S(mer).385 E
(Send Prune-)342.4 246 Q(Echo\(*,*,RP\))342.4 259 Q 503.987 289.75 72
289.75 DL 422.494 110.75 422.494 289.75 DL 332.068 110.75 332.068 289.75
DL 244.117 110.75 244.117 289.75 DL 157.982 95.75 157.982 289.75 DL
159.982 95.75 159.982 289.75 DL 503.987 95.75 503.987 289.75 DL 72 95.75
72 289.75 DL(The transition e)72 307.6 Q -.165(ve)-.275 G(nts "Recei)
.165 E .33 -.165(ve J)-.275 H(oin\(*,*,RP\)" and "Recei).165 E .33 -.165
(ve P)-.275 H(rune\(*,*,RP\)" imply recei).165 E(ving a Join)-.275 E
(or Prune tar)72 320.6 Q(geted to this router')-.198 E 2.75(sa)-.605 G
(ddress on the recei)-2.75 E -.165(ve)-.275 G 2.75(di).165 G(nterf)-2.75
E 2.75(ace. If)-.11 F(the destination address is)2.75 E(not correct, th\
ese state transitions in this state machine must not occur)72 333.6 Q
2.75(,a)-.44 G(lthough seeing such a)-2.75 E(pack)72 346.6 Q
(et may cause state transitions in other state machines.)-.11 E
(On unnumbered interf)72 363.2 Q
(aces on point-to-point links, the router')-.11 E 2.75(sa)-.605 G
(ddress should be the same as the)-2.75 E
(source address it chose for the Hello message it sent o)72 376.2 Q
-.165(ve)-.165 G 2.75(rt).165 G(hat interf)-2.75 E 2.75(ace. Ho)-.11 F
(we)-.275 E -.165(ve)-.275 G 2.75(ro).165 G 2.75(np)-2.75 G(oint-to-)
-2.75 E(point links we also recommend that PIM messages with a destinat\
ion address of all zeros are also)72 389.2 Q(accepted.)72 402.2 Q F1
-.814(Tr)72 428.2 S(ansitions fr).814 E(om NoInf)-.198 E 2.75(oS)-.275 G
(tate)-2.75 E F0(When in NoInfo state, the follo)72 444.8 Q(wing e)-.275
E -.165(ve)-.275 G(nt may trigger a transition:).165 E F1(Recei)97 461.4
Q .22 -.11(ve J)-.11 H(oin\(*,*,RP\))-.055 E F0 2.75(AJ)122 474.4 S
(oin\(*,*,RP\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75(ni)
-2.75 G(nterf)-2.75 E(ace I with its Upstream Neighbor Address set to)
-.11 E(the router')122 487.4 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E
(The \(*,*,RP\) do)122 504 Q(wnstream state machine on interf)-.275 E
(ace I transitions to the Join state.)-.11 E(The Expiry T)122 517 Q
(imer \(ET\) is started, and set to the HoldT)-.385 E
(ime from the triggering)-.385 E(Join/Prune message.)122 530 Q
(Note that it is possible to recei)122 546.6 Q .33 -.165(ve a J)-.275 H
(oin\(*,*,RP\) message for an RP that we do not).165 E(ha)122 559.6 Q
.33 -.165(ve i)-.22 H(nformation telling us that it is an RP).165 E 5.5
(.I)-1.221 G 2.75(nt)-5.5 G(he case of \(*,*,RP\) state, so long as we)
-2.75 E(ha)122 572.6 Q .33 -.165(ve a r)-.22 H(oute to the RP).165 E
2.75(,t)-1.221 G
(his will not cause a problem, and the transition should still)-2.75 E
(tak)122 585.6 Q 2.75(ep)-.11 G(lace.)-2.75 E F1 -.814(Tr)72 611.6 S
(ansitions fr).814 E(om J)-.198 E(oin State)-.165 E F0
(When in Join state, the follo)72 628.2 Q(wing e)-.275 E -.165(ve)-.275
G(nts may trigger a transition:).165 E F1(Recei)97 644.8 Q .22 -.11
(ve J)-.11 H(oin\(*,*,RP\))-.055 E F0 2.75(AJ)122 657.8 S
(oin\(*,*,RP\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75(ni)
-2.75 G(nterf)-2.75 E(ace I with its Upstream Neighbor Address set to)
-.11 E(the router')122 670.8 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E
(The \(*,*,RP\) do)122 687.4 Q(wnstream state machine on interf)-.275 E
(ace I remains in Join state, and the)-.11 E(Expiry T)122 700.4 Q
(imer \(ET\) is restarted, set to maximum of its current v)-.385 E
(alue and the HoldT)-.275 E(ime)-.385 E
(from the triggering Join/Prune message.)122 713.4 Q(Fenner/Handle)72
769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.5.1. [P)2.75 F(age 32])-.165 E EP
%%Page: 33 33
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF(Recei)
97 85 Q .22 -.11(ve P)-.11 H(rune\(*,*,RP\)).11 E F0 2.75(AP)122 98 S
(rune\(*,*,RP\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75
(ni)-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to)-.11 E(the router')122
111 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(*,*,RP\) do)122 127.6 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the PrunePending)-.11 E 2.75(state. The)122 140.6
R(PrunePending timer is started; it is set to the J/P_Ov)2.75 E
(erride_Interv)-.165 E(al\(I\) if the)-.275 E
(router has more than one neighbor on that interf)122 153.6 Q
(ace; otherwise it is set to zero causing)-.11 E(it to e)122 166.6 Q
(xpire immediately)-.165 E(.)-.715 E F1(Expiry T)97 183.2 Q(imer Expir)
-.198 E(es)-.198 E F0(The Expiry T)122 196.2 Q
(imer for the \(*,*,RP\) do)-.385 E(wnstream state machine on interf)
-.275 E(ace I e)-.11 E(xpires.)-.165 E(The \(*,*,RP\) do)122 212.8 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the NoInfo state.)-.11 E F1 -.814(Tr)72 238.8 S
(ansitions fr).814 E(om PruneP)-.198 E(ending State)-.22 E F0
(When in PrunePending state, the follo)72 255.4 Q(wing e)-.275 E -.165
(ve)-.275 G(nts may trigger a transition:).165 E F1(Recei)97 272 Q .22
-.11(ve J)-.11 H(oin\(*,*,RP\))-.055 E F0 2.75(AJ)122 285 S
(oin\(*,*,RP\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75(ni)
-2.75 G(nterf)-2.75 E(ace I with its Upstream Neighbor Address set to)
-.11 E(the router')122 298 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E
(The \(*,*,RP\) do)122 314.6 Q(wnstream state machine on interf)-.275 E
(ace I transitions to the Join state.)-.11 E
(The PrunePending timer is canceled \(without triggering an e)122 327.6
Q(xpiry e)-.165 E -.165(ve)-.275 G 2.75(nt\). The).165 F(Expiry)2.75 E
-.385(Ti)122 340.6 S(mer is restarted, set to maximum of its current v)
.385 E(alue and the HoldT)-.275 E(ime from the)-.385 E
(triggering Join/Prune message.)122 353.6 Q F1(Expiry T)97 370.2 Q
(imer Expir)-.198 E(es)-.198 E F0(The Expiry T)122 383.2 Q
(imer for the \(*,*,RP\) do)-.385 E(wnstream state machine on interf)
-.275 E(ace I e)-.11 E(xpires.)-.165 E(The \(*,*,RP\) do)122 399.8 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the NoInfo state.)-.11 E F1(PruneP)97 416.4 Q
(ending T)-.22 E(imer Expir)-.198 E(es)-.198 E F0(The PrunePending T)122
429.4 Q(imer for the \(*,*,RP\) do)-.385 E
(wnstream state machine on interf)-.275 E(ace I)-.11 E -.165(ex)122
442.4 S(pires.).165 E(The \(*,*,RP\) do)122 459 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the NoInfo state.)-.11 E 2.75(AP)122 472 S
(runeEcho\(*,*,RP\) is sent onto the subnet connected to interf)-2.75 E
(ace I.)-.11 E(The action "Send PruneEcho\(*,*,RP\)" is triggered when \
the router stops forw)122 488.6 Q(arding)-.11 E(on an interf)122 501.6 Q
(ace as a result of a prune.)-.11 E 2.75(AP)5.5 G
(runeEcho\(*,*,RP\) is simply a Prune\(*,*,RP\))-2.75 E
(message sent by the upstream router on a LAN with its o)122 514.6 Q
(wn address in the Upstream)-.275 E(Neighbor Address \214eld.)122 527.6
Q(Its purpose is to add additional reliability so that if a Prune)5.5 E
(that should ha)122 540.6 Q .33 -.165(ve b)-.22 H(een o).165 E -.165(ve)
-.165 G(rridden by another router is lost locally on the LAN, then the)
.165 E(PruneEcho may be recei)122 553.6 Q -.165(ve)-.275 G 2.75(da).165
G(nd cause the o)-2.75 E -.165(ve)-.165 G(rride to happen.).165 E 2.75
(AP)5.5 G(runeEcho\(*,*,RP\))-2.75 E(need not be sent on an interf)122
566.6 Q(ace containing only one PIM neighbor)-.11 E(.)-.605 E F1 2.75
(4.5.2. Recei)72 605.6 R(ving \(*,G\) J)-.11 E(oin/Prune Messages)-.165
E F0(When a router recei)72 622.2 Q -.165(ve)-.275 G 2.75(saJ).165 G(oi\
n\(*,G\) or Prune\(*,G\) it must \214rst check to see whether the RP in\
 the)-2.75 E(message matches RP\(G\) \(the router')72 635.2 Q 2.75(si)
-.605 G(dea of who the RP is\).)-2.75 E
(If the RP in the message does not)5.5 E
(match RP\(G\) the Join or Prune should be silently dropped.)72 648.2 Q
(If a router has no RP information \(e.g.)5.5 E(has not recently recei)
72 661.2 Q -.165(ve)-.275 G 2.75(daB).165 G
(SR message\) then it may choose to accept Join\(*,G\) or Prune\(*,G\))
-2.75 E(and treat the RP in the message as RP\(G\).)72 674.2 Q(The per)
72 690.8 Q(-interf)-.22 E(ace state-machine for recei)-.11 E
(ving \(*,G\) Join/Prune Messages is gi)-.275 E -.165(ve)-.275 G 2.75
(nb).165 G(elo)-2.75 E 4.18 -.715(w. T)-.275 H(here).715 E
(are three states:)72 703.8 Q(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165
E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.5.2. [P)2.75 F
(age 33])-.165 E EP
%%Page: 34 34
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF(NoInf)
97 85 Q 2.75(o\()-.275 G(NI\))-2.75 E F0(The interf)122 98 Q
(ace has no \(*,G\) Join state and no timers running.)-.11 E F1 -.165
(Jo)97 114.6 S(in \(J\)).165 E F0(The interf)122 127.6 Q
(ace has \(*,G\) Join state which will cause us to forw)-.11 E(ard pack)
-.11 E(ets destined for)-.11 E 2.75(Gf)122 140.6 S(rom this interf)-2.75
E(ace e)-.11 E
(xcept if there is also \(S,G,rpt\) prune information \(see Section)
-.165 E(4.5.4\) or the router lost an assert on this interf)122 153.6 Q
(ace.)-.11 E F1(PruneP)97 170.2 Q(ending \(PP\))-.22 E F0
(The router has recei)122 183.2 Q -.165(ve)-.275 G 2.75(daP).165 G
(rune\(*,G\) on this interf)-2.75 E(ace from a do)-.11 E
(wnstream neighbor)-.275 E(and is w)122 196.2 Q
(aiting to see whether the prune will be o)-.11 E -.165(ve)-.165 G
(rridden by another do).165 E(wnstream)-.275 E(router)122 209.2 Q 5.5
(.F)-.605 G(or forw)-5.665 E
(arding purposes, the PrunePending state functions e)-.11 E(xactly lik)
-.165 E 2.75(et)-.11 G(he)-2.75 E(Join state.)122 222.2 Q
(In addition the state-machine uses tw)72 238.8 Q 2.75(ot)-.11 G(imers:)
-2.75 E F1(ExpiryT)97 255.4 Q(imer \(ET\))-.198 E F0
(This timer is restarted when a v)122 268.4 Q(alid Join\(*,G\) is recei)
-.275 E -.165(ve)-.275 G 2.75(d. Expiry).165 F(of the ExpiryT)2.75 E
(imer)-.385 E(causes the interf)122 281.4 Q(ace state to re)-.11 E -.165
(ve)-.275 G(rt to NoInfo for this group.).165 E F1(PruneP)97 298 Q
(endingT)-.22 E(imer \(PPT\))-.198 E F0(This timer is set when a v)122
311 Q(alid Prune\(*,G\) is recei)-.275 E -.165(ve)-.275 G 2.75
(d. Expiry).165 F(of the)2.75 E(PrunePendingT)122 324 Q
(imer causes the interf)-.385 E(ace state to re)-.11 E -.165(ve)-.275 G
(rt to NoInfo for this group.).165 E 309 365 222 222 -208 208 195 551
PBEGIN
%%BeginDocument: starg-std.ps
%%Creator: idraw
%%DocumentFonts: Helvetica
%%Pages: 1
%%BoundingBox: 309 365 531 573
%%EndComments

%%BeginIdrawPrologue
/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

%%EndIdrawPrologue

/arrowHeight 8 def
/arrowWidth 4 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
/parenleft/parenright/asterisk/plus/comma/minus/period/slash
/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
/guillemotright/onequarter/onehalf/threequarters/questiondown
/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
/yacute/thorn/ydieresis
] def
/Helvetica reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 /FontBBox load 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 7.56686e-15 7.25873e-43 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.956649 0 0 0.956649 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 3
897 575
917 407
701 461
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 4
897 576
977 608
977 544
929 560
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 4
621 701
589 781
653 781
637 733
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 5
621 509
653 445
621 429
589 445
605 477
5 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
845 605
749 525
653 525
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
845 605
717 621
653 685
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
621 701
781 701
829 637
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
621 509
669 605
637 669
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
621 701
573 605
605 541
3 BSpl
%I 2
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 289.5 129.5 ] concat
%I
173 605 32 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 369.5 437.5 ] concat
%I
[
(NI)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 289.5 225.5 ] concat
%I
173 605 32 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 372 533 ] concat
%I
[
(J)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 401.5 177.5 ] concat
%I
173 605 32 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 480 484.5 ] concat
%I
[
(PP)
] Text
End

End %I eop

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 491 429 ] concat
%I
[
(ET Expires)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 324.5 492.5 ] concat
%I
[
(ET )
(Expires)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 402.495 447.502 ] concat
%I
[
(PPT Expires)
([Send PruneEcho])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 346 595 ] concat
%I
[
(Join\(*,G\))
([Restart ET])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 419 546.5 ] concat
%I
[
(Prune\(*,G\))
([Start PPT])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 506 500 ] concat
%I
[
(Prune\(*,G\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 401 511 ] concat
%I
[
(Join\(*,G\))
([Restart ET])
([Cancel PPT])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 377.5 473 ] concat
%I
[
(Join\(*,G\))
([Start ET])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 350.5 392 ] concat
%I
[
(Prune\(*,G\))
] Text
End

End %I eop

showpage


end
%%EndDocument
end PEND F1(Figur)174.187 590 Q 2.75(e3)-.198 G 2.75(:D)-2.75 G -.11(ow)
-2.75 G(nstr).11 E(eam \(*,G\) per)-.198 E(-interface state-machine)
-.407 E F0(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E
160.971(elas Section)-.165 F 2.75(4.5.2. [P)2.75 F(age 34])-.165 E EP
%%Page: 35 35
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(Do)72 85 Q
(wnstream \(*,G\) per)-.275 E(-interf)-.22 E(ace state-machine in tab)
-.11 E(ular form:)-.22 E .44 LW 503.995 95.75 72 95.75 DL/F1 11
/Times-Bold@0 SF(Ev)319.728 106 Q(ent)-.11 E 503.995 110.75 158.337
110.75 DL(Pr)79.03 120 Q .33 -.165(ev S)-.198 H(tate).165 E(Recei)
169.882 121 Q -.11(ve)-.11 G -.165(Jo)169.882 134 S(in\(*,G\)).165 E
(Recei)255.443 121 Q -.11(ve)-.11 G(Prune\(*,G\))255.443 134 Q(Prune P)
341.84 121 Q(ending)-.22 E -.198(Ti)341.84 134 S(mer Expir).198 E(es)
-.198 E(Expiry T)432.692 121 Q(imer)-.198 E(Expir)432.692 134 Q(es)-.198
E 503.995 138.75 72 138.75 DL 503.995 140.75 72 140.75 DL F0(-> J state)
169.882 151 Q(-> NI state)45.752 E 87.189(--)39.262 G F1(NoInf)79.03 164
Q 2.75(o\()-.275 G(NI\))-2.75 E F0(start Expiry)169.882 164 Q -.385(Ti)
169.882 177 S(mer).385 E 503.995 181.75 72 181.75 DL(-> J state)169.882
192 Q(-> PP state)45.752 E 87.189(--)38.635 G 2.75(>N)-87.189 G 2.75(Is)
-2.75 G(tate)-2.75 E F1 -.165(Jo)79.03 205 S(in \(J\)).165 E F0
(restart Expiry)169.882 205 Q -.385(Ti)169.882 218 S(mer).385 E
(start Prune)255.443 205 Q(Pending T)255.443 218 Q(imer)-.385 E 503.995
222.75 72 222.75 DL(-> J state)169.882 233 Q(-> PP state)45.752 E
(-> NI state)38.635 E(-> NI state)43.717 E F1(Prune P)79.03 252.5 Q
(ending)-.22 E(\(PP\))79.03 265.5 Q F0(restart Expiry)169.882 246 Q
-.385(Ti)169.882 259 S(mer; cancel).385 E(Prune Pending)169.882 272 Q
-.385(Ti)169.882 285 S(mer).385 E(Send Prune-)341.84 246 Q(Echo\(*,G\))
341.84 259 Q 503.995 289.75 72 289.75 DL 422.147 110.75 422.147 289.75
DL 331.295 110.75 331.295 289.75 DL 244.898 110.75 244.898 289.75 DL
158.337 95.75 158.337 289.75 DL 160.337 95.75 160.337 289.75 DL 503.995
95.75 503.995 289.75 DL 72 95.75 72 289.75 DL(The transition e)72 307.6
Q -.165(ve)-.275 G(nts "Recei).165 E .33 -.165(ve J)-.275 H
(oin\(*,G\)" and "Recei).165 E .33 -.165(ve P)-.275 H
(rune\(*,G\)" imply recei).165 E(ving a Join or)-.275 E(Prune tar)72
320.6 Q(geted to this router')-.198 E 2.75(sa)-.605 G
(ddress on the recei)-2.75 E -.165(ve)-.275 G 2.75(di).165 G(nterf)-2.75
E 2.75(ace. If)-.11 F(the destination address is not)2.75 E
(correct, these state transitions in this state machine must not occur)
72 333.6 Q 2.75(,a)-.44 G(lthough seeing such a pack)-2.75 E(et)-.11 E
(may cause state transitions in other state machines.)72 346.6 Q
(On unnumbered interf)72 363.2 Q
(aces on point-to-point links, the router')-.11 E 2.75(sa)-.605 G
(ddress should be the same as the)-2.75 E
(source address it chose for the Hello message it sent o)72 376.2 Q
-.165(ve)-.165 G 2.75(rt).165 G(hat interf)-2.75 E 2.75(ace. Ho)-.11 F
(we)-.275 E -.165(ve)-.275 G 2.75(ro).165 G 2.75(np)-2.75 G(oint-to-)
-2.75 E(point links we also recommend that PIM messages with a destinat\
ion address of all zeros are also)72 389.2 Q(accepted.)72 402.2 Q F1
-.814(Tr)72 428.2 S(ansitions fr).814 E(om NoInf)-.198 E 2.75(oS)-.275 G
(tate)-2.75 E F0(When in NoInfo state, the follo)72 444.8 Q(wing e)-.275
E -.165(ve)-.275 G(nt may trigger a transition:).165 E F1(Recei)97 461.4
Q .22 -.11(ve J)-.11 H(oin\(*,G\))-.055 E F0 2.75(AJ)122 474.4 S
(oin\(*,G\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75(ni)
-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to the)-.11 E(router')122
487.4 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(*,G\) do)122 504 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the Join state.)-.11 E(The)5.5 E(Expiry T)122 517
Q(imer \(ET\) is started, and set to the HoldT)-.385 E
(ime from the triggering Join/Prune)-.385 E(message.)122 530 Q F1 -.814
(Tr)72 556 S(ansitions fr).814 E(om J)-.198 E(oin State)-.165 E F0
(When in Join state, the follo)72 572.6 Q(wing e)-.275 E -.165(ve)-.275
G(nts may trigger a transition:).165 E F1(Recei)97 589.2 Q .22 -.11
(ve J)-.11 H(oin\(*,G\))-.055 E F0 2.75(AJ)122 602.2 S
(oin\(*,G\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75(ni)
-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to the)-.11 E(router')122
615.2 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(*,G\) do)122 631.8 Q
(wnstream state machine on interf)-.275 E
(ace I remains in Join state, and the)-.11 E(Expiry T)122 644.8 Q
(imer \(ET\) is restarted, set to maximum of its current v)-.385 E
(alue and the HoldT)-.275 E(ime)-.385 E
(from the triggering Join/Prune message.)122 657.8 Q F1(Recei)97 674.4 Q
.22 -.11(ve P)-.11 H(rune\(*,G\)).11 E F0 2.75(AP)122 687.4 S
(rune\(*,G\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75(ni)
-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to the)-.11 E(router')122
700.4 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.5.2. [P)2.75 F(age 35])-.165 E EP
%%Page: 36 36
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(The \(*,G\) do)122 85 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the PrunePending)-.11 E 2.75(state. The)122 98 R
(PrunePending timer is started; it is set to the J/P_Ov)2.75 E
(erride_Interv)-.165 E(al\(I\) if the)-.275 E
(router has more than one neighbor on that interf)122 111 Q
(ace; otherwise it is set to zero causing)-.11 E(it to e)122 124 Q
(xpire immediately)-.165 E(.)-.715 E/F1 11/Times-Bold@0 SF(Expiry T)97
140.6 Q(imer Expir)-.198 E(es)-.198 E F0(The Expiry T)122 153.6 Q
(imer for the \(*,G\) do)-.385 E(wnstream state machine on interf)-.275
E(ace I e)-.11 E(xpires.)-.165 E(The \(*,G\) do)122 170.2 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the NoInfo state.)-.11 E F1 -.814(Tr)72 196.2 S
(ansitions fr).814 E(om PruneP)-.198 E(ending State)-.22 E F0
(When in PrunePending state, the follo)72 212.8 Q(wing e)-.275 E -.165
(ve)-.275 G(nts may trigger a transition:).165 E F1(Recei)97 229.4 Q .22
-.11(ve J)-.11 H(oin\(*,G\))-.055 E F0 2.75(AJ)122 242.4 S
(oin\(*,G\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75(ni)
-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to the)-.11 E(router')122
255.4 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(*,G\) do)122 272 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the Join state.)-.11 E(The)5.5 E
(PrunePending timer is canceled \(without triggering an e)122 285 Q
(xpiry e)-.165 E -.165(ve)-.275 G 2.75(nt\). The).165 F(Expiry)2.75 E
-.385(Ti)122 298 S(mer is restarted, set to maximum of its current v)
.385 E(alue and the HoldT)-.275 E(ime from the)-.385 E
(triggering Join/Prune message.)122 311 Q F1(Expiry T)97 327.6 Q
(imer Expir)-.198 E(es)-.198 E F0(The Expiry T)122 340.6 Q
(imer for the \(*,G\) do)-.385 E(wnstream state machine on interf)-.275
E(ace I e)-.11 E(xpires.)-.165 E(The \(*,G\) do)122 357.2 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the NoInfo state.)-.11 E F1(PruneP)97 373.8 Q
(ending T)-.22 E(imer Expir)-.198 E(es)-.198 E F0(The PrunePending T)122
386.8 Q(imer for the \(*,G\) do)-.385 E
(wnstream state machine on interf)-.275 E(ace I)-.11 E -.165(ex)122
399.8 S(pires.).165 E(The \(*,G\) do)122 416.4 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the NoInfo state.)-.11 E(A)5.5 E
(PruneEcho\(*,G\) is sent onto the subnet connected to interf)122 429.4
Q(ace I.)-.11 E(The action "Send PruneEcho\(*,G\)" is triggered when th\
e router stops forw)122 446 Q(arding on)-.11 E(an interf)122 459 Q
(ace as a result of a prune.)-.11 E 2.75(AP)5.5 G
(runeEcho\(*,G\) is simply a Prune\(*,G\) message)-2.75 E
(sent by the upstream router on a LAN with its o)122 472 Q
(wn address in the Upstream Neighbor)-.275 E(Address \214eld.)122 485 Q
(Its purpose is to add additional reliability so that if a Prune that s\
hould)5.5 E(ha)122 498 Q .33 -.165(ve b)-.22 H(een o).165 E -.165(ve)
-.165 G(rridden by another router is lost locally on the LAN, then the \
PruneEcho).165 E(may be recei)122 511 Q -.165(ve)-.275 G 2.75(da).165 G
(nd cause the o)-2.75 E -.165(ve)-.165 G(rride to happen.).165 E 2.75
(AP)5.5 G(runeEcho\(*,G\) need not be)-2.75 E(sent on an interf)122 524
Q(ace containing only one PIM neighbor)-.11 E(.)-.605 E F1 2.75
(4.5.3. Recei)72 550 R(ving \(S,G\) J)-.11 E(oin/Prune Messages)-.165 E
F0(The per)72 566.6 Q(-interf)-.22 E(ace state machine for recei)-.11 E
(ving \(S,G\) Join/Prune messages is gi)-.275 E -.165(ve)-.275 G 2.75
(nb).165 G(elo)-2.75 E 1.43 -.715(w, a)-.275 H(nd is).715 E
(almost identical to that for \(*,G\) messages.)72 579.6 Q
(There are three states:)5.5 E F1(NoInf)97 596.2 Q 2.75(o\()-.275 G
(NI\))-2.75 E F0(The interf)122 609.2 Q
(ace has no \(S,G\) Join state and no \(S,G\) timers running.)-.11 E F1
-.165(Jo)97 625.8 S(in \(J\)).165 E F0(The interf)122 638.8 Q
(ace has \(S,G\) Join state which will cause us to forw)-.11 E(ard pack)
-.11 E(ets from S)-.11 E(destined for G from this interf)122 651.8 Q
(ace if the \(S,G\) state is acti)-.11 E .33 -.165(ve \()-.275 H
(the SPTbit is set\) e).165 E(xcept)-.165 E
(if the router lost an assert on this interf)122 664.8 Q(ace.)-.11 E F1
(PruneP)97 681.4 Q(ending \(PP\))-.22 E F0(The router has recei)122
694.4 Q -.165(ve)-.275 G 2.75(daP).165 G(rune\(S,G\) on this interf)
-2.75 E(ace from a do)-.11 E(wnstream neighbor)-.275 E(and is w)122
707.4 Q(aiting to see whether the prune will be o)-.11 E -.165(ve)-.165
G(rridden by another do).165 E(wnstream)-.275 E(router)122 720.4 Q 5.5
(.F)-.605 G(or forw)-5.665 E
(arding purposes, the PrunePending state functions e)-.11 E(xactly lik)
-.165 E 2.75(et)-.11 G(he)-2.75 E(Fenner/Handle)72 769 Q(y/Holbrook/K)
-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.5.3. [P)2.75 F
(age 36])-.165 E EP
%%Page: 37 37
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(Join state.)122 85 Q
(In addition there are tw)72 101.6 Q 2.75(ot)-.11 G(imers:)-2.75 E/F1 11
/Times-Bold@0 SF(ExpiryT)97 118.2 Q(imer \(ET\))-.198 E F0
(This timer is set when a v)122 131.2 Q(alid Join\(S,G\) is recei)-.275
E -.165(ve)-.275 G 2.75(d. Expiry).165 F(of the ExpiryT)2.75 E
(imer causes)-.385 E(this state machine to re)122 144.2 Q -.165(ve)-.275
G(rt to NoInfo state.).165 E F1(PruneP)97 160.8 Q(endingT)-.22 E
(imer \(PPT\))-.198 E F0(This timer is set when a v)122 173.8 Q
(alid Prune\(S,G\) is recei)-.275 E -.165(ve)-.275 G 2.75(d. Expiry).165
F(of the)2.75 E(PrunePendingT)122 186.8 Q(imer this state machine to re)
-.385 E -.165(ve)-.275 G(rt to NoInfo state.).165 E 309 365 225 225 -202
202 193.5 407.8 PBEGIN
%%BeginDocument: sg-std.ps
%%Creator: idraw
%%DocumentFonts: Helvetica
%%Pages: 1
%%BoundingBox: 309 365 534 567
%%EndComments

%%BeginIdrawPrologue
/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

%%EndIdrawPrologue

/arrowHeight 8 def
/arrowWidth 4 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
/parenleft/parenright/asterisk/plus/comma/minus/period/slash
/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
/guillemotright/onequarter/onehalf/threequarters/questiondown
/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
/yacute/thorn/ydieresis
] def
/Helvetica reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 /FontBBox load 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 7.56686e-15 7.25873e-43 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.956649 0 0 0.956649 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 3
897 575
917 407
701 461
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 4
897 576
977 608
977 544
929 560
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 4
621 701
589 781
653 781
637 733
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 5
621 509
653 445
621 429
589 445
605 477
5 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
845 605
749 525
653 525
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
845 605
717 621
653 685
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
621 701
781 701
829 637
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
621 509
669 605
637 669
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
621 701
573 605
605 541
3 BSpl
%I 2
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 289.5 129.5 ] concat
%I
173 605 32 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 369.5 437.5 ] concat
%I
[
(NI)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 289.5 225.5 ] concat
%I
173 605 32 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 372 533 ] concat
%I
[
(J)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 401.5 177.5 ] concat
%I
173 605 32 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 480 484.5 ] concat
%I
[
(PP)
] Text
End

End %I eop

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 491 429 ] concat
%I
[
(ET Expires)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 324.5 492.5 ] concat
%I
[
(ET )
(Expires)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 405.996 446.001 ] concat
%I
[
(PPT Expires)
([Send PruneEcho])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 348.5 589 ] concat
%I
[
(Join\(S,G\))
([Restart ET])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 419 546.5 ] concat
%I
[
(Prune\(S,G\))
([Start PPT])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 506 500 ] concat
%I
[
(Prune\(S,G\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 401 511 ] concat
%I
[
(Join\(S,G\))
([Restart ET])
([Cancel PPT])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 377.5 473 ] concat
%I
[
(Join\(S,G\))
([Start ET])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 350.5 392 ] concat
%I
[
(Prune\(S,G\))
] Text
End

End %I eop

showpage


end
%%EndDocument
end PEND F1(Figur)173.879 446.8 Q 2.75(e4)-.198 G 2.75(:D)-2.75 G -.11
(ow)-2.75 G(nstr).11 E(eam per)-.198 E(-interface \(S,G\) state-machine)
-.407 E F0(Do)72 469.4 Q(wnstream per)-.275 E(-interf)-.22 E
(ace \(S,G\) state-machine in tab)-.11 E(ular form:)-.22 E .44 LW
503.995 480.15 72 480.15 DL F1(Ev)319.728 490.4 Q(ent)-.11 E 503.995
495.15 158.337 495.15 DL(Pr)79.03 504.4 Q .33 -.165(ev S)-.198 H(tate)
.165 E(Recei)169.882 505.4 Q -.11(ve)-.11 G -.165(Jo)169.882 518.4 S
(in\(S,G\)).165 E(Recei)255.443 505.4 Q -.11(ve)-.11 G(Prune\(S,G\))
255.443 518.4 Q(Prune P)341.84 505.4 Q(ending)-.22 E -.198(Ti)341.84
518.4 S(mer Expir).198 E(es)-.198 E(Expiry T)432.692 505.4 Q(imer)-.198
E(Expir)432.692 518.4 Q(es)-.198 E 503.995 523.15 72 523.15 DL 503.995
525.15 72 525.15 DL F0(-> J state)169.882 535.4 Q(-> NI state)45.752 E
87.189(--)39.262 G F1(NoInf)79.03 548.4 Q 2.75(o\()-.275 G(NI\))-2.75 E
F0(start Expiry)169.882 548.4 Q -.385(Ti)169.882 561.4 S(mer).385 E
503.995 566.15 72 566.15 DL(-> J state)169.882 576.4 Q(-> PP state)
45.752 E 87.189(--)38.635 G 2.75(>N)-87.189 G 2.75(Is)-2.75 G(tate)-2.75
E F1 -.165(Jo)79.03 589.4 S(in \(J\)).165 E F0(restart Expiry)169.882
589.4 Q -.385(Ti)169.882 602.4 S(mer).385 E(start Prune)255.443 589.4 Q
(Pending T)255.443 602.4 Q(imer)-.385 E 503.995 607.15 72 607.15 DL
(-> J state)169.882 617.4 Q(-> PP state)45.752 E(-> NI state)38.635 E
(-> NI state)43.717 E F1(Prune P)79.03 636.9 Q(ending)-.22 E(\(PP\))
79.03 649.9 Q F0(restart Expiry)169.882 630.4 Q -.385(Ti)169.882 643.4 S
(mer; cancel).385 E(Prune Pending)169.882 656.4 Q -.385(Ti)169.882 669.4
S(mer).385 E(Send Prune-)341.84 630.4 Q(Echo\(S,G\))341.84 643.4 Q
503.995 674.15 72 674.15 DL 422.147 495.15 422.147 674.15 DL 331.295
495.15 331.295 674.15 DL 244.898 495.15 244.898 674.15 DL 158.337 480.15
158.337 674.15 DL 160.337 480.15 160.337 674.15 DL 503.995 480.15
503.995 674.15 DL 72 480.15 72 674.15 DL(The transition e)72 692 Q -.165
(ve)-.275 G(nts "Recei).165 E .33 -.165(ve J)-.275 H
(oin\(S,G\)" and "Recei).165 E .33 -.165(ve P)-.275 H
(rune\(S,G\)" imply recei).165 E(ving a Join or)-.275 E(Prune tar)72 705
Q(geted to this router')-.198 E 2.75(sa)-.605 G(ddress on the recei)
-2.75 E -.165(ve)-.275 G 2.75(di).165 G(nterf)-2.75 E 2.75(ace. If)-.11
F(the destination address is not)2.75 E
(correct, these state transitions in this state machine must not occur)
72 718 Q 2.75(,a)-.44 G(lthough seeing such a pack)-2.75 E(et)-.11 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.5.3. [P)2.75 F(age 37])-.165 E EP
%%Page: 38 38
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(may cause state transitions in other state machines.)72 85 Q
(On unnumbered interf)72 101.6 Q
(aces on point-to-point links, the router')-.11 E 2.75(sa)-.605 G
(ddress should be the same as the)-2.75 E
(source address it chose for the Hello message it sent o)72 114.6 Q
-.165(ve)-.165 G 2.75(rt).165 G(hat interf)-2.75 E 2.75(ace. Ho)-.11 F
(we)-.275 E -.165(ve)-.275 G 2.75(ro).165 G 2.75(np)-2.75 G(oint-to-)
-2.75 E(point links we also recommend that PIM messages with a destinat\
ion address of all zeros are also)72 127.6 Q(accepted.)72 140.6 Q/F1 11
/Times-Bold@0 SF -.814(Tr)72 166.6 S(ansitions fr).814 E(om NoInf)-.198
E 2.75(oS)-.275 G(tate)-2.75 E F0(When in NoInfo state, the follo)72
183.2 Q(wing e)-.275 E -.165(ve)-.275 G(nt may trigger a transition:)
.165 E F1(Recei)97 199.8 Q .22 -.11(ve J)-.11 H(oin\(S,G\))-.055 E F0
2.75(AJ)122 212.8 S(oin\(S,G\) is recei)-2.75 E -.165(ve)-.275 G 2.75
(do).165 G 2.75(ni)-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to the)-.11 E(router')122
225.8 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G\) do)122 242.4 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the Join state.)-.11 E(The)5.5 E(Expiry T)122
255.4 Q(imer \(ET\) is started, and set to the HoldT)-.385 E
(ime from the triggering Join/Prune)-.385 E(message.)122 268.4 Q F1
-.814(Tr)72 294.4 S(ansitions fr).814 E(om J)-.198 E(oin State)-.165 E
F0(When in Join state, the follo)72 311 Q(wing e)-.275 E -.165(ve)-.275
G(nts may trigger a transition:).165 E F1(Recei)97 327.6 Q .22 -.11
(ve J)-.11 H(oin\(S,G\))-.055 E F0 2.75(AJ)122 340.6 S
(oin\(S,G\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75(ni)
-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to the)-.11 E(router')122
353.6 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G\) do)122 370.2 Q
(wnstream state machine on interf)-.275 E
(ace I remains in Join state, and the)-.11 E(Expiry T)122 383.2 Q
(imer \(ET\) is restarted, set to maximum of its current v)-.385 E
(alue and the HoldT)-.275 E(ime)-.385 E
(from the triggering Join/Prune message.)122 396.2 Q F1(Recei)97 412.8 Q
.22 -.11(ve P)-.11 H(rune\(S,G\)).11 E F0 2.75(AP)122 425.8 S
(rune\(S,G\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75(ni)
-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to the)-.11 E(router')122
438.8 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G\) do)122 455.4 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the PrunePending)-.11 E 2.75(state. The)122 468.4
R(PrunePending timer is started; it is set to the J/P_Ov)2.75 E
(erride_Interv)-.165 E(al\(I\) if the)-.275 E
(router has more than one neighbor on that interf)122 481.4 Q
(ace; otherwise it is set to zero causing)-.11 E(it to e)122 494.4 Q
(xpire immediately)-.165 E(.)-.715 E F1(Expiry T)97 511 Q(imer Expir)
-.198 E(es)-.198 E F0(The Expiry T)122 524 Q(imer for the \(S,G\) do)
-.385 E(wnstream state machine on interf)-.275 E(ace I e)-.11 E(xpires.)
-.165 E(The \(S,G\) do)122 540.6 Q(wnstream state machine on interf)
-.275 E(ace I transitions to the NoInfo state.)-.11 E F1 -.814(Tr)72
566.6 S(ansitions fr).814 E(om PruneP)-.198 E(ending State)-.22 E F0
(When in PrunePending state, the follo)72 583.2 Q(wing e)-.275 E -.165
(ve)-.275 G(nts may trigger a transition:).165 E F1(Recei)97 599.8 Q .22
-.11(ve J)-.11 H(oin\(S,G\))-.055 E F0 2.75(AJ)122 612.8 S
(oin\(S,G\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75(ni)
-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to the)-.11 E(router')122
625.8 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G\) do)122 642.4 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the Join state.)-.11 E(The)5.5 E
(PrunePending timer is canceled \(without triggering an e)122 655.4 Q
(xpiry e)-.165 E -.165(ve)-.275 G 2.75(nt\). The).165 F(Expiry)2.75 E
-.385(Ti)122 668.4 S(mer is restarted, set to maximum of its current v)
.385 E(alue and the HoldT)-.275 E(ime from the)-.385 E
(triggering Join/Prune message.)122 681.4 Q F1(Expiry T)97 698 Q
(imer Expir)-.198 E(es)-.198 E F0(The Expiry T)122 711 Q
(imer for the \(S,G\) do)-.385 E(wnstream state machine on interf)-.275
E(ace I e)-.11 E(xpires.)-.165 E(Fenner/Handle)72 769 Q(y/Holbrook/K)
-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.5.3. [P)2.75 F
(age 38])-.165 E EP
%%Page: 39 39
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(The \(S,G\) do)122 85 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the NoInfo state.)-.11 E/F1 11/Times-Bold@0 SF
(PruneP)97 101.6 Q(ending T)-.22 E(imer Expir)-.198 E(es)-.198 E F0
(The PrunePending T)122 114.6 Q(imer for the \(S,G\) do)-.385 E
(wnstream state machine on interf)-.275 E(ace I)-.11 E -.165(ex)122
127.6 S(pires.).165 E(The \(S,G\) do)122 144.2 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the NoInfo state.)-.11 E(A)5.5 E
(PruneEcho\(S,G\) is sent onto the subnet connected to interf)122 157.2
Q(ace I.)-.11 E(The action "Send PruneEcho\(S,G\)" is triggered when th\
e router stops forw)122 173.8 Q(arding on)-.11 E(an interf)122 186.8 Q
(ace as a result of a prune.)-.11 E 2.75(AP)5.5 G
(runeEcho\(S,G\) is simply a Prune\(S,G\) message)-2.75 E
(sent by the upstream router on a LAN with its o)122 199.8 Q
(wn address in the Upstream Neighbor)-.275 E(Address \214eld.)122 212.8
Q(Its purpose is to add additional reliability so that if a Prune that \
should)5.5 E(ha)122 225.8 Q .33 -.165(ve b)-.22 H(een o).165 E -.165(ve)
-.165 G(rridden by another router is lost locally on the LAN, then the \
PruneEcho).165 E(may be recei)122 238.8 Q -.165(ve)-.275 G 2.75(da).165
G(nd cause the o)-2.75 E -.165(ve)-.165 G(rride to happen.).165 E 2.75
(AP)5.5 G(runeEcho\(S,G\) need not be)-2.75 E(sent on an interf)122
251.8 Q(ace containing only one PIM neighbor)-.11 E(.)-.605 E F1 2.75
(4.5.4. Recei)72 277.8 R(ving \(S,G,r)-.11 E(pt\) J)-.11 E
(oin/Prune Messages)-.165 E F0(The per)72 294.4 Q(-interf)-.22 E
(ace state machine for recei)-.11 E
(ving \(S,G,rpt\) Join/Prune messages is gi)-.275 E -.165(ve)-.275 G
2.75(nb).165 G(elo)-2.75 E -.715(w.)-.275 G(There are \214v)72 307.4 Q
2.75(es)-.165 G(tates:)-2.75 E F1(NoInf)97 324 Q 2.75(o\()-.275 G(NI\))
-2.75 E F0(The interf)122 337 Q
(ace has no \(S,G,rpt\) Prune state and no \(S,G,rpt\) timers running.)
-.11 E F1(Prune \(P\))97 353.6 Q F0(The interf)122 366.6 Q
(ace has \(S,G,rpt\) Prune state which will cause us not to forw)-.11 E
(ard pack)-.11 E(ets)-.11 E(from S destined for G from this interf)122
379.6 Q(ace e)-.11 E -.165(ve)-.275 G 2.75(nt).165 G(hough the interf)
-2.75 E(ace has acti)-.11 E .33 -.165(ve \()-.275 H(*,G\)).165 E
(Join state.)122 392.6 Q(When interf)5.5 E
(ace I is in this state, the macro)-.11 E/F2 11/Courier@0 SF
(prune\(S,G,rpt,I\))2.75 E F0(returns)2.75 E(true.)122 405.6 Q F1
(PruneP)97 422.2 Q(ending \(PP\))-.22 E F0(The router has recei)122
435.2 Q -.165(ve)-.275 G 2.75(daP).165 G(rune\(S,G,rpt\) on this interf)
-2.75 E(ace from a do)-.11 E(wnstream neighbor)-.275 E(and is w)122
448.2 Q(aiting to see whether the prune will be o)-.11 E -.165(ve)-.165
G(rridden by another do).165 E(wnstream)-.275 E(router)122 461.2 Q 5.5
(.F)-.605 G(or forw)-5.665 E
(arding purposes, the PrunePending state functions e)-.11 E(xactly lik)
-.165 E 2.75(et)-.11 G(he)-2.75 E(NoInfo state.)122 474.2 Q F1
(PruneTmp \(P'\))97 490.8 Q F0
(This state is a transient state which for forw)122 503.8 Q
(arding purposes beha)-.11 E -.165(ve)-.22 G 2.75(se).165 G(xactly lik)
-2.915 E 2.75(et)-.11 G(he)-2.75 E(Prune state.)122 516.8 Q 2.75(A\()5.5
G(*,G\) Join has been recei)-2.75 E -.165(ve)-.275 G 2.75(d\().165 G
(which may cancel the \(S,G,rpt\) Prune\).)-2.75 E(As we parse the Join\
/Prune message from top to bottom, we \214rst enter this state if the)
122 529.8 Q(message contains a \(*,G\) Join.)122 542.8 Q
(Later in the message we will normally encounter an)5.5 E
(\(S,G,rpt\) prune to re-instate the Prune state.)122 555.8 Q(Ho)5.5 E
(we)-.275 E -.165(ve)-.275 G 2.75(ri).165 G 2.75(fw)-2.75 G 2.75(er)
-2.75 G(each the end of the)-2.75 E
(message without encountering such a \(S,G,rpt\) prune, then we will re)
122 568.8 Q -.165(ve)-.275 G(rt to NoInfo).165 E
(state in this state machine.)122 581.8 Q
(As no time is spent in this state, no timers can e)122 598.4 Q(xpire.)
-.165 E F1(PruneP)97 615 Q(endingTmp \(PP'\))-.22 E F0
(This state is a transient state which is identical to P' e)122 628 Q
(xcept that it is associated with)-.165 E
(the PP state rather than the P state.)122 641 Q -.165(Fo)5.5 G 2.75(rf)
.165 G(orw)-2.75 E(arding purposes, PP' beha)-.11 E -.165(ve)-.22 G 2.75
(se).165 G(xactly lik)-2.915 E(e)-.11 E(PP state.)122 654 Q
(In addition there are tw)72 670.6 Q 2.75(ot)-.11 G(imers:)-2.75 E F1
(ExpiryT)97 687.2 Q(imer \(ET\))-.198 E F0(This timer is set when a v)
122 700.2 Q(alid Prune\(S,G,rpt\) is recei)-.275 E -.165(ve)-.275 G 2.75
(d. Expiry).165 F(of the ExpiryT)2.75 E(imer)-.385 E
(causes this state machine to re)122 713.2 Q -.165(ve)-.275 G
(rt to NoInfo state.).165 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E
(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.5.4. [P)2.75 F(age 39])
-.165 E EP
%%Page: 40 40
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF
(PruneP)97 85 Q(endingT)-.22 E(imer \(PPT\))-.198 E F0
(This timer is set when a v)122 98 Q(alid Prune\(S,G,rpt\) is recei)
-.275 E -.165(ve)-.275 G 2.75(d. Expiry).165 F(of the)2.75 E
(PrunePendingT)122 111 Q(imer causes this state machine to mo)-.385 E
.33 -.165(ve o)-.165 H 2.75(nt).165 G 2.75(oP)-2.75 G(rune state.)-2.75
E 129 366 354 354 -205 205 129 335 PBEGIN
%%BeginDocument: sgrpt-std.ps
%%Creator: idraw
%%DocumentFonts: Helvetica
%%Pages: 1
%%BoundingBox: 129 366 483 571
%%EndComments

%%BeginIdrawPrologue
/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

%%EndIdrawPrologue

/arrowHeight 8 def
/arrowWidth 4 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
/parenleft/parenright/asterisk/plus/comma/minus/period/slash
/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
/guillemotright/onequarter/onehalf/threequarters/questiondown
/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
/yacute/thorn/ydieresis
] def
/Helvetica reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 /FontBBox load 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.956649 0 0 0.956649 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -42.3394 131.575 ] concat
%I 4
621 701
589 781
653 781
637 733
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 59 212.5 ] concat
%I 3
636 630
678 541
647 471
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 4
621 701
589 781
653 781
637 733
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 4
173 605
301 461
493 461
589 493
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
413 605
525 589
589 525
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
621 509
493 509
429 573
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 5
621 509
653 445
621 429
589 445
605 477
5 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
845 605
749 525
653 525
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
845 605
717 621
653 685
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
621 701
781 701
829 637
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
621 701
573 605
605 541
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
413 605
493 701
589 701
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
173 605
285 557
381 589
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I 3
413 605
285 653
205 621
3 BSpl
%I 2
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 65.5 177.5 ] concat
%I
173 605 32 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 143.5 484.5 ] concat
%I
[
(PP')
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 185.5 177.5 ] concat
%I
173 605 32 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 264.5 485 ] concat
%I
[
(PP)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 289.5 225.5 ] concat
%I
173 605 32 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 372 533 ] concat
%I
[
(P)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 289.5 129.5 ] concat
%I
173 605 32 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 369.5 437.5 ] concat
%I
[
(NI)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 401.5 177.5 ] concat
%I
173 605 32 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 483 485.5 ] concat
%I
[
(P')
] Text
End

End %I eop

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 168 433 ] concat
%I
[
(End of message)
(for G)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 416 449 ] concat
%I
[
(End of message)
(for G)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 376 481 ] concat
%I
[
(ET)
(Expiry)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 300.982 545.988 ] concat
%I
[
(PP Timer)
(Expiry)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 174.515 509.999 ] concat
%I
[
(Join\(*,G\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 176 473 ] concat
%I
[
(Prune\(S,G,rpt\))
([Restart ET])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 256 449 ] concat
%I
[
(Prune\(S,G,rpt\))
([Restart ET])
([Start PPT])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 304 481 ] concat
%I
[
(Join)
(\(S,G,rpt\) )
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 328 505 ] concat
%I
[
(Join)
(\(S,G,rpt\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 400 497 ] concat
%I
[
(Prune\(S,G,rpt\))
([Restart ET])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 424 529 ] concat
%I
[
(Join\(*,G\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 352 593 ] concat
%I
[
(Prune\(S,G,rpt\))
([Restart ET])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 352 393 ] concat
%I
[
(Join\(S,G,rpt\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 215.201 533.094 ] concat
%I
[
(Prune\(S,G,rpt\)])
] Text
End

End %I eop

showpage


end
%%EndDocument
end PEND F1(Figur)165.227 374 Q 2.75(e5)-.198 G 2.75(:D)-2.75 G -.11(ow)
-2.75 G(nstr).11 E(eam per)-.198 E(-interface \(S,G,r)-.407 E
(pt\) state-machine)-.11 E F0(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165
E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.5.4. [P)2.75 F
(age 40])-.165 E EP
%%Page: 41 41
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(Do)72 85 Q(wnstream per)
-.275 E(-interf)-.22 E(ace \(S,G,rpt\) state-machine in tab)-.11 E
(ular form:)-.22 E .44 LW 503.987 95.75 72 95.75 DL/F1 11/Times-Bold@0
SF(Ev)307.024 106 Q(ent)-.11 E 503.987 110.75 134.149 110.75 DL(Pr)
76.606 133 Q .33 -.165(ev S)-.198 H(tate).165 E(Recei)142.058 121 Q -.11
(ve)-.11 G -.165(Jo)142.058 134 S(in\(*,G\)).165 E(Recei)207.301 121 Q
-.11(ve)-.11 G -.165(Jo)207.301 134 S(in).165 E(\(S,G,r)207.301 147 Q
(pt\))-.11 E(Recei)268.254 121 Q -.11(ve)-.11 G(Prune)268.254 134 Q
(\(S,G,r)268.254 147 Q(pt\))-.11 E(End of)333.321 121 Q(Message)333.321
134 Q(Prune)394.274 121 Q -.22(Pe)394.274 134 S(nding).22 E -.198(Ti)
394.274 147 S(mer).198 E(Expir)394.274 160 Q(es)-.198 E(Expiry)449.738
121 Q -.198(Ti)449.738 134 S(mer).198 E(Expir)449.738 147 Q(es)-.198 E
503.987 164.75 72 164.75 DL 503.987 166.75 72 166.75 DL F0 -3.553 61.58
(-- -)142.058 177 T 39.272(n/a n/a)-4.29 F(-> PP state)268.254 177 Q F1
(No Inf)76.606 209.5 Q(o)-.275 E(\(NI\))76.606 222.5 Q F0(start Prune)
268.254 190 Q(Pending)268.254 203 Q -.385(Ti)268.254 216 S(mer; start)
.385 E(Expiry)268.254 229 Q -.385(Ti)268.254 242 S(mer).385 E -.385(Ti)
268.254 255 S(mer).385 E 503.987 259.75 72 259.75 DL 57.29(-n)333.321
270 S(/a)-57.29 E(-> P' state)142.058 270 Q(-> NI state)207.301 270 Q
(-> P state)268.254 270 Q F1(-> NI state)449.738 270 Q(Pruned \(P\))
76.606 289.5 Q F0(restart)268.254 283 Q(Expiry)268.254 296 Q -.385(Ti)
268.254 309 S(mer).385 E 503.987 313.75 72 313.75 DL -12.804 61.404
(-- n)268.254 324 T(/a)-61.404 E F1(Prune)76.606 324 Q -.22(Pe)76.606
337 S(nding).22 E(\(PP\))76.606 350 Q F0(-> PP' state)142.058 324 Q
(-> NI state)207.301 324 Q(-> P state)394.274 324 Q 503.987 354.75 72
354.75 DL 41.12(error error)142.058 365 R 39.272(n/a n/a)165.6 F
(-> P state)268.254 365 Q(-> NI state)333.321 365 Q F1(Prune)76.606 378
Q(Tmp \(P'\))76.606 391 Q F0(restart)268.254 378 Q(Expiry)268.254 391 Q
-.385(Ti)268.254 404 S(mer).385 E 503.987 408.75 72 408.75 DL 41.12
(error error)142.058 419 R 39.272(n/a n/a)165.6 F(-> PP state)268.254
419 Q(-> NI state)333.321 419 Q F1(Prune)76.606 425.5 Q -.22(Pe)76.606
438.5 S(nding).22 E(Tmp \(PP'\))76.606 451.5 Q F0(restart)268.254 432 Q
(Expiry)268.254 445 Q -.385(Ti)268.254 458 S(mer).385 E 503.987 462.75
72 462.75 DL 442.829 110.75 442.829 462.75 DL 387.365 110.75 387.365
462.75 DL 326.412 110.75 326.412 462.75 DL 261.345 110.75 261.345 462.75
DL 200.392 110.75 200.392 462.75 DL 134.149 95.75 134.149 462.75 DL
136.149 95.75 136.149 462.75 DL 503.987 95.75 503.987 462.75 DL 72 95.75
72 462.75 DL(The transition e)72 480.6 Q -.165(ve)-.275 G(nts "Recei)
.165 E .33 -.165(ve J)-.275 H(oin\(S,G,rpt\)", "Recei).165 E .33 -.165
(ve P)-.275 H(rune\(S,G,rpt\)", and "Recei).165 E .33 -.165(ve J)-.275 H
(oin\(*,G\)").165 E(imply recei)72 493.6 Q(ving a Join or Prune tar)
-.275 E(geted to this router')-.198 E 2.75(sa)-.605 G
(ddress on the recei)-2.75 E -.165(ve)-.275 G 2.75(di).165 G(nterf)-2.75
E 2.75(ace. If)-.11 F(the)2.75 E(destination address is not correct, th\
ese state transitions in this state machine must not occur)72 506.6 Q(,)
-.44 E(although seeing such a pack)72 519.6 Q
(et may cause state transitions in other state machines.)-.11 E
(On unnumbered interf)72 536.2 Q
(aces on point-to-point links, the router')-.11 E 2.75(sa)-.605 G
(ddress should be the same as the)-2.75 E
(source address it chose for the Hello message it sent o)72 549.2 Q
-.165(ve)-.165 G 2.75(rt).165 G(hat interf)-2.75 E 2.75(ace. Ho)-.11 F
(we)-.275 E -.165(ve)-.275 G 2.75(ro).165 G 2.75(np)-2.75 G(oint-to-)
-2.75 E(point links we also recommend that PIM messages with a destinat\
ion address of all zeros are also)72 562.2 Q(accepted.)72 575.2 Q F1
-.814(Tr)72 601.2 S(ansitions fr).814 E(om NoInf)-.198 E 2.75(oS)-.275 G
(tate)-2.75 E F0(When in NoInfo \(NI\) state, the follo)72 617.8 Q
(wing e)-.275 E -.165(ve)-.275 G(nt may trigger a transition:).165 E F1
(Recei)97 634.4 Q .22 -.11(ve P)-.11 H(rune\(S,G,r).11 E(pt\))-.11 E F0
2.75(AP)122 647.4 S(rune\(S,G,rpt\) is recei)-2.75 E -.165(ve)-.275 G
2.75(do).165 G 2.75(ni)-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to)-.11 E(the router')122
660.4 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G,rpt\) do)122 677
Q(wnstream state machine on interf)-.275 E
(ace I transitions to the PrunePending)-.11 E 2.75(state. The)122 690 R
(Expiry T)2.75 E(imer \(ET\) is started, and set to the HoldT)-.385 E
(ime from the triggering)-.385 E(Join/Prune message.)122 703 Q
(The PrunePending timer is started; it is set to the)5.5 E(J/P_Ov)122
716 Q(erride_Interv)-.165 E
(al\(I\) if the router has more than one neighbor on that interf)-.275 E
(ace;)-.11 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E
160.971(elas Section)-.165 F 2.75(4.5.4. [P)2.75 F(age 41])-.165 E EP
%%Page: 42 42
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(otherwise it is set to zero causing it to e)122 85 Q(xpire immediately)
-.165 E(.)-.715 E/F1 11/Times-Bold@0 SF -.814(Tr)72 111 S(ansitions fr)
.814 E(om PruneP)-.198 E(ending State)-.22 E F0
(When in PrunePending \(PP\) state, the follo)72 127.6 Q(wing e)-.275 E
-.165(ve)-.275 G(nts may trigger a transition:).165 E F1(Recei)97 144.2
Q .22 -.11(ve J)-.11 H(oin\(*,G\))-.055 E F0 2.75(AJ)122 157.2 S
(oin\(*,G\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75(ni)
-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to the)-.11 E(router')122
170.2 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G,rpt\) do)122
186.8 Q(wnstream state machine on interf)-.275 E(ace I transitions to)
-.11 E(PrunePendingTmp state whilst the remainder of the compound Join/\
Prune message)122 199.8 Q(containing the Join\(*,G\) is processed.)122
212.8 Q F1(Recei)97 229.4 Q .22 -.11(ve J)-.11 H(oin\(S,G,r)-.055 E
(pt\))-.11 E F0 2.75(AJ)122 242.4 S(oin\(S,G,rpt\) is recei)-2.75 E
-.165(ve)-.275 G 2.75(do).165 G 2.75(ni)-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to)-.11 E(the router')122
255.4 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G,rpt\) do)122 272
Q(wnstream state machine on interf)-.275 E
(ace I transitions to NoInfo state.)-.11 E(ET)5.5 E
(and PPT are canceled.)122 285 Q F1(PruneP)97 301.6 Q(ending T)-.22 E
(imer Expir)-.198 E(es)-.198 E F0(The PrunePending T)122 314.6 Q
(imer for the \(S,G,rpt\) do)-.385 E(wnstream state machine on interf)
-.275 E(ace I)-.11 E -.165(ex)122 327.6 S(pires.).165 E
(The \(S,G,rpt\) do)122 344.2 Q(wnstream state machine on interf)-.275 E
(ace I transitions to the Pruned state.)-.11 E F1 -.814(Tr)72 370.2 S
(ansitions fr).814 E(om Pruned State)-.198 E F0
(When in Pruned \(P\) state, the follo)72 386.8 Q(wing e)-.275 E -.165
(ve)-.275 G(nts may trigger a transition:).165 E F1(Recei)97 403.4 Q .22
-.11(ve J)-.11 H(oin\(*,G\))-.055 E F0 2.75(AJ)122 416.4 S
(oin\(*,G\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75(ni)
-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to the)-.11 E(router')122
429.4 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G,rpt\) do)122 446
Q(wnstream state machine on interf)-.275 E
(ace I transitions to PruneTmp state)-.11 E(whilst the remainder of the\
 compound Join/Prune message containing the Join\(*,G\) is)122 459 Q
(processed.)122 472 Q F1(Recei)97 488.6 Q .22 -.11(ve J)-.11 H
(oin\(S,G,r)-.055 E(pt\))-.11 E F0 2.75(AJ)122 501.6 S
(oin\(S,G,rpt\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75
(ni)-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to)-.11 E(the router')122
514.6 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G,rpt\) do)122
531.2 Q(wnstream state machine on interf)-.275 E
(ace I transitions to NoInfo state.)-.11 E(ET)5.5 E
(and PPT are canceled.)122 544.2 Q F1(Recei)97 560.8 Q .22 -.11(ve P)
-.11 H(rune\(S,G,r).11 E(pt\))-.11 E F0 2.75(AP)122 573.8 S
(rune\(S,G,rpt\) is recei)-2.75 E -.165(ve)-.275 G 2.75(do).165 G 2.75
(ni)-2.75 G(nterf)-2.75 E
(ace I with its Upstream Neighbor Address set to)-.11 E(the router')122
586.8 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G,rpt\) do)122
603.4 Q(wnstream state machine on interf)-.275 E
(ace I remains in Pruned state.)-.11 E(The)5.5 E(Expiry T)122 616.4 Q
(imer \(ET\) is restarted, set to maximum of its current v)-.385 E
(alue and the HoldT)-.275 E(ime)-.385 E
(from the triggering Join/Prune message.)122 629.4 Q F1(Expiry T)97 646
Q(imer Expir)-.198 E(es)-.198 E F0(The Expiry T)122 659 Q
(imer for the \(S,G,rpt\) do)-.385 E(wnstream state machine on interf)
-.275 E(ace I e)-.11 E(xpires.)-.165 E(The \(S,G,rpt\) do)122 675.6 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the NoInfo state.)-.11 E(ET and PPT are canceled.)
122 688.6 Q(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E
160.971(elas Section)-.165 F 2.75(4.5.4. [P)2.75 F(age 42])-.165 E EP
%%Page: 43 43
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF -.814
(Tr)72 85 S(ansitions fr).814 E(om PruneP)-.198 E(endingTmp State)-.22 E
F0(When in PrunePendingTmp \(PP'\) state and processing a compound Join\
/Prune message, the)72 101.6 Q(follo)72 114.6 Q(wing e)-.275 E -.165(ve)
-.275 G(nts may trigger a transition:).165 E F1(Recei)97 131.2 Q .22
-.11(ve P)-.11 H(rune\(S,G,r).11 E(pt\))-.11 E F0
(The compound Join/Prune message contains a Prune\(S,G,rpt\).)122 144.2
Q(The \(S,G,rpt\) do)122 160.8 Q(wnstream state machine on interf)-.275
E(ace I transitions back to the)-.11 E(PrunePending state.)122 173.8 Q
(The Expiry T)5.5 E
(imer \(ET\) is restarted, set to maximum of its current)-.385 E -.275
(va)122 186.8 S(lue and the HoldT).275 E
(ime from the triggering Join/Prune message.)-.385 E F1(End of Message)
97 203.4 Q F0(The end of the compound Join/Prune message is reached.)122
216.4 Q(The \(S,G,rpt\) do)122 233 Q(wnstream state machine on interf)
-.275 E(ace I transitions to the NoInfo state.)-.11 E
(ET and PPT are canceled.)122 246 Q F1 -.814(Tr)72 272 S(ansitions fr)
.814 E(om PruneTmp State)-.198 E F0(When in PruneTmp \(P'\) state and p\
rocessing a compound Join/Prune message, the follo)72 288.6 Q(wing)-.275
E -2.365 -.275(ev e)72 301.6 T(nts may trigger a transition:).275 E F1
(Recei)97 318.2 Q .22 -.11(ve P)-.11 H(rune\(S,G,r).11 E(pt\))-.11 E F0
(The compound Join/Prune message contains a Prune\(S,G,rpt\).)122 331.2
Q(The \(S,G,rpt\) do)122 347.8 Q(wnstream state machine on interf)-.275
E(ace I transitions back to the Pruned)-.11 E 2.75(state. The)122 360.8
R(Expiry T)2.75 E
(imer \(ET\) is restarted, set to maximum of its current v)-.385 E
(alue and the)-.275 E(HoldT)122 373.8 Q
(ime from the triggering Join/Prune message.)-.385 E F1(End of Message)
97 390.4 Q F0(The end of the compound Join/Prune message is reached.)122
403.4 Q(The \(S,G,rpt\) do)122 420 Q(wnstream state machine on interf)
-.275 E(ace I transitions to the NoInfo state.)-.11 E
(ET and PPT are canceled.)122 433 Q F1(Notes:)72 459 Q F0(Recei)72 475.6
Q(ving a Prune\(*,G\) does not af)-.275 E(fect the \(S,G,rpt\) do)-.275
E(wnstream state machine.)-.275 E(Recei)72 492.2 Q
(ving a Join\(*,*,RP\) does not af)-.275 E(fect the \(S,G,rpt\) do)-.275
E(wnstream state machine.)-.275 E(If a router has)5.5 E
(originated Join\(*,*,RP\) and pruned a source of)72 505.2 Q 2.75(fi)
-.275 G 2.75(tu)-2.75 G(sing Prune\(S,G,rpt\), then to recei)-2.75 E .33
-.165(ve t)-.275 H(hat).165 E(source ag)72 518.2 Q(ain it should e)-.055
E(xplicitly re-join using Join\(S,G,rpt\) or Join\(*,G\).)-.165 E
(In some LAN)5.5 E(topologies it is possible for a router sending a ne)
72 531.2 Q 2.75(wJ)-.275 G(oin\(*,*,RP\) to ha)-2.75 E .33 -.165(ve t)
-.22 H 2.75(ow).165 G(ait as much as a)-2.86 E(Join/Prune Interv)72
544.2 Q(al before noticing that it needs to o)-.275 E -.165(ve)-.165 G
(rride a neighbor').165 E 2.75(sp)-.605 G(re-e)-2.75 E(xisting)-.165 E
2.75(Prune\(S,G,rpt\). This)72 557.2 R(is considered acceptable, as \(*\
,*,RP\) state is intended to be used only in)2.75 E(long-li)72 570.2 Q
-.165(ve)-.275 G 2.75(da).165 G(nd persistent scenarios.)-2.75 E F1 2.75
(4.5.5. Sending)72 609.2 R(\(*,*,RP\) J)2.75 E(oin/Prune Messages)-.165
E F0(The per)72 625.8 Q(-interf)-.22 E
(ace state-machines for \(*,*,RP\) hold join state from do)-.11 E
(wnstream PIM routers.)-.275 E(This)5.5 E
(state then determines whether a router needs to propag)72 638.8 Q
(ate a Join\(*,*,RP\) upstream to)-.055 E -.11(wa)-.275 G(rds the).11 E
(RP)72 651.8 Q(.)-1.221 E(If a router wishes to propag)72 668.4 Q
(ate a Join\(*,*,RP\) upstream, it must also w)-.055 E
(atch for messages on its)-.11 E(upstream interf)72 681.4 Q
(ace from other routers on that subnet, and these may modify its beha)
-.11 E(vior)-.22 E 5.5(.I)-.605 G 2.75(fi)-5.5 G 2.75(ts)-2.75 G(ees)
-2.75 E 2.75(aJ)72 694.4 S
(oin\(*,*,RP\) to the correct upstream neighbor)-2.75 E 2.75(,i)-.44 G
2.75(ts)-2.75 G(hould suppress its o)-2.75 E(wn Join\(*,*,RP\).)-.275 E
(If it sees)5.5 E 2.75(aP)72 707.4 S
(rune\(*,*,RP\) to the correct upstream neighbor)-2.75 E 2.75(,i)-.44 G
2.75(ts)-2.75 G(hould be prepared to o)-2.75 E -.165(ve)-.165 G
(rride that prune by).165 E(sending a Join\(*,*,RP\) almost immediately)
72 720.4 Q 5.5(.F)-.715 G(inally)-5.5 E 2.75(,i)-.715 G 2.75(fi)-2.75 G
2.75(ts)-2.75 G(ees the Generation ID \(see Section 4.3\))-2.75 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.5.5. [P)2.75 F(age 43])-.165 E EP
%%Page: 44 44
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(of the correct upstream neighbor change, it kno)72 85 Q
(ws that the upstream neighbor has lost state, and it)-.275 E(should be\
 prepared to refresh the state by sending a Join\(*,*,RP\) almost immed\
iately)72 98 Q(.)-.715 E
(In addition if the MRIB changes to indicate that the ne)72 114.6 Q
(xt hop to)-.165 E -.11(wa)-.275 G(rds the RP has changed, the).11 E
(router should prune of)72 127.6 Q 2.75(ff)-.275 G(rom the old ne)-2.75
E(xt hop, and join to)-.165 E -.11(wa)-.275 G(rds the ne).11 E 2.75(wn)
-.275 G -.165(ex)-2.75 G 2.75(th).165 G(op.)-2.75 E
(The upstream \(*,*,RP\) state-machine contains only tw)72 144.2 Q 2.75
(os)-.11 G(tates:)-2.75 E/F1 11/Times-Bold@0 SF(Not J)72 160.8 Q(oined)
-.165 E F0(The do)97 173.8 Q(wnstream state-machines indicate that the \
router does not need to join the \(*,*,RP\))-.275 E(tree for this RP)97
186.8 Q(.)-1.221 E F1 -.165(Jo)72 203.4 S(ined).165 E F0(The do)97 216.4
Q(wnstream state-machines indicate that the router w)-.275 E(ould lik)
-.11 E 2.75(et)-.11 G 2.75(oj)-2.75 G(oin the \(*,*,RP\) tree)-2.75 E
(for this RP)97 229.4 Q(.)-1.221 E
(In addition, one timer JT\(*,*,RP\) is k)72 246 Q
(ept which is used to trigger the sending of a Join\(*,*,RP\) to)-.11 E
(the upstream ne)72 259 Q(xt hop to)-.165 E -.11(wa)-.275 G(rds the RP)
.11 E 2.75(,M)-1.221 G(RIB.ne)-2.75 E(xt_hop\(RP\).)-.165 E 106 361 396
498 -159.831 201 108 437.831 PBEGIN
%%BeginDocument: sending-starstarrp-std.ps
%%Creator: idraw
%%DocumentFonts: Helvetica
%%Pages: 1
%%BoundingBox: 106 361 604 562
%%EndComments

%%BeginIdrawPrologue
/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

%%EndIdrawPrologue

/arrowHeight 8 def
/arrowWidth 4 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
/parenleft/parenright/asterisk/plus/comma/minus/period/slash
/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
/guillemotright/onequarter/onehalf/threequarters/questiondown
/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
/yacute/thorn/ydieresis
] def
/Helvetica reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 /FontBBox load 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 7.56686e-15 7.25873e-43 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.956649 0 0 0.956649 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -12.5 270.5 ] concat
%I 4
697 435
699 577
777 547
724 466
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -12.5 270.5 ] concat
%I 4
697 435
583 528
670 588
681 467
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -12.5 270.5 ] concat
%I 4
697 435
769 298
626 305
672 405
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -12.5 270.5 ] concat
%I 4
697 435
857 563
871 451
750 454
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -12.5 270.5 ] concat
%I 4
697 435
873 446
857 323
749 413
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 3
593 592
385 528
273 576
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 3
209 592
401 656
529 608
3 BSpl
%I 2
End

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I
209 592 64 32 Elli
End

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 231.5 192 ] concat
%I
209 592 64 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 134.5 497.5 ] concat
%I
[
(not)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 128 487.5 ] concat
%I
[
(joined)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 324 491.5 ] concat
%I
[
(joined)
] Text
End

Begin %I BSpl
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
none SetP %I p n
%I t
[ 0.142361 -0 -0 0.0953237 401.226 424.701 ] concat
%I 8
677 1262
733 1262
733 802
815 704
813 705
733 618
733 158
677 158
8 BSpl
%I 8
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 422 465.5 ] concat
%I
[
(MRIB.next_hop\(RP\))
(GenID changes)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 421.5 538 ] concat
%I
[
(See Prune\(*,*,RP\))
(to MRIB.next_hop\(RP\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 175 466 ] concat
%I
[
(JoinDesired\(*,*,RP\)->FALSE)
([Send Prune\(*,*,RP\)])
([Cancel Join Timer])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 338.501 579.511 ] concat
%I
[
(See Join\(*,*,RP\) to MRIB.next_hop\(RP\))
([Raise Join Timer to t_joinsuppress])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 171 531 ] concat
%I
[
(JoinDesired\(*,*,RP\)->TRUE)
([Send Join\(*,*,RP\)])
([Set Join Timer to t_periodic])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 251.5 418 ] concat
%I
[
(MRIB.next_hop\(RP\) changes)
([Send Join\(*,*,RP\) to new next hop])
([Send Prune\(*,*,RP\) to old next hop])
([Set Join Timer to t_periodic])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 520.625 510.012 ] concat
%I
[
([Lower Join Timer to)
(randomized)
(prune-override interval])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 182.024 583.517 ] concat
%I
[
(Join Timer Expires)
([Send Join\(*,*,RP\)])
([Set Join Timer to t_periodic])
] Text
End

End %I eop

showpage


end
%%EndDocument
end PEND F1(Figur)205.388 476.831 Q 2.75(e6)-.198 G 2.75(:U)-2.75 G
(pstr)-2.75 E(eam \(*,*,RP\) state-machine)-.198 E F0(Fenner/Handle)72
769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.5.5. [P)2.75 F(age 44])-.165 E EP
%%Page: 45 45
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(Upstream \(*,*,RP\) state-machine in tab)72 85 Q(ular form:)-.22 E .44
LW 503.996 95.75 72 95.75 DL/F1 11/Times-Bold@0 SF(Ev)340.075 106 Q(ent)
-.11 E 503.996 110.75 192.559 110.75 DL(Pr)91.971 120 Q .33 -.165(ev S)
-.198 H(tate).165 E -.165(Jo)223.516 121 S(inDesir).165 E(ed\(*,*,RP\))
-.198 E(->T)223.516 134 Q(rue)-.814 E -.165(Jo)389.678 121 S(inDesir)
.165 E(ed\(*,*,RP\))-.198 E(->F)389.678 134 Q(alse)-.275 E 503.996
138.75 72 138.75 DL 503.996 140.75 72 140.75 DL F0(-)389.678 151 Q
(-> J state)223.516 151 Q F1(NotJ)91.971 164 Q(oined \(NJ\))-.165 E F0
(Send Join\(*,*,RP\); Set)223.516 164 Q(Join T)223.516 177 Q
(imer to t_periodic)-.385 E 503.996 181.75 72 181.75 DL(-)223.516 192 Q
F1 -.165(Jo)91.971 192 S(ined \(J\)).165 E F0(-> NJ state)389.678 192 Q
(Send Prune\(*,*,RP\);)389.678 205 Q(Cancel Join T)389.678 218 Q(imer)
-.385 E 503.996 222.75 72 222.75 DL 359.721 110.75 359.721 222.75 DL
192.559 95.75 192.559 222.75 DL 194.559 95.75 194.559 222.75 DL 503.996
95.75 503.996 222.75 DL 72 95.75 72 222.75 DL(In addition, we ha)72
240.6 Q .33 -.165(ve t)-.22 H(he follo).165 E
(wing transitions which occur within the Joined state:)-.275 E 503.997
251.35 72 251.35 DL F1(In J)244.845 261.6 Q(oined \(J\) State)-.165 E
503.997 266.35 72 266.35 DL 503.997 268.35 72 268.35 DL -.198(Ti)83.895
278.6 S(mer Expir).198 E(es)-.198 E(See J)203.004 278.6 Q(oin\(*,*,RP\))
-.165 E(to)203.004 291.6 Q(MRIB.next_hop\(RP\))203.004 304.6 Q
(See Prune\(*,*,RP\))336.765 278.6 Q(to)336.765 291.6 Q
(MRIB.next_hop\(RP\))336.765 304.6 Q 503.997 309.35 72 309.35 DL 503.997
311.35 72 311.35 DL F0(Send Join\(*,*,RP\);)83.895 321.6 Q(Set Join T)
83.895 334.6 Q(imer to)-.385 E(t_periodic)83.895 347.6 Q
(Increase Join T)203.004 321.6 Q(imer)-.385 E(to t_joinsuppress)203.004
334.6 Q(Decrease Join T)336.765 321.6 Q(imer)-.385 E(to t_o)336.765
334.6 Q -.165(ve)-.165 G(rride).165 E 503.997 352.35 72 352.35 DL
318.922 268.35 318.922 352.35 DL 185.161 268.35 185.161 352.35 DL
503.997 251.35 503.997 352.35 DL 72 251.35 72 352.35 DL 503.996 364.35
72 364.35 DL F1(In J)244.845 374.6 Q(oined \(J\) State)-.165 E 503.996
379.35 72 379.35 DL 503.996 381.35 72 381.35 DL
(MRIB.next_hop\(RP\) changes)104.255 391.6 Q(MRIB.next_hop\(RP\) GenID)
339.136 391.6 Q(changes)339.136 404.6 Q 503.996 409.35 72 409.35 DL
503.996 411.35 72 411.35 DL F0(Send Join\(*,*,RP\) to ne)104.255 421.6 Q
2.75(wn)-.275 G -.165(ex)-2.75 G(t).165 E
(hop; Send Prune\(*,*,RP\) to old)104.255 434.6 Q(ne)104.255 447.6 Q
(xt hop; set Join T)-.165 E(imer to)-.385 E(t_periodic)104.255 460.6 Q
(Decrease Join T)339.136 421.6 Q(imer to)-.385 E(t_o)339.136 434.6 Q
-.165(ve)-.165 G(rride).165 E 503.996 465.35 72 465.35 DL 290.753 381.35
290.753 465.35 DL 503.996 364.35 503.996 465.35 DL 72 364.35 72 465.35
DL(This state machine uses the follo)72 483.2 Q(wing macro:)-.275 E/F2
11/Courier@0 SF(bool JoinDesired\(*,*,RP\) {)85.2 502.2 Q
(if immediate_olist\(*,*,RP\) != NULL)105 515.2 Q(return TRUE)131.4
528.2 Q(else)105 541.2 Q(return FALSE)131.4 554.2 Q(})85.2 567.2 Q F0
(JoinDesired\(*,*,RP\) is true when the router has recei)72 586.2 Q
-.165(ve)-.275 G 2.75(d\().165 G(*,*,RP\) Joins from an)-2.75 E 2.75(yd)
-.165 G -.275(ow)-2.75 G(nstream).275 E(interf)72 599.2 Q 2.75
(ace. Note)-.11 F(that although JoinDesired is true, the router')2.75 E
2.75(ss)-.605 G(ending of a Join\(*,*,RP\) message)-2.75 E(may be suppr\
essed by another router sending a Join\(*,*,RP\) onto the upstream inte\
rf)72 612.2 Q(ace.)-.11 E F1 -.814(Tr)72 638.2 S(ansitions fr).814 E
(om NotJ)-.198 E(oined State)-.165 E F0(When the upstream \(*,*,RP\) st\
ate-machine is in NotJoined state, the follo)72 654.8 Q(wing e)-.275 E
-.165(ve)-.275 G(nt may trigger).165 E 2.75(as)72 667.8 S
(tate transition:)-2.75 E F1 -.165(Jo)97 684.4 S(inDesir).165 E
(ed\(*,*,RP\) becomes T)-.198 E(rue)-.814 E F0(The do)122 697.4 Q
(wnstream state for \(*,*,RP\) has changed so that at least one interf)
-.275 E(ace is in)-.11 E
(immediate_olist\(*,*,RP\), making JoinDesired\(*,*,RP\) become T)122
710.4 Q(rue.)-.385 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)
-.385 E 160.971(elas Section)-.165 F 2.75(4.5.5. [P)2.75 F(age 45])-.165
E EP
%%Page: 46 46
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(The upstream \(*,*,RP\) state machine transitions to Joined state.)122
85 Q(Send Join\(*,*,RP\) to)5.5 E(the appropriate upstream neighbor)122
98 Q 2.75(,w)-.44 G(hich is MRIB.ne)-2.75 E 2.75(xt_hop\(RP\). Set)-.165
F(the Join T)2.75 E(imer)-.385 E(\(JT\) to e)122 111 Q
(xpire after t_periodic seconds.)-.165 E/F1 11/Times-Bold@0 SF -.814(Tr)
72 137 S(ansitions fr).814 E(om J)-.198 E(oined State)-.165 E F0(When t\
he upstream \(*,*,RP\) state-machine is in Joined state, the follo)72
153.6 Q(wing e)-.275 E -.165(ve)-.275 G(nts may trigger).165 E
(state transitions:)72 166.6 Q F1 -.165(Jo)97 183.2 S(inDesir).165 E
(ed\(*,*,RP\) becomes F)-.198 E(alse)-.275 E F0(The do)122 196.2 Q
(wnstream state for \(*,*,RP\) has changed so no interf)-.275 E
(ace is in)-.11 E
(immediate_olist\(*,*,RP\), making JoinDesired\(*,*,RP\) become F)122
209.2 Q(alse.)-.165 E
(The upstream \(*,*,RP\) state machine transitions to NotJoined state.)
122 225.8 Q(Send)5.5 E
(Prune\(*,*,RP\) to the appropriate upstream neighbor)122 238.8 Q 2.75
(,w)-.44 G(hich is MRIB.ne)-2.75 E(xt_hop\(RP\).)-.165 E
(Cancel the Join T)122 251.8 Q(imer \(JT\).)-.385 E F1 -.165(Jo)97 268.4
S(in T).165 E(imer Expir)-.198 E(es)-.198 E F0(The Join T)122 281.4 Q
(imer \(JT\) e)-.385 E(xpires, indicating time to send a Join\(*,*,RP\))
-.165 E(Send Join\(*,*,RP\) to the appropriate upstream neighbor)122 298
Q 2.75(,w)-.44 G(hich is)-2.75 E(MRIB.ne)122 311 Q 2.75
(xt_hop\(RP\). Restart)-.165 F(the Join T)2.75 E(imer \(JT\) to e)-.385
E(xpire after t_periodic seconds.)-.165 E F1(See J)97 327.6 Q
(oin\(*,*,RP\) to MRIB.next_hop\(RP\))-.165 E F0(This e)122 340.6 Q
-.165(ve)-.275 G(nt is only rele).165 E -.275(va)-.275 G
(nt if RPF_interf).275 E(ace\(RP\) is a shared medium.)-.11 E
(This router sees)5.5 E(another router on RPF_interf)122 353.6 Q
(ace\(RP\) send a Join\(*,*,RP\) to MRIB.ne)-.11 E(xt_hop\(RP\).)-.165 E
(This causes this router to suppress its o)122 366.6 Q(wn Join.)-.275 E
(The upstream \(*,*,RP\) state machine remains in Joined state.)122
383.2 Q(Let t_joinsuppress be the minimum of t_suppressed and the HoldT)
122 399.8 Q(ime from the)-.385 E(Join/Prune message triggering this e)
122 412.8 Q -.165(ve)-.275 G 2.75(nt. If).165 F(the Join T)2.75 E
(imer is set to e)-.385 E(xpire in less than)-.165 E
(t_joinsuppress seconds, reset it so that it e)122 425.8 Q
(xpires after t_joinsuppress seconds.)-.165 E(If the)5.5 E(Join T)122
438.8 Q(imer is set to e)-.385 E
(xpire in more than t_joinsuppress seconds, lea)-.165 E .33 -.165(ve i)
-.22 H 2.75(tu).165 G(nchanged.)-2.75 E F1
(See Prune\(*,*,RP\) to MRIB.next_hop\(RP\))97 455.4 Q F0(This e)122
468.4 Q -.165(ve)-.275 G(nt is only rele).165 E -.275(va)-.275 G
(nt if RPF_interf).275 E(ace\(RP\) is a shared medium.)-.11 E
(This router sees)5.5 E(another router on RPF_interf)122 481.4 Q
(ace\(RP\) send a Prune\(*,*,RP\) to MRIB.ne)-.11 E(xt_hop\(RP\).)-.165
E(As this router is in Joined state, it must o)122 494.4 Q -.165(ve)
-.165 G(rride the Prune after a short random).165 E(interv)122 507.4 Q
(al.)-.275 E
(The upstream \(*,*,RP\) state machine remains in Joined state.)122 524
Q(If the Join T)5.5 E(imer is set)-.385 E(to e)122 537 Q
(xpire in more than t_o)-.165 E -.165(ve)-.165 G
(rride seconds, reset it so that it e).165 E(xpires after t_o)-.165 E
-.165(ve)-.165 G(rride).165 E 2.75(seconds. If)122 550 R(the Join T)2.75
E(imer is set to e)-.385 E(xpire in less than t_o)-.165 E -.165(ve)-.165
G(rride seconds, lea).165 E .33 -.165(ve i)-.22 H(t).165 E(unchanged.)
122 563 Q F1(MRIB.next_hop\(RP\) changes)97 579.6 Q F0 2.75(Ac)122 592.6
S(hange in the MRIB routing base causes the ne)-2.75 E(xt hop to)-.165 E
-.11(wa)-.275 G(rds the RP to change.).11 E
(The upstream \(*,*,RP\) state machine remains in Joined state.)122
609.2 Q(Send Prune\(*,*,RP\) to)5.5 E(the old upstream neighbor)122
622.2 Q 2.75(,w)-.44 G(hich is the old v)-2.75 E(alue of MRIB.ne)-.275 E
2.75(xt_hop\(RP\). Send)-.165 F(Join\(*,*,RP\) to the ne)122 635.2 Q
2.75(wu)-.275 G(pstream neighbor which is the ne)-2.75 E 2.75(wv)-.275 G
(alue of)-3.025 E(MRIB.ne)122 648.2 Q 2.75(xt_hop\(RP\). Set)-.165 F
(the Join T)2.75 E(imer \(JT\) to e)-.385 E
(xpire after t_periodic seconds.)-.165 E F1
(MRIB.next_hop\(RP\) GenID changes)97 664.8 Q F0
(The Generation ID of the router that is MRIB.ne)122 677.8 Q
(xt_hop\(RP\) changes.)-.165 E(This normally)5.5 E(means that this neig\
hbor has lost state, and so the state must be refreshed.)122 690.8 Q(Th\
e upstream \(*,*,RP\) state machine remains in Joined state. If the Joi\
n T)122 707.4 Q(imer is set)-.385 E(to e)122 720.4 Q
(xpire in more than t_o)-.165 E -.165(ve)-.165 G
(rride seconds, reset it so that it e).165 E(xpires after t_o)-.165 E
-.165(ve)-.165 G(rride).165 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165
E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.5.5. [P)2.75 F
(age 46])-.165 E EP
%%Page: 47 47
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(seconds.)122 85 Q/F1 11
/Times-Bold@0 SF 2.75(4.5.6. Sending)72 111 R(\(*,G\) J)2.75 E
(oin/Prune Messages)-.165 E F0(The per)72 127.6 Q(-interf)-.22 E
(ace state-machines for \(*,G\) hold join state from do)-.11 E
(wnstream PIM routers.)-.275 E(This)5.5 E
(state then determines whether a router needs to propag)72 140.6 Q
(ate a Join\(*,G\) upstream to)-.055 E -.11(wa)-.275 G(rds the RP).11 E
(.)-1.221 E(If a router wishes to propag)72 157.2 Q
(ate a Join\(*,G\) upstream, it must also w)-.055 E
(atch for messages on its)-.11 E(upstream interf)72 170.2 Q
(ace from other routers on that subnet, and these may modify its beha)
-.11 E(vior)-.22 E 5.5(.I)-.605 G 2.75(fi)-5.5 G 2.75(ts)-2.75 G(ees)
-2.75 E 2.75(aJ)72 183.2 S(oin\(*,G\) to the correct upstream neighbor)
-2.75 E 2.75(,i)-.44 G 2.75(ts)-2.75 G(hould suppress its o)-2.75 E
(wn Join\(*,G\).)-.275 E(If it sees a)5.5 E
(Prune\(*,G\) to the correct upstream neighbor)72 196.2 Q 2.75(,i)-.44 G
2.75(ts)-2.75 G(hould be prepared to o)-2.75 E -.165(ve)-.165 G
(rride that prune by).165 E(sending a Join\(*,G\) almost immediately)72
209.2 Q 5.5(.F)-.715 G(inally)-5.5 E 2.75(,i)-.715 G 2.75(fi)-2.75 G
2.75(ts)-2.75 G(ees the Generation ID \(see Section 4.3\) of)-2.75 E
(the correct upstream neighbor change, it kno)72 222.2 Q
(ws that the upstream neighbor has lost state, and it)-.275 E(should be\
 prepared to refresh the state by sending a Join\(*,G\) almost immediat\
ely)72 235.2 Q(.)-.715 E
(In addition if the MRIB changes to indicate that the ne)72 251.8 Q
(xt hop to)-.165 E -.11(wa)-.275 G(rds the RP has changed, the).11 E
(router should prune of)72 264.8 Q 2.75(ff)-.275 G(rom the old ne)-2.75
E(xt hop, and join to)-.165 E -.11(wa)-.275 G(rds the ne).11 E 2.75(wn)
-.275 G -.165(ex)-2.75 G 2.75(th).165 G(op.)-2.75 E
(The upstream \(*,G\) state-machine only contains tw)72 281.4 Q 2.75(os)
-.11 G(tates:)-2.75 E F1(Not J)72 298 Q(oined)-.165 E F0(The do)97 311 Q
(wnstream state-machines indicate that the router does not need to join\
 the RP tree for)-.275 E(this group.)97 324 Q F1 -.165(Jo)72 340.6 S
(ined).165 E F0(The do)97 353.6 Q
(wnstream state-machines indicate that the router w)-.275 E(ould lik)
-.11 E 2.75(et)-.11 G 2.75(oj)-2.75 G(oin the RP tree for)-2.75 E
(this group.)97 366.6 Q(In addition, one timer JT\(*,G\) is k)72 383.2 Q
(ept which is used to trigger the sending of a Join\(*,G\) to the)-.11 E
(upstream ne)72 396.2 Q(xt hop to)-.165 E -.11(wa)-.275 G(rds the RP).11
E 2.75(,R)-1.221 G(PF'\(*,G\).)-2.75 E 106 361 396 497 -162.543 204 108
577.743 PBEGIN
%%BeginDocument: sending-starg-std.ps
%%Creator: idraw
%%DocumentFonts: Helvetica
%%Pages: 1
%%BoundingBox: 106 361 603 565
%%EndComments

%%BeginIdrawPrologue
/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

%%EndIdrawPrologue

/arrowHeight 8 def
/arrowWidth 4 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
/parenleft/parenright/asterisk/plus/comma/minus/period/slash
/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
/guillemotright/onequarter/onehalf/threequarters/questiondown
/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
/yacute/thorn/ydieresis
] def
/Helvetica reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 /FontBBox load 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 7.56686e-15 7.25873e-43 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.956649 0 0 0.956649 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
0 SetP
%I t
[ 0.500173 -0 -0 0.500173 107.037 342.618 ] concat
%I 4
475 280
660 223
591 151
486 263
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.500173 -0 -0 0.500173 107.037 342.618 ] concat
%I 4
473 289
637 344
627 254
513 275
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.500173 -0 -0 0.500173 107.037 342.618 ] concat
%I 4
472 290
595 456
631 365
511 310
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -12.5 270.5 ] concat
%I 4
697 435
699 577
777 547
724 466
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -12.5 270.5 ] concat
%I 4
697 435
583 528
670 588
681 467
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -12.5 270.5 ] concat
%I 4
697 435
769 298
626 305
672 405
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 3
593 592
385 528
273 576
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 3
209 592
401 656
529 608
3 BSpl
%I 2
End

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I
209 592 64 32 Elli
End

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 231.5 192 ] concat
%I
209 592 64 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 134.5 497.5 ] concat
%I
[
(not)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 128 487.5 ] concat
%I
[
(joined)
] Text
End

Begin %I BSpl
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
none SetP %I p n
%I t
[ 0.115245 -0 -0 0.0692446 422.326 463.834 ] concat
%I 8
677 1262
733 1262
733 802
815 704
813 705
733 618
733 158
677 158
8 BSpl
%I 8
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 421 546.503 ] concat
%I
[
(See Prune\(*,G\))
(to RPF'\(*,G\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 423 500.012 ] concat
%I
[
(RPF'\(*,G\) GenID)
(changes)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 324 491.5 ] concat
%I
[
(joined)
] Text
End

Begin %I Line
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
none SetP %I p n
%I t
[ 1.00035 -0 -0 1.00035 117.04 149.052 ] concat
%I
248 418 244 408 Line
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 175 462.006 ] concat
%I
[
(JoinDesired\(*,G\)->FALSE)
([Send Prune\(*,G\)])
([Cancel Join Timer])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 190.512 582.518 ] concat
%I
[
(Join Timer Expires)
([Send Join\(*,G\)])
([Set Join Timer to t_periodic])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 339 587.5 ] concat
%I
[
(See Join\(*,G\) to RPF'\(*,G\))
([Raise Join Timer to t_joinsuppress])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 520.125 521.001 ] concat
%I
[
([Lower Join Timer to)
(randomized)
(prune-override interval])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 423.499 453.997 ] concat
%I
[
(RPF'\(*,G\) changes)
(due to an Assert)
([Send Join\(*,G\)])
([Set Join Timer to J/P periodic])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 251.5 418 ] concat
%I
[
(MRIB.next_hop\(RP\(G\)\) changes)
([Send Join\(*,G\) to new next hop])
([Send Prune\(*,G\) to old next hop])
([Set Join Timer to t_periodic])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 150.528 538.989 ] concat
%I
[
(JoinDesired\(*,G\)->TRUE)
([Send Join\(*,G\)])
([Set Join Timer to t_ periodic])
] Text
End

End %I eop

showpage


end
%%EndDocument
end PEND F1(Figur)212.566 616.743 Q 2.75(e7)-.198 G 2.75(:U)-2.75 G
(pstr)-2.75 E(eam \(*,G\) state-machine)-.198 E F0(Fenner/Handle)72 769
Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.5.6. [P)2.75 F(age 47])-.165 E EP
%%Page: 48 48
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(Upstream \(*,G\) state-machine in tab)72 85 Q(ular form:)-.22 E .44 LW
503.993 95.75 72 95.75 DL/F1 11/Times-Bold@0 SF(Ev)342.352 106 Q(ent)
-.11 E 503.993 110.75 196.357 110.75 DL(Pr)93.49 120 Q .33 -.165(ev S)
-.198 H(tate).165 E -.165(Jo)229.592 121 S(inDesir).165 E(ed\(*,G\))
-.198 E(->T)229.592 134 Q(rue)-.814 E -.165(Jo)401.62 121 S(inDesir).165
E(ed\(*,G\))-.198 E(->F)401.62 134 Q(alse)-.275 E 503.993 138.75 72
138.75 DL 503.993 140.75 72 140.75 DL F0(-)401.62 151 Q(-> J state)
229.592 151 Q F1(NotJ)93.49 164 Q(oined \(NJ\))-.165 E F0
(Send Join\(*,G\); Set Join)229.592 164 Q -.385(Ti)229.592 177 S
(mer to t_periodic).385 E 503.993 181.75 72 181.75 DL(-)229.592 192 Q F1
-.165(Jo)93.49 192 S(ined \(J\)).165 E F0(-> NJ state)401.62 192 Q
(Send Prune\(*,G\);)401.62 205 Q(Cancel Join T)401.62 218 Q(imer)-.385 E
503.993 222.75 72 222.75 DL 369.385 110.75 369.385 222.75 DL 196.357
95.75 196.357 222.75 DL 198.357 95.75 198.357 222.75 DL 503.993 95.75
503.993 222.75 DL 72 95.75 72 222.75 DL(In addition, we ha)72 240.6 Q
.33 -.165(ve t)-.22 H(he follo).165 E
(wing transitions which occur within the Joined state:)-.275 E 504
251.35 72 251.35 DL F1(In J)199.704 261.6 Q(oined \(J\) State)-.165 E
504 266.35 72 266.35 DL 504 268.35 72 268.35 DL -.198(Ti)78.874 278.6 S
(mer Expir).198 E(es)-.198 E(See J)169.159 278.6 Q(oin\(*,G\))-.165 E
(to RPF'\(*,G\))169.159 291.6 Q(See Prune\(*,G\))253.339 278.6 Q
(to RPF'\(*,G\))253.339 291.6 Q(RPF'\(*,G\))345.45 278.6 Q(changes)
345.45 291.6 Q(RPF'\(*,G\))427.463 278.6 Q(changes due to)427.463 291.6
Q(Assert)427.463 304.6 Q 504 309.35 72 309.35 DL 504 311.35 72 311.35 DL
F0(Send Join\(*,G\);)78.874 321.6 Q(Set Join T)78.874 334.6 Q(imer)-.385
E(to t_periodic)78.874 347.6 Q(Increase Join)169.159 321.6 Q -.385(Ti)
169.159 334.6 S(mer to).385 E(t_joinsuppress)169.159 347.6 Q
(Decrease Join)253.339 321.6 Q -.385(Ti)253.339 334.6 S(mer to).385 E
(t_o)253.339 347.6 Q -.165(ve)-.165 G(rride).165 E(Decrease Join)345.45
321.6 Q -.385(Ti)345.45 334.6 S(mer to).385 E(t_o)345.45 347.6 Q -.165
(ve)-.165 G(rride).165 E(Send Join\(*,G\);)427.463 321.6 Q(Set Join T)
427.463 334.6 Q(imer)-.385 E(to t_periodic)427.463 347.6 Q 504 352.35 72
352.35 DL 417.152 268.35 417.152 352.35 DL 335.139 268.35 335.139 352.35
DL 243.028 268.35 243.028 352.35 DL 158.848 268.35 158.848 352.35 DL 504
251.35 504 352.35 DL 72 251.35 72 352.35 DL 503.998 364.35 72 364.35 DL
F1(In J)244.846 374.6 Q(oined \(J\) State)-.165 E 503.998 379.35 72
379.35 DL 503.998 381.35 72 381.35 DL(MRIB.next_hop\(RP\(G\)\))105.142
391.6 Q(changes)105.142 404.6 Q(RPF'\(*,G\) GenID changes)347.117 391.6
Q 503.998 409.35 72 409.35 DL 503.998 411.35 72 411.35 DL F0
(Send Join\(*,G\) to ne)105.142 421.6 Q 2.75(wn)-.275 G -.165(ex)-2.75 G
2.75(th).165 G(op;)-2.75 E(Send Prune\(*,G\) to old ne)105.142 434.6 Q
(xt)-.165 E(hop; Set Join T)105.142 447.6 Q(imer to)-.385 E(t_periodic)
105.142 460.6 Q(Decrease Join T)347.117 421.6 Q(imer to)-.385 E(t_o)
347.117 434.6 Q -.165(ve)-.165 G(rride).165 E 503.998 465.35 72 465.35
DL 297.404 381.35 297.404 465.35 DL 503.998 364.35 503.998 465.35 DL 72
364.35 72 465.35 DL(This state machine uses the follo)72 483.2 Q
(wing macro:)-.275 E/F2 11/Courier@0 SF(bool JoinDesired\(*,G\) {)85.2
502.2 Q(if \(immediate_olist\(*,G\) != NULL ||)105 515.2 Q
(\(JoinDesired\(*,*,RP\(G\)\) &&)131.4 528.2 Q
(AssertWinner\(*,G,RPF_interface\(RP\(G\)\)\) != NULL\)\))138 541.2 Q
(return TRUE)131.4 554.2 Q(else)105 567.2 Q(return FALSE)131.4 580.2 Q
(})85.2 593.2 Q F0(JoinDesired\(*,G\) is true when the router has forw)
72 612.2 Q(arding state that w)-.11 E(ould cause it to forw)-.11 E(ard)
-.11 E(traf)72 625.2 Q(\214c for G using shared tree state.)-.275 E
(Note that although JoinDesired is true, the router')5.5 E 2.75(ss)-.605
G(ending)-2.75 E(of a Join\(*,G\) message may be suppressed by another \
router sending a Join\(*,G\) onto the)72 638.2 Q(upstream interf)72
651.2 Q(ace.)-.11 E F1 -.814(Tr)72 677.2 S(ansitions fr).814 E(om NotJ)
-.198 E(oined State)-.165 E F0(When the upstream \(*,G\) state-machine \
is in NotJoined state, the follo)72 693.8 Q(wing e)-.275 E -.165(ve)
-.275 G(nt may trigger a).165 E(state transition:)72 706.8 Q
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.5.6. [P)2.75 F(age 48])-.165 E EP
%%Page: 49 49
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF -.165
(Jo)97 85 S(inDesir).165 E(ed\(*,G\) becomes T)-.198 E(rue)-.814 E F0
(The do)122 98 Q
(wnstream state for \(*,G\) has changed so that at least one interf)
-.275 E(ace is in)-.11 E
(immediate_olist\(*,G\), making JoinDesired\(*,G\) become T)122 111 Q
(rue.)-.385 E
(The upstream \(*,G\) state machine transitions to Joined state.)122
127.6 Q(Send Join\(*,G\) to the)5.5 E(appropriate upstream neighbor)122
140.6 Q 2.75(,w)-.44 G(hich is RPF'\(*,G\).)-2.75 E(Set the Join T)5.5 E
(imer \(JT\) to e)-.385 E(xpire)-.165 E(after t_periodic seconds.)122
153.6 Q F1 -.814(Tr)72 179.6 S(ansitions fr).814 E(om J)-.198 E
(oined State)-.165 E F0
(When the upstream \(*,G\) state-machine is in Joined state, the follo)
72 196.2 Q(wing e)-.275 E -.165(ve)-.275 G(nts may trigger state).165 E
(transitions:)72 209.2 Q F1 -.165(Jo)97 225.8 S(inDesir).165 E
(ed\(*,G\) becomes F)-.198 E(alse)-.275 E F0(The do)122 238.8 Q
(wnstream state for \(*,G\) has changed so no interf)-.275 E(ace is in)
-.11 E(immediate_olist\(*,G\), making JoinDesired\(*,G\) become F)122
251.8 Q(alse.)-.165 E
(The upstream \(*,G\) state machine transitions to NotJoined state.)122
268.4 Q(Send Prune\(*,G\) to)5.5 E(the appropriate upstream neighbor)122
281.4 Q 2.75(,w)-.44 G(hich is RPF'\(*,G\).)-2.75 E(Cancel the Join T)
5.5 E(imer \(JT\).)-.385 E F1 -.165(Jo)97 298 S(in T).165 E(imer Expir)
-.198 E(es)-.198 E F0(The Join T)122 311 Q(imer \(JT\) e)-.385 E
(xpires, indicating time to send a Join\(*,G\))-.165 E
(Send Join\(*,G\) to the appropriate upstream neighbor)122 327.6 Q 2.75
(,w)-.44 G(hich is RPF'\(*,G\).)-2.75 E(Restart the)5.5 E(Join T)122
340.6 Q(imer \(JT\) to e)-.385 E(xpire after t_periodic seconds.)-.165 E
F1(See J)97 357.2 Q(oin\(*,G\) to RPF'\(*,G\))-.165 E F0(This e)122
370.2 Q -.165(ve)-.275 G(nt is only rele).165 E -.275(va)-.275 G
(nt if RPF_interf).275 E(ace\(RP\(G\)\) is a shared medium.)-.11 E
(This router)5.5 E(sees another router on RPF_interf)122 383.2 Q
(ace\(RP\(G\)\) send a Join\(*,G\) to RPF'\(*,G\).)-.11 E(This)5.5 E
(causes this router to suppress its o)122 396.2 Q(wn Join.)-.275 E
(The upstream \(*,G\) state machine remains in Joined state.)122 412.8 Q
(Let t_joinsuppress be the minimum of t_suppressed and the HoldT)122
429.4 Q(ime from the)-.385 E(Join/Prune message triggering this e)122
442.4 Q -.165(ve)-.275 G 2.75(nt. If).165 F(the Join T)2.75 E
(imer is set to e)-.385 E(xpire in less than)-.165 E
(t_joinsuppress seconds, reset it so that it e)122 455.4 Q
(xpires after t_joinsuppress seconds.)-.165 E(If the)5.5 E(Join T)122
468.4 Q(imer is set to e)-.385 E
(xpire in more than t_joinsuppress seconds, lea)-.165 E .33 -.165(ve i)
-.22 H 2.75(tu).165 G(nchanged.)-2.75 E F1
(See Prune\(*,G\) to RPF'\(*,G\))97 485 Q F0(This e)122 498 Q -.165(ve)
-.275 G(nt is only rele).165 E -.275(va)-.275 G(nt if RPF_interf).275 E
(ace\(RP\(G\)\) is a shared medium.)-.11 E(This router)5.5 E
(sees another router on RPF_interf)122 511 Q
(ace\(RP\(G\)\) send a Prune\(*,G\) to RPF'\(*,G\).)-.11 E(As this)5.5 E
(router is in Joined state, it must o)122 524 Q -.165(ve)-.165 G
(rride the Prune after a short random interv).165 E(al.)-.275 E
(The upstream \(*,G\) state machine remains in Joined state.)122 540.6 Q
(If the Join T)5.5 E(imer is set to)-.385 E -.165(ex)122 553.6 S
(pire in more than t_o).165 E -.165(ve)-.165 G
(rride seconds, reset it so that it e).165 E(xpires after t_o)-.165 E
-.165(ve)-.165 G(rride).165 E 2.75(seconds. If)122 566.6 R(the Join T)
2.75 E(imer is set to e)-.385 E(xpire in less than t_o)-.165 E -.165(ve)
-.165 G(rride seconds, lea).165 E .33 -.165(ve i)-.22 H(t).165 E
(unchanged.)122 579.6 Q F1(RPF'\(*,G\) changes)97 596.2 Q F0
(The current ne)122 609.2 Q(xt hop to)-.165 E -.11(wa)-.275 G
(rds the RP changes due to an Assert\(*,G\) on the).11 E(RPF_interf)122
622.2 Q(ace\(RP\(G\)\).)-.11 E
(The upstream \(*,G\) state machine remains in Joined state.)122 638.8 Q
(If the Join T)5.5 E(imer is set to)-.385 E -.165(ex)122 651.8 S
(pire in more than t_o).165 E -.165(ve)-.165 G
(rride seconds, reset it so that it e).165 E(xpires after t_o)-.165 E
-.165(ve)-.165 G(rride).165 E 2.75(seconds. If)122 664.8 R(the Join T)
2.75 E(imer is set to e)-.385 E(xpire in less than t_o)-.165 E -.165(ve)
-.165 G(rride seconds, lea).165 E .33 -.165(ve i)-.22 H(t).165 E
(unchanged.)122 677.8 Q F1(MRIB.next_hop\(RP\(G\)\) changes)97 694.4 Q
F0(An e)122 707.4 Q -.165(ve)-.275 G(nt occurred which caused the ne)
.165 E(xt hop to)-.165 E -.11(wa)-.275 G(rds the RP for G to change.).11
E(This)5.5 E(may be caused by a change in the MRIB routing database or \
by the installation of a)122 720.4 Q(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.5.6. [P)2.75 F(age 49])-.165 E EP
%%Page: 50 50
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(dif)122 85 Q
(ferent RP-to-group mapping.)-.275 E
(Note that this transition should occur e)5.5 E -.165(ve)-.275 G 2.75
(ni).165 G(f)-2.75 E(RPF'\(*,G\) is not equal to the ne)122 98 Q 2.75
(wn)-.275 G -.165(ex)-2.75 G 2.75(th).165 G(op to)-2.75 E -.11(wa)-.275
G(rds RP\(G\), because it may be that the).11 E(ne)122 111 Q 2.75(wn)
-.275 G(eighbor is a better path to RP\(G\) than RPF'\(*,G\); this tran\
sition ensures that the)-2.75 E(better path is disco)122 124 Q -.165(ve)
-.165 G(red e).165 E -.165(ve)-.275 G 2.75(ni).165 G 2.75(fa)-2.75 G
2.75(na)-2.75 G(ssert occurred pre)-2.75 E(viously)-.275 E(.)-.715 E
(The upstream \(*,G\) state machine remains in Joined state.)122 140.6 Q
(Send Prune\(*,G\) to the old)5.5 E(upstream neighbor)122 153.6 Q 2.75
(,w)-.44 G(hich is the old v)-2.75 E(alue of RPF'\(*,G\).)-.275 E
(Send Join\(*,G\) to the ne)5.5 E(w)-.275 E
(upstream neighbor which is the ne)122 166.6 Q 2.75(wv)-.275 G
(alue of MRIB.ne)-3.025 E(xt_hop\(RP\(G\)\). Note that the)-.165 E
(Join goes to MRIB.ne)122 179.6 Q
(xt_hop\(RP\(G\)\) and not RPF'\(*,G\) e)-.165 E -.165(ve)-.275 G 2.75
(ni).165 G 2.75(ft)-2.75 G(he ne)-2.75 E 2.75(wn)-.275 G(eighbor is)
-2.75 E(on the same interf)122 192.6 Q
(ace as the old one because the routing change may cause the assert)-.11
E(state to be incorrect. Set the Join T)122 205.6 Q(imer \(JT\) to e)
-.385 E(xpire after t_periodic seconds.)-.165 E/F1 11/Times-Bold@0 SF
(RPF'\(*,G\) GenID changes)97 222.2 Q F0
(The Generation ID of the router that is RPF'\(*,G\) changes.)122 235.2
Q(This normally means that)5.5 E
(this neighbor has lost state, and so the state must be refreshed.)122
248.2 Q(The upstream \(*,G\) state machine remains in Joined state. If \
the Join T)122 264.8 Q(imer is set to)-.385 E -.165(ex)122 277.8 S
(pire in more than t_o).165 E -.165(ve)-.165 G
(rride seconds, reset it so that it e).165 E(xpires after t_o)-.165 E
-.165(ve)-.165 G(rride).165 E(seconds.)122 290.8 Q F1 2.75
(4.5.7. Sending)72 316.8 R(\(S,G\) J)2.75 E(oin/Prune Messages)-.165 E
F0(The per)72 333.4 Q(-interf)-.22 E
(ace state-machines for \(S,G\) hold join state from do)-.11 E
(wnstream PIM routers.)-.275 E(This)5.5 E
(state then determines whether a router needs to propag)72 346.4 Q
(ate a Join\(S,G\) upstream to)-.055 E -.11(wa)-.275 G(rds the).11 E
(source.)72 359.4 Q(If a router wishes to propag)72 376 Q
(ate a Join\(S,G\) upstream, it must also w)-.055 E
(atch for messages on its)-.11 E(upstream interf)72 389 Q
(ace from other routers on that subnet, and these may modify its beha)
-.11 E(vior)-.22 E 5.5(.I)-.605 G 2.75(fi)-5.5 G 2.75(ts)-2.75 G(ees)
-2.75 E 2.75(aJ)72 402 S(oin\(S,G\) to the correct upstream neighbor)
-2.75 E 2.75(,i)-.44 G 2.75(ts)-2.75 G(hould suppress its o)-2.75 E
(wn Join\(S,G\).)-.275 E(If it sees a)5.5 E(Prune\(S,G\), Prune\(S,G,rp\
t\), or Prune\(*,G\) to the correct upstream neighbor to)72 415 Q -.11
(wa)-.275 G(rds S, it should).11 E(be prepared to o)72 428 Q -.165(ve)
-.165 G(rride that prune by scheduling a Join\(S,G\) to be sent \(almos\
t\) immediately).165 E(.)-.715 E(Finally)72 441 Q 2.75(,i)-.715 G 2.75
(fi)-2.75 G 2.75(ts)-2.75 G
(ees the Generation ID of its upstream neighbor change, it kno)-2.75 E
(ws that the upstream)-.275 E(neighbor has lost state, and it should re\
fresh the state by scheduling a Join\(S,G\) to be sent)72 454 Q
(\(almost\) immediately)72 467 Q(.)-.715 E
(In addition if MRIB changes cause the ne)72 483.6 Q(xt hop to)-.165 E
-.11(wa)-.275 G(rds the source to change, the router should).11 E
(send a prune to the old ne)72 496.6 Q(xt hop, and a join to the ne)
-.165 E 2.75(wn)-.275 G -.165(ex)-2.75 G 2.75(th).165 G(op.)-2.75 E
(The upstream \(S,G\) state-machine only contains tw)72 513.2 Q 2.75(os)
-.11 G(tates:)-2.75 E F1(Not J)72 529.8 Q(oined)-.165 E F0(The do)97
542.8 Q(wnstream state machines and local membership information do not\
 indicate that the)-.275 E
(router needs to join the shortest-path tree for this \(S,G\).)97 555.8
Q F1 -.165(Jo)72 572.4 S(ined).165 E F0(The do)97 585.4 Q(wnstream stat\
e machines and local membership information indicate that the router)
-.275 E(should join the shortest-path tree for this \(S,G\).)97 598.4 Q
(In addition, one timer JT\(S,G\) is k)72 615 Q
(ept which is used to trigger the sending of a Join\(S,G\) to the)-.11 E
(upstream ne)72 628 Q(xt hop to)-.165 E -.11(wa)-.275 G
(rd S, RPF'\(S,G\).).11 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E
(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.5.7. [P)2.75 F(age 50])
-.165 E EP
%%Page: 51 51
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E 106 352 396 503 -182.648 232
108 267.648 PBEGIN
%%BeginDocument: sending-sg-std.ps
%%Creator: idraw
%%DocumentFonts: Helvetica Times-Italic
%%Pages: 1
%%BoundingBox: 106 352 609 584
%%EndComments

%%BeginIdrawPrologue
/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

%%EndIdrawPrologue

/arrowHeight 8 def
/arrowWidth 4 def

/IdrawDict 52 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
/parenleft/parenright/asterisk/plus/comma/minus/period/slash
/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
/guillemotright/onequarter/onehalf/threequarters/questiondown
/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
/yacute/thorn/ydieresis
] def
/Helvetica reencodeISO def
/Times-Italic reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 /FontBBox load 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 7.56686e-15 7.25873e-43 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.956649 0 0 0.956649 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 178.5 192 ] concat
%I 5
320 591
474 480
475 416
401 463
334 558
5 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 178.5 192 ] concat
%I 4
315 592
319 453
219 480
283 565
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 4
593 592
753 720
769 656
646 611
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 4
593 592
769 560
753 480
645 570
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 4
593 592
769 640
769 560
658 586
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 4
593 592
609 704
673 704
625 624
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 4
593 592
497 672
561 720
577 624
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 3
593 592
385 528
273 576
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I 3
209 592
401 656
529 608
3 BSpl
%I 2
End

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I
209 592 64 32 Elli
End

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 231.5 192 ] concat
%I
209 592 64 32 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 134.5 497.5 ] concat
%I
[
(not)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 128 487.5 ] concat
%I
[
(joined)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 324 491.5 ] concat
%I
[
(joined)
] Text
End

Begin %I Line
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 39.5 192 ] concat
%I
480 751 527 703 Line
%I 2
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 421.5 538 ] concat
%I
[
(See Prune\(S,G\))
(to RPF'\(S,G\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-times-medium-r-normal--8-80-75-75-p-44-iso8859-1
Times-Italic 8 SetF
%I t
[ 1 0 0 1 423 481.5 ] concat
%I
[
(\(note 1\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-times-medium-r-normal--8-80-75-75-p-44-iso8859-1
Times-Italic 8 SetF
%I t
[ 1 0 0 1 423.5 443 ] concat
%I
[
(\(note 1\) )
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 423 425 ] concat
%I
[
(RPF'\(S,G\) GenID)
(changes)
] Text
End

Begin %I BSpl
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
none SetP %I p n
%I t
[ 0.125 -0 -0 0.125 422.875 386.25 ] concat
%I 8
677 1262
733 1262
733 802
815 704
813 705
733 618
733 158
677 158
8 BSpl
%I 8
End

Begin %I Line
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 179 387 ] concat
%I
456 383 372 320 Line
%I 2
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-times-medium-r-normal--8-80-75-75-p-44-iso8859-1
Times-Italic 8 SetF
%I t
[ 1 0 0 1 413 384.5 ] concat
%I
[
(Note 1: For interoperability with)
(implemtations of RFC 2362)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 422.5 501 ] concat
%I
[
(See Prune\(S,G,rpt\))
(to RPF'\(S,G\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 423.5 463 ] concat
%I
[
(See Prune\(*,G\))
(to RPF'\(S,G\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 187 600.512 ] concat
%I
[
(Join Timer Expires)
([Send Join\(S,G\)])
([Set Join Timer to t_ periodic])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 352 607.007 ] concat
%I
[
(See Join\(S,G\) to RPF'\(S,G\))
([Raise Join Timer to t_joinsuppress])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 525.625 497 ] concat
%I
[
([Lower Join Timer to)
(randomized)
(prune-override interval])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 200.964 414.499 ] concat
%I
[
(MRIB.next_hop\(S\) changes)
([Send Join\(S,G\) to new next hop])
([Send Prune\(S,G\) to old next hop])
([Set Join Timer to t_periodic])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 159.022 464.502 ] concat
%I
[
(JoinDesired\(S,G\)->FALSE)
([Send Prune\(S,G\)])
([Set SPTbit\(S,G\) to FALSE])
([Cancel Join Timer])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 151.527 541.985 ] concat
%I
[
(JoinDesired\(S,G\)->TRUE)
([Send Join\(S,G\)])
([Set Join Timer to t_periodic])
] Text
End

End %I eop

showpage


end
%%EndDocument
end PEND/F1 11/Times-Bold@0 SF(Figur)212.258 306.648 Q 2.75(e8)-.198 G
2.75(:U)-2.75 G(pstr)-2.75 E(eam \(S,G\) state-machine)-.198 E F0
(Upstream \(S,G\) state-machine in tab)72 329.248 Q(ular form:)-.22 E
.44 LW 503.998 339.998 72 339.998 DL F1(Ev)338.15 350.248 Q(ent)-.11 E
503.998 354.998 189.349 354.998 DL(Pr)90.687 364.248 Q .33 -.165(ev S)
-.198 H(tate).165 E -.165(Jo)218.38 365.248 S(inDesir).165 E(ed\(S,G\))
-.198 E(->T)218.38 378.248 Q(rue)-.814 E -.165(Jo)380.69 365.248 S
(inDesir).165 E(ed\(S,G\))-.198 E(->F)380.69 378.248 Q(alse)-.275 E
503.998 382.998 72 382.998 DL 503.998 384.998 72 384.998 DL F0
(-> J state)218.38 395.248 Q(-)122.501 E F1(NotJ)90.687 395.248 Q
(oined \(NJ\))-.165 E F0(Send Join\(S,G\); Set)218.38 408.248 Q(Join T)
218.38 421.248 Q(imer to t_periodic)-.385 E 503.998 425.998 72 425.998
DL 158.647(--)218.38 436.248 S 2.75(>N)-158.647 G 2.75(Js)-2.75 G(tate)
-2.75 E F1 -.165(Jo)90.687 436.248 S(ined \(J\)).165 E F0
(Send Prune\(S,G\); Set)380.69 449.248 Q(SPTbit\(S,G\) to F)380.69
462.248 Q(ALSE;)-.814 E(Cancel Join T)380.69 475.248 Q(imer)-.385 E
503.998 479.998 72 479.998 DL 352.659 354.998 352.659 479.998 DL 189.349
339.998 189.349 479.998 DL 191.349 339.998 191.349 479.998 DL 503.998
339.998 503.998 479.998 DL 72 339.998 72 479.998 DL(Fenner/Handle)72 769
Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.5.7. [P)2.75 F(age 51])-.165 E EP
%%Page: 52 52
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(In addition, we ha)72 85 Q
.33 -.165(ve t)-.22 H(he follo).165 E
(wing transitions which occur within the Joined state:)-.275 E .44 LW
503.992 95.75 72 95.75 DL/F1 11/Times-Bold@0 SF(In J)244.843 106 Q
(oined \(J\) State)-.165 E 503.992 110.75 72 110.75 DL 503.992 112.75 72
112.75 DL -.198(Ti)82.01 123 S(mer Expir).198 E(es)-.198 E(See J)187.742
123 Q(oin\(S,G\) to)-.165 E(RPF'\(S,G\))187.742 136 Q
(See Prune\(S,G\) to)293.078 123 Q(RPF'\(S,G\))293.078 136 Q(See Prune)
408.545 123 Q(\(S,G,r)408.545 136 Q(pt\) to)-.11 E(RPF'\(S,G\))408.545
149 Q 503.992 153.75 72 153.75 DL 503.992 155.75 72 155.75 DL F0
(Send Join\(S,G\);)82.01 166 Q(Set Join T)82.01 179 Q(imer to)-.385 E
(t_periodic)82.01 192 Q(Increase Join)187.742 166 Q -.385(Ti)187.742 179
S(mer to).385 E(t_joinsuppress)187.742 192 Q(Decrease Join)293.078 166 Q
-.385(Ti)293.078 179 S(mer to t_o).385 E -.165(ve)-.165 G(rride).165 E
(Decrease Join)408.545 166 Q -.385(Ti)408.545 179 S(mer to t_o).385 E
-.165(ve)-.165 G(rride).165 E 503.992 196.75 72 196.75 DL 393.53 112.75
393.53 196.75 DL 278.063 112.75 278.063 196.75 DL 172.727 112.75 172.727
196.75 DL 503.992 95.75 503.992 196.75 DL 72 95.75 72 196.75 DL 503.992
208.75 72 208.75 DL F1(In J)190.376 219 Q(oined \(J\) State)-.165 E
503.992 223.75 72 223.75 DL 503.992 225.75 72 225.75 DL
(See Prune\(*,G\) to)79.832 236 Q(RPF'\(S,G\))79.832 249 Q
(MRIB.next_hop\(S\))188.765 236 Q(changes)188.765 249 Q
(RPF'\(S,G\) GenID)301.79 236 Q(changes)301.79 249 Q(RPF'\(S,G\))410.723
236 Q(changes)410.723 249 Q 503.992 253.75 72 253.75 DL 503.992 255.75
72 255.75 DL F0(Decrease Join)79.832 266 Q -.385(Ti)79.832 279 S
(mer to t_o).385 E -.165(ve)-.165 G(rride).165 E(Send Join\(S,G\) to)
188.765 266 Q(ne)188.765 279 Q 2.75(wn)-.275 G -.165(ex)-2.75 G 2.75(th)
.165 G(op; Send)-2.75 E(Prune\(S,G\) to old)188.765 292 Q(ne)188.765 305
Q(xt hop; Set Join)-.165 E -.385(Ti)188.765 318 S(mer to t_periodic).385
E(Decrease Join)301.79 266 Q -.385(Ti)301.79 279 S(mer to t_o).385 E
-.165(ve)-.165 G(rride).165 E(Decrease Join)410.723 266 Q -.385(Ti)
410.723 279 S(mer to t_o).385 E -.165(ve)-.165 G(rride).165 E 503.992
322.75 72 322.75 DL 398.975 225.75 398.975 322.75 DL 290.042 225.75
290.042 322.75 DL 177.017 225.75 177.017 322.75 DL 503.992 208.75
503.992 322.75 DL 72 208.75 72 322.75 DL
(This state machine uses the follo)72 340.6 Q(wing macro:)-.275 E/F2 11
/Courier@0 SF(bool JoinDesired\(S,G\) {)85.2 359.6 Q
(return\( immediate_olist\(S,G\) != NULL)111.6 372.6 Q
(OR \( KeepaliveTimer\(S,G\) is running)164.4 385.6 Q
(AND inherited_olist\(S,G\) != NULL \) \))197.4 398.6 Q(})85.2 411.6 Q
F0(JoinDesired\(S,G\) is true when the router has forw)72 430.6 Q
(arding state that w)-.11 E(ould cause it to forw)-.11 E(ard)-.11 E
(traf)72 443.6 Q(\214c for G using source tree state.)-.275 E
(The source tree state can either be as a result of acti)5.5 E -.165(ve)
-.275 G(source-speci\214c join state, or the \(S,G\) k)72 456.6 Q
(eepali)-.11 E .33 -.165(ve t)-.275 H(imer and acti).165 E .33 -.165
(ve n)-.275 H(on-source-speci\214c state. Note).165 E
(that although JoinDesired is true, the router')72 469.6 Q 2.75(ss)-.605
G(ending of a Join\(S,G\) message may be suppressed)-2.75 E
(by another router sending a Join\(S,G\) onto the upstream interf)72
482.6 Q(ace.)-.11 E F1 -.814(Tr)72 508.6 S(ansitions fr).814 E(om NotJ)
-.198 E(oined State)-.165 E F0(When the upstream \(S,G\) state-machine \
is in NotJoined state, the follo)72 525.2 Q(wing e)-.275 E -.165(ve)
-.275 G(nt may trigger a).165 E(state transition:)72 538.2 Q F1 -.165
(Jo)97 554.8 S(inDesir).165 E(ed\(S,G\) becomes T)-.198 E(rue)-.814 E F0
(The do)122 567.8 Q
(wnstream state for \(S,G\) has changed so that at least one interf)
-.275 E(ace is in)-.11 E
(inherited_olist\(S,G\), making JoinDesired\(S,G\) become T)122 580.8 Q
(rue.)-.385 E
(The upstream \(S,G\) state machine transitions to Joined state.)122
597.4 Q(Send Join\(S,G\) to the)5.5 E(appropriate upstream neighbor)122
610.4 Q 2.75(,w)-.44 G(hich is RPF'\(S,G\).)-2.75 E(Set the Join T)5.5 E
(imer \(JT\) to e)-.385 E(xpire)-.165 E(after t_periodic seconds.)122
623.4 Q F1 -.814(Tr)72 649.4 S(ansitions fr).814 E(om J)-.198 E
(oined State)-.165 E F0
(When the upstream \(S,G\) state-machine is in Joined state, the follo)
72 666 Q(wing e)-.275 E -.165(ve)-.275 G(nts may trigger state).165 E
(transitions:)72 679 Q F1 -.165(Jo)97 695.6 S(inDesir).165 E
(ed\(S,G\) becomes F)-.198 E(alse)-.275 E F0(The do)122 708.6 Q
(wnstream state for \(S,G\) has changed so no interf)-.275 E
(ace is in inherited_olist\(S,G\),)-.11 E
(making JoinDesired\(S,G\) become F)122 721.6 Q(alse.)-.165 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.5.7. [P)2.75 F(age 52])-.165 E EP
%%Page: 53 53
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(The upstream \(S,G\) state machine transitions to NotJoined state.)122
85 Q(Send Prune\(S,G\) to)5.5 E(the appropriate upstream neighbor)122 98
Q 2.75(,w)-.44 G(hich is RPF'\(S,G\).)-2.75 E(Cancel the Join T)5.5 E
(imer \(JT\),)-.385 E(and set SPTbit\(S,G\) to F)122 111 Q(ALSE.)-.814 E
/F1 11/Times-Bold@0 SF -.165(Jo)97 127.6 S(in T).165 E(imer Expir)-.198
E(es)-.198 E F0(The Join T)122 140.6 Q(imer \(JT\) e)-.385 E
(xpires, indicating time to send a Join\(S,G\))-.165 E
(Send Join\(S,G\) to the appropriate upstream neighbor)122 157.2 Q 2.75
(,w)-.44 G(hich is RPF'\(S,G\).)-2.75 E(Restart the)5.5 E(Join T)122
170.2 Q(imer \(JT\) to e)-.385 E(xpire after t_periodic seconds.)-.165 E
F1(See J)97 186.8 Q(oin\(S,G\) to RPF'\(S,G\))-.165 E F0(This e)122
199.8 Q -.165(ve)-.275 G(nt is only rele).165 E -.275(va)-.275 G
(nt if RPF_interf).275 E(ace\(S\) is a shared medium.)-.11 E
(This router sees)5.5 E(another router on RPF_interf)122 212.8 Q
(ace\(S\) send a Join\(S,G\) to RPF'\(S,G\).)-.11 E(This causes this)5.5
E(router to suppress its o)122 225.8 Q(wn Join.)-.275 E
(The upstream \(S,G\) state machine remains in Joined state.)122 242.4 Q
(Let t_joinsuppress be the minimum of t_suppressed and the HoldT)122 259
Q(ime from the)-.385 E(Join/Prune message triggering this e)122 272 Q
-.165(ve)-.275 G 2.75(nt. If).165 F(the Join T)2.75 E(imer is set to e)
-.385 E(xpire in less than)-.165 E
(t_joinsuppress seconds, reset it so that it e)122 285 Q
(xpires after t_joinsuppress seconds.)-.165 E(If the)5.5 E(Join T)122
298 Q(imer is set to e)-.385 E
(xpire in more than t_joinsuppress seconds, lea)-.165 E .33 -.165(ve i)
-.22 H 2.75(tu).165 G(nchanged.)-2.75 E F1
(See Prune\(S,G\) to RPF'\(S,G\))97 314.6 Q F0(This e)122 327.6 Q -.165
(ve)-.275 G(nt is only rele).165 E -.275(va)-.275 G(nt if RPF_interf)
.275 E(ace\(S\) is a shared medium.)-.11 E(This router sees)5.5 E
(another router on RPF_interf)122 340.6 Q
(ace\(S\) send a Prune\(S,G\) to RPF'\(S,G\).)-.11 E(As this router is)
5.5 E(in Joined state, it must o)122 353.6 Q -.165(ve)-.165 G
(rride the Prune after a short random interv).165 E(al.)-.275 E
(The upstream \(S,G\) state machine remains in Joined state.)122 370.2 Q
(If the Join T)5.5 E(imer is set to)-.385 E -.165(ex)122 383.2 S
(pire in more than t_o).165 E -.165(ve)-.165 G
(rride seconds, reset it so that it e).165 E(xpires after t_o)-.165 E
-.165(ve)-.165 G(rride).165 E(seconds.)122 396.2 Q F1(See Prune\(S,G,r)
97 412.8 Q(pt\) to RPF'\(S,G\))-.11 E F0(This e)122 425.8 Q -.165(ve)
-.275 G(nt is only rele).165 E -.275(va)-.275 G(nt if RPF_interf).275 E
(ace\(S\) is a shared medium.)-.11 E(This router sees)5.5 E
(another router on RPF_interf)122 438.8 Q
(ace\(S\) send a Prune\(S,G,rpt\) to RPF'\(S,G\).)-.11 E(If the)5.5 E
(upstream router is an RFC 2362 compliant PIM router)122 451.8 Q 2.75
(,t)-.44 G(hen the Prune\(S,G,rpt\) will)-2.75 E(cause it to stop forw)
122 464.8 Q 2.75(arding. F)-.11 F(or backw)-.165 E(ards compatibility)
-.11 E 2.75(,t)-.715 G(his router should o)-2.75 E -.165(ve)-.165 G
(rride).165 E(the prune so that forw)122 477.8 Q(arding continues.)-.11
E(The upstream \(S,G\) state machine remains in Joined state.)122 494.4
Q(If the Join T)5.5 E(imer is set to)-.385 E -.165(ex)122 507.4 S
(pire in more than t_o).165 E -.165(ve)-.165 G
(rride seconds, reset it so that it e).165 E(xpires after t_o)-.165 E
-.165(ve)-.165 G(rride).165 E(seconds.)122 520.4 Q F1
(See Prune\(*,G\) to RPF'\(S,G\))97 537 Q F0(This e)122 550 Q -.165(ve)
-.275 G(nt is only rele).165 E -.275(va)-.275 G(nt if RPF_interf).275 E
(ace\(S\) is a shared medium.)-.11 E(This router sees)5.5 E
(another router on RPF_interf)122 563 Q
(ace\(S\) send a Prune\(*,G\) to RPF'\(S,G\).)-.11 E(If the upstream)5.5
E(router is an RFC 2362 compliant PIM router)122 576 Q 2.75(,t)-.44 G
(hen the Prune\(*,G\) will cause it to stop)-2.75 E(forw)122 589 Q 2.75
(arding. F)-.11 F(or backw)-.165 E(ards compatibility)-.11 E 2.75(,t)
-.715 G(his router should o)-2.75 E -.165(ve)-.165 G
(rride the prune so that).165 E(forw)122 602 Q(arding continues.)-.11 E
(The upstream \(S,G\) state machine remains in Joined state.)122 618.6 Q
(If the Join T)5.5 E(imer is set to)-.385 E -.165(ex)122 631.6 S
(pire in more than t_o).165 E -.165(ve)-.165 G
(rride seconds, reset it so that it e).165 E(xpires after t_o)-.165 E
-.165(ve)-.165 G(rride).165 E(seconds.)122 644.6 Q F1
(RPF'\(S,G\) changes)97 661.2 Q F0(The current ne)122 674.2 Q(xt hop to)
-.165 E -.11(wa)-.275 G(rds S changes due to an Assert\(S,G\) on the).11
E(RPF_interf)122 687.2 Q(ace\(S\).)-.11 E
(The upstream \(S,G\) state machine remains in Joined state.)122 703.8 Q
(If the Join T)5.5 E(imer is set to)-.385 E -.165(ex)122 716.8 S
(pire in more than t_o).165 E -.165(ve)-.165 G
(rride seconds, reset it so that it e).165 E(xpires after t_o)-.165 E
-.165(ve)-.165 G(rride).165 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165
E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.5.7. [P)2.75 F
(age 53])-.165 E EP
%%Page: 54 54
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E 2.75(seconds. If)122 85 R
(the Join T)2.75 E(imer is set to e)-.385 E(xpire in less than t_o)-.165
E -.165(ve)-.165 G(rride seconds, lea).165 E .33 -.165(ve i)-.22 H(t)
.165 E(unchanged.)122 98 Q/F1 11/Times-Bold@0 SF
(MRIB.next_hop\(S\) changes)97 114.6 Q F0 2.75(Ac)122 127.6 S
(hange in the routing base stored in the MRIB causes the ne)-2.75 E
(xt hop to)-.165 E -.11(wa)-.275 G(rds S to).11 E(change.)122 140.6 Q
(The upstream \(S,G\) state machine remains in Joined state.)122 157.2 Q
(Send Prune\(S,G\) to the old)5.5 E(upstream neighbor)122 170.2 Q 2.75
(,w)-.44 G(hich is the old v)-2.75 E(alue of RPF'\(S,G\).)-.275 E
(Send Join\(S,G\) to the ne)5.5 E(w)-.275 E
(upstream neighbor which is the ne)122 183.2 Q 2.75(wv)-.275 G
(alue of MRIB.ne)-3.025 E 2.75(xt_hop\(S\). Note)-.165 F(that the Join)
2.75 E(goes to MRIB.ne)122 196.2 Q(xt_hop\(S\) and not RPF'\(S,G\) e)
-.165 E -.165(ve)-.275 G 2.75(ni).165 G 2.75(ft)-2.75 G(he ne)-2.75 E
2.75(wn)-.275 G(eighbor is on the same)-2.75 E(interf)122 209.2 Q
(ace as the old one because the routing change may cause MRIB.ne)-.11 E
(xt_hop\(S\) to)-.165 E(ha)122 222.2 Q .33 -.165(ve a b)-.22 H
(etter path to S than RPF'\(S,G\); sending to MRIB.ne).165 E
(xt_hop\(S\) ensures that)-.165 E(this is disco)122 235.2 Q -.165(ve)
-.165 G 2.75(red. Set).165 F(the Join T)2.75 E(imer \(JT\) to e)-.385 E
(xpire after t_periodic seconds.)-.165 E F1(RPF'\(S,G\) GenID changes)97
251.8 Q F0(The Generation ID of the router that is RPF'\(S,G\) changes.)
122 264.8 Q(This normally means that)5.5 E
(this neighbor has lost state, and so the state must be refreshed.)122
277.8 Q(The upstream \(S,G\) state machine remains in Joined state. If \
the Join T)122 294.4 Q(imer is set to)-.385 E -.165(ex)122 307.4 S
(pire in more than t_o).165 E -.165(ve)-.165 G
(rride seconds, reset it so that it e).165 E(xpires after t_o)-.165 E
-.165(ve)-.165 G(rride).165 E(seconds.)122 320.4 Q F1 2.75
(4.5.8. \(S,G,r)72 346.4 R(pt\) P)-.11 E(eriodic Messages)-.22 E F0(\(S\
,G,rpt\) Joins and Prunes are \(S,G\) Joins or Prunes sent on the RP tr\
ee with the RPT bit set,)72 363 Q
(either to modify the results of \(*,G\) Joins, or to o)72 376 Q -.165
(ve)-.165 G(rride the beha).165 E(vior of other upstream LAN)-.22 E 2.75
(peers. The)72 389 R(ne)2.75 E
(xt section describes the rules for sending triggered messages.)-.165 E
(This section)5.5 E(describes the rules for including an Prune\(S,G,rpt\
\) message with a Join\(*,G\).)72 402 Q
(When a router is going to send a Join\(*,G\), it should use the follo)
72 418.6 Q(wing pseudocode, for each)-.275 E(\(S,G\) for which it has s\
tate, to decide whether to include a Prune\(S,G,rpt\) in the compound)72
431.6 Q(Join/Prune message:)72 444.6 Q/F2 11/Courier@0 SF
(if\( SPTbit\(S,G\) == TRUE \) {)85.2 463.6 Q(#)111.6 476.6 Q F0
(Note: If recei)6.6 E(ving \(S,G\) on the SPT)-.275 E 2.75(,w)-.814 G
2.75(eo)-2.75 G(nly prune of)-2.75 E 2.75(ft)-.275 G(he)-2.75 E F2(#)
111.6 489.6 Q F0(shared tree if the rpf neighbors dif)6.6 E(fer)-.275 E
(.)-.605 E F2(if\( RPF'\(*,G\) != RPF'\(S,G\) \) {)118.2 502.6 Q
(add Prune\(S,G,rpt\) to compound message)144.6 515.6 Q(})118.2 528.6 Q
6.6(}e)85.2 541.6 S(lse if \( inherited_olist\(S,G,rpt\) == NULL \) {)
-6.6 E(#)98.4 554.6 Q F0(Note: all \(*,G\) olist interf)9.35 E
(aces sent rpt prunes for \(S,G\).)-.11 E F2
(add Prune\(S,G,rpt\) to compound message)98.4 567.6 Q 6.6(}e)85.2 580.6
S(lse if \( RPF'\(*,G\) != RPF'\(S,G,rpt\) {)-6.6 E(#)98.4 593.6 Q F0
(Note: we joined the shared tree, b)6.6 E(ut there w)-.22 E
(as an \(S,G\) assert and)-.11 E F2(#)98.4 606.6 Q F0
(the source tree RPF neighbor is dif)6.6 E(ferent.)-.275 E F2
(add Prune\(S,G,rpt\) to compound message)98.4 619.6 Q(})85.2 632.6 Q F0
(Note that Join\(S,G,rpt\) is not normally sent as a periodic message, \
b)72 655.2 Q(ut only as a triggered)-.22 E(message.)72 668.2 Q
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.5.8. [P)2.75 F(age 54])-.165 E EP
%%Page: 55 55
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF 2.75
(4.5.9. State)72 85 R(Machine f)2.75 E(or \(S,G,r)-.275 E(pt\) T)-.11 E
(rigger)-.814 E(ed Messages)-.198 E F0
(The state machine for \(S,G,rpt\) triggered messages is required per)72
101.6 Q(-\(S,G\) when there is \(*,G\) or)-.22 E
(\(*,*,RP\) join state at a router)72 114.6 Q 2.75(,a)-.44 G
(nd the router or an)-2.75 E 2.75(yo)-.165 G 2.75(fi)-2.75 G
(ts upstream LAN peers wishes to prune S)-2.75 E(of)72 127.6 Q 2.75(ft)
-.275 G(he RP tree.)-2.75 E
(There are three states in the state-machine.)72 153.6 Q
(One of the states is when there is neither \(*,G\) nor)5.5 E
(\(*,*,RP\(G\)\) join state at this router)72 166.6 Q 5.5(.I)-.605 G
2.75(ft)-5.5 G
(here is \(*,G\) or \(*,*,RP\(G\)\) join state at the router)-2.75 E
2.75(,t)-.44 G(hen)-2.75 E
(the state machine must be at one of the other tw)72 179.6 Q 2.75(os)
-.11 G(tates:)-2.75 E F1(Pruned\(S,G,r)72 209.2 Q(pt\))-.11 E F0
(\(*,G\) or \(*,*,RP\(G\)\) Joined, b)97 222.2 Q(ut \(S,G,rpt\) pruned)
-.22 E F1(NotPruned\(S,G,r)72 238.8 Q(pt\))-.11 E F0
(\(*,G\) or \(*,*,RP\(G\)\) Joined, and \(S,G,rpt\) not pruned)97 251.8
Q F1(RPTNotJ)72 268.4 Q(oined\(G\))-.165 E F0
(neither \(*,G\) nor \(*,*,RP\(G\)\) has not been joined.)97 281.4 Q
(In addition there is an \(S,G,rpt\) Ov)72 298 Q(erride T)-.165 E(imer)
-.385 E 2.75(,O)-.44 G(T\(S,G,rpt\), which is used to delay triggered)
-3.19 E(Join\(S,G,rpt\) messages to pre)72 311 Q -.165(ve)-.275 G
(nt implosions of triggered messages.).165 E 53 280 396 543 -201.282 276
108 531.282 PBEGIN
%%BeginDocument: sgrpt-override.ps
%%Creator: idraw
%%DocumentFonts: Helvetica
%%Pages: 1
%%BoundingBox: 53 280 596 556
%%EndComments

%%BeginIdrawPrologue
/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

%%EndIdrawPrologue

/arrowHeight 8 def
/arrowWidth 4 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
/parenleft/parenright/asterisk/plus/comma/minus/period/slash
/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
/guillemotright/onequarter/onehalf/threequarters/questiondown
/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
/yacute/thorn/ydieresis
] def
/Helvetica reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 /FontBBox load 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 8 8 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.956649 0 0 0.956649 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22 179 ] concat
%I 4
763 517
694 733
825 730
772 568
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22 179 ] concat
%I 3
730 509
525 484
387 360
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22 179 ] concat
%I 3
344 328
580 327
731 486
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22 179 ] concat
%I 3
349 682
596 690
730 556
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22 179 ] concat
%I 3
344 326
256 514
318 644
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22 179 ] concat
%I 3
350 683
431 520
374 368
3 BSpl
%I 2
End

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 73.5 190.5 ] concat
%I
157 659 48 48 Elli
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 73.5 14.5 ] concat
%I
157 659 48 48 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 136.5 347.5 ] concat
%I
[
(Pruned)
] Text
End

End %I eop

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 281.5 110.5 ] concat
%I
157 659 48 48 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 344 449 ] concat
%I
[
(Not)
(Pruned)
] Text
End

End %I eop

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 -22 179 ] concat
%I 4
787 479
819 311
714 312
747 477
4 BSpl
%I 2
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 133.5 464.999 ] concat
%I
[
(PruneDesired)
(\(S,G,rpt\))
(->TRUE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 197.5 530 ] concat
%I
[
(Inherited_olist\(S,G,rpt\))
(->NON-NULL)
] Text
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.998574 0 0 1.58334 15.241 -288.704 ] concat

Begin %I BSpl
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
none SetP %I p n
%I t
[ 0.5 -0 -0 0.5 -22 179 ] concat
%I 4
1051 661
1069 661
1067 561
1083 560
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
none SetP %I p n
%I t
[ 0.5 0 -0 -0.5 -20.5 739 ] concat
%I 4
1051 661
1069 661
1067 561
1083 560
4 BSpl
%I 2
End

End %I eop

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 442.5 468.5 ] concat
%I
[
(See \(S,G\))
(Prune to)
(RPF'\(S,G,rpt\))
] Text
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 21.5 229.5 ] concat
%I 4
697 464
792 597
859 512
717 448
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 0.5 -0 -0 0.5 21.5 229.5 ] concat
%I 4
722 437
835 502
849 397
726 416
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
0 SetP
%I t
[ 0.5 -0 -0 0.5 21.5 229.5 ] concat
%I 4
725 404
860 389
820 293
712 384
4 BSpl
%I 2
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 442.5 421.5 ] concat
%I
[
(RPF'\(S,G,rpt\))
(changes to be)
(the same as)
(RPF'\(*,G\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 130.997 530.498 ] concat
%I
[
(RPTNot)
(Joined\(G\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 56.4928 413.995 ] concat
%I
[
(RPTJoinDesired\(G\))
(-> FALSE)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 437.5 512 ] concat
%I
[
(See \(S,G,rpt\))
(Prune to )
(RPF'\(S,G,rpt\))
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 209 363 ] concat
%I
[
(PruneDesired)
(\(S,G,rpt\)->FALSE)
([Send Join\(S,G,rpt\)])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 538.5 475.5 ] concat
%I
[
(Set/lower)
(\(don't raise\))
(\(S,G,rpt\) )
(override timer)
(to randomized)
(prune_override)
(interval)
] Text
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 1.00035 -0 -0 1.00035 117.04 149.052 ] concat
%I 3
228 293
121 306
55 356
3 BSpl
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 214.996 477.501 ] concat
%I
[
(RPTJoinDesired\(G\))
(->FALSE)
([Cancel OT])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 341 578 ] concat
%I
[
(\(S,G,rpt\) overide timer Fires)
([Send Join\(S,G,rpt\)])
([leave Override Timer unset])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 194.5 434.5 ] concat
%I
[
(PruneDesired)
(\(S,G,rpt\)->TRUE)
([Send Prune\(S,G,rpt\)])
([Cancel Override Timer])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
Helvetica 12 SetF
%I t
[ 1 0 0 1 333.5 329 ] concat
%I
[
(See Join\(S,G,rpt\))
(to RPF'\(S,G,rpt\))
([Cancel Override Timer])
] Text
End

End %I eop

showpage


end
%%EndDocument
end PEND F1(Figur)149.624 570.282 Q 2.75(e9)-.198 G 2.75(:U)-2.75 G
(pstr)-2.75 E(eam \(S,G,r)-.198 E(pt\) state-machine f)-.11 E
(or trigger)-.275 E(ed messages)-.198 E F0(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.5.9. [P)2.75 F(age 55])-.165 E EP
%%Page: 56 56
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(Upstream \(S,G,rpt\) state-machine for triggered messages in tab)72 85
Q(ular form:)-.22 E .44 LW 503.995 95.75 72 95.75 DL/F1 11/Times-Bold@0
SF(Ev)316.984 106 Q(ent)-.11 E 503.995 110.75 153.821 110.75 DL(Pr)
77.083 126.5 Q .33 -.165(ev S)-.198 H(tate).165 E(PruneDesir)162.446 121
Q(ed)-.198 E(\(S,G,r)162.446 134 Q(pt\))-.11 E(\255>T)162.446 147 Q(rue)
-.814 E(PruneDesir)242.265 121 Q(ed)-.198 E(\(S,G,r)242.265 134 Q(pt\))
-.11 E(\255>F)242.265 147 Q(alse)-.275 E(RPTJ)322.084 121 Q(oinDesir)
-.165 E(ed\(G\))-.198 E(\255>F)322.084 134 Q(alse)-.275 E
(inherited_olist)431.075 121 Q(\(S,G,r)431.075 134 Q(pt\))-.11 E
(\255>non-NULL)431.075 147 Q 503.995 151.75 72 151.75 DL 503.995 153.75
72 153.75 DL F0(-> P state)162.446 164 Q -49.734 76.156(-- -)38.173 H
2.75(>N)-76.156 G 2.75(Ps)-2.75 G(tate)-2.75 E F1(RPTNotJ)77.083 164 Q
(oined)-.165 E(\(G\) \(NJ\))77.083 177 Q 503.995 181.75 72 181.75 DL F0
76.156(--)162.446 192 S 2.75(>N)-76.156 G 2.75(Ps)-2.75 G 27.481
(tate ->)-2.75 F(NJ state)2.75 E(-)61.24 E F1(Pruned)77.083 198.5 Q
(\(S,G,r)77.083 211.5 Q(pt\) \(P\))-.11 E F0(Send Join)242.265 205 Q
(\(S,G,rpt\))242.265 218 Q 503.995 222.75 72 222.75 DL(-> P state)
162.446 233 Q 76.156(--)38.173 G 2.75(>N)-76.156 G 2.75(Js)-2.75 G 58.49
(tate -)-2.75 F F1(NotPruned)77.083 252.5 Q(\(S,G,r)77.083 265.5 Q
(pt\) \(NP\))-.11 E F0(Send Prune)162.446 246 Q(\(S,G,rpt\);)162.446 259
Q(Cancel O)162.446 272 Q(T)-.44 E(timer)162.446 285 Q(Cancel O)322.084
246 Q 2.75(Tt)-.44 G(imer)-2.75 E 503.995 289.75 72 289.75 DL 423.45
110.75 423.45 289.75 DL 314.459 110.75 314.459 289.75 DL 234.64 110.75
234.64 289.75 DL 153.821 95.75 153.821 289.75 DL 155.821 95.75 155.821
289.75 DL 503.995 95.75 503.995 289.75 DL 72 95.75 72 289.75 DL
(Additionally)72 304 Q 2.75(,w)-.715 G 2.75(eh)-2.75 G -2.475 -.22(av e)
-2.75 H(the follo)2.97 E
(wing transitions within the NotPruned\(S,G,rpt\) state which are all)
-.275 E(used for prune o)72 317 Q -.165(ve)-.165 G(rride beha).165 E
(vior)-.22 E(.)-.605 E 503.99 327.75 72 327.75 DL F1
(In NotPruned\(S,G,r)221.137 338 Q(pt\) State)-.11 E 503.99 342.75 72
342.75 DL 503.99 344.75 72 344.75 DL .88 -.44(OT t)79.89 355 T(imer).44
E(expir)79.89 368 Q(es)-.198 E(See Prune)151.08 355 Q(\(S,G,r)151.08 368
Q(pt\) to)-.11 E(RPF' \(S,G,r)151.08 381 Q(pt\))-.11 E(See J)244.6 355 Q
(oin)-.165 E(\(S,G,r)244.6 368 Q(pt\) to)-.11 E(RPF' \(S,G,r)244.6 381 Q
(pt\))-.11 E(See Prune)338.12 355 Q(\(S,G\) to RPF')338.12 368 Q
(\(S,G,r)338.12 381 Q(pt\))-.11 E(RPF' \(S,G,r)426.25 355 Q(pt\))-.11 E
(-> RPF' \(*,G\))426.25 368 Q 503.99 385.75 72 385.75 DL 503.99 387.75
72 387.75 DL F0(Send Join)79.89 398 Q(\(S,G,rpt\);)79.89 411 Q(Cancel O)
79.89 424 Q(T)-.44 E(timer)79.89 437 Q .88 -.44(OT t)151.08 398 T
(imer =).44 E(min\(timer)151.08 411 Q(,)-.44 E(t_o)151.08 424 Q -.165
(ve)-.165 G(rride\)).165 E(Cancel O)244.6 398 Q(T)-.44 E(timer)244.6 411
Q .88 -.44(OT t)338.12 398 T(imer =).44 E(min\(timer)338.12 411 Q(,)-.44
E(t_o)338.12 424 Q -.165(ve)-.165 G(rride\)).165 E .88 -.44(OT t)426.25
398 T(imer =).44 E(min\(timer)426.25 411 Q(,)-.44 E(t_o)426.25 424 Q
-.165(ve)-.165 G(rride\)).165 E 503.99 441.75 72 441.75 DL 414.415
344.75 414.415 441.75 DL 326.285 344.75 326.285 441.75 DL 232.765 344.75
232.765 441.75 DL 139.245 344.75 139.245 441.75 DL 503.99 327.75 503.99
441.75 DL 72 327.75 72 441.75 DL(Note that the)72 459.6 Q/F2 11
/Courier@0 SF(min)2.75 E F0(function in the abo)2.75 E .33 -.165(ve s)
-.165 H(tate machine considers a non-running timer to ha).165 E .33
-.165(ve a)-.22 H(n).165 E(in\214nite v)72 472.6 Q(alue \(e.g.)-.275 E
F2(min\(not-running, t_override\))2.75 E F0(=)2.75 E F2(t_override)2.75
E F0(\).)A(This state machine uses the follo)72 489.2 Q(wing macros:)
-.275 E F2(bool RPTJoinDesired\(G\) {)85.2 508.2 Q
(return \(JoinDesired\(*,G\) || JoinDesired\(*,*,RP\(G\)\)\))98.4 521.2
Q(})85.2 534.2 Q F0
(RPTJoinDesired\(G\) is true when the router has forw)72 556.8 Q
(arding state that w)-.11 E(ould cause it to forw)-.11 E(ard)-.11 E
(traf)72 569.8 Q
(\214c for G using either \(*,G\) or \(*,*,RP\) shared tree state.)-.275
E F2(bool PruneDesired\(S,G,rpt\) {)85.2 588.8 Q
(return \( RPTJoinDesired\(G\) AND)118.2 601.8 Q 6.6(\(i)177.6 614.8 S
(nherited_olist\(S,G,rpt\) == NULL)-6.6 E(OR \(SPTbit\(S,G\)==TRUE)190.8
627.8 Q(AND \(RPF'\(*,G\) != RPF'\(S,G\)\) \)\)\))217.2 640.8 Q(})85.2
653.8 Q F0(PruneDesired\(S,G,rpt\) can only be true if RPTJoinDesired\(\
G\) is true.)72 676.4 Q(If RPTJoinDesired\(G\) is)5.5 E(true, then Prun\
eDesired\(S,G,rpt\) is true if either there are no outgoing interf)72
689.4 Q(aces that S w)-.11 E(ould be)-.11 E(forw)72 702.4 Q
(arded on, or if the router has acti)-.11 E .33 -.165(ve \()-.275 H
(S,G\) forw).165 E(arding state b)-.11 E(ut RPF'\(*,G\) != RPF'\(S,G\).)
-.22 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.5.9. [P)2.75 F(age 56])-.165 E EP
%%Page: 57 57
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(The state machine contains the follo)72 85 Q(wing transition e)-.275 E
-.165(ve)-.275 G(nts:).165 E/F1 11/Times-Bold@0 SF(See J)72 101.6 Q
(oin\(S,G,r)-.165 E(pt\) to RPF'\(S,G,r)-.11 E(pt\))-.11 E F0(This e)97
114.6 Q -.165(ve)-.275 G(nt is only rele).165 E -.275(va)-.275 G
(nt in the "Not Pruned" state.).275 E(The router sees a Join\(S,G,rpt\)\
 from someone else to RPF'\(S,G,rpt\), which is the correct)97 131.2 Q
(upstream neighbor)97 144.2 Q 5.5(.I)-.605 G 2.75(fw)-5.5 G(e')-2.75 E
(re in "NotPruned" state and the \(S,G,rpt\) Ov)-.55 E(erride T)-.165 E
(imer is)-.385 E(running, then this is because we ha)97 157.2 Q .33
-.165(ve b)-.22 H(een triggered to send our o).165 E
(wn Join\(S,G,rpt\) to)-.275 E 2.75(RPF'\(S,G,rpt\). Someone)97 170.2 R
(else beat us to it, so there')2.75 E 2.75(sn)-.605 G 2.75(on)-2.75 G
(eed to send our o)-2.75 E(wn Join.)-.275 E
(The action is to cancel the Ov)97 186.8 Q(erride T)-.165 E(imer)-.385 E
(.)-.605 E F1(See Prune\(S,G,r)72 203.4 Q(pt\) to RPF'\(S,G,r)-.11 E
(pt\))-.11 E F0(This e)97 216.4 Q -.165(ve)-.275 G(nt is only rele).165
E -.275(va)-.275 G(nt in the "NotPruned" state.).275 E(The router sees \
a Prune\(S,G,rpt\) from someone else to to RPF'\(S,G,rpt\), which is th\
e)97 233 Q(correct upstream neighbor)97 246 Q 5.5(.I)-.605 G 2.75(fw)
-5.5 G(e')-2.75 E(re in the "NotPruned" state, then we w)-.55 E
(ant to continue to)-.11 E(recei)97 259 Q .33 -.165(ve t)-.275 H(raf)
.165 E(\214c from S destined for G, and that traf)-.275 E
(\214c is being supplied by RPF'\(S,G,rpt\).)-.275 E(Thus we need to o)
97 272 Q -.165(ve)-.165 G(rride the Prune.).165 E
(The action is to set the \(S,G,rpt\) Ov)97 288.6 Q(erride T)-.165 E
(imer to the randomized prune-o)-.385 E -.165(ve)-.165 G(rride interv)
.165 E(al,)-.275 E(t_o)97 301.6 Q -.165(ve)-.165 G 2.75(rride. Ho).165 F
(we)-.275 E -.165(ve)-.275 G 2.75(ri).165 G 2.75(ft)-2.75 G(he Ov)-2.75
E(erride T)-.165 E
(imer is already running, we only set the timer if doing)-.385 E(so w)97
314.6 Q(ould set it to a lo)-.11 E(wer v)-.275 E 2.75(alue. At)-.275 F
(the end of this interv)2.75 E(al, if no-one else has sent a Join,)-.275
E(then we will do so.)97 327.6 Q F1(See Prune\(S,G\) to RPF'\(S,G,r)72
344.2 Q(pt\))-.11 E F0(This e)97 357.2 Q -.165(ve)-.275 G
(nt is only rele).165 E -.275(va)-.275 G(nt in the "NotPruned" state.)
.275 E(This transition and action are the same as the abo)97 373.8 Q .33
-.165(ve t)-.165 H(ransition and action, e).165 E(xcept that the)-.165 E
(Prune does not ha)97 386.8 Q .33 -.165(ve t)-.22 H(he RPT bit set.).165
E(This transition is necessary to be compatible with)5.5 E
(routers implemented from RFC2362 that don')97 399.8 Q 2.75(tm)-.198 G
(aintain separate \(S,G\) and \(S,G,rpt\) state.)-2.75 E F1(The \(S,G,r)
72 416.4 Q(pt\) prune Ov)-.11 E(erride T)-.11 E(imer expir)-.198 E(es)
-.198 E F0(This e)97 429.4 Q -.165(ve)-.275 G(nt is only rele).165 E
-.275(va)-.275 G(nt in the "NotPruned" state.).275 E(When the Ov)97 446
Q(erride T)-.165 E(imer e)-.385 E
(xpires, we must send a Join\(S,G,rpt\) to RPF'\(S,G,rpt\) to)-.165 E
-.165(ove)97 459 S
(rride the Prune message that caused the timer to be running.).165 E
1.76 -.88(We o)5.5 H(nly send this if).88 E(RPF'\(S,G,rpt\) equals RPF'\
\(*,G\) - if this were not the case, then the Join might be sent to a)97
472 Q(router that does not ha)97 485 Q .33 -.165(ve \()-.22 H
(*,G\) or \(*,*,RP\(G\)\) Join state, and so the beha).165 E(vior w)-.22
E(ould not be)-.11 E(well de\214ned.)97 498 Q(If RPF'\(S,G,rpt\) is not\
 the same as RPF'\(*,G\), then it may stop forw)5.5 E(arding S.)-.11 E
(Ho)97 511 Q(we)-.275 E -.165(ve)-.275 G .88 -.44(r, i).165 H 2.75(ft)
.44 G
(his happens, then the router will send an AssertCancel\(S,G\), which w)
-2.75 E(ould then)-.11 E
(cause RPF'\(S,G,rpt\) to become equal to RPF'\(*,G\) \(see belo)97 524
Q(w\).)-.275 E F1(RPF'\(S,G,r)72 540.6 Q
(pt\) changes to become equal to RPF'\(*,G\))-.11 E F0(This e)97 553.6 Q
-.165(ve)-.275 G(nt is only rele).165 E -.275(va)-.275 G
(nt in the "NotPruned" state.).275 E(RPF'\(S,G,rpt\) can only be dif)97
570.2 Q
(ferent from RPF'\(*,G\) if an \(S,G\) Assert has happened, which)-.275
E(means that traf)97 583.2 Q(\214c from S is arri)-.275 E
(ving on the SPT)-.275 E 2.75(,a)-.814 G(nd so Prune\(S,G,rpt\) will ha)
-2.75 E .33 -.165(ve b)-.22 H(een sent).165 E(to RPF'\(*,G\).)97 596.2 Q
(When RPF'\(S,G,rpt\) changes to become equal to RPF'\(*,G\), we need t\
o)5.5 E(trigger a Join\(S,G,rpt\) to RPF'\(*,G\) to cause that router t\
o start forw)97 609.2 Q(arding S ag)-.11 E(ain.)-.055 E
(The action is to set the \(S,G,rpt\) Ov)97 625.8 Q(erride T)-.165 E
(imer to the randomized prune-o)-.385 E -.165(ve)-.165 G(rride interv)
.165 E(al)-.275 E(t_o)97 638.8 Q -.165(ve)-.165 G 2.75(rride. Ho).165 F
(we)-.275 E -.165(ve)-.275 G 2.75(ri).165 G 2.75(ft)-2.75 G
(he timer is already running, we only set the timer if doing so w)-2.75
E(ould)-.11 E(set it to a lo)97 651.8 Q(wer v)-.275 E 2.75(alue. At)
-.275 F(the end of this interv)2.75 E
(al, if no-one else has sent a Join, then we will)-.275 E(do so.)97
664.8 Q F1(PruneDesir)72 681.4 Q(ed\(S,G,r)-.198 E(pt\)->TR)-.11 E(UE)
-.33 E F0(See macro abo)97 694.4 Q -.165(ve)-.165 G 5.5(.T).165 G(his e)
-5.5 E -.165(ve)-.275 G(nt is rele).165 E -.275(va)-.275 G
(nt in the "NotPruned" and "RPTNotJoined\(G\)" states.).275 E
(The router wishes to recei)97 711 Q .33 -.165(ve t)-.275 H(raf).165 E
(\214c for G, b)-.275 E(ut does not wish to recei)-.22 E .33 -.165(ve t)
-.275 H(raf).165 E(\214c from S)-.275 E(destined for G.)97 724 Q
(This causes the router to transition into the Pruned state.)5.5 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.5.9. [P)2.75 F(age 57])-.165 E EP
%%Page: 58 58
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(If the router w)97 85 Q
(as pre)-.11 E(viously in NotPruned state, then the action is to send a\
 Prune\(S,G,rpt\) to)-.275 E(RPF'\(S,G,rpt\), and to cancel the Ov)97 98
Q(erride T)-.165 E(imer)-.385 E 5.5(.I)-.605 G 2.75(ft)-5.5 G
(he router w)-2.75 E(as pre)-.11 E(viously in)-.275 E(RPTNotJoined\(G\)\
 state, then there is no need to trigger an action in this state machin\
e)97 111 Q(because sending a Prune\(S,G,rpt\) is handled by the rules f\
or sending the Join\(*,G\) or)97 124 Q(Join\(*,*,RP\).)97 137 Q/F1 11
/Times-Bold@0 SF(PruneDesir)72 153.6 Q(ed\(S,G,r)-.198 E(pt\)->F)-.11 E
(ALSE)-.99 E F0(See macro abo)97 166.6 Q -.165(ve)-.165 G 5.5(.T).165 G
(his transition is only rele)-5.5 E -.275(va)-.275 G
(nt in the "Pruned" state.).275 E(If the router is in the Pruned\(S,G,r\
pt\) state, and PruneDesired\(S,G,rpt\) changes to F)97 183.2 Q(ALSE,)
-.814 E(this could be because the router no longer has RPTJoinDesired\(\
G\) true, or it no)97 196.2 Q 2.75(ww)-.275 G(ishes to)-2.75 E(recei)97
209.2 Q .33 -.165(ve t)-.275 H(raf).165 E(\214c from S ag)-.275 E 2.75
(ain. If)-.055 F(it is the former)2.75 E 2.75(,t)-.44 G
(hen this transition should not happen, b)-2.75 E(ut)-.22 E
(instead the "RPTJoinDesired\(G\)->F)97 222.2 Q
(ALSE" transition should happen. Thus this transition)-.814 E
(should be interpreted as "PruneDesired\(S,G,rpt\)->F)97 235.2 Q
(ALSE AND)-.814 E(RPTJoinDesired\(G\)==TR)97 248.2 Q(UE")-.44 E
(The action is to send a Join\(S,G,rpt\) to RPF'\(S,G,rpt\).)97 264.8 Q
F1(RPTJ)72 281.4 Q(oinDesir)-.165 E(ed\(G\)->F)-.198 E(ALSE)-.99 E F0
(This e)97 294.4 Q -.165(ve)-.275 G(nt is rele).165 E -.275(va)-.275 G
(nt in the "Pruned" and "NotPruned" states.).275 E
(The router no longer wishes to recei)97 311 Q .33 -.165(ve a)-.275 H
.33 -.165(ny t).165 H(raf).165 E(\214c destined for G on the RP T)-.275
E 2.75(ree. This)-.385 F
(causes a transition to the RPTNotJoined\(G\) state, and the Ov)97 324 Q
(erride T)-.165 E(imer is canceled if it)-.385 E -.11(wa)97 337 S 2.75
(sr).11 G 2.75(unning. An)-2.75 F 2.75(yf)-.165 G(urther actions are ha\
ndled by the appropriate upstream state machine for)-2.75 E
(\(*,G\) or \(*,*,RP\).)97 350 Q F1(inherited_olist\(S,G,r)72 366.6 Q
(pt\) becomes non-NULL)-.11 E F0(This transition is only rele)97 379.6 Q
-.275(va)-.275 G(nt in the RPTNotJoined\(G\) state.).275 E(The router h\
as joined the RP tree \(handled by the \(*,G\) or \(*,*,RP\) upstream s\
tate machine)97 396.2 Q(as appropriate\), and w)97 409.2 Q
(ants to recei)-.11 E .33 -.165(ve t)-.275 H(raf).165 E(\214c from S.)
-.275 E(This does not trigger an)5.5 E 2.75(ye)-.165 G -.165(ve)-3.025 G
(nts in this).165 E(state machine, b)97 422.2 Q
(ut causes a transition to the NotPruned\(S,G,rpt\) state.)-.22 E F1
(4.6.)72 448.2 Q/F2 13/Times-Bold@0 SF(PIM Assert Messages)5.5 E F0
(Where multiple PIM routers peer o)72 464.8 Q -.165(ve)-.165 G 2.75(ras)
.165 G(hared LAN it is possible for more than one upstream)-2.75 E
(router to ha)72 477.8 Q .33 -.165(ve v)-.22 H(alid forw)-.11 E
(arding state for a pack)-.11 E(et, which can lead to pack)-.11 E
(et duplication \(see)-.11 E(Section 3 "Multi-access LANs"\).)72 490.8 Q
(PIM does not attempt to pre)5.5 E -.165(ve)-.275 G
(nt this from occurring.).165 E(Instead it)5.5 E
(detects when this has happened and elects a single forw)72 503.8 Q
(arder amongst the upstream routers to)-.11 E(pre)72 516.8 Q -.165(ve)
-.275 G(nt further duplication.).165 E
(This election is performed using PIM Assert messages.)5.5 E(Assert)5.5
E(messages are also recei)72 529.8 Q -.165(ve)-.275 G 2.75(db).165 G
2.75(yd)-2.75 G -.275(ow)-2.75 G
(nstream routers on the LAN, and these cause subsequent).275 E
(Join/Prune messages to be sent to the upstream router that w)72 542.8 Q
(on the Assert.)-.11 E(In general, a PIM Assert message should only be \
accepted for processing if it comes from a)72 559.4 Q(kno)72 572.4 Q
(wn PIM neighbor)-.275 E 5.5(.A)-.605 G
(PIM router hears about PIM neighbors through PIM Hello messages.)-2.75
E(If)5.5 E 2.75(ar)72 585.4 S(outer recei)-2.75 E -.165(ve)-.275 G 2.75
(sa).165 G 2.75(nA)-2.75 G(ssert message from a particular IP source ad\
dress and it has not seen a PIM)-2.75 E(Hello message from that source \
address, then the Assert message SHOULD be discarded without)72 598.4 Q
(further processing.)72 611.4 Q
(In addition, if the Hello message from a neighbor w)5.5 E
(as authenticated using)-.11 E(IPsec AH \(see section 6.3\) then all As\
sert messages from that neighbor MUST also be)72 624.4 Q
(authenticated using IPsec AH.)72 637.4 Q F1 2.75(4.6.1. \(S,G\))72
663.4 R(Assert Message State Machine)2.75 E F0
(The \(S,G\) Assert state machine for interf)72 680 Q(ace I is sho)-.11
E(wn in Figure 10. There are three states:)-.275 E F1(NoInf)72 696.6 Q
2.75(o\()-.275 G(NI\))-2.75 E F0
(This router has no \(S,G\) assert state on interf)97 709.6 Q(ace I.)
-.11 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.6.1. [P)2.75 F(age 58])-.165 E EP
%%Page: 59 59
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF 2.75
(Ia)72 85 S 2.75(mA)-2.75 G(ssert W)-2.75 E(inner \(W\))-.198 E F0
(This router has w)97 98 Q(on an \(S,G\) assert on interf)-.11 E(ace I.)
-.11 E(It is no)5.5 E 2.75(wr)-.275 G(esponsible for forw)-2.75 E
(arding)-.11 E(traf)97 111 Q(\214c from S destined for G out of interf)
-.275 E(ace I.)-.11 E(Irrespecti)5.5 E .33 -.165(ve o)-.275 H 2.75(fw)
.165 G(hether it is the DR for I,)-2.75 E
(while a router is the assert winner)97 124 Q 2.75(,i)-.44 G 2.75(ti)
-2.75 G 2.75(sa)-2.75 G(lso responsible for forw)-2.75 E(arding traf)
-.11 E(\214c onto I on)-.275 E(behalf of local hosts on I that ha)97 137
Q .33 -.165(ve m)-.22 H
(ade membership requests that speci\214cally refer to S).165 E
(\(and G\).)97 150 Q F1 2.75(Ia)72 166.6 S 2.75(mA)-2.75 G
(ssert Loser \(L\))-2.75 E F0
(This router has lost an \(S,G\) assert on interf)97 179.6 Q(ace I.)-.11
E(It must not forw)5.5 E(ard pack)-.11 E(ets from S)-.11 E
(destined for G onto interf)97 192.6 Q(ace I.)-.11 E
(If it is the DR on I, it is no longer responsible for)5.5 E(forw)97
205.6 Q(arding traf)-.11 E(\214c onto I to satisfy local hosts with mem\
bership requests that speci\214cally)-.275 E(refer to S and G.)97 218.6
Q(In addition there is also a assert timer \(A)72 235.2 Q
(T\) that is used to time out asserts on the assert losers and)-1.221 E
(to resend asserts on the assert winner)72 248.2 Q(.)-.605 E 62 151 396
547 -339.532 469 108 606.732 PBEGIN
%%BeginDocument: sg-assert.ps
%%Creator: idraw
%%DocumentFonts: Helvetica
%%Pages: 1
%%BoundingBox: 62 151 609 620
%%EndComments

%%BeginIdrawPrologue
/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

%%EndIdrawPrologue

/arrowHeight 8 def
/arrowWidth 4 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
/parenleft/parenright/asterisk/plus/comma/minus/period/slash
/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
/guillemotright/onequarter/onehalf/threequarters/questiondown
/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
/yacute/thorn/ydieresis
] def
/Helvetica reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 /FontBBox load 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 4 4 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.956649 0 0 0.956649 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 3
614 218
285 374
294 624
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 3
330 695
607 940
892 693
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 3
336 680
605 801
870 676
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 2
344 650
868 650
2 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 1 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 3
334 633
603 522
873 633
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 3
325 631
514 494
607 259
3 BSpl
%I 2
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 10 178.5 ] concat
%I
311 661 40 40 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 157.5 518.5 ] concat
%I
[
(No)
(Info)
] Text
End

End %I eop

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 4
652 202
778 124
686 49
639 186
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 4
614 181
606 55
506 99
587 193
4 BSpl
%I 2
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 165.5 -43 ] concat
%I
311 661 40 40 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 308.5 301.5 ] concat
%I
[
(I am)
(Assert)
(Loser)
] Text
End

End %I eop

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 4
912 657
1056 649
1030 536
935 624
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 4
906 655
1002 813
1066 708
943 671
4 BSpl
%I 2
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 310.5 174.5 ] concat
%I
311 661 40 40 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 451.5 519 ] concat
%I
[
(I am)
(Assert)
(Winner)
] Text
End

End %I eop

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 251 623 ] concat
%I
[
(\(S,G\) data packet arrives on I)
(AND CouldAssert\(S,G,I\)==TRUE)
([A1])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 247 577.5 ] concat
%I
[
(Receive assert with)
(RPT bit set AND )
(CouldAssert\(S,G,I\)==TRUE)
([A1])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 532 572 ] concat
%I
[
(Timer Expires)
([A3])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 264.5 407.002 ] concat
%I
[
(Receive preferred assert )
(with RPT bit clear AND)
(AssertTrackingDesired\(S,G,I\))
(  ==TRUE)
([A6])
] Text
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.998616 -0 -0 0.998616 -186.741 -39.9446 ] concat
%I 3
650 527
608 420
525 341
3 BSpl
%I 1
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 441.266 198.303 ] concat
%I
[
(A6: [Store assert winner and metric])
(       [Set timer to Assert_Time])
(       [If I is RPF_interface\(S\))
(             then set SPTbit\(S,G\)])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 219.417 211.999 ] concat
%I
[
(Receive acceptable )
(assert from )
(current winner)
([A2])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 324.543 211.997 ] concat
%I
[
(Receive preferred )
(assert)
([A2])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 334.087 354.622 ] concat
%I
[
(Receive preferred )
(assert)
([A2])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 440.021 438.864 ] concat
%I
[
(Actions:)
()
(A1: [Send Assert\(S,G\)])
(       [Set timer to Assert_Time -)
(            Assert_Overide_Interval])
(       [Store self as AssertWinner\(S,G,I\)])
(       [Store own spt metric as)
(             AssertWinnerMetric\(S,G,I\)])
()
(A2: [Set timer to Assert_Time])
(        [Store winner  as )
(             AssertWinner\(S,G,I\)])
(        [Store winner's  metric as )
(             AssertWinnerMetric\(S,G,I\)] )
()
(A3: [Send Assert\(S,G\)])
(       [Set timer to Assert_Time -)
(            Assert_Override_Interval])
()
(A4: [Send AssertCancel\(S,G\)])
(       [Delete assert info])
()
(A5: [Delete assert info])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 250 483.999 ] concat
%I
[
(CouldAssert\(S,G,I\)->FALSE)
([A4])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 248.5 531.001 ] concat
%I
[
(Receive inferior assert with)
(RPTbit clear)
(AND CouldAssert\(S,G,I\)==TRUE)
([A1])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 535.5 489.511 ] concat
%I
[
(Receive inferior assert)
([A3])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 66 430 ] concat
%I
[
(Any of the following events:)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 80 409 ] concat
%I
[
(Receive inferior assert from )
(current winner [A5])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 80 377 ] concat
%I
[
(Timer Expires [A5])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 80 329 ] concat
%I
[
(AssertTrackingDesired \(S,G,I\)  ->FALSE [A5])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 80 249 ] concat
%I
[
(Receive Join\(S,G\) on I [A5])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 80 305 ] concat
%I
[
(My metric becomes better )
(than AssertWinnerMetric [A5])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 80 273 ] concat
%I
[
(I stops being RPF_if\(s\)  [A5])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 80 353 ] concat
%I
[
(Current Winner's GenID changes [A5])
] Text
End

End %I eop

showpage


end
%%EndDocument
end PEND F1(Figur)184.835 645.732 Q 2.75(e1)-.198 G(0: P)-2.75 E(er)-.22
E(-interface \(S,G\) Assert State-machine)-.407 E F0(Fenner/Handle)72
769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.6.1. [P)2.75 F(age 59])-.165 E EP
%%Page: 60 60
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(Per)72 85 Q(-interf)-.22 E
(ace \(S,G\) Assert State-machine in tab)-.11 E(ular form:)-.22 E .44 LW
503.992 95.75 72 95.75 DL/F1 11/Times-Bold@0 SF(In NoInf)240.624 106 Q
2.75(o\()-.275 G(NI\) State)-2.75 E 503.992 110.75 72 110.75 DL 503.992
112.75 72 112.75 DL(Recei)81.428 123 Q .22 -.11(ve I)-.11 H(nferior).11
E(Assert with)81.428 136 Q(RPTbit clear and)81.428 149 Q(CouldAssert)
81.428 162 Q(\(S,G,I\))81.428 175 Q(Recei)190.991 123 Q .22 -.11(ve A)
-.11 H(ssert).11 E(with RPTbit set)190.991 136 Q(and CouldAssert)190.991
149 Q(\(S,G,I\))190.991 162 Q(Data arri)298.42 123 Q -.11(ve)-.11 G 2.75
(sf).11 G -.198(ro)-2.75 G(m).198 E 2.75(St)298.42 136 S 2.75(oGo)-2.75
G 2.75(nIa)-2.75 G(nd)-2.75 E(CouldAssert)298.42 149 Q(\(S,G,I\))298.42
162 Q(Recei)410.59 123 Q .22 -.11(ve P)-.11 H -.198(re).11 G(ferr).198 E
(ed)-.198 E(Assert with)410.59 136 Q(RPTbit clear and)410.59 149 Q(AssT)
410.59 162 Q(rDes \(S,G,I\))-.814 E 503.992 179.75 72 179.75 DL 503.992
181.75 72 181.75 DL F0(-> W state)81.428 192 Q(-> W state)63.649 E
(-> W state)61.515 E(-> L state)66.256 E([Actions A1])81.428 205 Q
([Actions A1])51.824 E([Actions A1])49.69 E([Actions A6])54.431 E
503.992 209.75 72 209.75 DL 396.448 112.75 396.448 209.75 DL 284.278
112.75 284.278 209.75 DL 176.849 112.75 176.849 209.75 DL 503.992 95.75
503.992 209.75 DL 72 95.75 72 209.75 DL 503.992 221.75 72 221.75 DL F1
(In I Am Assert W)209.885 232 Q(inner \(W\) State)-.198 E 503.992 236.75
72 236.75 DL 503.992 238.75 72 238.75 DL -.198(Ti)82.924 249 S
(mer Expir).198 E(es)-.198 E(Recei)183.434 249 Q .22 -.11(ve I)-.11 H
(nferior).11 E(Assert)183.434 262 Q(Recei)292.04 249 Q .22 -.11(ve P)
-.11 H -.198(re).11 G(ferr).198 E(ed)-.198 E(Assert)292.04 262 Q
(CouldAssert)408.786 249 Q(\(S,G,I\) \255> F)408.786 262 Q(ALSE)-.99 E
503.992 266.75 72 266.75 DL 503.992 268.75 72 268.75 DL F0(-> W state)
82.924 279 Q(-> W state)54.596 E(-> L state)62.692 E(-> NI state)74.495
E([Actions A3])82.924 292 Q([Actions A3])42.771 E([Actions A2])50.867 E
([Actions A4])59.007 E 503.992 296.75 72 296.75 DL 392.4 238.75 392.4
296.75 DL 275.654 238.75 275.654 296.75 DL 167.048 238.75 167.048 296.75
DL 503.992 221.75 503.992 296.75 DL 72 221.75 72 296.75 DL 503.989
308.75 72 308.75 DL F1(In I Am Assert Loser \(L\) State)168.833 319 Q
503.989 323.75 72 323.75 DL 503.989 325.75 72 325.75 DL(Recei)79.644 336
Q -.11(ve)-.11 G(Pr)79.644 349 Q(eferr)-.198 E(ed)-.198 E(Assert)79.644
362 Q(Recei)160.315 336 Q -.11(ve)-.11 G(Acceptable)160.315 349 Q
(Assert fr)160.315 362 Q(om)-.198 E(Curr)160.315 375 Q(ent)-.198 E -.198
(Wi)160.315 388 S(nner).198 E(Recei)240.986 336 Q -.11(ve)-.11 G
(Inferior Assert)240.986 349 Q(fr)240.986 362 Q(om Curr)-.198 E(ent)
-.198 E -.198(Wi)240.986 375 S(nner).198 E -.198(Ti)333.867 336 S
(mer Expir).198 E(es)-.198 E(Curr)424.537 336 Q(ent)-.198 E -.198(Wi)
424.537 349 S(nner').198 E(s)-.407 E(GenID changes)424.537 362 Q 503.989
392.75 72 392.75 DL 503.989 394.75 72 394.75 DL F0(-> L state)79.644 405
Q(-> L state)38.42 E(-> NI state)38.42 E(-> NI state)45.746 E
(-> NI state)43.535 E([Actions A2])79.644 418 Q([Actions A2])22.932 E
([Actions A5])22.932 E([Actions A5])35.142 E([Actions A5])32.931 E
503.989 422.75 72 422.75 DL 413.071 325.75 413.071 422.75 DL 322.401
325.75 322.401 422.75 DL 229.52 325.75 229.52 422.75 DL 148.849 325.75
148.849 422.75 DL 503.989 308.75 503.989 422.75 DL 72 308.75 72 422.75
DL 503.992 434.75 72 434.75 DL F1(In I Am Assert Loser \(L\) State)
216.204 445 Q 503.992 449.75 72 449.75 DL 503.992 451.75 72 451.75 DL
(AssT)82.063 462 Q(rDes \(S,G,I\))-.814 E(\255> F)82.063 475 Q(ALSE)-.99
E(my_metric ->)191.793 462 Q(better than)191.793 475 Q(winner')191.793
488 Q 2.75(sm)-.407 G(etric)-2.75 E(RPF_interface \(S\))295.803 462 Q
(stops being I)295.803 475 Q(Recei)410.604 462 Q .22 -.11(ve J)-.11 H
(oin\(S,G\))-.055 E(on interface I)410.604 475 Q 503.992 492.75 72
492.75 DL 503.992 494.75 72 494.75 DL F0(-> NI state)82.063 505 Q
(-> NI state)62.595 E(-> NI state)56.875 E(-> NI State)67.666 E
([Actions A5])82.063 518 Q([Actions A5])51.991 E([Actions A5])46.271 E
([Actions A5])57.062 E 503.992 522.75 72 522.75 DL 395.509 451.75
395.509 522.75 DL 280.708 451.75 280.708 522.75 DL 176.698 451.75
176.698 522.75 DL 503.992 434.75 503.992 522.75 DL 72 434.75 72 522.75
DL(Note that for reasons of compactness, "AssT)72 540.6 Q
(rDes\(S,G,I\)" is used in the state-machine table to)-.385 E
(refer to AssertT)72 553.6 Q(rackingDesired\(S,G,I\).)-.385 E -.77(Te)72
570.2 S(rminology:).77 E 2.75(A")97 583.2 S
(preferred assert" is one with a better metric than the current winner)
-2.75 E(.)-.605 E
(An "acceptable assert" is one that has a better metric than)97 599.8 Q
/F2 11/Courier@0 SF(my_assert_metric\(S,G,I\))97 612.8 Q F0(.)A
(An "inferior assert" is one with a w)97 629.4 Q(orse metric than)-.11 E
F2(my_assert_metric\(S,G,I\))2.75 E F0(.)A(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.6.1. [P)2.75 F(age 60])-.165 E EP
%%Page: 61 61
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(The state machine uses the follo)97 85 Q(wing macros:)-.275 E/F1 11
/Courier@0 SF(CouldAssert\(S,G,I\) =)72 101.6 Q(SPTbit\(S,G\)==TRUE)105
114.6 Q(AND \(RPF_interface\(S\) != I\))105 127.6 Q
(AND \(I in \( \( joins\(*,*,RP\(G\)\) \(+\) joins\(*,G\) \(-\))105
140.6 Q(prunes\(S,G,rpt\) \))72 153.6 Q
(\(+\) \( pim_include\(*,G\) \(-\) pim_exclude\(S,G\) \))184.2 166.6 Q
(\(-\) lost_assert\(*,G\))184.2 179.6 Q
(\(+\) joins\(S,G\) \(+\) pim_include\(S,G\) \) \))184.2 192.6 Q F0
(CouldAssert\(S,G,I\) is true for do)72 209.2 Q(wnstream interf)-.275 E
(aces which w)-.11 E(ould be in the inherited_olist\(S,G\))-.11 E
(if \(S,G\) assert information w)72 222.2 Q(as not tak)-.11 E
(en into account.)-.11 E F1(AssertTrackingDesired\(S,G,I\) =)72 238.8 Q
(\(I in \( \( joins\(*,*,RP\(G\)\) \(+\) joins\(*,G\) \(-\))105 251.8 Q
(prunes\(S,G,rpt\) \))72 264.8 Q
(\(+\) \( pim_include\(*,G\) \(-\) pim_exclude\(S,G\) \))157.8 277.8 Q
(\(-\) lost_assert\(*,G\))157.8 290.8 Q(\(+\) joins\(S,G\) \) \))157.8
303.8 Q(OR \(local_receiver_include\(S,G,I\)==TRUE)105 316.8 Q
(AND \(I_am_DR\(I\) OR AssertWinner\(S,G,I\) == me\)\))131.4 329.8 Q
(OR \(RPF_interface\(S\)==I AND JoinDesired\(S,G\)==TRUE\))105 342.8 Q
(OR \(RPF_interface\(RP\)==I AND JoinDesired\(*,G\)==TRUE)105 355.8 Q
(AND SPTbit\(S,G\)==FALSE\))131.4 368.8 Q F0(AssertT)72 385.4 Q
(rackingDesired\(S,G,I\) is true on an)-.385 E 2.75(yi)-.165 G(nterf)
-2.75 E(ace in which an \(S,G\) assert might af)-.11 E(fect our)-.275 E
(beha)72 398.4 Q(vior)-.22 E(.)-.605 E
(The \214rst three lines of AssertT)72 415 Q
(rackingDesired account for \(*,G\) join and local membership)-.385 E
(information recei)72 428 Q -.165(ve)-.275 G 2.75(do).165 G 2.75(nIt)
-2.75 G(hat might cause the router to be interested in asserts on I.)
-2.75 E(The 4th line accounts for \(S,G\) join information recei)72
444.6 Q -.165(ve)-.275 G 2.75(do).165 G 2.75(nIt)-2.75 G
(hat might cause the router to be)-2.75 E(interested in asserts on I.)72
457.6 Q(The 5th and 6th lines account for \(S,G\) local membership info\
rmation on I. Note that we can')72 474.2 Q(t)-.198 E(use the pim_includ\
e\(S,G\) macro since it uses lost_assert\(S,G,I\) and w)72 487.2 Q
(ould result in the router)-.11 E(for)72 500.2 Q
(getting that it lost an assert if the only reason it w)-.198 E
(as interested w)-.11 E(as local membership. The)-.11 E(AssertW)72 513.2
Q(inner\(S,G,I\) check forces an assert winner to k)-.44 E
(eep on being responsible for forw)-.11 E(arding as)-.11 E
(long as local recei)72 526.2 Q -.165(ve)-.275 G(rs are present. Remo)
.165 E(ving this check w)-.165 E(ould mak)-.11 E 2.75(et)-.11 G
(he assert winner gi)-2.75 E .33 -.165(ve u)-.275 H(p).165 E(forw)72
539.2 Q
(arding as soon as the information that originally caused it to forw)
-.11 E(ard went a)-.11 E -.11(wa)-.165 G 2.75(ya).11 G(nd the task)-2.75
E(of forw)72 552.2 Q(arding for local recei)-.11 E -.165(ve)-.275 G
(rs w).165 E(ould re)-.11 E -.165(ve)-.275 G(rt back to the DR.).165 E
(The last three lines account for the f)72 568.8 Q
(act that a router must k)-.11 E(eep track of assert information on)-.11
E(upstream interf)72 581.8 Q
(aces in order to send joins and prunes to the proper neighbor)-.11 E(.)
-.605 E/F2 11/Times-Bold@0 SF -.814(Tr)72 607.8 S(ansitions fr).814 E
(om NoInf)-.198 E 2.75(oS)-.275 G(tate)-2.75 E F0
(When in NoInfo state, the follo)72 624.4 Q(wing e)-.275 E -.165(ve)
-.275 G(nts may trigger transitions:).165 E F2(Recei)97 641 Q .22 -.11
(ve I)-.11 H(nferior Assert with RPTbit clear).11 E
(ed AND CouldAssert\(S,G,I\)==TR)-.198 E(UE)-.33 E F0
(An assert is recei)122 654 Q -.165(ve)-.275 G 2.75(df).165 G
(or \(S,G\) with the RPT bit cleared that is inferior to our o)-2.75 E
(wn)-.275 E(assert metric. The RPT bit cleared indicates that the sende\
r of the assert had \(S,G\))122 667 Q(forw)122 680 Q
(arding state on this interf)-.11 E 2.75(ace. If)-.11 F
(the assert is inferior to our metric, then we must)2.75 E(also ha)122
693 Q .33 -.165(ve \()-.22 H(S,G\) forw).165 E(arding state \(i.e.)-.11
E(CouldAssert\(S,G,I\)==TR)5.5 E(UE\) as \(S,G\) asserts)-.44 E
(beat \(*,G\) asserts, and so we should be the assert winner)122 706 Q
5.5(.W)-.605 G 2.75(et)-6.38 G(ransition to the "I am)-2.75 E(Assert W)
122 719 Q(inner" state, and perform Actions A1 \(belo)-.44 E(w\).)-.275
E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.6.1. [P)2.75 F(age 61])-.165 E EP
%%Page: 62 62
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF(Recei)
97 85 Q .22 -.11(ve A)-.11 H
(ssert with RPTbit set AND CouldAssert\(S,G,I\)==TR).11 E(UE)-.33 E F0
(An assert is recei)122 98 Q -.165(ve)-.275 G 2.75(df).165 G
(or \(S,G\) on I with the RPT bit set \(it')-2.75 E 2.75(sa\()-.605 G
(*,G\) assert\).)-2.75 E(CouldAssert\(S,G,I\) is TR)122 111 Q
(UE only if we ha)-.44 E .33 -.165(ve \()-.22 H(S,G\) forw).165 E
(arding state on this interf)-.11 E(ace,)-.11 E
(so we should be the assert winner)122 124 Q 5.5(.W)-.605 G 2.75(et)
-6.38 G(ransition to the "I am Assert W)-2.75 E(inner" state,)-.44 E
(and perform Actions A1 \(belo)122 137 Q(w\).)-.275 E F1
(An \(S,G\) data pack)97 153.6 Q(et arri)-.11 E -.11(ve)-.11 G 2.75(so)
.11 G 2.75(ni)-2.75 G(nterface I, AND CouldAssert\(S,G,I\)==TR)-2.75 E
(UE)-.33 E F0(An \(S,G\) data pack)122 166.6 Q(et arri)-.11 E -.165(ve)
-.275 G 2.75(do).165 G 2.75(na)-2.75 G 2.75(nd)-2.75 G -.275(ow)-2.75 G
(nstream interf).275 E(ace which is in our \(S,G\))-.11 E
(outgoing interf)122 179.6 Q(ace list.)-.11 E 1.76 -.88(We o)5.5 H
(ptimistically assume that we will be the assert winner for).88 E
(this \(S,G\), and so we transition to the "I am Assert W)122 192.6 Q
(inner" state, and perform Actions)-.44 E(A1 \(belo)122 205.6 Q
(w\) which will initiate the assert ne)-.275 E(gotiation for \(S,G\).)
-.165 E F1(Recei)97 222.2 Q .22 -.11(ve P)-.11 H -.198(re).11 G(ferr)
.198 E(ed Assert with RPT bit clear AND)-.198 E(AssertT)122 235.2 Q
(rackingDesir)-.814 E(ed\(S,G,I\)==TR)-.198 E(UE)-.33 E F0 -.88(We)122
248.2 S -.55('r).88 G 2.75(ei).55 G
(nterested in \(S,G\) Asserts, either because I is a do)-2.75 E
(wnstream interf)-.275 E(ace for which)-.11 E(we ha)122 261.2 Q .33
-.165(ve \()-.22 H(S,G\) or \(*,G\) forw).165 E
(arding state, or because I is the upstream interf)-.11 E(ace for S)-.11
E(and we ha)122 274.2 Q .33 -.165(ve \()-.22 H(S,G\) forw).165 E
(arding state.)-.11 E(The recei)5.5 E -.165(ve)-.275 G 2.75(da).165 G
(ssert that has a better metric than)-2.75 E(our o)122 287.2 Q
(wn, so we do not win the Assert.)-.275 E 1.76 -.88(We t)5.5 H
(ransition to "I am Assert Loser" and).88 E(perform actions A6 \(belo)
122 300.2 Q(w\).)-.275 E F1 -.814(Tr)72 326.2 S(ansitions fr).814 E
(om "I am Assert W)-.198 E(inner" State)-.198 E F0
(When in "I am Assert W)72 342.8 Q(inner" state, the follo)-.44 E
(wing e)-.275 E -.165(ve)-.275 G(nts trigger transitions:).165 E F1
-.198(Ti)97 359.4 S(mer Expir).198 E(es)-.198 E F0
(The \(S,G\) assert timer e)122 372.4 Q 2.75(xpires. As)-.165 F(we')2.75
E(re in the W)-.55 E(inner state, then we must still ha)-.44 E -.165(ve)
-.22 G(\(S,G\) forw)122 385.4 Q(arding state that is acti)-.11 E -.165
(ve)-.275 G(ly being k).165 E(ept ali)-.11 E -.165(ve)-.275 G 5.5(.W)
.165 G 2.75(er)-6.38 G(e-send the \(S,G\) Assert)-2.75 E
(and restart the timer \(Action A3 belo)122 398.4 Q 2.75(w\). Note)-.275
F(that the assert winner')2.75 E 2.75(st)-.605 G(imer is)-2.75 E
(engineered to e)122 411.4 Q
(xpire shortly before timers on assert losers; this pre)-.165 E -.165
(ve)-.275 G(nts unnecessary).165 E(thrashing of the forw)122 424.4 Q
(arder and periodic \215ooding of duplicate pack)-.11 E(ets.)-.11 E F1
(Recei)97 441 Q .22 -.11(ve I)-.11 H(nferior Assert).11 E F0 1.76 -.88
(We r)122 454 T(ecei).88 E .33 -.165(ve a)-.275 H 2.75(n\().165 G
(S,G\) assert or \(*,G\) assert mentioning S that has a w)-2.75 E
(orse metric than)-.11 E(our o)122 467 Q 2.75(wn. Whoe)-.275 F -.165(ve)
-.275 G 2.75(rs).165 G(ent the assert is in error)-2.75 E 2.75(,a)-.44 G
(nd so we re-send an \(S,G\) Assert, and)-2.75 E
(restart the timer \(Action A3 belo)122 480 Q(w\).)-.275 E F1(Recei)97
496.6 Q .22 -.11(ve P)-.11 H -.198(re).11 G(ferr).198 E(ed Assert)-.198
E F0 1.76 -.88(We r)122 509.6 T(ecei).88 E .33 -.165(ve a)-.275 H 2.75
(n\().165 G(S,G\) assert that has a better metric than our o)-2.75 E
2.75(wn. W)-.275 F 2.75(et)-.88 G(ransition to "I)-2.75 E
(am Assert Loser" state and perform actions A2 \(belo)122 522.6 Q 2.75
(w\). Note)-.275 F(that this may af)2.75 E(fect the)-.275 E -.275(va)122
535.6 S(lue of JoinDesired\(S,G\) and PruneDesired\(S,G,rpt\) which cou\
ld cause transitions in).275 E
(the upstream \(S,G\) or \(S,G,rpt\) state machines.)122 548.6 Q F1
(CouldAssert\(S,G,I\) -> F)97 565.2 Q(ALSE)-.99 E F0(Our \(S,G\) forw)
122 578.2 Q(arding state or RPF interf)-.11 E(ace changed so as to mak)
-.11 E(e)-.11 E(CouldAssert\(S,G,I\) become f)122 591.2 Q 2.75(alse. W)
-.11 F 2.75(ec)-.88 G(an no longer perform the actions of the assert)
-2.75 E(winner)122 604.2 Q 2.75(,a)-.44 G
(nd so we transition to NoInfo state and perform actions A4 \(belo)-2.75
E 2.75(w\). This)-.275 F
(includes sending a "canceling assert" with an in\214nite metric.)122
617.2 Q F1 -.814(Tr)72 643.2 S(ansitions fr).814 E
(om "I am Assert Loser" State)-.198 E F0
(When in "I am Assert Loser" state, the follo)72 659.8 Q
(wing transitions can occur:)-.275 E F1(Recei)97 676.4 Q .22 -.11(ve P)
-.11 H -.198(re).11 G(ferr).198 E(ed Assert)-.198 E F0 1.76 -.88(We r)
122 689.4 T(ecei).88 E .33 -.165(ve a)-.275 H 2.75(na).165 G
(ssert that is better than that of the current assert winner)-2.75 E 5.5
(.W)-.605 G 2.75(es)-6.38 G(tay in)-2.75 E
(Loser state, and perform actions A2 belo)122 702.4 Q -.715(w.)-.275 G
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.6.1. [P)2.75 F(age 62])-.165 E EP
%%Page: 63 63
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF(Recei)
97 85 Q .22 -.11(ve A)-.11 H(cceptable Assert fr).11 E(om Curr)-.198 E
(ent W)-.198 E(inner)-.198 E F0 1.76 -.88(We r)122 98 T(ecei).88 E .33
-.165(ve a)-.275 H 2.75(na).165 G
(ssert from the current assert winner that is better than our o)-2.75 E
(wn metric)-.275 E(for this \(S,G\) \(although the metric may be w)122
111 Q(orse than the winner')-.11 E 2.75(sp)-.605 G(re)-2.75 E
(vious metric\).)-.275 E 1.76 -.88(We s)122 124 T
(tay in Loser state, and perform actions A2 belo).88 E -.715(w.)-.275 G
F1(Recei)97 140.6 Q .22 -.11(ve I)-.11 H(nferior Assert fr).11 E
(om Curr)-.198 E(ent W)-.198 E(inner)-.198 E F0 1.76 -.88(We r)122 153.6
T(ecei).88 E .33 -.165(ve a)-.275 H 2.75(na).165 G
(ssert from the current assert winner that is w)-2.75 E(orse than our o)
-.11 E(wn metric)-.275 E(for this group \(typically the winner')122
166.6 Q 2.75(sm)-.605 G(etric became w)-2.75 E 2.75(orse\). W)-.11 F
2.75(et)-.88 G(ransition to NoInfo)-2.75 E
(state, deleting the \(S,G\) assert information and allo)122 179.6 Q
(wing the normal PIM Join/Prune)-.275 E(mechanisms to operate.)122 192.6
Q(Usually we will e)5.5 E -.165(ve)-.275 G
(ntually re-assert and win when data).165 E(pack)122 205.6 Q
(ets from S ha)-.11 E .33 -.165(ve s)-.22 H(tarted \215o).165 E(wing ag)
-.275 E(ain.)-.055 E F1 -.198(Ti)97 222.2 S(mer Expir).198 E(es)-.198 E
F0(The \(S,G\) assert timer e)122 235.2 Q 2.75(xpires. W)-.165 F 2.75
(et)-.88 G(ransition to NoInfo state, deleting the \(S,G\) assert)-2.75
E(information \(action A5 belo)122 248.2 Q(w\).)-.275 E F1(Curr)97 264.8
Q(ent W)-.198 E(inner')-.198 E 2.75(sG)-.407 G(enID Changes)-2.75 E F0
1.76 -.88(We r)122 277.8 T(ecei).88 E .33 -.165(ve a H)-.275 H
(ello message from the current winner reporting a dif).165 E
(ferent GenID from)-.275 E(the one it pre)122 290.8 Q(viously reported.)
-.275 E(This indicates that the current winner')5.5 E 2.75(si)-.605 G
(nterf)-2.75 E(ace or)-.11 E(router has gone do)122 303.8 Q
(wn and come back up, and so we must assume it no longer kno)-.275 E
(ws it)-.275 E -.11(wa)122 316.8 S 2.75(st).11 G(he winner)-2.75 E 2.75
(.W)-.605 G 2.75(et)-3.63 G
(ransition to the NoInfo state, deleting this \(S,G\) assert)-2.75 E
(information \(action A5 belo)122 329.8 Q(w\).)-.275 E F1(AssertT)97
346.4 Q(rackingDesir)-.814 E(ed\(S,G,I\)->F)-.198 E(ALSE)-.99 E F0
(AssertT)122 359.4 Q(rackingDesired\(S,G,I\) becomes F)-.385 E 2.75
(ALSE. Our)-.814 F(forw)2.75 E(arding state has changed so)-.11 E
(that \(S,G\) Asserts on interf)122 372.4 Q
(ace I are no longer of interest to us.)-.11 E 1.76 -.88(We t)5.5 H
(ransition to the).88 E
(NoInfo state, deleting the \(S,G\) assert information.)122 385.4 Q F1
(My metric becomes better than the assert winner')97 402 Q 2.75(sm)-.407
G(etric)-2.75 E F0(my_assert_metric\(S,G,I\) has changed so that no)122
415 Q 2.75(wm)-.275 G 2.75(ya)-2.75 G
(ssert metric for \(S,G\) is better)-2.75 E(than the metric we ha)122
428 Q .33 -.165(ve s)-.22 H(tored for current assert winner).165 E 5.5
(.T)-.605 G(his might happen the)-5.5 E(underlying routing metric chang\
es, or when CouldAssert\(S,G,I\) becomes true; for)122 441 Q -.165(ex)
122 454 S(ample, when SPTbit\(S,G\) becomes true.).165 E 1.76 -.88(We t)
5.5 H(ransition to NoInfo state, delete this).88 E
(\(S,G\) assert state \(action A5 belo)122 467 Q(w\), and allo)-.275 E
2.75(wt)-.275 G(he normal PIM Join/Prune)-2.75 E(mechanisms to operate.)
122 480 Q(Usually we will e)5.5 E -.165(ve)-.275 G
(ntually re-assert and win when data).165 E(pack)122 493 Q
(ets from S ha)-.11 E .33 -.165(ve s)-.22 H(tarted \215o).165 E(wing ag)
-.275 E(ain.)-.055 E F1(RPF interface changed away fr)97 509.6 Q
(om interface I)-.198 E F0(Interf)122 522.6 Q
(ace I used to be the RPF interf)-.11 E(ace for S, and no)-.11 E 2.75
(wi)-.275 G 2.75(ti)-2.75 G 2.75(sn)-2.75 G 2.75(ot. W)-2.75 F 2.75(et)
-.88 G(ransition to)-2.75 E
(NoInfo state, deleting this \(S,G\) assert state \(action A5 belo)122
535.6 Q(w\).)-.275 E F1(Recei)97 552.2 Q .22 -.11(ve J)-.11 H
(oin\(S,G\) on Interface I)-.055 E F0 1.76 -.88(We r)122 565.2 T(ecei)
.88 E .33 -.165(ve a J)-.275 H(oin\(S,G\) that has the Upstream Neighbo\
r Address \214eld set to one my IP).165 E(address on interf)122 578.2 Q
(ace I.)-.11 E
(The action is to transition to NoInfo state, and delete this \(S,G\))
5.5 E(assert state \(action A5 belo)122 591.2 Q(w\), and allo)-.275 E
2.75(wt)-.275 G(he normal PIM Join/Prune mechanisms to)-2.75 E 2.75
(operate. If)122 604.2 R(whoe)2.75 E -.165(ve)-.275 G 2.75(rs).165 G
(ent the Join w)-2.75 E(as in error)-.11 E 2.75(,t)-.44 G
(hen the normal assert mechanism will)-2.75 E -2.365 -.275(ev e)122
617.2 T(ntually re-apply and we will lose the assert ag).275 E 2.75
(ain. Ho)-.055 F(we)-.275 E -.165(ve)-.275 G 2.75(rw).165 G(hoe)-2.75 E
-.165(ve)-.275 G 2.75(rs).165 G(ent the)-2.75 E(assert may kno)122 630.2
Q 2.75(wt)-.275 G(hat the pre)-2.75 E
(vious assert winner has died, and so we may end up being)-.275 E
(the ne)122 643.2 Q 2.75(wf)-.275 G(orw)-2.75 E(arder)-.11 E(.)-.605 E
F1(\(S,G\) Assert State-machine Actions)72 669.2 Q F0 5.75(A1: Send)97
685.8 R(Assert\(S,G\))2.75 E(Set timer to \(Assert_T)122 698.8 Q
(ime - Assert_Ov)-.385 E(erride_Interv)-.165 E(al\))-.275 E
(Store self as AssertW)122 711.8 Q(inner\(S,G,I\))-.44 E
(Store spt_assert_metric\(S,I\) as AssertW)122 724.8 Q
(innerMetric\(S,G,I\))-.44 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E
(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.6.1. [P)2.75 F(age 63])
-.165 E EP
%%Page: 64 64
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E 5.75(A2: Store)97 85 R(ne)
2.75 E 2.75(wa)-.275 G(ssert winner as AssertW)-2.75 E
(inner\(S,G,I\) and assert winner metric as)-.44 E(AssertW)122 98 Q
(innerMetric\(S,G,I\).)-.44 E(Set timer to Assert_T)122 111 Q(ime)-.385
E 5.75(A3: Send)97 127.6 R(Assert\(S,G\))2.75 E(Set timer to \(Assert_T)
122 140.6 Q(ime - Assert_Ov)-.385 E(erride_Interv)-.165 E(al\))-.275 E
5.75(A4: Send)97 157.2 R(AssertCancel\(S,G\))2.75 E
(Delete assert info \(AssertW)122 170.2 Q(inner\(S,G,I\) and AssertW)
-.44 E(innerMetric\(S,G,I\) will then)-.44 E(return their def)122 183.2
Q(ault v)-.11 E(alues\).)-.275 E 5.75(A5: Delete)97 199.8 R
(assert info \(AssertW)2.75 E(inner\(S,G,I\) and AssertW)-.44 E
(innerMetric\(S,G,I\) will then)-.44 E(return their def)122 212.8 Q
(ault v)-.11 E(alues\).)-.275 E 5.75(A6: Store)97 229.4 R(ne)2.75 E 2.75
(wa)-.275 G(ssert winner as AssertW)-2.75 E
(inner\(S,G,I\) and assert winner metric as)-.44 E(AssertW)122 242.4 Q
(innerMetric\(S,G,I\).)-.44 E(Set timer to Assert_T)122 255.4 Q(ime)
-.385 E(If I is RPF_interf)122 268.4 Q(ace\(S\) set SPTbit\(S,G\) to TR)
-.11 E(UE.)-.44 E(Note that some of these actions may cause the v)72 285
Q(alue of JoinDesired\(S,G\), PruneDesired\(S,G,rpt\),)-.275 E(or RPF'\
\(S,G\) to change, which could cause further transitions in other state\
 machines.)72 298 Q/F1 11/Times-Bold@0 SF 2.75(4.6.2. \(*,G\))72 324 R
(Assert Message State Machine)2.75 E F0
(The \(*,G\) Assert state-machine for interf)72 340.6 Q(ace I is sho)
-.11 E(wn in Figure 11. There are three states:)-.275 E F1(NoInf)72
357.2 Q 2.75(o\()-.275 G(NI\))-2.75 E F0
(This router has no \(*,G\) assert state on interf)97 370.2 Q(ace I.)
-.11 E F1 2.75(Ia)72 386.8 S 2.75(mA)-2.75 G(ssert W)-2.75 E
(inner \(W\))-.198 E F0(This router has w)97 399.8 Q
(on an \(*,G\) assert on interf)-.11 E(ace I.)-.11 E(It is no)5.5 E 2.75
(wr)-.275 G(esponsible for forw)-2.75 E(arding)-.11 E(traf)97 412.8 Q
(\214c destined for G onto interf)-.275 E(ace I with the e)-.11 E
(xception of traf)-.165 E(\214c for which it has \(S,G\) "I)-.275 E
(am Assert Loser" state.)97 425.8 Q(Irrespecti)5.5 E .33 -.165(ve o)
-.275 H 2.75(fw).165 G
(hether it is the DR for I, it is also responsible for)-2.75 E
(handling the membership requests for G from local hosts on I.)97 438.8
Q F1 2.75(Ia)72 455.4 S 2.75(mA)-2.75 G(ssert Loser \(L\))-2.75 E F0
(This router has lost an \(*,G\) assert on interf)97 468.4 Q(ace I.)-.11
E(It must not forw)5.5 E(ard pack)-.11 E(ets for G onto)-.11 E(interf)97
481.4 Q(ace I with the e)-.11 E(xception of traf)-.165 E
(\214c from sources for which is has \(S,G\) "I am Assert)-.275 E -.44
(Wi)97 494.4 S(nner" state.).44 E(If it is the DR, it is no longer resp\
onsible for handling the membership)5.5 E
(requests for group G from local hosts on I.)97 507.4 Q
(In addition there is also an assert timer \(A)72 524 Q
(T\) that is used to time out asserts on the assert losers)-1.221 E
(and to resend asserts on the assert winner)72 537 Q(.)-.605 E F1
(When an Assert message is r)72 553.6 Q(ecei)-.198 E -.11(ve)-.11 G
(d, a PIM implementation must \214rst match it against the).11 E
(possible e)72 566.6 Q -.11(ve)-.165 G
(nts in the \(S,G\) assert state machine and pr).11 E
(ocess any transitions and actions,)-.198 E(bef)72 579.6 Q(or)-.275 E
2.75(ec)-.198 G(onsidering whether the Assert message matches against t\
he \(*,G\) assert state)-2.75 E(machine.)72 592.6 Q(It is important to \
note that NO TRANSITION CAN OCCUR in the \(*,G\) state machine as a)72
609.2 Q -.198(re)72 622.2 S(sult of r).198 E(ecei)-.198 E
(ving an Assert message unless the \(S,G\) assert state machine f)-.11 E
(or the r)-.275 E(ele)-.198 E -.11(va)-.165 G(nt S).11 E
(and G is in the "NoInf)72 635.2 Q
(o" state after the \(S,G\) state machine has pr)-.275 E
(ocessed the message.)-.198 E
(Also NO TRANSITION CAN OCCUR in the \(*,G\) state machine as a r)72
648.2 Q(esult of r)-.198 E(ecei)-.198 E(ving an)-.11 E(assert message i\
f that message triggers any change of state in the \(S,G\) state machin\
e.)72 661.2 Q F0 -.165(Fo)72 677.8 S 2.75(re).165 G(xample, if both the\
 \(S,G\) and \(*,G\) assert state machines where in the NoInfo state wh\
en an)-2.915 E(Assert message arri)72 690.8 Q -.165(ve)-.275 G(s, and t\
he message causes the \(S,G\) state machine to transition to either).165
E("W" or "L" state, then the assert w)72 703.8 Q
(ould not be processed by the \(*,G\) assert state machine.)-.11 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.6.2. [P)2.75 F(age 64])-.165 E EP
%%Page: 65 65
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(Another e)72 85 Q(xample: i\
f the \(S,G\) assert state machine is in "L" state when an assert messa\
ge is)-.165 E(recei)72 98 Q -.165(ve)-.275 G
(d, and the assert metric in the message is w).165 E(orse than)-.11 E/F1
11/Courier@0 SF(my_assert_metric\(S,G,I\))2.75 E F0(,)A
(then the \(S,G\) assert state machine will transition to NoInfo state.)
72 111 Q(In such a case if the \(*,G\))5.5 E
(assert state machine were in NoInfo state, it might appear that it w)72
124 Q(ould transition to "W" state, b)-.11 E(ut)-.22 E(this is not the \
case because this message already triggered a transition in the \(S,G\)\
 assert state)72 137 Q(machine.)72 150 Q 75 145 396 534 -307.011 414 108
476.011 PBEGIN
%%BeginDocument: starg-assert.ps
%%Creator: idraw
%%DocumentFonts: Helvetica
%%Pages: 1
%%BoundingBox: 75 145 609 559
%%EndComments

%%BeginIdrawPrologue
/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
arrowHeight neg arrowWidth 2 div moveto
0 0 lineto
arrowHeight neg arrowWidth 2 div neg lineto
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

%%EndIdrawPrologue

/arrowHeight 8 def
/arrowWidth 4 def

/IdrawDict 51 dict def
IdrawDict begin

/reencodeISO {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
/Encoding ISOLatin1Encoding def
currentdict end definefont
} def

/ISOLatin1Encoding [
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
/parenleft/parenright/asterisk/plus/comma/minus/period/slash
/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
/guillemotright/onequarter/onehalf/threequarters/questiondown
/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
/yacute/thorn/ydieresis
] def
/Helvetica reencodeISO def

/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
dup -1 eq {
/patternGrayLevel idef
/patternString idef
} {
/patternGrayLevel idef
} ifelse
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l w add b translate w neg h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont printSize scalefont dup setfont def
/descender fontDict begin 0 /FontBBox load 1 get FontMatrix end
transform exch pop def
/vertoffset 1 printSize sub descender sub def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def
/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

/SSten {
fgred fggreen fgblue setrgbcolor
dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
} def

/FSten {
dup 3 -1 roll dup 4 1 roll exch
newpath
0 0 moveto
dup 0 exch lineto
exch dup 3 1 roll exch lineto
0 lineto
closepath
bgred bggreen bgblue setrgbcolor
eofill
SSten
} def

/Rast {
exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
} def


%I Idraw 10 Grid 4 4 


Begin
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t
[ 0.956649 0 0 0.956649 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 3
614 218
285 374
294 624
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 3
336 680
605 801
870 676
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 2
344 650
868 650
2 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 1 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 3
334 633
603 522
873 633
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 3
897 615
851 405
649 244
3 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 3
325 631
514 494
607 259
3 BSpl
%I 2
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 10 178.5 ] concat
%I
311 661 40 40 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 157.5 518.5 ] concat
%I
[
(No)
(Info)
] Text
End

End %I eop

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 4
652 202
778 124
686 49
639 186
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 4
614 181
606 55
506 99
587 193
4 BSpl
%I 2
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 165.5 -43 ] concat
%I
311 661 40 40 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 308.5 301.5 ] concat
%I
[
(I am)
(Assert)
(Loser)
] Text
End

End %I eop

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 4
912 657
1056 649
1030 536
935 624
4 BSpl
%I 2
End

Begin %I BSpl
%I b 65535
0 0 1 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg Black
0 0 0 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 12.5 177.5 ] concat
%I 4
906 655
1002 813
1066 708
943 671
4 BSpl
%I 2
End

Begin %I Pict
%I b u
%I cfg u
%I cbg u
%I f u
%I p u
%I t u

Begin %I Elli
%I b 65535
0 0 0 [] 0 SetB
%I cfg Black
0 0 0 SetCFg
%I cbg White
1 1 1 SetCBg
%I p
1 SetP
%I t
[ 0.5 -0 -0 0.5 310.5 174.5 ] concat
%I
311 661 40 40 Elli
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 451.5 519 ] concat
%I
[
(I am)
(Assert)
(Winner)
] Text
End

End %I eop

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 249.501 533.982 ] concat
%I
[
(Receive inferior assert with)
(RPT bit set AND )
(CouldAssert\(*,G,I\)==TRUE)
([A1])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 243.997 574.98 ] concat
%I
[
(\(S,G\) data packet arrives on I)
(AND CouldAssert\(*,G,I\)==TRUE)
([A1])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 231.5 436 ] concat
%I
[
(Receive preferred assert )
(with RPT bit set AND)
(AssertTrackingDesired\(*,G,I\))
(  ==TRUE)
([A2])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 397 442.5 ] concat
%I
[
(Receive preferred assert)
(with RPT bit set)
([A2])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 342.518 209.001 ] concat
%I
[
(Receive preferred )
(assert)
(with RPT bit set)
([A2])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 532 572 ] concat
%I
[
(Timer Expires)
([A3])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 92 272 ] concat
%I
[
(Receive Join\(*,G\))
(or Join\(*,*,RP\(G\)\)  on I [A5])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 250 487 ] concat
%I
[
(CouldAssert\(*,G,I\)->FALSE)
([A4])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 443.017 381.943 ] concat
%I
[
(Actions:)
()
(A1: [Send Assert\(*,G\)])
(       [Set timer to Assert_Time -)
(            Assert_Override_Interval])
(       [Store self as AssertWinner\(*,G,I\)])
(       [Store own rpt metric as)
(            AssertWinnerMetric\(*,G,I\)])
()
(A2: [Set timer to Assert_Time])
(      [Store winner  as )
(            AssertWinner\(*,G,I\)])
(      [Store winner's metric as)
(            AssertWinnerMetric\(*,G,I\)])
()
(A3: [Send Assert\(*,G\)])
(       [Set timer to Assert_Time - )
(             Assert_Override_Interval])
()
(A4: [Send AssertCancel\(*,G\)])
(       [Delete Assert Info])
()
(A5: [Delete Assert Info])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 234.396 208.004 ] concat
%I
[
(Receive acceptable)
(assert from )
(current winner)
(with RPT bit set)
([A2])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 535.5 497.5 ] concat
%I
[
(Receive inferior assert)
([A3])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 92 372 ] concat
%I
[
(Current Winner's GenID Changes [A5])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 80 449 ] concat
%I
[
(Any of the following events:)
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 88 428 ] concat
%I
[
(Receive inferior assert from )
(current winner [A5])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 92 396 ] concat
%I
[
(Timer Expires [A5])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 92 292 ] concat
%I
[
(I stops being RPF_if\(RP\(G\)\) [A5])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 92 348 ] concat
%I
[
(AssertTrackingDesired\(*,G,I\) ->FALSE [A5])
] Text
End

Begin %I Text
%I cfg Black
0 0 0 SetCFg
%I f -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
Helvetica 10 SetF
%I t
[ 1 0 0 1 92 324 ] concat
%I
[
(My metric becomes better )
(than AssertWinnerMetric [A5])
] Text
End

End %I eop

showpage


end
%%EndDocument
end PEND/F2 11/Times-Bold@0 SF(Figur)217.048 515.011 Q 2.75(e1)-.198 G
(1: \(*,G\) Assert State-machine)-2.75 E F0(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.6.2. [P)2.75 F(age 65])-.165 E EP
%%Page: 66 66
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(\(*,G\) Assert State-machine in tab)72 85 Q(ular form:)-.22 E .44 LW
503.994 95.75 72 95.75 DL/F1 11/Times-Bold@0 SF(In NoInf)240.625 106 Q
2.75(o\()-.275 G(NI\) State)-2.75 E 503.994 110.75 72 110.75 DL 503.994
112.75 72 112.75 DL(Recei)86.039 123 Q .22 -.11(ve I)-.11 H(nferior).11
E(Assert with RPTbit set)86.039 136 Q(and)86.039 149 Q
(CouldAssert\(*,G,I\))86.039 162 Q(Data arri)234.779 123 Q -.11(ve)-.11
G 2.75(sf).11 G(or G and)-3.025 E(CouldAssert \(*,G,I\))234.779 136 Q
(Recei)383.332 123 Q .22 -.11(ve P)-.11 H -.198(re).11 G(ferr).198 E(ed)
-.198 E(Assert with RPTbit set)383.332 136 Q(and AssT)383.332 149 Q
(rDes \(*,G,I\))-.814 E 503.994 166.75 72 166.75 DL 503.994 168.75 72
168.75 DL F0(-> W state)86.039 179 Q(-> W state)102.826 E(-> L state)
102.639 E([Actions A1])86.039 192 Q([Actions A1])91.001 E([Actions A2])
90.814 E 503.994 196.75 72 196.75 DL 362.273 112.75 362.273 196.75 DL
213.72 112.75 213.72 196.75 DL 503.994 95.75 503.994 196.75 DL 72 95.75
72 196.75 DL 503.992 208.75 72 208.75 DL F1(In I Am Assert W)209.885 219
Q(inner \(W\) State)-.198 E 503.992 223.75 72 223.75 DL 503.992 225.75
72 225.75 DL -.198(Ti)82.98 236 S(mer Expir).198 E(es)-.198 E(Recei)
183.658 236 Q .22 -.11(ve I)-.11 H(nferior).11 E(Assert)183.658 249 Q
(Recei)292.432 236 Q .22 -.11(ve P)-.11 H -.198(re).11 G(ferr).198 E(ed)
-.198 E(Assert)292.432 249 Q(CouldAssert)409.346 236 Q
(\(*,G,I\) \255> F)409.346 249 Q(ALSE)-.99 E 503.992 253.75 72 253.75 DL
503.992 255.75 72 255.75 DL F0(-> W state)82.98 266 Q(-> W state)54.764
E(-> L state)62.86 E(-> NI state)74.663 E([Actions A3])82.98 279 Q
([Actions A3])42.939 E([Actions A2])51.035 E([Actions A4])59.175 E
503.992 283.75 72 283.75 DL 392.876 225.75 392.876 283.75 DL 275.962
225.75 275.962 283.75 DL 167.188 225.75 167.188 283.75 DL 503.992 208.75
503.992 283.75 DL 72 208.75 72 283.75 DL 503.99 295.75 72 295.75 DL F1
(In I Am Assert Loser \(L\) State)174.36 306 Q 503.99 310.75 72 310.75
DL 503.99 312.75 72 312.75 DL(Recei)80.649 323 Q -.11(ve)-.11 G(Pr)
80.649 336 Q(eferr)-.198 E(ed)-.198 E(Assert)80.649 349 Q(Recei)164.335
323 Q -.11(ve)-.11 G(Acceptable)164.335 336 Q(Assert fr)164.335 349 Q
(om)-.198 E(Curr)164.335 362 Q(ent)-.198 E -.198(Wi)164.335 375 S(nner)
.198 E(Recei)248.021 323 Q -.11(ve)-.11 G(Inferior Assert)248.021 336 Q
(fr)248.021 349 Q(om Curr)-.198 E(ent)-.198 E -.198(Wi)248.021 362 S
(nner).198 E -.198(Ti)343.917 323 S(mer Expir).198 E(es)-.198 E(Curr)
437.602 323 Q(ent)-.198 E -.198(Wi)437.602 336 S(nner').198 E(s)-.407 E
(GenID)437.602 349 Q(Changes)437.602 362 Q 503.99 379.75 72 379.75 DL
503.99 381.75 72 381.75 DL F0(-> L state)80.649 392 Q(-> L state)41.435
E(-> NI state)41.435 E(-> NI state)48.761 E(-> NI state)46.55 E
([Actions A2])80.649 405 Q([Actions A2])25.947 E([Actions A5])25.947 E
([Actions A5])38.157 E([Actions A5])35.946 E 503.99 409.75 72 409.75 DL
424.628 312.75 424.628 409.75 DL 330.943 312.75 330.943 409.75 DL
235.047 312.75 235.047 409.75 DL 151.361 312.75 151.361 409.75 DL 503.99
295.75 503.99 409.75 DL 72 295.75 72 409.75 DL 503.992 421.75 72 421.75
DL F1(In I Am Assert Loser \(L\) State)157.769 432 Q 503.992 436.75 72
436.75 DL 503.992 438.75 72 438.75 DL(AssT)83.387 449 Q(rDes \(*,G,I\))
-.814 E(\255> F)83.387 462 Q(ALSE)-.99 E(my_metric ->)196.473 449 Q
(better than)196.473 462 Q -.198(Wi)196.473 475 S(nner').198 E 2.75(sm)
-.407 G(etric)-2.75 E(RPF_interface)307.315 449 Q(\(RP\(G\)\) stops)
307.315 462 Q(being I)307.315 475 Q(Recei)409.896 449 Q .22 -.11(ve J)
-.11 H(oin\(*,G\))-.055 E(or)409.896 462 Q -.165(Jo)409.896 475 S
(in\(*,*,RP\(G\)\)).165 E(on Interface I)409.896 488 Q 503.992 492.75 72
492.75 DL 503.992 494.75 72 494.75 DL F0(-> NI state)83.387 505 Q
(-> NI state)65.951 E(-> NI state)63.707 E(-> NI State)55.446 E
([Actions A5])83.387 518 Q([Actions A5])55.347 E([Actions A5])53.103 E
([Actions A5])44.842 E 503.992 522.75 72 522.75 DL 392.815 438.75
392.815 522.75 DL 290.234 438.75 290.234 522.75 DL 179.392 438.75
179.392 522.75 DL 503.992 421.75 503.992 522.75 DL 72 421.75 72 522.75
DL(The state machine uses the follo)72 553.6 Q(wing macros:)-.275 E/F2
11/Courier@0 SF(CouldAssert\(*,G,I\) =)72 570.2 Q 6.6(\(Ii)98.4 583.2 S
6.6(n\(j)-6.6 G(oins\(*,*,RP\(G\)\) \(+\) joins\(*,G\))-6.6 E
(\(+\) pim_include\(*,G\)\) \))157.8 596.2 Q
(AND RPF_interface\(RP\(G\)\) != I)98.4 609.2 Q F0
(CouldAssert\(*,G,I\) is true on do)72 625.8 Q(wnstream interf)-.275 E
(aces for which we ha)-.11 E .33 -.165(ve \()-.22 H
(*,*,RP\(G\)\) or \(*,G\) join).165 E
(state, or local members that requested an)72 638.8 Q 2.75(yt)-.165 G
(raf)-2.75 E(\214c destined for G.)-.275 E F2
(AssertTrackingDesired\(*,G,I\) =)72 655.4 Q(CouldAssert\(*,G\))98.4
668.4 Q(OR \(local_receiver_include\(*,G,I\)==TRUE)98.4 681.4 Q
(AND \(I_am_DR\(I\) OR AssertWinner\(*,G,I\) == me\)\))124.8 694.4 Q
(OR \(RPF_interface\(RP\(G\)\) == I AND RPTJoinDesired\(G\)\))98.4 707.4
Q F0(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.6.2. [P)2.75 F(age 66])-.165 E EP
%%Page: 67 67
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(AssertT)72 85 Q
(rackingDesired\(*,G,I\) is true on an)-.385 E 2.75(yi)-.165 G(nterf)
-2.75 E(ace on which an \(*,G\) assert might af)-.11 E(fect our)-.275 E
(beha)72 98 Q(vior)-.22 E(.)-.605 E
(Note that for reasons of compactness, "AssT)72 114.6 Q
(rDes\(*,G,I\)" is used in the state-machine table to)-.385 E
(refer to AssertT)72 127.6 Q(rackingDesired\(*,G,I\).)-.385 E -.77(Te)72
144.2 S(rminology:).77 E 2.75(A")97 157.2 S
(preferred assert" is one with a better metric than the current winner)
-2.75 E(.)-.605 E
(An "acceptable assert" is one that has a better metric than)97 173.8 Q
/F1 11/Courier@0 SF(my_assert_metric\(S,G,I\))97 186.8 Q F0(.)A
(An "inferior assert" is one with a w)97 203.4 Q(orse metric than)-.11 E
F1(my_assert_metric\(S,G,I\))2.75 E F0(.)A/F2 11/Times-Bold@0 SF -.814
(Tr)72 229.4 S(ansitions fr).814 E(om NoInf)-.198 E 2.75(oS)-.275 G
(tate)-2.75 E F0(When in NoInfo state, the follo)72 246 Q(wing e)-.275 E
-.165(ve)-.275 G(nts trigger transitions, b).165 E
(ut only if the \(S,G\) assert state)-.22 E(machine is in NoInfo state:)
72 259 Q F2(Recei)97 275.6 Q .22 -.11(ve I)-.11 H
(nferior Assert with RPTbit set AND CouldAssert\(*,G,I\)==TR).11 E(UE)
-.33 E F0(An Inferior \(*,G\) assert is recei)122 288.6 Q -.165(ve)-.275
G 2.75(df).165 G(or G on Interf)-2.75 E(ace I.)-.11 E
(If CouldAssert\(*,G,I\) is)5.5 E(TR)122 301.6 Q(UE, then I is our do)
-.44 E(wnstream interf)-.275 E(ace, and we ha)-.11 E .33 -.165(ve \()
-.22 H(*,G\) forw).165 E(arding state on this)-.11 E(interf)122 314.6 Q
(ace, so we should be the assert winner)-.11 E 5.5(.W)-.605 G 2.75(et)
-6.38 G(ransition to the "I am Assert)-2.75 E -.44(Wi)122 327.6 S
(nner" state, and perform Actions A1 \(belo).44 E(w\).)-.275 E F2 2.75
(Ad)97 344.2 S(ata pack)-2.75 E(et destined f)-.11 E(or G arri)-.275 E
-.11(ve)-.11 G 2.75(so).11 G 2.75(ni)-2.75 G
(nterface I, AND CouldAssert\(*,G,I\)==TR)-2.75 E(UE)-.33 E F0 2.75(Ad)
122 357.2 S(ata pack)-2.75 E(et destined for G arri)-.11 E -.165(ve)
-.275 G 2.75(do).165 G 2.75(nad)-2.75 G -.275(ow)-2.75 G(nstream interf)
.275 E(ace which is in our \(*,G\))-.11 E(outgoing interf)122 370.2 Q
(ace list.)-.11 E 1.76 -.88(We t)5.5 H(herefore belie).88 E .33 -.165
(ve w)-.275 H 2.75(es).165 G(hould be the forw)-2.75 E
(arder for this \(*,G\),)-.11 E
(and so we transition to the "I am Assert W)122 383.2 Q
(inner" state, and perform Actions A1)-.44 E(\(belo)122 396.2 Q(w\).)
-.275 E F2(Recei)97 412.8 Q .22 -.11(ve P)-.11 H -.198(re).11 G(ferr)
.198 E(ed Assert with RPT bit set AND)-.198 E(AssertT)122 425.8 Q
(rackingDesir)-.814 E(ed\(*,G,I\)==TR)-.198 E(UE)-.33 E F0 -.88(We)122
438.8 S -.55('r).88 G 2.75(ei).55 G
(nterested in \(*,G\) Asserts, either because I is a do)-2.75 E
(wnstream interf)-.275 E(ace for which)-.11 E(we ha)122 451.8 Q .33
-.165(ve \()-.22 H(*,G\) forw).165 E
(arding state, or because I is the upstream interf)-.11 E
(ace for RP\(G\) and)-.11 E(we ha)122 464.8 Q .33 -.165(ve \()-.22 H
(*,G\) forw).165 E(arding state.)-.11 E 1.76 -.88(We g)5.5 H
(et a \(*,G\) Assert that has a better metric than).88 E(our o)122 477.8
Q(wn, so we do not win the Assert.)-.275 E 1.76 -.88(We t)5.5 H
(ransition to "I am Assert Loser" and).88 E(perform actions A2 \(belo)
122 490.8 Q(w\).)-.275 E F2 -.814(Tr)72 516.8 S(ansitions fr).814 E
(om "I am Assert W)-.198 E(inner" State)-.198 E F0
(When in "I am Assert W)72 533.4 Q(inner" state, the follo)-.44 E
(wing e)-.275 E -.165(ve)-.275 G(nts trigger transitions, b).165 E
(ut only if the \(S,G\))-.22 E(assert state machine is in NoInfo state:)
72 546.4 Q F2(Recei)97 563 Q .22 -.11(ve I)-.11 H(nferior Assert).11 E
F0 1.76 -.88(We r)122 576 T(ecei).88 E .33 -.165(ve a \()-.275 H
(*,G\) assert that has a w).165 E(orse metric than our o)-.11 E 2.75
(wn. Whoe)-.275 F -.165(ve)-.275 G 2.75(rs).165 G(ent the)-2.75 E(asser\
t has lost, and so we re-send a \(*,G\) Assert, and restart the timer \
\(Action A3)122 589 Q(belo)122 602 Q(w\).)-.275 E F2(Recei)97 618.6 Q
.22 -.11(ve P)-.11 H -.198(re).11 G(ferr).198 E(ed Assert)-.198 E F0
1.76 -.88(We r)122 631.6 T(ecei).88 E .33 -.165(ve a \()-.275 H
(*,G\) assert that has a better metric than our o).165 E 2.75(wn. W)
-.275 F 2.75(et)-.88 G(ransition to "I am)-2.75 E
(Assert Loser" state and perform actions A2 \(belo)122 644.6 Q(w\).)
-.275 E(When in "I am Assert W)72 661.2 Q(inner" state, the follo)-.44 E
(wing e)-.275 E -.165(ve)-.275 G(nts trigger transitions:).165 E F2
-.198(Ti)97 677.8 S(mer Expir).198 E(es)-.198 E F0
(The \(*,G\) assert timer e)122 690.8 Q 2.75(xpires. As)-.165 F(we')2.75
E(re in the W)-.55 E(inner state, then we must still ha)-.44 E -.165(ve)
-.22 G(\(*,G\) forw)122 703.8 Q(arding state that is acti)-.11 E -.165
(ve)-.275 G(ly being k).165 E(ept ali)-.11 E -.165(ve)-.275 G 5.5(.T)
.165 G 2.75(op)-6.38 G(re)-2.75 E -.165(ve)-.275 G(nt unnecessary).165 E
(thrashing of the forw)122 716.8 Q
(arder and periodic \215ooding of duplicate pack)-.11 E
(ets, we re-send the)-.11 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E
(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.6.2. [P)2.75 F(age 67])
-.165 E EP
%%Page: 68 68
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(\(*,G\) Assert, and restart the timer \(Action A3 belo)122 85 Q(w\).)
-.275 E/F1 11/Times-Bold@0 SF(CouldAssert\(*,G,I\) -> F)97 101.6 Q(ALSE)
-.99 E F0(Our \(*,G\) forw)122 114.6 Q(arding state or RPF interf)-.11 E
(ace changed so as to mak)-.11 E(e)-.11 E(CouldAssert\(*,G,I\) become f)
122 127.6 Q 2.75(alse. W)-.11 F 2.75(ec)-.88 G
(an no longer perform the actions of the assert)-2.75 E(winner)122 140.6
Q 2.75(,a)-.44 G
(nd so we transition to NoInfo state and perform actions A4 \(belo)-2.75
E(w\).)-.275 E F1 -.814(Tr)72 166.6 S(ansitions fr).814 E
(om "I am Assert Loser" State)-.198 E F0
(When in "I am Assert Loser" state, the follo)72 183.2 Q(wing e)-.275 E
-.165(ve)-.275 G(nts trigger transitions, b).165 E
(ut only if the \(S,G\))-.22 E(assert state machine is in NoInfo state:)
72 196.2 Q F1(Recei)97 212.8 Q .22 -.11(ve P)-.11 H -.198(re).11 G(ferr)
.198 E(ed Assert)-.198 E F0 1.76 -.88(We r)122 225.8 T(ecei).88 E .33
-.165(ve a \()-.275 H
(*,G\) assert that is better than that of the current assert winner).165
E 5.5(.W)-.605 G 2.75(es)-6.38 G(tay)-2.75 E
(in Loser state, and perform actions A2 belo)122 238.8 Q -.715(w.)-.275
G F1(Recei)97 255.4 Q .22 -.11(ve A)-.11 H(cceptable Assert fr).11 E
(om Curr)-.198 E(ent W)-.198 E(inner)-.198 E F0 1.76 -.88(We r)122 268.4
T(ecei).88 E .33 -.165(ve a \()-.275 H
(*,G\) assert from the current assert winner that is better than our o)
.165 E(wn)-.275 E(metric for this group \(although the metric may be w)
122 281.4 Q(orse than the winner')-.11 E 2.75(sp)-.605 G(re)-2.75 E
(vious)-.275 E 2.75(metric\). W)122 294.4 R 2.75(es)-.88 G
(tay in Loser state, and perform actions A2 belo)-2.75 E -.715(w.)-.275
G F1(Recei)97 311 Q .22 -.11(ve I)-.11 H(nferior Assert fr).11 E
(om Curr)-.198 E(ent W)-.198 E(inner)-.198 E F0 1.76 -.88(We r)122 324 T
(ecei).88 E .33 -.165(ve a)-.275 H 2.75(na).165 G
(ssert from the current assert winner that is w)-2.75 E(orse than our o)
-.11 E(wn metric)-.275 E(for this group \(typically because the winner')
122 337 Q 2.75(sm)-.605 G(etric became w)-2.75 E 2.75(orse\). W)-.11 F
2.75(et)-.88 G(ransition to)-2.75 E
(NoInfo state, delete this \(*,G\) assert state \(action A5\), and allo)
122 350 Q 2.75(wt)-.275 G(he normal PIM)-2.75 E
(Join/Prune mechanisms to operate.)122 363 Q(Usually we will e)5.5 E
-.165(ve)-.275 G(ntually re-assert and win when).165 E(data pack)122 376
Q(ets for G ha)-.11 E .33 -.165(ve s)-.22 H(tarted \215o).165 E(wing ag)
-.275 E(ain.)-.055 E(When in "I am Assert Loser" state, the follo)72
392.6 Q(wing e)-.275 E -.165(ve)-.275 G(nts trigger transitions:).165 E
F1 -.198(Ti)97 409.2 S(mer Expir).198 E(es)-.198 E F0
(The \(*,G\) assert timer e)122 422.2 Q 2.75(xpires. W)-.165 F 2.75(et)
-.88 G(ransition to NoInfo state and delete this \(*,G\))-2.75 E
(assert info \(action A5\).)122 435.2 Q F1(Curr)97 451.8 Q(ent W)-.198 E
(inner')-.198 E 2.75(sG)-.407 G(enID Changes)-2.75 E F0 1.76 -.88(We r)
122 464.8 T(ecei).88 E .33 -.165(ve a H)-.275 H
(ello message from the current winner reporting a dif).165 E
(ferent GenID from)-.275 E(the one it pre)122 477.8 Q(viously reported.)
-.275 E(This indicates that the current winner')5.5 E 2.75(si)-.605 G
(nterf)-2.75 E(ace or)-.11 E(router has gone do)122 490.8 Q
(wn and come back up, and so we must assume it no longer kno)-.275 E
(ws it)-.275 E -.11(wa)122 503.8 S 2.75(st).11 G(he winner)-2.75 E 2.75
(.W)-.605 G 2.75(et)-3.63 G
(ransition to the NoInfo state, deleting the \(*,G\) assert information)
-2.75 E(\(action A5\).)122 516.8 Q F1(AssertT)97 533.4 Q(rackingDesir)
-.814 E(ed\(*,G,I\)->F)-.198 E(ALSE)-.99 E F0(AssertT)122 546.4 Q
(rackingDesired\(*,G,I\) becomes F)-.385 E 2.75(ALSE. Our)-.814 F(forw)
2.75 E(arding state has changed so)-.11 E
(that \(*,G\) Asserts on interf)122 559.4 Q
(ace I are no longer of interest to us.)-.11 E 1.76 -.88(We t)5.5 H
(ransition to).88 E
(NoInfo state and delete this \(*,G\) assert info \(action A5\).)122
572.4 Q F1(My metric becomes better than the assert winner')97 589 Q
2.75(sm)-.407 G(etric)-2.75 E F0
(My routing metric, rpt_assert_metric\(G,I\), has changed so that no)122
602 Q 2.75(wm)-.275 G 2.75(ya)-2.75 G(ssert metric)-2.75 E
(for \(*,G\) is better than the metric we ha)122 615 Q .33 -.165(ve s)
-.22 H(tored for current assert winner).165 E 5.5(.W)-.605 G(e)-6.38 E(\
transition to NoInfo state, and delete this \(*,G\) assert state \(acti\
on A5\), and allo)122 628 Q 2.75(wt)-.275 G(he)-2.75 E
(normal PIM Join/Prune mechanisms to operate.)122 641 Q
(Usually we will e)5.5 E -.165(ve)-.275 G(ntually re-assert).165 E
(and win when data pack)122 654 Q(ets for G ha)-.11 E .33 -.165(ve s)
-.22 H(tarted \215o).165 E(wing ag)-.275 E(ain.)-.055 E F1
(RPF_interface\(RP\(G\)\) stops being interface I)97 670.6 Q F0(Interf)
122 683.6 Q(ace I used to be the RPF interf)-.11 E
(ace for RP\(G\), and no)-.11 E 2.75(wi)-.275 G 2.75(ti)-2.75 G 2.75(sn)
-2.75 G 2.75(ot. W)-2.75 F 2.75(et)-.88 G(ransition to)-2.75 E
(NoInfo state, and delete this \(*,G\) assert state \(action A5\).)122
696.6 Q(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.6.2. [P)2.75 F(age 68])-.165 E EP
%%Page: 69 69
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF(Recei)
97 85 Q .22 -.11(ve J)-.11 H(oin\(*,G\) or J)-.055 E
(oin\(*,*,RP\(G\)\) on interface I)-.165 E F0 1.76 -.88(We r)122 98 T
(ecei).88 E .33 -.165(ve a J)-.275 H(oin\(*,G\) or a Join\(*,*,RP\(G\)\
\) that has the Upstream Neighbor Address).165 E
(\214eld set to my IP address on interf)122 111 Q(ace I.)-.11 E
(The action is to transition to NoInfo state,)5.5 E
(and delete this \(*,G\) assert state \(action A5\), and allo)122 124 Q
2.75(wt)-.275 G(he normal PIM Join/Prune)-2.75 E(mechanisms to operate.)
122 137 Q(If whoe)5.5 E -.165(ve)-.275 G 2.75(rs).165 G(ent the Join w)
-2.75 E(as in error)-.11 E 2.75(,t)-.44 G(hen the normal assert)-2.75 E
(mechanism will e)122 150 Q -.165(ve)-.275 G
(ntually re-apply and we will lose the assert ag).165 E 2.75(ain. Ho)
-.055 F(we)-.275 E -.165(ve)-.275 G(r).165 E(whoe)122 163 Q -.165(ve)
-.275 G 2.75(rs).165 G(ent the assert may kno)-2.75 E 2.75(wt)-.275 G
(hat the pre)-2.75 E(vious assert winner has died, and so we)-.275 E
(may end up being the ne)122 176 Q 2.75(wf)-.275 G(orw)-2.75 E(arder)
-.11 E(.)-.605 E F1(\(*,G\) Assert State-machine Actions)72 202 Q F0
5.75(A1: Send)97 218.6 R(Assert\(*,G\))2.75 E(Set timer to \(Assert_T)
122 231.6 Q(ime - Assert_Ov)-.385 E(erride_Interv)-.165 E(al\))-.275 E
(Store self as AssertW)122 244.6 Q(inner\(*,G,I\).)-.44 E
(Store rpt_assert_metric\(G,I\) as AssertW)122 257.6 Q
(innerMetric\(*,G,I\).)-.44 E 5.75(A2: Store)97 274.2 R(ne)2.75 E 2.75
(wa)-.275 G(ssert winner as AssertW)-2.75 E
(inner\(*,G,I\) and assert winner metric as)-.44 E(AssertW)122 287.2 Q
(innerMetric\(*,G,I\).)-.44 E(Set timer to Assert_T)122 300.2 Q(ime)
-.385 E 5.75(A3: Send)97 316.8 R(Assert\(*,G\))2.75 E
(Set timer to \(Assert_T)122 329.8 Q(ime - Assert_Ov)-.385 E
(erride_Interv)-.165 E(al\))-.275 E 5.75(A4: Send)97 346.4 R
(AssertCancel\(*,G\))2.75 E(Delete assert info \(AssertW)122 359.4 Q
(inner\(*,G,I\) and AssertW)-.44 E(innerMetric\(*,G,I\) will then)-.44 E
(return their def)122 372.4 Q(ault v)-.11 E(alues\).)-.275 E 5.75
(A5: Delete)97 389 R(assert info \(AssertW)2.75 E
(inner\(*,G,I\) and AssertW)-.44 E(innerMetric\(*,G,I\) will then)-.44 E
(return their def)122 402 Q(ault v)-.11 E(alues\).)-.275 E
(Note that some of these actions may cause the v)72 418.6 Q
(alue of JoinDesired\(*,G\) or RPF'\(*,G\)\) to)-.275 E
(change, which could cause further transitions in other state machines.)
72 431.6 Q F1 2.75(4.6.3. Assert)72 461.2 R(Metrics)2.75 E F0
(Assert metrics are de\214ned as:)72 477.8 Q/F2 11/Courier@0 SF
(struct assert_metric {)85.2 496.8 Q(rpt_bit_flag;)98.4 509.8 Q
(metric_preference;)98.4 522.8 Q(route_metric;)98.4 535.8 Q(ip_address;)
98.4 548.8 Q(};)85.2 561.8 Q F0(When comparing assert_metrics, the rpt_\
bit_\215ag, metric_preference, and route_metric \214eld are)72 593.8 Q
(compared in order)72 606.8 Q 2.75(,w)-.44 G(here the \214rst lo)-2.75 E
(wer v)-.275 E(alue wins.)-.275 E
(If all \214elds are equal, the IP address of the)5.5 E
(router that sourced the Assert message is used as a tie-break)72 619.8
Q(er)-.11 E 2.75(,w)-.44 G(ith the highest IP address)-2.75 E(winning.)
72 632.8 Q(An assert metric for \(S,G\) to include in \(or compare ag)72
649.4 Q(ainst\) an Assert message sent on interf)-.055 E(ace I)-.11 E
(should be computed using the follo)72 662.4 Q(wing pseudocode:)-.275 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.6.3. [P)2.75 F(age 69])-.165 E EP
%%Page: 70 70
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Courier@0 SF
(assert_metric)85.2 85 Q(my_assert_metric\(S,G,I\) {)85.2 98 Q
(if\( CouldAssert\(S,G,I\) == TRUE \) {)111.6 111 Q
(return spt_assert_metric\(S,I\))138 124 Q 6.6(}e)111.6 137 S
(lse if\( CouldAssert\(*,G,I\) == TRUE \) {)-6.6 E
(return rpt_assert_metric\(G,I\))138 150 Q 6.6(}e)111.6 163 S(lse {)-6.6
E(return infinite_assert_metric\(\))138 176 Q(})111.6 189 Q(})85.2 202 Q
(spt_assert_metric\(S,I\))72 224.6 Q F0(gi)2.75 E -.165(ve)-.275 G 2.75
(st).165 G(he assert metric we use if we')-2.75 E
(re sending an assert based)-.55 E(on acti)72 237.6 Q .33 -.165(ve \()
-.275 H(S,G\) forw).165 E(arding state:)-.11 E F1(assert_metric)85.2
256.6 Q(spt_assert_metric\(S,I\) {)85.2 269.6 Q
(return {0,MRIB.pref\(S\),MRIB.metric\(S\),my_ip_address\(I\)})105 282.6
Q(})85.2 295.6 Q(rpt_assert_metric\(G,I\))72 318.2 Q F0(gi)2.75 E -.165
(ve)-.275 G 2.75(st).165 G(he assert metric we use if we')-2.75 E
(re sending an assert based)-.55 E(only on \(*,G\) forw)72 331.2 Q
(arding state:)-.11 E F1(assert_metric)85.2 350.2 Q
(rpt_assert_metric\(G,I\) {)85.2 363.2 Q(return {1,MRIB.pref\(RP\(G\)\)\
,MRIB.metric\(RP\(G\)\),my_ip_address\(I\)})111.6 376.2 Q(})85.2 389.2 Q
(MRIB.pref\(X\))72 411.8 Q F0(and)2.75 E F1(MRIB.metric\(X\))2.75 E F0
(are the routing preference and routing metrics)2.75 E(associated with \
the route to a particular \(unicast\) destination X, as determined by t\
he MRIB.)72 424.8 Q F1(my_ip_address\(I\))72 437.8 Q F0
(is simply the router')2.75 E 2.75(sI)-.605 G 2.75(Pa)-2.75 G
(ddress that is associated with the local interf)-2.75 E(ace)-.11 E(I.)
72 450.8 Q F1(infinite_assert_metric\(\))72 467.4 Q F0(gi)2.75 E -.165
(ve)-.275 G 2.75(st).165 G(he assert metric we need to send an assert b)
-2.75 E(ut don')-.22 E(t)-.198 E(match either \(S,G\) or \(*,G\) forw)72
480.4 Q(arding state:)-.11 E F1(assert_metric)85.2 499.4 Q
(infinite_assert_metric\(\) {)85.2 512.4 Q
(return {1,infinity,infinity,0})118.2 525.4 Q(})85.2 538.4 Q/F2 11
/Times-Bold@0 SF 2.75(4.6.4. AssertCancel)72 570.4 R(Messages)2.75 E F0
(An AssertCancel message is simply an RPT Assert message b)72 587 Q
(ut with in\214nite metric.)-.22 E(It is sent by)5.5 E
(the assert winner when it deletes the forw)72 600 Q
(arding state that had caused the assert to occur)-.11 E 5.5(.O)-.605 G
(ther)-5.5 E(routers will see this metric, and it will cause an)72 613 Q
2.75(yo)-.165 G(ther router that has forw)-2.75 E
(arding state to send its)-.11 E -.275(ow)72 626 S 2.75(na).275 G
(ssert, and to tak)-2.75 E 2.75(eo)-.11 G -.165(ve)-2.915 G 2.75(rf).165
G(orw)-2.75 E(arding.)-.11 E(An AssertCancel\(S,G\) is an in\214nite me\
tric assert with the RPT bit set that names S as the source.)72 642.6 Q
(An AssertCancel\(*,G\) is an in\214nite metric assert with the RPT bit\
 set, and typically will name)72 659.2 Q
(RP\(G\) as the source as it cannot name an appropriate S.)72 672.2 Q
(AssertCancel messages are simply an optimization.)72 688.8 Q
(The original Assert timeout mechanism will)5.5 E(allo)72 701.8 Q 2.75
(was)-.275 G(ubnet to e)-2.75 E -.165(ve)-.275 G
(ntually become consistent; the AssertCancel mechanism simply causes f)
.165 E(aster)-.11 E(con)72 714.8 Q -.165(ve)-.44 G -.198(rg).165 G 2.75
(ence. No).198 F(special processing is required for an AssertCancel mes\
sage, since it is simply)2.75 E(Fenner/Handle)72 769 Q(y/Holbrook/K)
-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.6.4. [P)2.75 F
(age 70])-.165 E EP
%%Page: 71 71
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(an Assert message from the current winner)72 85 Q(.)-.605 E/F1 11
/Times-Bold@0 SF 2.75(4.6.5. Assert)72 111 R(State Macr)2.75 E(os)-.198
E F0(The macros)72 127.6 Q/F2 11/Courier@0 SF(lost_assert\(S,G,rpt,I\))
2.75 E F0(,)A F2(lost_assert\(S,G,I\))2.75 E F0 2.75(,a)C(nd)-2.75 E F2
(lost_assert\(*,G,I\))72 140.6 Q F0(are used in the olist computations \
of Section 4.1, and are de\214ned as:)2.75 E F2
(bool lost_assert\(S,G,rpt,I\) {)85.2 159.6 Q
(if \( RPF_interface\(RP\) == I)98.4 172.6 Q(OR)13.2 E 6.6(\(R)131.4
185.6 S(PF_interface\(S\) == I AND SPTbit\(S,G\) == TRUE \) \) {)-6.6 E
(return FALSE)118.2 198.6 Q 6.6(}e)98.4 211.6 S(lse {)-6.6 E
(return \( AssertWinner\(S,G,I\) != NULL AND)118.2 224.6 Q
(AssertWinner\(S,G,I\) != me \))177.6 237.6 Q(})98.4 250.6 Q(})85.2
263.6 Q(bool lost_assert\(S,G,I\) {)85.2 288.6 Q
(if \( RPF_interface\(S\) == I \) {)98.4 301.6 Q(return FALSE)118.2
314.6 Q 6.6(}e)98.4 327.6 S(lse {)-6.6 E
(return \( AssertWinner\(S,G,I\) != NULL AND)118.2 340.6 Q
(AssertWinner\(S,G,I\) != me)177.6 353.6 Q(AND)13.2 E
(\(AssertWinnerMetric\(S,G,I\) is better)177.6 366.6 Q
(than spt_assert_metric\(S,I\) \))197.4 379.6 Q(})98.4 392.6 Q(})85.2
405.6 Q F0(Note: the term "AssertW)72 428.2 Q(innerMetric\(S,G,I\) is b\
etter than spt_assert_metric\(S,I\)" is required to)-.44 E(correctly ha\
ndle the transition phase when a router has \(S,G\) join state, b)72
441.2 Q(ut has not yet set the)-.22 E(SPT bit.)72 454.2 Q(In this case \
it needs to ignore the assert state if it will win the assert once the \
SPT bit is)5.5 E(set.)72 467.2 Q F2(bool lost_assert\(*,G,I\) {)85.2
486.2 Q(if \( RPF_interface\(RP\) == I \) {)98.4 499.2 Q(return FALSE)
118.2 512.2 Q 6.6(}e)98.4 525.2 S(lse {)-6.6 E
(return \( AssertWinner\(*,G,I\) != NULL AND)118.2 538.2 Q
(AssertWinner\(*,G,I\) != me \))177.6 551.2 Q(})98.4 564.2 Q(})85.2
577.2 Q(AssertWinner\(S,G,I\))72 599.8 Q F0
(is the IP source address of the Assert\(S,G\) pack)2.75 E(et that w)
-.11 E(on an)-.11 E(Assert.)72 612.8 Q F2(AssertWinner\(*,G,I\))72 629.4
Q F0(is the IP source address of the Assert\(*,G\) pack)2.75 E
(et that w)-.11 E(on an)-.11 E(Assert.)72 642.4 Q F2
(AssertWinnerMetric\(S,G,I\))72 659 Q F0
(is the Assert metric of the Assert\(S,G\) pack)2.75 E(et that w)-.11 E
(on an)-.11 E(Assert.)72 672 Q F2(AssertWinnerMetric\(*,G,I\))72 688.6 Q
F0(is the Assert metric of the Assert\(*,G\) pack)2.75 E(et that w)-.11
E(on an)-.11 E(Assert.)72 701.6 Q(Fenner/Handle)72 769 Q(y/Holbrook/K)
-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.6.5. [P)2.75 F
(age 71])-.165 E EP
%%Page: 72 72
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Courier@0 SF
(AssertWinner\(S,G,I\))72 85 Q F0(def)2.75 E(aults to Null and)-.11 E F1
(AssertWinnerMetric\(S,G,I\))2.75 E F0(def)2.75 E(aults to)-.11 E
(In\214nity when in the NoInfo state.)72 98 Q/F2 11/Times-Bold@0 SF
(Summary of Assert Rules and Rationale)72 124 Q F0
(This section summarizes the k)72 140.6 Q .33 -.165(ey r)-.11 H
(ules for sending and reacting to asserts and the rationale for).165 E
(these rules.)72 153.6 Q(This section is not intended to be and should \
not be treated as a de\214niti)5.5 E -.165(ve)-.275 G
(speci\214cation of)72 166.6 Q(protocol beha)5.5 E(vior)-.22 E 5.5(.T)
-.605 G(he state machines and pseudocode should be consulted for)-5.5 E
(that purpose.)72 179.6 Q(Rather)5.5 E 2.75(,t)-.44 G
(his section is intended to document important aspects of a the Assert)
-2.75 E(protocol beha)72 192.6 Q(vior and to pro)-.22 E
(vide information that may pro)-.165 E .33 -.165(ve h)-.165 H
(elpful to the reader in).165 E
(understanding and implementing this part of the protocol.)72 205.6 Q 14
(1. Beha)72 222.2 R(vior: Do)-.22 E(wnstream neighbors send Join\(*,G\)\
 and Join\(S,G\) periodic messages to the)-.275 E
(appropriate RPF' neighbor)97 235.2 Q 2.75(,i)-.44 G
(.e., the RPF neighbor as modi\214ed by the assert process.)-2.75 E(The)
5.5 E(y)-.165 E(are not al)97 248.2 Q -.11(wa)-.11 G
(ys sent to the RPF neighbor as indicated by the MRIB.).11 E
(Normal suppression and)5.5 E -.165(ove)97 261.2 S(rride rules apply)
.165 E(.)-.715 E(Rationale: By sending the periodic and triggered Join \
messages to the RPF' neighbor)97 277.8 Q(instead of to the RPF neighbor)
97 290.8 Q 2.75(,t)-.44 G(he do)-2.75 E(wnstream router a)-.275 E -.22
(vo)-.22 G(ids re-triggering the Assert).22 E(process with e)97 303.8 Q
-.165(ve)-.275 G(ry Join.).165 E 2.75(As)5.5 G(ide ef)-2.75 E
(fect of sending Joins to the Assert winner is that traf)-.275 E<8c63>
-.275 E(will not switch back to the "normal" RPF neighbor until the Ass\
ert times out.)97 316.8 Q(This will not)5.5 E
(happen until data stops \215o)97 329.8 Q(wing, if item 8 belo)-.275 E
2.75(wi)-.275 G 2.75(si)-2.75 G(mplemented.)-2.75 E 14(2. Beha)72 346.4
R(vior: The assert winner for \(*,G\) acts as the local DR for \(*,G\) \
on behalf of)-.22 E(IGMP/MLD members.)97 359.4 Q
(Rationale: This is required to allo)97 376 Q 2.75(was)-.275 G
(ingle router to mer)-2.75 E(ge PIM and IGMP/MLD joins and)-.198 E(lea)
97 389 Q -.165(ve)-.22 G 2.75(s. W).165 F(ithout this, o)-.44 E -.165
(ve)-.165 G(rrides don').165 E 2.75(tw)-.198 G(ork.)-2.86 E 14(3. Beha)
72 405.6 R(vior: The assert winner for \(S,G\) acts as the local DR for\
 \(S,G\) on behalf of IGMPv3)-.22 E(members.)97 418.6 Q
(Rationale: Same rationale as for 2.)97 435.2 Q 14(4. Beha)72 451.8 R
(vior: \(S,G\) and \(*,G\) prune o)-.22 E -.165(ve)-.165 G
(rrides are sent to the RPF' neighbor and not to the).165 E(re)97 464.8
Q(gular RPF neighbor)-.165 E(.)-.605 E(Rationale: Same as for 1.)97
481.4 Q 14(5. Beha)72 498 R(vior: An \(S,G,rpt\) prune o)-.22 E -.165
(ve)-.165 G
(rride is not sent \(at all\) if RPF'\(S,G,rpt\) != RPF'\(*,G\).).165 E
(Rationale: This a)97 514.6 Q -.22(vo)-.22 G(ids k).22 E
(eeping state ali)-.11 E .33 -.165(ve o)-.275 H 2.75(nt).165 G
(he \(S,G\) tree when only \(*,G\) do)-2.75 E(wnstream)-.275 E
(members are left.)97 527.6 Q(Also, it a)5.5 E -.22(vo)-.22 G
(ids sending \(S,G,rpt\) joins to a router that is not on the \(*,G\))
.22 E 2.75(tree. This)97 540.6 R(beha)2.75 E(vior might be confusing al\
though this speci\214cation does indicate that such a)-.22 E
(join should be dropped.)97 553.6 Q 14(6. Beha)72 570.2 R
(vior: An assert loser that recei)-.22 E -.165(ve)-.275 G 2.75(saJ).165
G(oin\(S,G\) with an Upstream Neighbor Address that)-2.75 E
(is one of its addresses on that interf)97 583.2 Q
(ace cancels the \(S,G\) assert timer)-.11 E(.)-.605 E
(Rationale: This is necessary in order to ha)97 599.8 Q .33 -.165(ve r)
-.22 H(apid con).165 E -.165(ve)-.44 G -.198(rg).165 G(ence in the e)
.198 E -.165(ve)-.275 G(nt that the).165 E(do)97 612.8 Q(wnstream route\
r that initially sent a join to the prior Assert winner has under)-.275
E(gone a)-.198 E(topology change.)97 625.8 Q 14(7. Beha)72 642.4 R
(vior: An assert loser that recei)-.22 E -.165(ve)-.275 G 2.75(saJ).165
G(oin\(*,G\) or a Join\(*,*,RP\(G\)\) with an Upstream)-2.75 E
(Neighbor Address that is one of its addresses on that interf)97 655.4 Q
(ace cancels the \(*,G\) assert timer)-.11 E
(and all \(S,G\) assert timers that do not ha)97 668.4 Q .33 -.165(ve c)
-.22 H(orresponding Prune\(S,G,rpt\) messages in the).165 E
(compound Join/Prune message.)97 681.4 Q(Rationale: Same as 6.)97 698 Q
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.6.5. [P)2.75 F(age 72])-.165 E EP
%%Page: 73 73
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E 14(8. Beha)72 85 R(vior: An\
 assert winner for \(*,G\) or \(S,G\) sends a canceling assert when it \
is about to)-.22 E(stop forw)97 98 Q
(arding on a \(*,G\) or an \(S,G\) entry)-.11 E 5.5(.T)-.715 G(his beha)
-5.5 E(vior does not apply to \(S,G,rpt\).)-.22 E(Rationale: This allo)
97 114.6 Q
(ws switching back to the shared tree after the last SPT router on the)
-.275 E(LAN lea)97 127.6 Q -.165(ve)-.22 G 2.75(s. Doing).165 F
(this pre)2.75 E -.165(ve)-.275 G(nts do).165 E
(wnstream routers on the shared tree from k)-.275 E(eeping SPT)-.11 E
(state ali)97 140.6 Q -.165(ve)-.275 G(.).165 E 14(9. Beha)72 157.2 R
(vior: Re-send the assert messages before timing out an assert.)-.22 E
(\(This beha)5.5 E(vior is)-.22 E(optional.\))97 170.2 Q
(Rationale: This pre)97 186.8 Q -.165(ve)-.275 G
(nts the periodic duplicates that w).165 E
(ould otherwise occur each time that)-.11 E
(an assert times out and is then re-established.)97 199.8 Q 8.5
(10. Beha)72 216.4 R(vior: When RPF'\(S,G,rpt\) changes to be the same \
as RPF'\(*,G\) we need to trigger a)-.22 E(Join\(S,G,rpt\) to MRIB.ne)97
229.4 Q(xt_hop\(RP\(G\)\).)-.165 E(Rationale: This allo)97 246 Q
(ws switching back to the RPT after the last SPT member lea)-.275 E
-.165(ve)-.22 G(s.).165 E/F1 11/Times-Bold@0 SF(4.7.)72 275.6 Q/F2 13
/Times-Bold@0 SF(PIM Multicast Border Router Beha)5.5 E(vior)-.325 E F0
(In some cases PIM-SM domains will interconnect with non-PIM domains.)72
292.2 Q(In these cases, the)5.5 E
(border routers of the PIM domain speak PIM-SM on some interf)72 305.2 Q
(aces and speak other multicast)-.11 E
(routing protocols on other interf)72 318.2 Q 2.75(aces. Such)-.11 F
(routers are termed PIM Multicast Border Routers or)2.75 E 2.75
(PMBRs. In)72 331.2 R(general, RFC 2715 [14] pro)2.75 E
(vides rules for interoperability between dif)-.165 E(ferent)-.275 E
(multicast routing protocols.)72 344.2 Q(In this section we specify ho)
5.5 E 2.75(wP)-.275 G(MBRs dif)-2.75 E(fer from re)-.275 E(gular PIM-SM)
-.165 E(routers.)72 357.2 Q(From the point of vie)72 373.8 Q 2.75(wo)
-.275 G 2.75(fP)-2.75 G(IM-SM, a PMBR has tw)-2.75 E 2.75(ot)-.11 G
(asks:)-2.75 E 7.15<8354>72 390.4 S 2.75(oe)-8.03 G(nsure that traf)
-2.75 E(\214c from sources outside the PIM-SM domain reaches recei)-.275
E -.165(ve)-.275 G(rs inside the).165 E(domain.)83 403.4 Q 7.15<8354>72
420 S 2.75(oe)-8.03 G(nsure that traf)-2.75 E
(\214c from sources inside the PIM-SM domain reaches recei)-.275 E -.165
(ve)-.275 G(rs outside the).165 E(domain.)83 433 Q 1.76 -.88(We n)72
449.6 T(ote that multiple PIM-SM domains are sometimes connected togeth\
er using protocols such).88 E(as MSDP)72 462.6 Q 2.75(,w)-1.221 G
(hich pro)-2.75 E(vides information about acti)-.165 E .33 -.165(ve ex)
-.275 H(ternal sources, b).165 E(ut does not follo)-.22 E 2.75(wR)-.275
G(FC)-2.75 E 2.75(2715. In)72 475.6 R(such cases the domains are not co\
nnected via PMBRs because Join\(S,G\) messages)2.75 E(tra)72 488.6 Q
-.165(ve)-.22 G(rse the border between domains.).165 E 2.75(AP)5.5 G
(MBR is required when no PIM messages can tra)-2.75 E -.165(ve)-.22 G
(rse).165 E(the border; typically this is because the routing protocol \
in the neighboring domain is not PIM-)72 501.6 Q(SM.)72 514.6 Q F1 2.75
(4.7.1. Sour)72 540.6 R(ces Exter)-.198 E(nal to the PIM-SM Domain)-.165
E F0 2.75(AP)72 557.2 S(MBR needs to ensure that traf)-2.75 E
(\214c from multicast sources e)-.275 E(xternal to the PIM-SM domain)
-.165 E(reaches recei)72 570.2 Q -.165(ve)-.275 G(rs inside the domain.)
.165 E(The PMBR will follo)5.5 E 2.75(wt)-.275 G
(he rules in RFC 2715, such that)-2.75 E(traf)72 583.2 Q(\214c from e)
-.275 E(xternal sources reaches the PMBR itself.)-.165 E
(According to RFC 2715, the PIM-SM component of the PMBR will recei)72
599.8 Q .33 -.165(ve a)-.275 H 2.75(n\().165 G(S,G\) Creation)-2.75 E
-2.365 -.275(ev e)72 612.8 T(nt when data from an \(S,G\) data pack).275
E(et from an e)-.11 E(xternal source \214rst reaches the PMBR.)-.165 E
(If)5.5 E(RPF_interf)72 625.8 Q(ace\(S\) is not an interf)-.11 E
(ace in the PIM-SM domain, the pack)-.11 E(et cannot be originated into)
-.11 E(the PIM domain at this router)72 638.8 Q 2.75(,a)-.44 G
(nd the PIM-SM component of the PMBR will not process the)-2.75 E(pack)
72 651.8 Q 2.75(et. Otherwise)-.11 F(the PMBR will then act e)2.75 E
(xactly as if it were the DR for this source \(see section)-.165 E
(4.4.1 with the follo)72 664.8 Q(wing modi\214cations:)-.275 E 7.15
<8354>72 681.4 S(he Border)-7.15 E(-bit is set in all PIM Re)-.22 E
(gister message sent for these sources.)-.165 E 7.15<8344>72 698 S
(irectlyConnected\(S\) is treated as being TR)-7.15 E
(UE for these sources.)-.44 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165
E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.7.1. [P)2.75 F
(age 73])-.165 E EP
%%Page: 74 74
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E 7.15<8354>72 85 S
(he PIM-SM forw)-7.15 E(arding rule "iif == RPF_interf)-.11 E
(ace\(S\)" is relax)-.11 E(ed to be TR)-.165 E(UE if iif is an)-.44 E(y)
-.165 E(interf)83 98 Q(ace that is not part of the PIM-SM component of \
the PMBR \(see section 4.2\).)-.11 E/F1 11/Times-Bold@0 SF 2.75
(4.7.2. Sour)72 124 R(ces Inter)-.198 E(nal to the PIM-SM Domain)-.165 E
F0 2.75(AP)72 140.6 S(MBR needs to ensure that traf)-2.75 E
(\214c from sources inside the PIM-SM domain reaches recei)-.275 E -.165
(ve)-.275 G(rs).165 E(outside the domain.)72 153.6 Q
(Using terminology from RFC 2715, there are tw)5.5 E 2.75(op)-.11 G
(ossible scenarios for this:)-2.75 E 7.15<8341>72 170.2 S
(nother component of the PMBR is a wildcard recei)-7.15 E -.165(ve)-.275
G 3.96 -.605(r. I).165 H 2.75(nt).605 G(his case the PIM-SM component)
-2.75 E(of the PMBR must ensure that traf)83 183.2 Q
(\214c from all internal sources reaches the PMBR until it is)-.275 E
(informed otherwise.)83 196.2 Q 7.15<834e>72 212.8 S 2.75(oo)-7.15 G
(ther component of the PMBR is a wildcard recei)-2.75 E -.165(ve)-.275 G
3.96 -.605(r. I).165 H 2.75(nt).605 G(his case the PMBR will recei)-2.75
E -.165(ve)-.275 G -.165(ex)83 225.8 S
(plicit information as to which groups or \(source,group\) pairs the e)
.165 E(xternal domains wish to)-.165 E(recei)83 238.8 Q -.165(ve)-.275 G
(.).165 E(In the former case, the PMBR will need to issue send a Join\(\
*,*,RP\) to all the RPs in the PIM-SM)72 255.4 Q 2.75(domain. This)72
268.4 R(will cause all traf)2.75 E
(\214c in the domain to reach the PMBR.)-.275 E
(The PMBR may then act as)5.5 E
(if it were a DR with directly connected recei)72 281.4 Q -.165(ve)-.275
G(rs, and trigger the transition to a shortest path tree).165 E
(\(see section 4.2.1\).)72 294.4 Q(In the latter case, the PMBR will no\
t need to send Join\(*,*,RP\) messages.)72 311 Q(Ho)5.5 E(we)-.275 E
-.165(ve)-.275 G 2.75(rt).165 G(he PMBR)-2.75 E
(will still need to act as a DR with directly connected recei)72 324 Q
-.165(ve)-.275 G(rs on behalf of the e).165 E(xternal recei)-.165 E
-.165(ve)-.275 G(rs).165 E(in terms of being able to switch to the shor\
test-path tree for internally-reached sources.)72 337 Q
(According to RFC 2715, the PIM-SM component of the PMBR may recei)72
353.6 Q .33 -.165(ve a n)-.275 H(umber of alerts).165 E(generated by e)
72 366.6 Q -.165(ve)-.275 G(nts in the e).165 E
(xternal routing components.)-.165 E 1.76 -.88(To i)5.5 H
(mplement the abo).88 E .33 -.165(ve b)-.165 H(eha).165 E(vior)-.22 E
2.75(,o)-.44 G(ne)-2.75 E(reasonable w)72 379.6 Q
(ay to map these alerts into PIM-SM state as follo)-.11 E(ws:)-.275 E
7.15<8357>72 396.2 S(hen a PIM-SM component recei)-7.15 E -.165(ve)-.275
G 2.75(sa).165 G 2.75(n\()-2.75 G
(S,G\) Prune alert, it sets local_recei)-2.75 E -.165(ve)-.275 G
(r_include\(S,G,I\)).165 E(to F)83 409.2 Q(ALSE for the discard interf)
-.814 E(ace.)-.11 E 7.15<8357>72 425.8 S(hen a PIM-SM component recei)
-7.15 E -.165(ve)-.275 G 2.75(sa\().165 G
(*,G\) Prune alert, it sets local_recei)-2.75 E -.165(ve)-.275 G
(r_include\(*,G,I\)).165 E(to F)83 438.8 Q(ALSE for the discard interf)
-.814 E(ace.)-.11 E 7.15<8357>72 455.4 S(hen a PIM-SM component recei)
-7.15 E -.165(ve)-.275 G 2.75(sa).165 G 2.75(n\()-2.75 G
(S,G\) Join alert, it sets local_recei)-2.75 E -.165(ve)-.275 G
(r_include\(S,G,I\)).165 E(to TR)83 468.4 Q(UE for the discard interf)
-.44 E(ace.)-.11 E 7.15<8357>72 485 S(hen a PIM-SM component recei)-7.15
E -.165(ve)-.275 G 2.75(sa\().165 G
(*,G\) Join alert, it sets local_recei)-2.75 E -.165(ve)-.275 G
(r_include\(*,G,I\) to).165 E(TR)83 498 Q(UE for the discard interf)-.44
E(ace.)-.11 E 7.15<8357>72 514.6 S(hen a PIM-SM component recei)-7.15 E
-.165(ve)-.275 G 2.75(sa\().165 G(*,*\) Join alert, it sets Do)-2.75 E
(wnstreamJPState\(*,*,RP)-.275 E(,I\) to)-1.221 E
(Join state on the discard interf)83 527.6 Q
(ace for all RPs in the PIM-SM domain.)-.11 E 7.15<8357>72 544.2 S
(hen a PIM-SM component recei)-7.15 E -.165(ve)-.275 G 2.75(sa\().165 G
(*,*\) Prune alert, then it sets)-2.75 E(Do)83 557.2 Q
(wnstreamJPState\(*,*,RP)-.275 E
(,I\) to NoInfo state on the discard interf)-1.221 E
(ace for all RPs in the PIM-)-.11 E(SM domain.)83 570.2 Q 1.76 -.88
(We r)72 586.8 T(efer abo).88 E .33 -.165(ve t)-.165 H 2.75(ot).165 G
(he discard interf)-2.75 E
(ace because the macros and state-machines are interf)-.11 E(ace-)-.11 E
(speci\214c, b)72 599.8 Q(ut we need to ha)-.22 E .33 -.165(ve P)-.22 H
(IM state that is not associated with an).165 E 2.75(ya)-.165 G
(ctual PIM-SM interf)-2.75 E(ace.)-.11 E
(Implementors are free to implement this in an)72 612.8 Q 2.75(yr)-.165
G(easonable manner)-2.75 E(.)-.605 E(Note that these state changes will\
 then cause additional PIM-SM state machine transitions in the)72 629.4
Q(normal w)72 642.4 Q(ay)-.11 E(.)-.715 E F1(4.8.)72 681.4 Q/F2 13
/Times-Bold@0 SF(PIM Bootstrap and RP Disco)5.5 E -.13(ve)-.13 G(ry).13
E F0 -.165(Fo)72 698 S 2.75(rc).165 G(orrect operation, e)-2.75 E -.165
(ve)-.275 G
(ry PIM router within a PIM domain must be able to map a particular).165
E(multicast group address to the same RP)72 711 Q 5.5(.I)-1.221 G 2.75
(ft)-5.5 G(his is not the case then black holes may appear)-2.75 E 2.75
(,w)-.44 G(here)-2.75 E(some recei)72 724 Q -.165(ve)-.275 G
(rs in the domain cannot recei).165 E .33 -.165(ve s)-.275 H
(ome groups.).165 E 2.75(Ad)5.5 G(omain in this conte)-2.75 E(xt is a)
-.165 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 169.221
(elas Section)-.165 F 2.75(4.8. [P)2.75 F(age 74])-.165 E EP
%%Page: 75 75
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(contiguous set of routers t\
hat all implement PIM and are con\214gured to operate within a common)72
85 Q(boundary de\214ned by PIM Multicast Border Routers \(PMBRs\). PMBR\
s connect each PIM domain)72 98 Q(to the rest of the Internet.)72 111 Q
2.75(An)72 127.6 S(otable e)-2.75 E
(xception to this is where a PIM domain is brok)-.165 E
(en up into multiple administrati)-.11 E -.165(ve)-.275 G(scope re)72
140.6 Q(gions - these are re)-.165 E(gions where a border has been con\
\214gured so that a range of multicast)-.165 E(groups will not be forw)
72 153.6 Q(arded across that border)-.11 E 5.5(.F)-.605 G
(or more information on Administrati)-5.665 E -.165(ve)-.275 G(ly).165 E
(Scoped IP Multicast, see RFC 2365.)72 166.6 Q
(The modi\214ed criteria for admin-scoped re)5.5 E(gions are that the)
-.165 E(re)72 179.6 Q(gion is con)-.165 E .33 -.165(vex w)-.44 H
(ith respect to forw).165 E
(arding based on the MRIB, and that all PIM routers within)-.11 E
(the scope re)72 192.6 Q
(gion map scoped groups to the same RP within that re)-.165 E(gion.)
-.165 E(This speci\214cation does not mandate the use of a single mecha\
nism to pro)72 209.2 Q(vide routers with the)-.165 E
(information to perform the group-to-RP mapping.)72 222.2 Q
(Currently three mechanisms are possible, and)5.5 E(all three ha)72
235.2 Q .33 -.165(ve a)-.22 H(ssociated problems:).165 E/F1 11
/Times-Bold@0 SF(Static Con\214guration)72 251.8 Q F0 2.75(AP)97 264.8 S
(IM router MUST support the static con\214guration of group-to-RP mappi\
ngs.)-2.75 E(Such a)5.5 E(mechanism is not rob)97 277.8 Q(ust to f)-.22
E(ailures, b)-.11 E(ut does at least pro)-.22 E
(vide a basic interoperability)-.165 E(mechanism.)97 290.8 Q F1(Cisco')
72 307.4 Q 2.75(sA)-.407 G(uto-RP)-3.3 E F0(Auto-RP uses a PIM Dense-Mo\
de multicast group to announce group-to-RP mappings from)97 320.4 Q 2.75
(ac)97 333.4 S(entral location.)-2.75 E
(This mechanism is not useful if PIM Dense-Mode is not being run in)5.5
E(parallel with PIM Sparse-Mode, and w)97 346.4 Q
(as only intended for use with PIM Sparse-Mode)-.11 E -1.221(Ve)97 359.4
S(rsion 1.)1.221 E(No standard speci\214cation currently e)5.5 E(xists.)
-.165 E F1(BootStrap Router \(BSR\))72 376 Q F0(RFC 2362 speci\214es a \
bootstrap mechanism based around the automatic election of a)97 389 Q
(bootstrap router \(BSR\).)97 402 Q(An)5.5 E 2.75(yr)-.165 G
(outer in the domain that is con\214gured to be a possible RP)-2.75 E
(reports its candidac)97 415 Q 2.75(yt)-.165 G 2.75(ot)-2.75 G
(he BSR, and then a domain-wide \215ooding mechanism distrib)-2.75 E
(utes)-.22 E(the BSR')97 428 Q 2.75(sc)-.605 G
(hosen set of RPs throughout the domain.)-2.75 E
(As speci\214ed in RFC 2362, BSR is)5.5 E<8d61>97 441 Q
(wed in its handling of admin-scoped re)-.165 E
(gions that are smaller than a PIM domain, b)-.165 E(ut the)-.22 E
(mechanism does w)97 454 Q(ork for global-scoped groups.)-.11 E(As f)72
470.6 Q(ar as PIM-SM is concerned, the only important requirement is th\
at all routers in the domain)-.11 E(\(or admin scope zone for scoped re)
72 483.6 Q(gions\) recei)-.165 E .33 -.165(ve t)-.275 H
(he same set of group-range-to-RP mappings.).165 E(This may be achie)72
496.6 Q -.165(ve)-.275 G 2.75(dt).165 G(hrough the use of an)-2.75 E
2.75(yo)-.165 G 2.75(ft)-2.75 G(hese mechanisms, or through alternati)
-2.75 E -.165(ve)-.275 G(mechanisms not currently speci\214ed.)72 509.6
Q(An)72 526.2 Q 2.75(yR)-.165 G 2.75(Pa)-2.75 G(ddress con\214gured or \
learned MUST be a domain-wide reachable address.)-2.75 E F1 2.75
(4.8.1. Gr)72 565.2 R(oup-to-RP Mapping)-.198 E F0
(Using one of the mechanisms described abo)72 581.8 Q -.165(ve)-.165 G
2.75(,aP).165 G(IM router recei)-2.75 E -.165(ve)-.275 G 2.75(so).165 G
(ne or more possible group-)-2.75 E(range-to-RP mappings.)72 594.8 Q
(Each mapping speci\214es a range of multicast groups \(e)5.5 E
(xpressed as a group)-.165 E
(and mask\) and the RP to which such groups should be mapped.)72 607.8 Q
(Each mapping may also ha)5.5 E .33 -.165(ve a)-.22 H(n).165 E
(associated priority)72 620.8 Q 5.5(.I)-.715 G 2.75(ti)-5.5 G 2.75(sp)
-2.75 G(ossible to recei)-2.75 E .33 -.165(ve m)-.275 H
(ultiple mappings all of which might match the same).165 E
(multicast group - this is the common case with BSR.)72 633.8 Q
(The algorithm for performing the group-to-)5.5 E
(RP mapping is as follo)72 646.8 Q(ws:)-.275 E 19.5(1P)72 663.4 S
(erform longest match on group-range to obtain a list of RPs.)-19.5 E
19.5(2F)72 680 S
(rom this list of matching RPs, \214nd the one with highest priority)
-19.5 E 5.5(.E)-.715 G(liminate an)-5.5 E 2.75(yR)-.165 G(Ps from)-2.75
E(the list that ha)97 693 Q .33 -.165(ve l)-.22 H -.275(ow).165 G
(er priorities.).275 E 19.5(3I)72 709.6 S 2.75(fo)-19.5 G
(nly one RP remains in the list, use that RP)-2.75 E(.)-1.221 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971
(elas Section)-.165 F 2.75(4.8.1. [P)2.75 F(age 75])-.165 E EP
%%Page: 76 76
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E 19.5(4I)72 85 S 2.75(fm)
-19.5 G
(ultiple RPs are in the list, use the PIM hash function to choose one.)
-2.75 E(Thus if tw)72 101.6 Q 2.75(oo)-.11 G 2.75(rm)-2.75 G
(ore group-range-to-RP mappings co)-2.75 E -.165(ve)-.165 G 2.75(rap)
.165 G(articular group, the one with the)-2.75 E
(longest mask is the mapping to use.)72 114.6 Q(If the mappings ha)5.5 E
.33 -.165(ve t)-.22 H(he same mask length, then the one).165 E
(with the highest priority is chosen.)72 127.6 Q
(If there is more than one matching entry with the same)5.5 E(longest m\
ask and the priorities are identical, then a hash function \(see Sectio\
n 4.8.2\) is applied to)72 140.6 Q(choose the RP)72 153.6 Q(.)-1.221 E
(This algorithm is in)72 170.2 Q -.22(vo)-.44 G -.11(ke).22 G 2.75(db)
.11 G 2.75(yaD)-2.75 G 2.75(Rw)-2.75 G
(hen it needs to determine an RP for a gi)-2.75 E -.165(ve)-.275 G 2.75
(ng).165 G(roup, e.g. upon)-2.75 E(reception of a pack)72 183.2 Q
(et or IGMP/MLD membership indication for a group for which the DR does)
-.11 E(not kno)72 196.2 Q 2.75(wt)-.275 G(he RP)-2.75 E 5.5(.I)-1.221 G
2.75(ti)-5.5 G 2.75(si)-2.75 G -2.09 -.44(nv o)-2.75 H -.11(ke).44 G
2.75(db).11 G 2.75(ya)-2.75 G .33 -.165(ny r)-2.75 H
(outer that has \(*,*,RP\) state when a pack).165 E(et is recei)-.11 E
-.165(ve)-.275 G 2.75(df).165 G(or)-2.75 E
(which there is no corresponding \(S,G\) or \(*,G\) entry)72 209.2 Q 5.5
(.F)-.715 G(urthermore, the mapping function is)-5.5 E(in)72 222.2 Q
-.22(vo)-.44 G -.11(ke).22 G 2.75(db).11 G 2.75(ya)-2.75 G
(ll routers upon recei)-2.75 E
(ving a \(*,G\) or \(*,*,RP\) Join/Prune message.)-.275 E(Note that if \
the set of possible group-range-to-RP mappings changes, each router wil\
l need to)72 238.8 Q(check whether an)72 251.8 Q 2.75(ye)-.165 G
(xisting groups are af)-2.915 E 2.75(fected. This)-.275 F(may)2.75 E
2.75(,f)-.715 G(or e)-2.75 E(xample, cause a DR or acting DR)-.165 E
(to re-join a group, or cause it to re-start re)72 264.8 Q
(gister encapsulation to the ne)-.165 E 2.75(wR)-.275 G -1.221(P.)-2.75
G/F1 11/Times-Italic@0 SF(Implementation note: the bootstr)97 281.4 Q
(ap mec)-.165 E(hanism described in RFC 2362 omitted step)-.165 E
(\(1\) abo)97 294.4 Q(ve)-.11 E 5.5(.H)-.165 G(owe)-5.5 E
(ver of the implementations we ar)-.165 E 2.75(ea)-.407 G .814 -.407
(re o)-2.75 H .22 -.11(f, a).407 H(ppr).11 E(oximately half)-.495 E
(performed step \(1\) anyway)97 307.4 Q 5.5(.I)-.605 G 2.75(ts)-5.5 G
(hould be noted that implementations of BSR that omit)-2.75 E
(step 1 will not corr)97 320.4 Q(ectly inter)-.407 E(oper)-.495 E
(ate with implementations of this speci\214cation when)-.165 E
(used with the BSR mec)97 333.4 Q(hanism described in [7].)-.165 E/F2 11
/Times-Bold@0 SF 2.75(4.8.2. Hash)72 363 R(Function)2.75 E F0(The hash \
function is used by all routers within a domain, to map a group to one \
of the RPs from)72 379.6 Q
(the matching set of group-range-to-RP mappings \(this set all ha)72
392.6 Q .33 -.165(ve t)-.22 H(he same longest mask length).165 E
(and same highest priority\). The algorithm tak)72 405.6 Q
(es as input the group address, and the addresses of)-.11 E
(the candidate RPs from the mappings, and gi)72 418.6 Q -.165(ve)-.275 G
2.75(sa).165 G 2.75(so)-2.75 G(utput one RP address to be used.)-2.75 E
(The protocol requires that all routers hash to the same RP within a do\
main \(e)72 444.6 Q(xcept for transients\).)-.165 E(The follo)72 457.6 Q
(wing hash function must be used in each router:)-.275 E 19.5(1F)72
474.2 S(or RP addresses in the matching group-range-to-RP mappings, com\
pute a v)-19.665 E(alue:)-.275 E -1.221(Va)97 493.2 S
(lue\(G,M,C\(i\)\)=)1.221 E(\(1103515245 * \(\(1103515245 * \(G&M\)+123\
45\) XOR C\(i\)\) + 12345\) mod 2^31)99.75 506.2 Q
(where C\(i\) is the RP address and M is a hash-mask.)97 528.8 Q
(If BSR is being used, the hash-mask is)5.5 E(gi)97 541.8 Q -.165(ve)
-.275 G 2.75(ni).165 G 2.75(nt)-2.75 G(he Bootstrap messages.)-2.75 E
(If BSR is not being used, the alternati)5.5 E .33 -.165(ve m)-.275 H
(echanism that).165 E
(supplies the group-range-to-RP mappings may supply the v)97 554.8 Q
(alue, or else it def)-.275 E(aults to a mask)-.11 E(with the most sign\
i\214cant 30 bits being one for IPv4 and the most signi\214cant 126 bit\
s being)97 567.8 Q(one for IPv6.)97 580.8 Q(The hash-mask allo)5.5 E
(ws a small number of consecuti)-.275 E .33 -.165(ve g)-.275 H
(roups \(e.g., 4\) to).165 E(al)97 593.8 Q -.11(wa)-.11 G
(ys hash to the same RP).11 E 2.75(.F)-1.221 G
(or instance, hierarchically-encoded data can be sent on)-2.915 E
(consecuti)97 606.8 Q .33 -.165(ve g)-.275 H
(roup addresses to get the same delay and f).165 E
(ate-sharing characteristics.)-.11 E -.165(Fo)97 623.4 S 2.75(ra).165 G
(ddress f)-2.75 E(amilies other than IPv4, a 32-bit digest to be used a\
s C\(i\) and G must \214rst be)-.11 E(deri)97 636.4 Q -.165(ve)-.275 G
2.75(df).165 G(rom the actual RP or group address.)-2.75 E
(Such a digest method must be used)5.5 E
(consistently throughout the PIM domain. F)97 649.4 Q
(or IPv6 addresses, we recommend using the)-.165 E(equi)97 662.4 Q -.275
(va)-.275 G(lent IPv4 address for an IPv4-compatible address, and the e)
.275 E(xclusi)-.165 E -.165(ve)-.275 G(-or of each 32-bit).165 E(se)97
675.4 Q(gment of the address for all other IPv6 addresses.)-.165 E -.165
(Fo)5.5 G 2.75(re).165 G(xample, the digest of the IPv6)-2.915 E
(address 3f)97 688.4 Q(fe:b00:c18:1::10 w)-.275 E
(ould be computed as 0x3f)-.11 E(fe0b00 ^ 0x0c180001 ^ 0x00000000 ^)
-.275 E(0x00000010, where ^ represents the e)97 701.4 Q(xclusi)-.165 E
-.165(ve)-.275 G(-or operation.).165 E(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75
(4.8.2. [P)2.75 F(age 76])-.165 E EP
%%Page: 77 77
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E 19.5(2T)72 85 S
(he candidate RP with the highest resulting hash v)-19.5 E
(alue is then the RP chosen by this Hash)-.275 E 2.75(Function. If)97 98
R(more than one RP has the same highest hash v)2.75 E
(alue, the RP with the highest IP)-.275 E(address is chosen.)97 111 Q/F1
11/Times-Bold@0 SF(4.9.)72 140.6 Q/F2 13/Times-Bold@0 SF(Sour)5.5 E
(ce-Speci\214c Multicast)-.234 E F0(The Source-Speci\214c Multicast \(S\
SM\) service model [10] can be implemented with a strict subset)72 157.2
Q(of the PIM-SM protocol mechanisms.)72 170.2 Q(Both re)5.5 E
(gular IP Multicast and SSM semantics can coe)-.165 E(xist)-.165 E(on a\
 single router and both can be implemented using the PIM-SM protocol.)72
183.2 Q 2.75(Ar)5.5 G(ange of multicast)-2.75 E
(addresses, currently 232.0.0.0/8 in IPv4, is reserv)72 196.2 Q
(ed for SSM, and the choice of semantics is)-.165 E
(determined by the multicast group address in both data pack)72 209.2 Q
(ets and PIM messages.)-.11 E F1 2.75(4.9.1. Pr)72 235.2 R
(otocol Modi\214cations f)-.198 E(or SSM destination addr)-.275 E(esses)
-.198 E F0(The follo)72 251.8 Q(wing rules o)-.275 E -.165(ve)-.165 G
(rride the normal PIM-SM beha).165 E
(vior for a multicast address G in the SSM)-.22 E(reserv)72 264.8 Q
(ed range:)-.165 E 7.15<8341>72 281.4 S(router MUST NO)-4.4 E 2.75(Ts)
-.44 G(end a \(*,G\) Join/Prune message for an)-2.75 E 2.75(yr)-.165 G
(eason.)-2.75 E 7.15<8341>72 298 S(router MUST NO)-4.4 E 2.75(Ts)-.44 G
(end an \(S,G,rpt\) Join/Prune message for an)-2.75 E 2.75(yr)-.165 G
(eason.)-2.75 E 7.15<8341>72 314.6 S(router MUST NO)-4.4 E 2.75(Ts)-.44
G(end a Re)-2.75 E(gister message for an)-.165 E 2.75(yp)-.165 G(ack)
-2.75 E(et that is destined to an SSM)-.11 E(address.)83 327.6 Q 7.15
<8341>72 344.2 S(router MUST NO)-4.4 E 2.75(Tf)-.44 G(orw)-2.75 E
(ard pack)-.11 E(ets based on \(*,G\) or \(S,G,rpt\) state.)-.11 E
(The \(*,G\) and)5.5 E
(\(S,G,rpt\) -related state summarization macros are NULL for an)83
357.2 Q 2.75(yS)-.165 G(SM address, for the purposes)-2.75 E(of pack)83
370.2 Q(et forw)-.11 E(arding.)-.11 E 7.15<8341>72 386.8 S
(router acting as an RP MUST NO)-4.4 E 2.75(Tf)-.44 G(orw)-2.75 E
(ard an)-.11 E 2.75(yR)-.165 G -.165(eg)-2.75 G(ister).165 E
(-encapsulated pack)-.22 E(et that has an)-.11 E
(SSM destination address.)83 399.8 Q(The last tw)72 416.4 Q 2.75(or)-.11
G(ules are present to deal with "le)-2.75 E -.055(ga)-.165 G -.165(cy)
.055 G 2.75("r).165 G(outers una)-2.75 E -.11(wa)-.165 G
(re of SSM that may be sending).11 E
(\(*,G\) and \(S,G,rpt\) Join/Prunes, or Re)72 429.4 Q
(gister messages for SSM destination addresses.)-.165 E(Additionally:)72
446 Q 7.15<8341>72 462.6 S(router MA)-4.4 E 2.75(Yb)-1.155 G 2.75(ec)
-2.75 G(on\214gured to adv)-2.75 E
(ertise itself as a Candidate RP for an SSM address.)-.165 E(If so, it)
5.5 E(SHOULD respond with a Re)83 475.6 Q(gisterStop message to an)-.165
E 2.75(yR)-.165 G -.165(eg)-2.75 G(ister message containing a pack).165
E(et)-.11 E(destined for an SSM address.)83 488.6 Q 7.15<8341>72 505.2 S
(router MA)-4.4 E 2.75(Yo)-1.155 G(ptimize out the creation and mainten\
ance of \(S,G,rpt\) and \(*,G\) state for SSM)-2.75 E
(destination addresses -- this state is not needed for SSM pack)83 518.2
Q(ets.)-.11 E F1 2.75(4.9.2. PIM-SSM-only)72 544.2 R(Routers)2.75 E F0(\
An implementor may choose to implement only the subset of PIM Sparse-Mo\
de that pro)72 560.8 Q(vides)-.165 E(SSM forw)72 573.8 Q
(arding semantics.)-.11 E 2.75(AP)72 590.4 S
(IM-SSM-only router MUST implement the follo)-2.75 E
(wing portions of this speci\214cation:)-.275 E 18.15<8355>72 610.6 S
(pstream \(S,G\) state machine \(Section 4.5.7\))-18.15 E 18.15<8344>72
627.2 S -.275(ow)-18.15 G
(nstream \(S,G\) state machine \(Section 4.5.3\)).275 E 18.15<8328>72
643.8 S(S,G\) Assert state machine \(Section 4.6.1\))-18.15 E 18.15
<8348>72 660.4 S(ello messages, neighbor disco)-18.15 E -.165(ve)-.165 G
(ry and DR election \(Section 4.3\)).165 E 18.15<8350>72 677 S(ack)
-18.315 E(et forw)-.11 E(arding rules \(Section 4.2\))-.11 E 2.75(AP)72
693.6 S(IM-SSM-only router does not need to implement the follo)-2.75 E
(wing protocol elements:)-.275 E(Fenner/Handle)72 769 Q(y/Holbrook/K)
-.165 E(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.9.2. [P)2.75 F
(age 77])-.165 E EP
%%Page: 78 78
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E 18.15<8352>72 85 S -.165(eg)
-18.15 G(ister state machine \(Section 4.4\)).165 E 18.15<8328>72 101.6
S(*,G\), \(S,G,rpt\) and \(*,*,RP\) Do)-18.15 E
(wnstream state machines \(Sections 4.5.2, 4.5.4, and 4.5.1\))-.275 E
18.15<8328>72 118.2 S(*,G\), \(S,G,rpt\), and \(*,*,RP\) Upstream state\
 machines \(Sections 4.5.6, 4.5.8, and 4.5.5\))-18.15 E 18.15<8328>72
134.8 S(*,G\) Assert state machine \(Section 4.6.2\))-18.15 E 18.15
<8342>72 151.4 S(ootstrap RP Election \(Section 4.8\))-18.15 E 18.15
<834b>72 168 S(eepali)-18.425 E .33 -.165(ve T)-.275 H(imer)-.22 E 18.15
<8353>72 184.6 S(ptBit \(Section 4.2.2\))-18.15 E(The)72 201.2 Q/F1 11
/Courier@0 SF(KeepaliveTimer)2.75 E F0(should be treated as al)2.75 E
-.11(wa)-.11 G(ys running and).11 E F1(SptBit)2.75 E F0
(should be treated as)2.75 E(being al)72 214.2 Q -.11(wa)-.11 G
(ys set for an SSM address.).11 E(Additionally)5.5 E 2.75(,t)-.715 G
(he P)-2.75 E(ack)-.165 E(et forw)-.11 E(arding rules of Section 4.2)
-.11 E(can be simpli\214ed in a PIM-SSM-only router:)72 227.2 Q F1(if\(\
 iif == RPF_interface\(S\) AND UpstreamJPState\(S,G\) == Joined \) {)
98.4 246.2 Q(oiflist = inherited_olist\(S,G\))124.8 259.2 Q 6.6(}e)98.4
272.2 S(lse if\( iif is in inherited_olist\(S,G\) \) {)-6.6 E
(send Assert\(S,G\) on iif)124.8 285.2 Q(})98.4 298.2 Q
(oiflist = oiflist \(-\) iif)98.4 324.2 Q
(forward packet on all interfaces in oiflist)98.4 337.2 Q F0
(This is nothing more than the reduction of the normal PIM-SM forw)72
369.2 Q(arding rule, with all \(S,G,rpt\))-.11 E
(and \(*,G\) clauses replaced with NULL.)72 382.2 Q/F2 11/Times-Bold@0
SF(4.10.)72 408.2 Q/F3 13/Times-Bold@0 SF(PIM P)5.5 E(ack)-.13 E(et F)
-.13 E(ormats)-.325 E F0(This section describes the details of the pack)
72 424.8 Q(et formats for PIM control messages.)-.11 E
(All PIM control messages ha)72 441.4 Q .33 -.165(ve I)-.22 H 2.75(Pp)
.165 G(rotocol number 103.)-2.75 E
(PIM messages are either unicast \(e.g.)72 458 Q(Re)5.5 E
(gisters and Re)-.165 E(gisterStop\), or multicast with TTL 1 to the)
-.165 E -.88(`A)72 471 S(LL-PIM-R).88 E
(OUTERS' group \(e.g. Join/Prune, Asserts, etc.\).)-.44 E
(The source address used for)5.5 E(unicast messages is a domain-wide re\
achable address; the source address used for multicast)72 484 Q
(messages is the link-local address of the interf)72 497 Q
(ace on which the message is being sent.)-.11 E(The IPv4 `)72 513.6 Q
(ALL-PIM-R)-.88 E(OUTERS' group is `224.0.0.13'.)-.44 E(The IPv6 `)5.5 E
(ALL-PIM-R)-.88 E(OUTERS' group)-.44 E(is `f)72 526.6 Q(f02::d'.)-.275 E
F1 125.4(0123)78.6 545.6 S 6.6(01234567890123456789012345678901)78.6
558.6 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
571.6 Q(|PIM Ver| Type)72 584.6 Q 19.8(|R)13.2 G 19.8(eserved |)-19.8 F
72.6(Checksum |)72.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
597.6 Q F2(PIM V)72 620.2 Q(er)-1.1 E F0(PIM V)97 633.2 Q
(ersion number is 2.)-1.221 E F2 -.814(Ty)72 649.8 S(pe).814 E F0 -.88
(Ty)97 662.8 S(pes for speci\214c PIM messages.).88 E(PIM T)5.5 E
(ypes are:)-.88 E(Message T)72 685.4 Q 120.736(ype Destination)-.88 F
.44 LW 417.334 690.15 72 690.15 DL 2.75(0=H)72 700.4 S 142.054
(ello Multicast)-2.75 F(to ALL-PIM-R)2.75 E(OUTERS)-.44 E(Fenner/Handle)
72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 163.721(elas Section)-.165 F
2.75(4.10. [P)2.75 F(age 78])-.165 E EP
%%Page: 79 79
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E 2.75(1=R)72 85 S -.165(eg)
-2.75 G 129.998(ister Unicast).165 F(to RP)2.75 E 2.75(2=R)72 98 S -.165
(eg)-2.75 G 109.824(isterStop Unicast).165 F(to source of Re)2.75 E
(gister pack)-.165 E(et)-.11 E 2.75(3=J)72 111 S 119.438
(oin/Prune Multicast)-2.75 F(to ALL-PIM-R)2.75 E(OUTERS)-.44 E 2.75(4=B)
72 124 S 123.717(ootstrap Multicast)-2.75 F(to ALL-PIM-R)2.75 E(OUTERS)
-.44 E 2.75(5=A)72 137 S 138.391(ssert Multicast)-2.75 F(to ALL-PIM-R)
2.75 E(OUTERS)-.44 E 2.75(6=G)72 150 S(raft \(used in PIM-DM only\))
-2.75 E(Multicast to ALL-PIM-R)38.489 E(OUTERS)-.44 E 2.75(7=G)72 163 S
(raft-Ack \(used in PIM-DM only\))-2.75 E
(Unicast to source of Graft pack)16.5 E(et)-.11 E 2.75(8=C)72 176 S
(andidate-RP-Adv)-2.75 E 36.509(ertisement Unicast)-.165 F(to Domain')
2.75 E 2.75(sB)-.605 G(SR)-2.75 E/F1 11/Times-Bold@0 SF(Reser)72 198.6 Q
-.11(ve)-.11 G(d).11 E F0(Set to zero on transmission.)97 211.6 Q
(Ignored upon receipt.)5.5 E F1(Checksum)72 241.2 Q F0
(The checksum is a standard IP checksum, i.e.)97 254.2 Q
(the 16-bit one')5.5 E 2.75(sc)-.605 G(omplement of the one')-2.75 E(s)
-.605 E(complement sum of the entire PIM message, e)97 267.2 Q
(xcluding the "Multicast data pack)-.165 E(et" section)-.11 E(of the Re)
97 280.2 Q(gister message.)-.165 E -.165(Fo)5.5 G 2.75(rc).165 G
(omputing the checksum, the checksum \214eld is zeroed.)-2.75 E -.165
(Fo)97 296.8 S 2.75(rI).165 G(Pv6, the checksum also includes the IPv6 \
"pseudo-header", as speci\214ed in RFC 2460,)-2.75 E(section 8.1 [5]. T\
his "pseudo-header" is prepended to the PIM header for the purposes of)
97 309.8 Q(calculating the checksum.)97 322.8 Q(The "Upper)5.5 E
(-Layer P)-.22 E(ack)-.165 E(et Length" in the pseudo-header is set to)
-.11 E(the length of the PIM message.)97 335.8 Q(The Ne)5.5 E
(xt Header v)-.165 E(alue used in the pseudo-header is 103.)-.275 E(If)
5.5 E(the pack)97 348.8 Q(et')-.11 E 2.75(sl)-.605 G
(ength is not an inte)-2.75 E(gral number of 16-bit w)-.165 E
(ords, the pack)-.11 E(et is padded with a)-.11 E
(byte of zero before performing the checksum.)97 361.8 Q F1 2.75
(4.10.1. Encoded)72 400.8 R(Sour)2.75 E(ce and Gr)-.198 E(oup Addr)-.198
E(ess F)-.198 E(ormats)-.275 E(Encoded-Unicast addr)72 430.4 Q(ess)-.198
E F0(An Encoded-Unicast address tak)72 447 Q(es the follo)-.11 E
(wing format:)-.275 E/F2 11/Courier@0 SF 125.4(0123)78.6 466 S 6.6
(01234567890123456789012345678901)78.6 479 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
492 Q 13.2(|A)72 505 S(ddr Family)-13.2 E 6.6(|E)13.2 G(ncoding Type |)
-6.6 E(Unicast Address)33 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...)72 518 Q F1
(Addr F)72 540.6 Q(amily)-.275 E F0(The PIM address f)97 553.6 Q
(amily of the `Unicast Address' \214eld of this address.)-.11 E -1.221
(Va)97 570.2 S(lues of 0-127 are as assigned by the IAN)1.221 E 2.75(Af)
-.385 G(or Internet Address F)-2.75 E(amilies in [11]. V)-.165 E(alues)
-1.221 E(128-250 are reserv)97 583.2 Q(ed to be assigned by the IAN)
-.165 E 2.75(Af)-.385 G(or PIM-speci\214c Address F)-2.75 E(amilies.)
-.165 E -1.221(Va)97 596.2 S(lues 251 though 255 are designated for pri)
1.221 E -.275(va)-.275 G(te use.).275 E
(As there is no assignment authority)5.5 E
(for this space, collisions should be e)97 609.2 Q(xpected.)-.165 E F1
(Encoding T)72 625.8 Q(ype)-.814 E F0
(The type of encoding used within a speci\214c Address F)97 638.8 Q
(amily)-.165 E 5.5(.T)-.715 G(he v)-5.5 E(alue `0' is reserv)-.275 E
(ed for)-.165 E(this \214eld, and represents the nati)97 651.8 Q .33
-.165(ve e)-.275 H(ncoding of the Address F).165 E(amily)-.165 E(.)-.715
E F1(Unicast Addr)72 681.4 Q(ess)-.198 E F0
(The unicast address as represented by the gi)97 694.4 Q -.165(ve)-.275
G 2.75(nA).165 G(ddress F)-2.75 E(amily and Encoding T)-.165 E(ype.)-.88
E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 155.471
(elas Section)-.165 F 2.75(4.10.1. [P)2.75 F(age 79])-.165 E EP
%%Page: 80 80
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF
(Encoded-Gr)72 85 Q(oup addr)-.198 E(ess)-.198 E F0
(Encoded-Group addresses tak)72 101.6 Q 2.75(et)-.11 G(he follo)-2.75 E
(wing format:)-.275 E/F2 11/Courier@0 SF 125.4(0123)78.6 120.6 S 6.6
(01234567890123456789012345678901)78.6 133.6 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
146.6 Q 13.2(|A)72 159.6 S(ddr Family)-13.2 E 6.6(|E)13.2 G
(ncoding Type |B| Reserved)-6.6 E 6.6(|Z| Mask)13.2 F 26.4(Len |)6.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
172.6 Q 105.6(|G)72 185.6 S(roup multicast Address)-105.6 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...)72 198.6 Q F1(Addr F)72 221.2
Q(amily)-.275 E F0(described abo)97 234.2 Q -.165(ve)-.165 G(.).165 E F1
(Encoding T)72 263.8 Q(ype)-.814 E F0(described abo)97 276.8 Q -.165(ve)
-.165 G(.).165 E F1([B]idir)72 306.4 Q(ectional PIM)-.198 E F0
(indicates the group range should use Bidirectional PIM [8]. F)97 319.4
Q(or PIM-SM de\214ned in this)-.165 E
(speci\214cation, this bit MUST be zero.)97 332.4 Q F1(Reser)72 362 Q
-.11(ve)-.11 G(d).11 E F0 -.385(Tr)97 375 S
(ansmitted as zero. Ignored upon receipt.).385 E F1(Admin Scope [Z]one)
72 404.6 Q F0(indicates the group range is an admin scope zone.)97 417.6
Q(This is used in the Bootstrap Router)5.5 E(Mechanism [7] only)97 430.6
Q 5.5(.F)-.715 G
(or all other purposes, this bit is set to zero and ignored on receipt.)
-5.665 E F1(Mask Len)72 460.2 Q F0
(The Mask length \214eld is 8 bits. The v)97 473.2 Q
(alue is the number of contiguous one bits left justi\214ed)-.275 E(use\
d as a mask which, combined with the group address, describes a range o\
f groups. It is)97 486.2 Q
(less than or equal to the address length in bits for the gi)97 499.2 Q
-.165(ve)-.275 G 2.75(nA).165 G(ddress F)-2.75 E(amily and Encoding)
-.165 E -.88(Ty)97 512.2 S(pe. If the message is sent for a single grou\
p then the Mask length must equal the address).88 E
(length in bits for the gi)97 525.2 Q -.165(ve)-.275 G 2.75(nA).165 G
(ddress F)-2.75 E(amily and Encoding T)-.165 E 2.75(ype. \(e.g.)-.88 F
(32 for IPv4 nati)2.75 E -.165(ve)-.275 G(encoding, 128 for IPv6 nati)97
538.2 Q .33 -.165(ve e)-.275 H(ncoding\).).165 E F1(Gr)72 567.8 Q
(oup multicast Addr)-.198 E(ess)-.198 E F0(Contains the group address.)
97 580.8 Q(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E
155.471(elas Section)-.165 F 2.75(4.10.1. [P)2.75 F(age 80])-.165 E EP
%%Page: 81 81
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF
(Encoded-Sour)72 85 Q(ce addr)-.198 E(ess)-.198 E F0
(Encoded-Source address tak)72 101.6 Q(es the follo)-.11 E(wing format:)
-.275 E/F2 11/Courier@0 SF 125.4(0123)78.6 120.6 S 6.6
(01234567890123456789012345678901)78.6 133.6 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
146.6 Q 6.6(|A)72 159.6 S(ddr Family)-6.6 E 6.6(|E)19.8 G
(ncoding Type | Rsrvd)-6.6 E 6.6(|S|W|R| Mask)19.8 F 26.4(Len |)6.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
172.6 Q 158.4(|S)72 185.6 S(ource Address)-158.4 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...)72 198.6 Q F1(Addr F)72 221.2 Q
(amily)-.275 E F0(described abo)97 234.2 Q -.165(ve)-.165 G(.).165 E F1
(Encoding T)72 263.8 Q(ype)-.814 E F0(described abo)97 276.8 Q -.165(ve)
-.165 G(.).165 E F1(Reser)72 306.4 Q -.11(ve)-.11 G(d).11 E F0 -.385(Tr)
97 319.4 S(ansmitted as zero, ignored on receipt.).385 E F1(S)72 349 Q
F0(The Sparse bit is a 1 bit v)18.884 E(alue, set to 1 for PIM-SM.)-.275
E(It is used for PIM v)5.5 E(ersion 1)-.165 E(compatibility)97 362 Q(.)
-.715 E F1(W)72 391.6 Q F0(The WC \(or W)14 E
(ildCard\) bit is a 1 bit v)-.44 E
(alue for use with PIM Join/Prune messages \(see)-.275 E
(section 4.10.5.1 \).)97 404.6 Q F1(R)72 434.2 Q F0
(The RPT \(or Rendezv)17.058 E(ous Point T)-.22 E
(ree\) bit is a 1 bit v)-.385 E(alue for use with PIM Join/Prune)-.275 E
(messages \(see section 4.10.5.1 \). If the WC bit is 1, the RPT bit MU\
ST be 1.)97 447.2 Q F1(Mask Len)72 476.8 Q F0
(The mask length \214eld is 8 bits. The v)97 489.8 Q
(alue is the number of contiguous one bits left justi\214ed)-.275 E(use\
d as a mask which, combined with the Source Address, describes a source\
 subnet. The)97 502.8 Q
(mask length MUST be equal to the mask length in bits for the gi)97
515.8 Q -.165(ve)-.275 G 2.75(nA).165 G(ddress F)-2.75 E(amily and)-.165
E(Encoding T)97 528.8 Q(ype \(32 for IPv4 nati)-.88 E .33 -.165(ve a)
-.275 H(nd 128 for IPv6 nati).165 E -.165(ve)-.275 G 2.75(\). A).165 F
(router SHOULD ignore an)2.75 E(y)-.165 E(messages recei)97 541.8 Q
-.165(ve)-.275 G 2.75(dw).165 G(ith an)-2.75 E 2.75(yo)-.165 G
(ther mask length.)-2.75 E F1(Sour)72 571.4 Q(ce Addr)-.198 E(ess)-.198
E F0(The source address.)97 584.4 Q(Fenner/Handle)72 769 Q(y/Holbrook/K)
-.165 E(ouv)-.385 E 155.471(elas Section)-.165 F 2.75(4.10.2. [P)2.75 F
(age 81])-.165 E EP
%%Page: 82 82
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF 2.75
(4.10.2. Hello)72 85 R(Message F)2.75 E(ormat)-.275 E F0
(It is sent periodically by routers on all interf)72 101.6 Q(aces.)-.11
E/F2 11/Courier@0 SF 125.4(0123)78.6 120.6 S 6.6
(01234567890123456789012345678901)78.6 133.6 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
146.6 Q(|PIM Ver| Type)72 159.6 Q 19.8(|R)13.2 G 19.8(eserved |)-19.8 F
72.6(Checksum |)72.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
172.6 Q 66(|O)72 185.6 S 66(ptionType |)-66 F 59.4(OptionLength |)59.4 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
198.6 Q 171.6(|O)72 211.6 S 165(ptionValue |)-171.6 F 198(|.)72 224.6 S
191.4(.. |)-198 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
237.6 Q 204.6(|.|)72 250.6 S 204.6(|.|)72 263.6 S 204.6(|.|)72 276.6 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
289.6 Q 66(|O)72 302.6 S 66(ptionType |)-66 F 59.4(OptionLength |)59.4 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
315.6 Q 171.6(|O)72 328.6 S 165(ptionValue |)-171.6 F 198(|.)72 341.6 S
191.4(.. |)-198 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
354.6 Q F1(PIM V)72 377.2 Q(ersion, T)-1.1 E(ype, Reser)-.814 E -.11(ve)
-.11 G(d, Checksum).11 E F0(Described abo)97 390.2 Q -.165(ve)-.165 G(.)
.165 E F1(OptionT)72 419.8 Q(ype)-.814 E F0(The type of the option gi)97
432.8 Q -.165(ve)-.275 G 2.75(ni).165 G 2.75(nt)-2.75 G(he follo)-2.75 E
(wing OptionV)-.275 E(alue \214eld.)-1.221 E F1(OptionLength)72 462.4 Q
F0(The length of the OptionV)97 475.4 Q(alue \214eld in bytes.)-1.221 E
F1(OptionV)72 505 Q(alue)-1.012 E F0 2.75(Av)97 518 S
(ariable length \214eld, carrying the v)-3.025 E(alue of the option.)
-.275 E(The Option \214elds may contain the follo)97 534.6 Q(wing v)
-.275 E(alues:)-.275 E 7.15<834f>97 551.2 S(ptionT)-7.15 E
(ype 1: Holdtime)-.88 E F2 125.4(0123)114.6 570.2 S 6.6
(01234567890123456789012345678901)114.6 583.2 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
596.2 Q 66(|T)108 609.2 S(ype = 1)-66 E 59.4(|L)85.8 G(ength = 2)-59.4 E
(|)79.2 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
622.2 Q 59.4(|H)108 635.2 S 79.2(oldtime |)-59.4 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108 648.2 Q F0
(Holdtime is the amount of time a recei)108 667.2 Q -.165(ve)-.275 G
2.75(rm).165 G(ust k)-2.75 E(eep the neighbor reachable, in seconds.)
-.11 E(If the Holdtime is set to `0xf)108 680.2 Q -1.595 -.275(fff ')
-.275 H 2.75(,t).275 G(he recei)-2.75 E -.165(ve)-.275 G 2.75(ro).165 G
2.75(ft)-2.75 G(his message ne)-2.75 E -.165(ve)-.275 G 2.75(rt).165 G
(imes out the)-2.75 E(neighbor)108 693.2 Q 2.75(.T)-.605 G
(his may be used with dial-on-demand links, to a)-2.75 E -.22(vo)-.22 G
(id k).22 E(eeping the link up with)-.11 E(periodic Hello messages.)108
706.2 Q(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 155.471
(elas Section)-.165 F 2.75(4.10.2. [P)2.75 F(age 82])-.165 E EP
%%Page: 83 83
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(Hello messages with a Holdtime v)108 85 Q
(alue set to `0' are also sent by a router on an interf)-.275 E(ace)-.11
E(about to go do)108 98 Q
(wn or changing IP address \(see section 4.3.1\). These are ef)-.275 E
(fecti)-.275 E -.165(ve)-.275 G(ly).165 E
(goodbye messages and the recei)108 111 Q
(ving routers should immediately time out the neighbor)-.275 E
(information for the sender)108 124 Q(.)-.605 E 7.15<834f>97 140.6 S
(ptionT)-7.15 E(ype 2: LAN Prune Delay)-.88 E/F1 11/Courier@0 SF 125.4
(0123)114.6 159.6 S 6.6(01234567890123456789012345678901)114.6 172.6 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
185.6 Q 66(|T)108 198.6 S(ype = 2)-66 E 59.4(|L)85.8 G(ength = 4)-59.4 E
(|)79.2 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
211.6 Q 46.2(|T| LAN)108 224.6 R 72.6(Delay |)6.6 F 46.2
(Override_Interval |)39.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
237.6 Q F0(The LAN_Prune_Delay option is used to tune the prune propag)
108 256.6 Q(ation delay on multi-)-.055 E(access LANs.)108 269.6 Q(The \
T bit speci\214es the ability of the sending router to disable joins su\
ppression.)97 286.2 Q(LAN Delay and Ov)97 302.8 Q(erride_Interv)-.165 E
(al are time interv)-.275 E
(als in units of milliseconds are are used to)-.275 E(tune the v)97
315.8 Q(alue of the Ov)-.275 E(erride_Interv)-.165 E
(al\(I\) and its deri)-.275 E -.165(ve)-.275 G 2.75(dt).165 G(imer v)
-2.75 E(alues. Section 4.3.3)-.275 E(describes ho)97 328.8 Q 2.75(wt)
-.275 G(hese v)-2.75 E(alues af)-.275 E(fect the beha)-.275 E
(vior of a router)-.22 E(.)-.605 E 7.15<834f>97 345.4 S(ptionT)-7.15 E
(ype 3 to 16: reserv)-.88 E(ed to be de\214ned in future v)-.165 E
(ersions of this document.)-.165 E 7.15<834f>97 362 S(ptionT)-7.15 E
(ype 18: deprecated and should not be used.)-.88 E 7.15<834f>97 378.6 S
(ptionT)-7.15 E(ype 19: DR Priority)-.88 E F1 125.4(0123)114.6 397.6 S
6.6(01234567890123456789012345678901)114.6 410.6 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
423.6 Q 66(|T)108 436.6 S(ype = 19)-66 E 59.4(|L)79.2 G(ength = 4)-59.4
E(|)79.2 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
449.6 Q 165(|D)108 462.6 S 6.6(RP)-165 G 171.6(riority |)-6.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
475.6 Q F0(DR Priority is a 32-bit unsigned number and should be consid\
ered in the DR election as)108 494.6 Q(described in section 4.3.2.)108
507.6 Q 7.15<834f>97 524.2 S(ptionT)-7.15 E(ype 20: Generation ID)-.88 E
F1 125.4(0123)114.6 543.2 S 6.6(01234567890123456789012345678901)114.6
556.2 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
569.2 Q 66(|T)108 582.2 S(ype = 20)-66 E 59.4(|L)79.2 G(ength = 4)-59.4
E(|)79.2 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
595.2 Q 151.8(|G)108 608.2 S(eneration ID)-151.8 E(|)178.2 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
621.2 Q F0(Generation ID is a random 32-bit v)108 640.2 Q
(alue for the interf)-.275 E(ace on which the Hello message is)-.11 E
2.75(sent. The)108 653.2 R(Generation ID is re)2.75 E(generated whene)
-.165 E -.165(ve)-.275 G 2.75(rP).165 G(IM forw)-2.75 E
(arding is started or restarted)-.11 E(on the interf)108 666.2 Q(ace.)
-.11 E(OptionT)97 682.8 Q(ypes 17 thru 65000 are assigned by the IAN)
-.88 E 2.75(A. OptionT)-.385 F(ypes 65001 through 65535)-.88 E
(are reserv)97 695.8 Q(ed for Pri)-.165 E -.275(va)-.275 G
(te Use, as de\214ned in [13].).275 E(Unkno)97 708.8 Q
(wn options may be ignored.)-.275 E
(The "Holdtime" option MUST be implemented; the)5.5 E
("DR Priority" and "Generation ID" options SHOULD be implemented.)97
721.8 Q(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 155.471
(elas Section)-.165 F 2.75(4.10.2. [P)2.75 F(age 83])-.165 E EP
%%Page: 84 84
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF 2.75
(4.10.3. Register)72 85 R(Message F)2.75 E(ormat)-.275 E F0 2.75(AR)72
101.6 S -.165(eg)-2.75 G(ister message is sent by the DR or a PMBR to t\
he RP when a multicast pack).165 E(et needs to be)-.11 E
(transmitted on the RP-tree.)72 114.6 Q
(The IP source address is set to the address of the DR, the destination)
5.5 E(address to the RP')72 127.6 Q 2.75(sa)-.605 G 2.75(ddress. The)
-2.75 F(IP TTL of the PIM pack)2.75 E(et is the system')-.11 E 2.75(sn)
-.605 G(ormal unicast TTL.)-2.75 E/F2 11/Courier@0 SF 125.4(0123)78.6
146.6 S 6.6(01234567890123456789012345678901)78.6 159.6 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
172.6 Q(|PIM Ver| Type)72 185.6 Q 19.8(|R)13.2 G 19.8(eserved |)-19.8 F
72.6(Checksum |)72.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
198.6 Q 145.2(|B|N| Reserved2)72 211.6 R(|)178.2 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
224.6 Q 415.8(||)72 237.6 S 138.6(.M)72 250.6 S(ulticast data packet)
-138.6 E(.)138.6 E 415.8(||)72 263.6 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
276.6 Q F1(PIM V)72 299.2 Q(ersion, T)-1.1 E(ype, Reser)-.814 E -.11(ve)
-.11 G(d, Checksum).11 E F0(Described abo)97 312.2 Q -.165(ve)-.165 G
2.75(.N).165 G(ote that the checksum for Re)-2.75 E
(gisters is done only on \214rst 8 bytes of the)-.165 E(pack)97 325.2 Q
(et, including the PIM header and the ne)-.11 E(xt 4 bytes, e)-.165 E
(xcluding the data pack)-.165 E(et portion.)-.11 E -.165(Fo)97 338.2 S
2.75(ri).165 G
(nteroperability reasons, a message carrying a checksum calculated o)
-2.75 E -.165(ve)-.165 G 2.75(rt).165 G(he entire PIM)-2.75 E(Re)97
351.2 Q(gister message should also be accepted.)-.165 E F1(B)72 380.8 Q
F0(The Border bit. If the router is a DR for a source that it is direct\
ly connected to, it sets the B)17.663 E(bit to 0. If the router is a PM\
BR for a source in a directly connected cloud, it sets the B bit)97
393.8 Q(to 1.)97 406.8 Q F1(N)72 436.4 Q F0(The Null-Re)17.058 E
(gister bit. Set to 1 by a DR that is probing the RP before e)-.165 E
(xpiring its local)-.165 E(Re)97 449.4 Q(gister)-.165 E
(-Suppression timer)-.22 E 2.75(.S)-.605 G(et to 0 otherwise.)-2.75 E F1
(Reser)72 479 Q -.11(ve)-.11 G(d2).11 E F0 -.385(Tr)97 492 S
(ansmitted as zero, ignored on receipt.).385 E F1(Multicast data pack)72
521.6 Q(et)-.11 E F0(The original pack)97 534.6 Q
(et sent by the source.)-.11 E(This pack)5.5 E
(et must be the of the same address f)-.11 E(amily)-.11 E
(as the encapsulating PIM pack)97 547.6 Q(et, e.g. an IPv6 data pack)
-.11 E(et must be encapsulated in an IPv6)-.11 E(PIM pack)97 560.6 Q
2.75(et. Note)-.11 F(that the TTL of the original pack)2.75 E
(et is decremented before encapsulation,)-.11 E(just lik)97 573.6 Q 2.75
(ea)-.11 G .33 -.165(ny o)-2.75 H(ther pack).165 E(et that is forw)-.11
E 2.75(arded. In)-.11 F(addition, the RP decrements the TTL after)2.75 E
(decapsulating, before forw)97 586.6 Q(arding the pack)-.11 E(et do)-.11
E(wn the shared tree.)-.275 E -.165(Fo)97 603.2 S 2.75(r\().165 G
(S,G\) null Re)-2.75 E(gisters, the Multicast data pack)-.165 E
(et portion contains only a dummy header)-.11 E(with S as the source ad\
dress, G as the destination address, and a data length of zero.)97 616.2
Q F1 2.75(4.10.4. RegisterStop)72 655.2 R(Message F)2.75 E(ormat)-.275 E
F0 2.75(AR)72 671.8 S -.165(eg)-2.75 G
(isterStop is unicast from the RP to the sender of the Re).165 E
(gister message.)-.165 E(The IP source)5.5 E
(address is the address to which the re)72 684.8 Q(gister w)-.165 E
(as addressed.)-.11 E(The IP destination address is the)5.5 E
(source address of the re)72 697.8 Q(gister message.)-.165 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 155.471
(elas Section)-.165 F 2.75(4.10.4. [P)2.75 F(age 84])-.165 E EP
%%Page: 85 85
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Courier@0 SF 125.4
(0123)78.6 85 S 6.6(01234567890123456789012345678901)78.6 98 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
111 Q(|PIM Ver| Type)72 124 Q 19.8(|R)13.2 G 19.8(eserved |)-19.8 F 72.6
(Checksum |)72.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
137 Q 85.8(|G)72 150 S(roup Address \(Encoded-Group format\))-85.8 E(|)
92.4 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
163 Q 79.2(|S)72 176 S(ource Address \(Encoded-Unicast format\))-79.2 E
(|)79.2 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
189 Q/F2 11/Times-Bold@0 SF(PIM V)72 211.6 Q(ersion, T)-1.1 E
(ype, Reser)-.814 E -.11(ve)-.11 G(d, Checksum).11 E F0(Described abo)97
224.6 Q -.165(ve)-.165 G(.).165 E F2(Gr)72 254.2 Q(oup Addr)-.198 E(ess)
-.198 E F0(The group address from the multicast data pack)97 267.2 Q
(et in the Re)-.11 E(gister)-.165 E 5.5(.F)-.605 G(ormat described in)
-5.665 E(section 4.10.1. Note that for Re)97 280.2 Q
(gisterStops the Mask Len \214eld contains the full address)-.165 E
(length * 8 \(e.g. 32 for IPv4 nati)97 293.2 Q .33 -.165(ve e)-.275 H
(ncoding\), if the message is sent for a single group.).165 E F2(Sour)72
322.8 Q(ce Addr)-.198 E(ess)-.198 E F0
(The host address of the source from the multicast data pack)97 335.8 Q
(et in the re)-.11 E(gister)-.165 E 5.5(.T)-.605 G(he format for)-5.5 E
(this address is gi)97 348.8 Q -.165(ve)-.275 G 2.75(ni).165 G 2.75(nt)
-2.75 G
(he Encoded-Unicast address in section 4.10.1. A special wild card)-2.75
E -.275(va)97 361.8 S(lue consisting of an address \214eld of all zeroe\
s can be used to indicate an).275 E 2.75(ys)-.165 G(ource.)-2.75 E F2
2.75(4.10.5. J)72 400.8 R(oin/Prune Message F)-.165 E(ormat)-.275 E F0
2.75(AJ)72 417.4 S(oin/Prune message is sent by routers to)-2.75 E -.11
(wa)-.275 G(rds upstream sources and RPs.).11 E(Joins are sent to)5.5 E
-.22(bu)72 430.4 S(ild shared trees \(RP trees\) or source trees \(SPT\
\). Prunes are sent to prune source trees when).22 E(members lea)72
443.4 Q .33 -.165(ve g)-.22 H
(roups as well as sources that do not use the shared tree.).165 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 155.471
(elas Section)-.165 F 2.75(4.10.5. [P)2.75 F(age 85])-.165 E EP
%%Page: 86 86
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Courier@0 SF 125.4
(0123)78.6 85 S 6.6(01234567890123456789012345678901)78.6 98 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
111 Q(|PIM Ver| Type)72 124 Q 19.8(|R)13.2 G 19.8(eserved |)-19.8 F 72.6
(Checksum |)72.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
137 Q 52.8(|U)72 150 S
(pstream Neighbor Address \(Encoded-Unicast format\))-52.8 E(|)33 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
163 Q 13.2(|R)72 176 S 26.4(eserved |)-13.2 F(Num groups)6.6 E 66(|H)
26.4 G 79.2(oldtime |)-66 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
189 Q 59.4(|M)72 202 S
(ulticast Group Address 1 \(Encoded-Group format\))-59.4 E(|)39.6 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
215 Q 19.8(|N)72 228 S(umber of Joined Sources)-19.8 E 19.8(|N)26.4 G
(umber of Pruned Sources)-19.8 E(|)26.4 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
241 Q 52.8(|J)72 254 S(oined Source Address 1 \(Encoded-Source format\))
-52.8 E(|)52.8 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
267 Q -171.6 191.4(|. |)72 280 T -171.6 191.4(|. |)72 293 T
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
306 Q 52.8(|J)72 319 S(oined Source Address n \(Encoded-Source format\))
-52.8 E(|)52.8 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
332 Q 52.8(|P)72 345 S(runed Source Address 1 \(Encoded-Source format\))
-52.8 E(|)52.8 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
358 Q -171.6 191.4(|. |)72 371 T -171.6 191.4(|. |)72 384 T
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
397 Q 52.8(|P)72 410 S(runed Source Address n \(Encoded-Source format\))
-52.8 E(|)52.8 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
423 Q -132 178.2(|. |)72 436 T -132 178.2(|. |)72 449 T -132 178.2(|. |)
72 462 T
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
475 Q 59.4(|M)72 488 S
(ulticast Group Address m \(Encoded-Group format\))-59.4 E(|)39.6 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
501 Q 19.8(|N)72 514 S(umber of Joined Sources)-19.8 E 19.8(|N)26.4 G
(umber of Pruned Sources)-19.8 E(|)26.4 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
527 Q 52.8(|J)72 540 S(oined Source Address 1 \(Encoded-Source format\))
-52.8 E(|)52.8 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
553 Q -171.6 191.4(|. |)72 566 T -171.6 191.4(|. |)72 579 T
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
592 Q 52.8(|J)72 605 S(oined Source Address n \(Encoded-Source format\))
-52.8 E(|)52.8 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
618 Q 52.8(|P)72 631 S(runed Source Address 1 \(Encoded-Source format\))
-52.8 E(|)52.8 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
644 Q -171.6 191.4(|. |)72 657 T -171.6 191.4(|. |)72 670 T
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
683 Q 52.8(|P)72 696 S(runed Source Address n \(Encoded-Source format\))
-52.8 E(|)52.8 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
709 Q F0(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 155.471
(elas Section)-.165 F 2.75(4.10.5. [P)2.75 F(age 86])-.165 E EP
%%Page: 87 87
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF(PIM V)
72 85 Q(ersion, T)-1.1 E(ype, Reser)-.814 E -.11(ve)-.11 G(d, Checksum)
.11 E F0(Described abo)97 98 Q -.165(ve)-.165 G(.).165 E F1
(Unicast Upstr)72 127.6 Q(eam Neighbor Addr)-.198 E(ess)-.198 E F0
(The address of the RPF or upstream neighbor)97 140.6 Q 5.5(.T)-.605 G
(he format for this address is gi)-5.5 E -.165(ve)-.275 G 2.75(ni).165 G
2.75(nt)-2.75 G(he)-2.75 E(Encoded-Unicast address in section 4.10.1. T\
his address should be the link-local address of)97 153.6 Q
(the upstream neighbor)97 166.6 Q 2.75(,a)-.44 G 2.75(so)-2.75 G
(btained from the RPF lookup.)-2.75 E F1(Reser)72 196.2 Q -.11(ve)-.11 G
(d).11 E F0 -.385(Tr)97 209.2 S(ansmitted as zero, ignored on receipt.)
.385 E F1(Holdtime)72 238.8 Q F0(The amount of time a recei)97 251.8 Q
-.165(ve)-.275 G 2.75(rm).165 G(ust k)-2.75 E
(eep the Join/Prune state ali)-.11 E -.165(ve)-.275 G 2.75(,i).165 G
2.75(ns)-2.75 G 2.75(econds. If)-2.75 F(the)2.75 E
(Holdtime is set to `0xf)97 264.8 Q -1.595 -.275(fff ')-.275 H 2.75(,t)
.275 G(he recei)-2.75 E -.165(ve)-.275 G 2.75(ro).165 G 2.75(ft)-2.75 G
(his message should hold the state until canceled)-2.75 E(by the approp\
riate canceling Join/Prune message, or timed out according to local pol\
ic)97 277.8 Q -.715(y.)-.165 G
(This may be used with dial-on-demand links, to a)97 290.8 Q -.22(vo)
-.22 G(id k).22 E(eeping the link up with periodic)-.11 E
(Join/Prune messages.)97 303.8 Q(Note that the HoldT)97 329.8 Q
(ime must be lar)-.385 E(ger than the J/P_Ov)-.198 E(erride_Interv)-.165
E(al\(I\).)-.275 E F1(Number of Gr)72 359.4 Q(oups)-.198 E F0
(The number of multicast group sets contained in the message.)97 372.4 Q
F1(Multicast gr)72 402 Q(oup addr)-.198 E(ess)-.198 E F0 -.165(Fo)97 415
S 2.75(rf).165 G(ormat description see Section 4.10.1.)-2.75 E F1
(Number of J)72 431.6 Q(oined Sour)-.165 E(ces)-.198 E F0
(Number of join source addresses listed for a gi)97 444.6 Q -.165(ve)
-.275 G 2.75(ng).165 G(roup.)-2.75 E F1 -.165(Jo)72 474.2 S(in Sour).165
E(ce Addr)-.198 E(ess 1 .. n)-.198 E F0
(This list contains the sources that the sending router will forw)97
487.2 Q(ard multicast datagrams for if)-.11 E(recei)97 500.2 Q -.165(ve)
-.275 G 2.75(do).165 G 2.75(nt)-2.75 G(he interf)-2.75 E
(ace this message is sent on.)-.11 E
(See Encoded-Source-Address format in section 4.10.1.)97 526.2 Q F1
(Number of Pruned Sour)72 542.8 Q(ces)-.198 E F0
(Number of prune source addresses listed for a group.)97 555.8 Q F1
(Prune Sour)72 585.4 Q(ce Addr)-.198 E(ess 1 .. n)-.198 E F0
(This list contains the sources that the sending router does not w)97
598.4 Q(ant to forw)-.11 E(ard multicast)-.11 E
(datagrams for when recei)97 611.4 Q -.165(ve)-.275 G 2.75(do).165 G
2.75(nt)-2.75 G(he interf)-2.75 E(ace this message is sent on.)-.11 E
-.44(Wi)72 641 S(thin one PIM Join/Prune message, all the Multicast Gro\
up Addresses, Joined Source addresses).44 E
(and Pruned Source addresses MUST be of the same address f)72 654 Q
(amily)-.11 E 5.5(.I)-.715 G 2.75(ti)-5.5 G 2.75(sN)-2.75 G .88 -.44
(OT P)-2.75 H(ERMITTED to).44 E
(mix IPv4 and IPv6 addresses within the same message.)72 667 Q
(In addition, the address f)5.5 E(amily of the)-.11 E(\214elds in the m\
essage SHOULD be the same as the IP source and destination addresses of\
 the)72 680 Q(pack)72 693 Q 2.75(et. This)-.11 F
(permits maximum implementation \215e)2.75 E
(xibility for dual-stack IPv4/IPv6 routers.)-.165 E(Fenner/Handle)72 769
Q(y/Holbrook/K)-.165 E(ouv)-.385 E 155.471(elas Section)-.165 F 2.75
(4.10.5. [P)2.75 F(age 87])-.165 E EP
%%Page: 88 88
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF 2.75
(4.10.5.1. Gr)72 85 R(oup Set Sour)-.198 E(ce List Rules)-.198 E F0
(As described abo)72 101.6 Q -.165(ve)-.165 G 2.75(,J).165 G
(oin / Prune messages are composed of one or more group sets. Each set)
-2.75 E(contains tw)72 114.6 Q 2.75(os)-.11 G(ource lists, the Join Sou\
rces and the Prune Sources. This section describes the)-2.75 E(dif)72
127.6 Q(ferent types of group sets and source list entries that can e)
-.275 E(xist in a Join / Prune message.)-.165 E(There are tw)72 153.6 Q
2.75(ov)-.11 G(alid group set types:)-3.025 E F1 -.198(Wi)72 183.2 S
(ldcard Gr).198 E(oup Set)-.198 E F0(The wildcard group set is represen\
ted by the entire multicast range - the be)97 196.2 Q(ginning of the)
-.165 E(multicast address range in the group address \214eld and the pr\
e\214x length of the multicast)97 209.2 Q(address range in the mask len\
gth \214eld of the Multicast Group Address, e.g. 224.0.0.0/4 for)97
222.2 Q(IPv4 or f)97 235.2 Q(f00::/8 for IPv6.)-.275 E
(Each wildcard group set may contain one or more \(*,*,RP\) source)5.5 E
(list entries in either the Join or Prune lists.)97 248.2 Q 2.75(A\()97
274.2 S(*,*,RP\) source list entry may only e)-2.75 E
(xist in a wildcard group set.)-.165 E(When added to a Join)5.5 E
(source list, this type of source entry e)97 287.2 Q
(xpresses the router')-.165 E 2.75(si)-.605 G(nterest in recei)-2.75 E
(ving traf)-.275 E(\214c for all)-.275 E
(groups mapping to the speci\214ed RP)97 300.2 Q 2.75(.W)-1.221 G
(hen added to a Prune source list a \(*,*,RP\) entry)-2.75 E -.165(ex)97
313.2 S(presses the router').165 E 2.75(si)-.605 G
(nterest to stop recei)-2.75 E(ving such traf)-.275 E 2.75(\214c. Note)
-.275 F(that as indicated by the)2.75 E
(Join/Prune state machines, such a Join or Prune will NO)97 326.2 Q 2.75
(To)-.44 G -.165(ve)-2.915 G(rride Join/Prune state created).165 E
(using a Group-Speci\214c Set \(see belo)97 339.2 Q(w\).)-.275 E
(\(*,*,RP\) source list entries ha)97 365.2 Q .33 -.165(ve t)-.22 H
(he Source-Address set to the address of the RP).165 E 2.75(,t)-1.221 G
(he Source-)-2.75 E(Address Mask-Len set to the full length of the IP a\
ddress and both the WC and RPT bits of)97 378.2 Q
(the Source-Address set to 1.)97 391.2 Q F1(Gr)72 420.8 Q
(oup Speci\214c Set)-.198 E F0 2.75(AG)97 433.8 S
(roup Speci\214c Set is represented by a v)-2.75 E
(alid IP multicast address in the group address)-.275 E(\214eld and the\
 full length of the IP address in the mask length \214eld of the Multic\
ast Group)97 446.8 Q(Address. Each group speci\214c set may contain \(*\
,G\), \(S,G,rpt\) and \(S,G\) source list entries)97 459.8 Q
(in the Join or Prune lists.)97 472.8 Q F1(\(*,G\))97 489.4 Q F0
(The \(*,G\) source list entry is used in Join / Prune messages sent to)
122 502.4 Q -.11(wa)-.275 G(rds the RP for).11 E
(the speci\214ed group. It e)122 515.4 Q
(xpresses interest \(or lack of\) in recei)-.165 E(ving traf)-.275 E
(\214c sent to the)-.275 E(group through the Rendezv)122 528.4 Q
(ous-Point shared tree. There may only be one such entry in)-.22 E
(both the Join and Prune lists of a group speci\214c set.)122 541.4 Q
(\(*,G\) source list entries ha)122 567.4 Q .33 -.165(ve t)-.22 H
(he Source-Address set to the address of the RP for).165 E(group G, the\
 Source-Address Mask-Len set to the full length of the IP address and)
122 580.4 Q(ha)122 593.4 Q .33 -.165(ve b)-.22 H
(oth the WC and RPT bits of the Encoded-Source-Address set.).165 E F1
(\(S,G,r)97 623 Q(pt\))-.11 E F0(The \(S,G,rpt\) source list entry is u\
sed in Join / Prune messages sent to)122 636 Q -.11(wa)-.275 G
(rds the RP for).11 E(the speci\214ed group. It e)122 649 Q
(xpresses interest \(or lack of\) in recei)-.165 E(ving traf)-.275 E
(\214c through the)-.275 E
(shared tree sent by the speci\214ed source to this group. F)122 662 Q
(or each source address the)-.165 E(entry may e)122 675 Q(xist in only \
one of the Join and Prune source lists of a group speci\214c set)-.165 E
-.22(bu)122 688 S 2.75(tn).22 G(ot both.)-2.75 E
(\(S,G,rpt\) source list entries ha)122 714 Q .33 -.165(ve t)-.22 H
(he Source-Address set to the address of the source S,).165 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 147.221
(elas Section)-.165 F 2.75(4.10.5.1. [P)2.75 F(age 88])-.165 E EP
%%Page: 89 89
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(the Source-Address Mask-Len\
 set to the full length of the IP address and ha)122 85 Q .33 -.165
(ve t)-.22 H(he WC).165 E
(bit clear and the RPT bit set in the Encoded-Source-Address.)122 98 Q
/F1 11/Times-Bold@0 SF(\(S,G\))97 127.6 Q F0
(The \(S,G\) source list entry is used in Join / Prune messages sent to)
122 140.6 Q -.11(wa)-.275 G(rds the speci\214ed).11 E(source. It e)122
153.6 Q(xpresses interest \(or lack of\) in recei)-.165 E(ving traf)
-.275 E(\214c through the shortest path)-.275 E
(tree sent by the source to the speci\214ed group. F)122 166.6 Q
(or each source address the entry may)-.165 E -.165(ex)122 179.6 S(ist \
in only one of the Join and Prune source lists of a group speci\214c se\
t b).165 E(ut not both.)-.22 E(\(S,G\) source list entries ha)122 205.6
Q .33 -.165(ve t)-.22 H
(he Source-Address set to the address of the source S, the).165 E(Sourc\
e-Address Mask-Len set to the full length of the IP address and ha)122
218.6 Q .33 -.165(ve b)-.22 H(oth the).165 E
(WC and RPT bits of the Encoded-Source-Address cleared.)122 231.6 Q
(The rules described abo)72 248.2 Q .33 -.165(ve a)-.165 H(re suf).165 E
(\214cient to pre)-.275 E -.165(ve)-.275 G(nt in).165 E -.275(va)-.44 G
(lid combinations of source list entries in).275 E
(group-speci\214c sets.)72 261.2 Q(There are ho)5.5 E(we)-.275 E -.165
(ve)-.275 G 2.75(ran).165 G(umber of combinations that ha)-2.75 E .33
-.165(ve a v)-.22 H(alid interpretation)-.11 E -.22(bu)72 274.2 S 2.75
(tw).22 G(hich are not generated by the protocol as described in this s\
peci\214cation:)-2.75 E 7.15<8343>72 290.8 S(ombining a \(*,G\) Join an\
d a \(S,G,rpt\) Join entry in the same message is redundant as the)-7.15
E(\(*,G\) entry co)83 303.8 Q -.165(ve)-.165 G(rs the information pro)
.165 E(vided by the \(S,G,rpt\) entry)-.165 E(.)-.715 E 7.15<8354>72
320.4 S(he same applies for a \(*,G\) Prunes and \(S,G,rpt\) Prunes.)
-7.15 E 7.15<8354>72 337 S(he combination of a \(*,G\) Prune and a \(S,\
G,rpt\) Join is also not generated. \(S,G,rpt\) Joins are)-7.15 E
(only sent when the router is recei)83 350 Q(ving all traf)-.275 E
(\214c for a group on the shared tree and it wishes to)-.275 E(indicate\
 a change for the particular source. As a \(*,G\) prune indicates that \
the router no longer)83 363 Q(wishes to recei)83 376 Q .33 -.165(ve s)
-.275 H(hared tree traf).165 E(\214c, the \(S,G,rpt\) Join w)-.275 E
(ould be meaningless.)-.11 E 7.15<8341>72 392.6 S 2.75(sJ)-7.15 G
(oin / Prune messages are tar)-2.75 E(geted to a single PIM neighbor)
-.198 E 2.75(,i)-.44 G(ncluding both a \(S,G\) Join)-2.75 E(and a \(S,G\
,rpt\) prune in the same message is redundant. The \(S,G\) Join informs\
 the neighbor)83 405.6 Q(that the sender wishes to recei)83 418.6 Q .33
-.165(ve t)-.275 H
(he particular source on the shortest path tree. It is therefore).165 E
(unnecessary for the router to say that it no longer wishes to recei)83
431.6 Q .33 -.165(ve i)-.275 H 2.75(to).165 G 2.75(nt)-2.75 G
(he shared tree.)-2.75 E 7.15<8354>72 448.2 S(he combination of a \(S,G\
\) Prune and a \(S,G,rpt\) Join could possibly be used by a router to)
-7.15 E(switch from recei)83 461.2 Q
(ving a particular source on the shortest-path tree back to recei)-.275
E(ving it on the)-.275 E(shared tree \(pro)83 474.2 Q(vided that the RP\
F neighbor for the shortest-path and shared trees is common\).)-.165 E
(Ho)83 487.2 Q(we)-.275 E -.165(ve)-.275 G 2.75(rS).165 G
(parse-Mode PIM does not pro)-2.75 E
(vide a mechanism for switching back to the shared)-.165 E(tree.)83
500.2 Q(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 147.221
(elas Section)-.165 F 2.75(4.10.5.1. [P)2.75 F(age 89])-.165 E EP
%%Page: 90 90
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
(The rules are summarized in the tables belo)72 85 Q -.715(w.)-.275 G
.44 LW 414.485 95.75 72 95.75 DL/F1 11/Times-Bold@0 SF -.165(Jo)136.053
106 S(in).165 E(\(*,G\))136.053 119 Q(Prune)176.687 106 Q(\(*,G\))
176.687 119 Q -.165(Jo)221.908 106 S(in).165 E(\(S,G,r)221.908 119 Q
(pt\))-.11 E(Prune)280.461 106 Q(\(S,G,r)280.461 119 Q(pt\))-.11 E -.165
(Jo)339.014 106 S(in).165 E(\(S,G\))339.014 119 Q(Prune)380.264 106 Q
(\(S,G\))380.264 119 Q 414.485 123.75 72 123.75 DL 414.485 125.75 72
125.75 DL F0 36.971(-n)136.053 136 S -17.523 34.221(o? y)-36.971 H 41.14
(es yes)-34.221 F(yes)26.587 E F1 -.165(Jo)77.5 136 S(in).165 E(\(*,G\))
77.5 149 Q 414.485 153.75 72 153.75 DL F0 26.884(no -)136.053 164 R
53.669(??y)41.558 G 23.837(es yes)-53.669 F F1(Prune)77.5 164 Q(\(*,G\))
77.5 177 Q 414.485 181.75 72 181.75 DL F0 -33.913 35.75(?? -)136.053 192
T 44.803(no yes)19.14 F(yes)26.587 E F1 -.165(Jo)77.5 192 S(in).165 E
(\(S,G,r)77.5 205 Q(pt\))-.11 E 414.485 209.75 72 209.75 DL F0 23.221
(yes ?)136.053 220 R 44.803(no -)40.337 F 36.366(??)54.89 G F1(Prune)
77.5 220 Q(\(S,G,r)77.5 233 Q(pt\))-.11 E 414.485 237.75 72 237.75 DL F0
23.221(yes yes)136.053 248 R 41.14(yes ?)30.558 F 37.587(-n)53.669 G(o)
-37.587 E F1 -.165(Jo)77.5 248 S(in).165 E(\(S,G\))77.5 261 Q 414.485
265.75 72 265.75 DL F0 23.221(yes yes)136.053 276 R 41.14(yes ?)30.558 F
27.5(no -)53.669 F F1(Prune)77.5 276 Q(\(S,G\))77.5 289 Q 414.485 293.75
72 293.75 DL 372.014 95.75 372.014 293.75 DL 330.764 95.75 330.764
293.75 DL 272.211 95.75 272.211 293.75 DL 213.658 95.75 213.658 293.75
DL 168.437 95.75 168.437 293.75 DL 126.803 95.75 126.803 293.75 DL
128.803 95.75 128.803 293.75 DL 414.485 95.75 414.485 293.75 DL 72 95.75
72 293.75 DL 377.36 318.75 72 318.75 DL -.165(Jo)163.96 329 S
(in \(*,*,RP\)).165 E(Prune \(*,*,RP\))241.708 329 Q(all others)328.168
329 Q 377.36 333.75 72 333.75 DL F0 74.085(-n)163.96 344 S 75.46(oy)
-74.085 G(es)-75.46 E F1 -.165(Jo)77.5 344 S(in \(*,*,RP\)).165 E 377.36
348.75 72 348.75 DL F0 63.998(no -)163.96 359 R(yes)82.797 E F1
(Prune \(*,*,RP\))77.5 359 Q 377.36 363.75 72 363.75 DL F0 60.335
(yes yes)163.96 374 R(see abo)71.797 E -.165(ve)-.165 G F1(all others)
77.5 374 Q 377.36 378.75 72 378.75 DL 319.918 318.75 319.918 378.75 DL
233.458 318.75 233.458 378.75 DL 154.71 318.75 154.71 378.75 DL 156.71
318.75 156.71 378.75 DL 377.36 318.75 377.36 378.75 DL 72 318.75 72
378.75 DL -.11(ye)72 409.6 S(s).11 E F0(Allo)10.447 E(wed and e)-.275 E
(xpected.)-.165 E F1(no)72 439.2 Q F0(Combination is not allo)13.384 E
(wed by the protocol and MUST NO)-.275 E 2.75(Tb)-.44 G 2.75(eg)-2.75 G
(enerated by a router)-2.75 E(.)-.605 E F1(?)72 468.8 Q F0
(Combination not e)19.5 E(xpected by the protocol, b)-.165 E
(ut well-de\214ned. A router MA)-.22 E 2.75(Ya)-1.155 G(ccept it b)-2.75
E(ut)-.22 E(SHOULD NO)97 481.8 Q 2.75(Tg)-.44 G(enerate it.)-2.75 E(The\
 order of source list entries in a group set source list is not importa\
nt, e)72 498.4 Q(xcept where limited by)-.165 E(the pack)72 511.4 Q
(et format itself.)-.11 E F1 2.75(4.10.5.2. Gr)72 550.4 R
(oup Set Fragmentation)-.198 E F0(When b)72 567 Q
(uilding a Join / Prune for a particular neighbor)-.22 E 2.75(,ar)-.44 G
(outer should try and include in the)-2.75 E
(message as much of the information it needs to con)72 580 Q .33 -.165
(vey t)-.44 H 2.75(ot).165 G(he neighbor as possible.)-2.75 E
(This implies)5.5 E(adding one group set for each multicast group that \
has information pending transmission and)72 593 Q
(within each set including all rele)72 606 Q -.275(va)-.275 G
(nt source list entries.).275 E(On a router with a lar)72 622.6 Q(ge am\
ount of multicast state the number of entries that must be included)
-.198 E(may result in pack)72 635.6 Q(ets that are lar)-.11 E
(ger in the maximum IP pack)-.198 E(et size. In most such cases the)-.11
E(information may be split into multiple messages.)72 648.6 Q
(There is an e)72 665.2 Q
(xception with group sets that contain a \(*,G\) Join source list entry)
-.165 E 2.75(.T)-.715 G(he group set)-2.75 E -.165(ex)72 678.2 S
(presses the router').165 E 2.75(si)-.605 G(nterest in recei)-2.75 E
(ving all traf)-.275 E
(\214c for the speci\214ed group on the shared tree and)-.275 E
(it MUST include an \(S,G,rpt\) Prune source list entry for e)72 691.2 Q
-.165(ve)-.275 G(ry source that the router does not).165 E
(wish to recei)72 704.2 Q -.165(ve)-.275 G 2.75(.T).165 G(his list of \
\(S,G,rpt\) Prune source-list entries MUST not be split in multiple)
-2.75 E(messages.)72 717.2 Q(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E
(ouv)-.385 E 147.221(elas Section)-.165 F 2.75(4.10.5.2. [P)2.75 F
(age 90])-.165 E EP
%%Page: 91 91
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(If only N \(S,G,rpt\) Prune\
 entries \214t into a maximum-sized Join / Prune message, b)72 85 Q
(ut the router)-.22 E(has more than N \(S,G,rpt\) Prunes to add, then t\
he router MUST choose to include the \214rst N)72 98 Q
(\(numerically smallest in netw)72 111 Q(ork byte order\) IP addresses.)
-.11 E/F1 11/Times-Bold@0 SF 2.75(4.10.6. Assert)72 150 R(Message F)2.75
E(ormat)-.275 E F0(The Assert message is used to resolv)72 166.6 Q 2.75
(ef)-.165 G(orw)-2.75 E
(arder con\215icts between routers on a link. It is sent)-.11 E
(when a multicast data pack)72 179.6 Q(et is recei)-.11 E -.165(ve)-.275
G 2.75(do).165 G 2.75(na)-2.75 G 2.75(ni)-2.75 G(nterf)-2.75 E
(ace that the router w)-.11 E(ould normally forw)-.11 E(ard)-.11 E
(that pack)72 192.6 Q 2.75(et. Assert)-.11 F(messages may also be sent \
in response to an Assert message from another)2.75 E(router)72 205.6 Q
(.)-.605 E/F2 11/Courier@0 SF 125.4(0123)78.6 224.6 S 6.6
(01234567890123456789012345678901)78.6 237.6 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
250.6 Q(|PIM Ver| Type)72 263.6 Q 19.8(|R)13.2 G 19.8(eserved |)-19.8 F
72.6(Checksum |)72.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
276.6 Q 92.4(|G)72 289.6 S(roup Address \(Encoded-Group format\))-92.4 E
(|)85.8 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
302.6 Q 79.2(|S)72 315.6 S(ource Address \(Encoded-Unicast format\))
-79.2 E(|)79.2 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
328.6 Q 138.6(|R| Metric)72 341.6 R 138.6(Preference |)6.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
354.6 Q 191.4(|M)72 367.6 S 178.2(etric |)-191.4 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
380.6 Q F1(PIM V)72 403.2 Q(ersion, T)-1.1 E(ype, Reser)-.814 E -.11(ve)
-.11 G(d, Checksum).11 E F0(Described abo)97 416.2 Q -.165(ve)-.165 G(.)
.165 E F1(Gr)72 445.8 Q(oup Addr)-.198 E(ess)-.198 E F0
(The group address for which the router wishes to resolv)97 458.8 Q 2.75
(et)-.165 G(he forw)-2.75 E(arding con\215ict.)-.11 E(This is an)5.5 E
(Encoded-Group address, as speci\214ed in 4.10.1.)97 471.8 Q F1(Sour)72
488.4 Q(ce Addr)-.198 E(ess)-.198 E F0
(Source address for which the router wishes to resolv)97 501.4 Q 2.75
(et)-.165 G(he forw)-2.75 E(arding con\215ict. The source)-.11 E
(address MA)97 514.4 Q 2.75(Yb)-1.155 G 2.75(es)-2.75 G(et to IN)-2.75 E
(ADDR_ANY for \(*,G\) asserts \(see belo)-.385 E 2.75(w\). The)-.275 F
(format for this)2.75 E(address is gi)97 527.4 Q -.165(ve)-.275 G 2.75
(ni).165 G 2.75(nE)-2.75 G(ncoded-Unicast-Address in section 4.10.1.)
-2.75 E F1(R)72 544 Q F0(RPT)17.058 E(-bit is a 1 bit v)-1.012 E
(alue. The RPT)-.275 E
(-bit is set to 1 for Assert\(*,G\) messages and 0 for)-1.012 E
(Assert\(S,G\) messages.)97 557 Q F1(Metric Pr)72 586.6 Q(efer)-.198 E
(ence)-.198 E F0(Preference v)97 599.6 Q
(alue assigned to the unicast routing protocol that pro)-.275 E
(vided the route to the)-.165 E(multicast source or Rendezv)97 612.6 Q
(ous-Point.)-.22 E F1(Metric)72 642.2 Q F0(The unicast routing table me\
tric associated with the route used to reach the multicast source)97
655.2 Q(or Rendezv)97 668.2 Q(ous-Point. The metric is in units applica\
ble to the unicast routing protocol used.)-.22 E
(Assert messages can be sent to resolv)72 697.8 Q 2.75(eaf)-.165 G(orw)
-2.75 E(arding con\215ict for all traf)-.11 E(\214c to gi)-.275 E -.165
(ve)-.275 G 2.75(ng).165 G(roup or for a)-2.75 E
(speci\214c source and group.)72 710.8 Q(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 155.471(elas Section)-.165 F 2.75
(4.10.6. [P)2.75 F(age 91])-.165 E EP
%%Page: 92 92
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF
(Assert\(S,G\))72 85 Q F0
(Source speci\214c asserts are sent by routers forw)97 98 Q
(arding a speci\214c source on the shortest-path)-.11 E
(tree \(SPT bit is TR)97 111 Q(UE\). \(S,G\) Asserts ha)-.44 E .33 -.165
(ve t)-.22 H(he Group-Address \214eld set to the group G and).165 E
(the Source-Address \214eld set to the source S. The RPT)97 124 Q
(-bit is set to 0, the Metric-Preference)-1.012 E
(is set to MRIB.pref\(S\) and the Metric is set to MRIB.metric\(S\).)97
137 Q F1(Assert\(*,G\))72 153.6 Q F0
(Group speci\214c asserts are sent by routers forw)97 166.6 Q
(arding data for the group and source\(s\) under)-.11 E
(contention on the shared tree. \(*,G\) asserts ha)97 179.6 Q .33 -.165
(ve t)-.22 H(he Group-Address \214eld set to the group G.).165 E -.165
(Fo)97 192.6 S 2.75(rd).165 G
(ata triggered Asserts the Source-Address \214eld MA)-2.75 E 2.75(Yb)
-1.155 G 2.75(es)-2.75 G(et to the IP source address of)-2.75 E
(the data pack)97 205.6 Q(et that triggered the Assert and is set to IN)
-.11 E(ADDR_ANY otherwise.)-.385 E(The RPT)5.5 E(-)-1.012 E(bit is set \
to 1, the Metric-Preference is set to MRIB.pref\(RP\(G\)\) and the Metr\
ic is set to)97 218.6 Q(MRIB.metric\(RP\(G\)\).)97 231.6 Q F1(4.11.)72
257.6 Q/F2 13/Times-Bold@0 SF(PIM T)5.5 E(imers)-.234 E F0
(PIM-SM maintains the follo)72 274.2 Q
(wing timers, as discussed in section 4.1. All timers are countdo)-.275
E(wn)-.275 E(timers - the)72 287.2 Q 2.75(ya)-.165 G(re set to a v)-2.75
E(alue and count do)-.275 E(wn to zero, at which point the)-.275 E 2.75
(yt)-.165 G(ypically trigger an)-2.75 E 2.75(action. Of)72 300.2 R
(course the)2.75 E 2.75(yc)-.165 G(an just as easily be implemented as \
count-up timers, where the absolute)-2.75 E -.165(ex)72 313.2 S
(piry time is stored and compared ag).165 E(ainst a real-time clock, b)
-.055 E(ut the language in this speci\214cation)-.22 E(assumes that the)
72 326.2 Q 2.75(yc)-.165 G(ount do)-2.75 E(wnw)-.275 E(ards to zero.)
-.11 E(Global T)72 355.8 Q(imers)-.385 E(Per interf)72 372.4 Q
(ace \(I\):)-.11 E F1(Hello T)97 389 Q(imer: HT\(I\))-.198 E F0
(Per neighbor \(N\):)97 405.6 Q F1(Neighbor li)122 422.2 Q -.11(ve)-.11
G(ness T).11 E(imer: NL)-.198 E(T\(N,I\))-1.012 E F0(Per acti)97 438.8 Q
.33 -.165(ve R)-.275 H 2.75(P\().165 G(RP\):)-2.75 E F1(\(*,*,RP\) J)122
455.4 Q(oin Expiry T)-.165 E(imer: ET\(*,*,RP)-.198 E(,I\))-1.012 E
(\(*,*,RP\) PruneP)122 472 Q(ending T)-.22 E(imer: PPT\(*,*,RP)-.198 E
(,I\))-1.012 E F0(Per Group \(G\):)97 488.6 Q F1(\(*,G\) J)122 505.2 Q
(oin Expiry T)-.165 E(imer: ET\(*,G,I\))-.198 E(\(*,G\) PruneP)122 521.8
Q(ending T)-.22 E(imer: PPT\(*,G,I\))-.198 E(\(*,G\) Assert T)122 538.4
Q(imer: A)-.198 E(T\(*,G,I\))-1.045 E F0(Per Source \(S\):)122 555 Q F1
(\(S,G\) J)147 571.6 Q(oin Expiry T)-.165 E(imer: ET\(S,G,I\))-.198 E
(\(S,G\) PruneP)147 588.2 Q(ending T)-.22 E(imer: PPT\(S,G,I\))-.198 E
(\(S,G\) Assert T)147 604.8 Q(imer: A)-.198 E(T\(S,G,I\))-1.045 E
(\(S,G,r)147 621.4 Q(pt\) Prune Expiry T)-.11 E(imer: ET\(S,G,r)-.198 E
(pt,I\))-.11 E(\(S,G,r)147 638 Q(pt\) PruneP)-.11 E(ending T)-.22 E
(imer: PPT\(S,G,r)-.198 E(pt,I\))-.11 E F0(Per acti)72 654.6 Q .33 -.165
(ve R)-.275 H 2.75(P\().165 G(RP\):)-2.75 E F1(\(*,*,RP\) Upstr)97 671.2
Q(eam J)-.198 E(oin T)-.165 E(imer: JT\(*,*,RP\))-.198 E F0
(Per Group \(G\):)72 687.8 Q F1(\(*,G\) Upstr)97 704.4 Q(eam J)-.198 E
(oin T)-.165 E(imer: JT\(*,G\))-.198 E F0(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 163.721(elas Section)-.165 F 2.75
(4.11. [P)2.75 F(age 92])-.165 E EP
%%Page: 93 93
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(Per Source \(S\):)97 85 Q/F1
11/Times-Bold@0 SF(\(S,G\) Upstr)122 101.6 Q(eam J)-.198 E(oin T)-.165 E
(imer: JT\(S,G\))-.198 E(\(S,G\) K)122 118.2 Q(eepali)-.275 E .22 -.11
(ve T)-.11 H(imer: KA)-.088 E(T\(S,G\))-1.045 E(\(S,G,r)122 134.8 Q
(pt\) Upstr)-.11 E(eam Ov)-.198 E(erride T)-.11 E(imer: O)-.198 E
(T\(S,G,r)-.44 E(pt\))-.11 E F0(At the DRs or rele)72 151.4 Q -.275(va)
-.275 G(nt Assert W).275 E(inners only:)-.44 E
(Per Source,Group pair \(S,G\):)97 168 Q F1(Register Stop T)122 184.6 Q
(imer: RST\(S,G\))-.198 E(4.12.)72 210.6 Q/F2 13/Times-Bold@0 SF -.234
(Ti)5.5 G(mer V).234 E(alues)-1.196 E F0
(When timers are started or restarted, the)72 227.2 Q 2.75(ya)-.165 G
(re set to def)-2.75 E(ault v)-.11 E 2.75(alues. This)-.275 F
(section summarizes those)2.75 E(def)72 240.2 Q(ault v)-.11 E(alues.)
-.275 E(Note that protocol e)72 256.8 Q -.165(ve)-.275 G
(nts or con\214guration may change the def).165 E(ault v)-.11 E
(alue of a timer on a speci\214c)-.275 E(interf)72 269.8 Q
(ace. When timers are initialized in this document the v)-.11 E
(alue speci\214c to the interf)-.275 E(ace in)-.11 E(conte)72 282.8 Q
(xt must be used.)-.165 E(Some of the timers listed belo)72 299.4 Q 2.75
(w\()-.275 G(Prune Pending, Upstream Join, Upstream Ov)-2.75 E
(erride\) can be set to)-.165 E -.275(va)72 312.4 S
(lues which depend on the settings of the Propag).275 E
(ation Delay and Ov)-.055 E(erride_Interv)-.165 E(al of the)-.275 E
(corresponding interf)72 325.4 Q(ace. The def)-.11 E(ault v)-.11 E
(alues for these are gi)-.275 E -.165(ve)-.275 G 2.75(nb).165 G(elo)
-2.75 E 4.18 -.715(w. N)-.275 H(ote that the v).715 E(alue of both)-.275
E(the Propag)72 338.4 Q(ation Delay and Ov)-.055 E(erride Interv)-.165 E
(al of an interf)-.275 E(ace can change as a result of recei)-.11 E
(ving)-.275 E(Hello messages on that interf)72 351.4 Q
(ace \(section 4.3.3\).)-.11 E F1 -1.012(Va)72 377.4 S(riable Name: Pr)
1.012 E(opagation_Delay\(I\))-.198 E .44 LW 503.996 391.75 72 391.75 DL
-1.012(Va)99.176 402 S(lue Name)1.012 E -1.012(Va)112.669 G 82.837
(lue Explanation)1.012 F 503.996 406.75 72 406.75 DL 503.996 408.75 72
408.75 DL F0(LAN_delay_def)99.176 419 Q 78.778(ault 0.5)-.11 F(sec)2.75
E(Expected propag)380.647 419 Q(ation)-.055 E(delay o)380.647 432 Q
-.165(ve)-.165 G 2.75(rt).165 G(he local)-2.75 E(link.)380.647 445 Q
503.996 449.75 72 449.75 DL 339.883 391.75 339.883 449.75 DL 227.808
391.75 227.808 449.75 DL 503.996 391.75 503.996 449.75 DL 72 391.75 72
449.75 DL(The def)72 467.6 Q(ault v)-.11 E(alue of the LAN_delay_def)
-.275 E(ault is chosen to be relati)-.11 E -.165(ve)-.275 G(ly lar).165
E(ge to pro)-.198 E(vide)-.165 E
(compatibility with older PIM implementations.)72 480.6 Q F1 -1.012(Va)
72 506.6 S(riable Name: Ov)1.012 E(erride_Inter)-.11 E -.11(va)-.11 G
(l\(I\)).11 E 503.995 520.95 72 520.95 DL -1.012(Va)100.137 531.2 S
(lue Name)1.012 E -1.012(Va)108.501 G 85.72(lue Explanation)1.012 F
503.995 535.95 72 535.95 DL 503.995 537.95 72 537.95 DL F0(t_o)100.137
548.2 Q -.165(ve)-.165 G(rride_def).165 E 81.661(ault 2.5)-.11 F(sec)
2.75 E(Def)380.323 548.2 Q(ault delay interv)-.11 E(al)-.275 E -.165
(ove)380.323 561.2 S 2.75(rw).165 G(hich to)-2.75 E(randomize when)
380.323 574.2 Q(scheduling a delayed)380.323 587.2 Q(Join message.)
380.323 600.2 Q 503.995 604.95 72 604.95 DL 338.117 520.95 338.117
604.95 DL 223.159 520.95 223.159 604.95 DL 503.995 520.95 503.995 604.95
DL 72 520.95 72 604.95 DL(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E
(ouv)-.385 E 163.721(elas Section)-.165 F 2.75(4.12. [P)2.75 F(age 93])
-.165 E EP
%%Page: 94 94
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF -.198
(Ti)72 85 S(mer Name: Hello T).198 E(imer \(HT\(I\)\))-.198 E .44 LW
503.998 99.35 72 99.35 DL -1.012(Va)88.938 109.6 S(lue Name)1.012 E
-1.012(Va)98.785 G 50.814(lue Explanation)1.012 F 503.998 114.35 72
114.35 DL 503.998 116.35 72 116.35 DL F0 94.099(Hello_Period 30)88.938
126.6 R 49.505(sec Periodic)2.75 F(interv)2.75 E(al for Hello messages.)
-.275 E 503.998 131.35 72 131.35 DL -.385(Tr)88.938 141.6 S 48.064
(iggered_Hello_Delay 5).385 F(sec)2.75 E(Randomized interv)324.502 141.6
Q(al for initial)-.275 E(Hello message on bootup or)324.502 154.6 Q
(triggered Hello message to a)324.502 167.6 Q(rebooting neighbor)324.502
180.6 Q(.)-.605 E 503.998 185.35 72 185.35 DL 299.095 99.35 299.095
185.35 DL 219.043 99.35 219.043 185.35 DL 503.998 99.35 503.998 185.35
DL 72 99.35 72 185.35 DL(At system po)72 203.2 Q(wer)-.275 E
(-up, the timer is initialized to rand\(0,T)-.22 E
(riggered_Hello_Delay\) to pre)-.385 E -.165(ve)-.275 G(nt).165 E 2.75
(synchronization. When)72 216.2 R 2.75(an)2.75 G .55 -.275(ew o)-2.75 H
2.75(rr).275 G
(ebooting neighbor is detected, a responding Hello is sent)-2.75 E
(within rand\(0,T)72 229.2 Q(riggered_Hello_Delay\).)-.385 E F1 -.198
(Ti)72 255.2 S(mer Name: Neighbor Li).198 E -.11(ve)-.11 G(ness T).11 E
(imer \(NL)-.198 E(T\(N,I\)\))-1.012 E 504 269.55 72 269.55 DL -1.012
(Va)90.228 279.8 S(lue Name)1.012 E -1.012(Va)107.836 G 108.859
(lue Explanation)1.012 F 504 284.55 72 284.55 DL 504 286.55 72 286.55 DL
F0(Def)90.228 296.8 Q 51.934(ault_Hello_Holdtime 3.5)-.11 F 2.75(*H)2.75
G(ello_Period)-2.75 E(Def)392.888 296.8 Q(ault holdtime to)-.11 E -.11
(ke)392.888 309.8 S(ep neighbor state).11 E(ali)392.888 322.8 Q -.165
(ve)-.275 G 504 327.55 72 327.55 DL 90.313(Hello_Holdtime from)90.228
337.8 R(message)2.75 E(Holdtime from Hello)392.888 337.8 Q
(Message Holdtime)392.888 350.8 Q(option.)392.888 363.8 Q 504 368.55 72
368.55 DL 365.546 269.55 365.546 368.55 DL 227.449 269.55 227.449 368.55
DL 504 269.55 504 368.55 DL 72 269.55 72 368.55 DL(The Holdtime in a He\
llo Message should be set to \(3.5 * Hello_Period\), gi)72 386.4 Q
(ving a def)-.275 E(ault v)-.11 E(alue of)-.275 E(105 seconds.)72 399.4
Q F1 -.198(Ti)72 425.4 S(mer Names: Expiry T).198 E(imer \(ET\(*,*,RP)
-.198 E(,I\), ET\(*,G,I\), ET\(S,G,I\), ET\(S,G,r)-1.012 E(pt,I\)\))-.11
E 503.994 439.75 72 439.75 DL -1.012(Va)90.758 450 S(lue Name)1.012 E
-1.012(Va)63.336 G 88.438(lue Explanation)1.012 F 503.994 454.75 72
454.75 DL 503.994 456.75 72 456.75 DL F0(J/P_HoldT)90.758 467 Q 53.524
(ime from)-.385 F 53.524(message Holdtime)2.75 F
(from Join/Prune Message)2.75 E 503.994 471.75 72 471.75 DL 300.36
439.75 300.36 471.75 DL 182.684 439.75 182.684 471.75 DL 503.994 439.75
503.994 471.75 DL 72 439.75 72 471.75 DL(See details of JT\(*,G\) for t\
he Holdtime that is included in Join/Prune Messages.)72 489.6 Q F1 -.198
(Ti)72 515.6 S(mer Names: Prune P).198 E(ending T)-.22 E
(imer \(PPT\(*,*,RP)-.198 E(,I\), PPT\(*,G,I\), PPT\(S,G,I\),)-1.012 E
(PPT\(S,G,r)72 528.6 Q(pt,I\)\))-.11 E 503.995 542.95 72 542.95 DL
-1.012(Va)86.222 553.2 S(lue Name)1.012 E -1.012(Va)94.245 G 118.247
(lue Explanation)1.012 F 503.995 557.95 72 557.95 DL 503.995 559.95 72
559.95 DL F0(J/P_Ov)86.222 570.2 Q(erride_Interv)-.165 E(al\(I\))-.275 E
(Def)237.194 570.2 Q(ault:)-.11 E(Propag)237.194 583.2 Q
(ation_Delay\(I\) +)-.055 E(Ov)237.194 596.2 Q(erride_Interv)-.165 E
(al\(I\))-.275 E(Short period after a join)384.679 570.2 Q
(or prune to allo)384.679 583.2 Q 2.75(wo)-.275 G(ther)-2.75 E
(routers on the LAN to)384.679 596.2 Q -.165(ove)384.679 609.2 S
(rride the join or).165 E(prune)384.679 622.2 Q 503.995 626.95 72 626.95
DL 363.346 542.95 363.346 626.95 DL 215.861 542.95 215.861 626.95 DL
503.995 542.95 503.995 626.95 DL 72 542.95 72 626.95 DL
(Note that both the Propag)72 644.8 Q(ation_Delay\(I\) and the Ov)-.055
E(erride_Interv)-.165 E(al\(I\) are interf)-.275 E(ace speci\214c v)-.11
E(alues)-.275 E(that may change when Hello messages are recei)72 657.8 Q
-.165(ve)-.275 G(d.).165 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E
(ouv)-.385 E 163.721(elas Section)-.165 F 2.75(4.12. [P)2.75 F(age 94])
-.165 E EP
%%Page: 95 95
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF -.198
(Ti)72 85 S(mer Names: Assert T).198 E(imer \(A)-.198 E(T\(*,G,I\), A)
-1.045 E(T\(S,G,I\)\))-1.045 E .44 LW 503.999 99.35 72 99.35 DL -1.012
(Va)89.484 109.6 S(lue Name)1.012 E -1.012(Va)107.694 G 99.477
(lue Explanation)1.012 F 503.999 114.35 72 114.35 DL 503.999 116.35 72
116.35 DL F0(Assert_Ov)89.484 126.6 Q(erride_Interv)-.165 E 49.702
(al Def)-.275 F(ault: 3 secs)-.11 E(Short interv)382.62 126.6 Q
(al before an)-.275 E(assert times out where)382.62 139.6 Q
(the assert winner)382.62 152.6 Q(resends an Assert)382.62 165.6 Q
(message)382.62 178.6 Q 503.999 183.35 72 183.35 DL(Assert_T)89.484
193.6 Q 105.23(ime Def)-.385 F(ault: 180 secs)-.11 E
(Period after last assert)382.62 193.6 Q(before assert state is)382.62
206.6 Q(timed out)382.62 219.6 Q 503.999 224.35 72 224.35 DL 356.394
99.35 356.394 224.35 DL 227.679 99.35 227.679 224.35 DL 503.999 99.35
503.999 224.35 DL 72 99.35 72 224.35 DL(Note that for historical reason\
s, the Assert message lacks a Holdtime \214eld.)72 242.2 Q
(Thus changing the)5.5 E(Assert T)72 255.2 Q(ime from the def)-.385 E
(ault v)-.11 E(alue is not recommended.)-.275 E F1 -.198(Ti)72 281.2 S
(mer Names: Upstr).198 E(eam J)-.198 E(oin T)-.165 E
(imer \(JT\(*,*,RP\), JT\(*,G\), JT\(S,G\)\))-.198 E 503.999 295.55 72
295.55 DL -1.012(Va)84.501 305.8 S(lue Name)1.012 E -1.012(Va)40.253 G
114.58(lue Explanation)1.012 F 503.999 310.55 72 310.55 DL 503.999
312.55 72 312.55 DL F0 49.625(t_periodic Def)84.501 322.8 R
(ault: 60 secs)-.11 E(Period between Join/Prune Messages)73.055 E
503.999 327.55 72 327.55 DL(t_suppressed)84.501 337.8 Q
(rand\(1.1 * t_periodic,)181.481 337.8 Q(1.4 * t_periodic\) when)181.481
350.8 Q(Suppression_Enabled\(I\))181.481 363.8 Q(is true, 0 otherwise)
181.481 376.8 Q(Suppression period when someone)325.299 337.8 Q
(else sends a J/P message so we don')325.299 350.8 Q(t)-.198 E
(need to do so.)325.299 363.8 Q 503.999 381.55 72 381.55 DL(t_o)84.501
391.8 Q -.165(ve)-.165 G(rride).165 E(rand\(0,)181.481 391.8 Q(Ov)
181.481 404.8 Q(erride_Interv)-.165 E(al\(I\)\))-.275 E
(Randomized delay to pre)325.299 391.8 Q -.165(ve)-.275 G(nt).165 E
(response implosion when sending a)325.299 404.8 Q(join message to o)
325.299 417.8 Q -.165(ve)-.165 G(rride someone).165 E(else')325.299
430.8 Q 2.75(sP)-.605 G(rune message.)-2.75 E 503.999 435.55 72 435.55
DL 306.547 295.55 306.547 435.55 DL 162.729 295.55 162.729 435.55 DL
503.999 295.55 503.999 435.55 DL 72 295.55 72 435.55 DL
(t_periodic may be set to tak)72 453.4 Q 2.75(ei)-.11 G
(nto account such things as the con\214gured bandwidth and e)-2.75 E
(xpected)-.165 E -2.475 -.22(av e)72 466.4 T
(rage number of multicast route entries for the attached netw).22 E
(ork or link \(e.g., the period w)-.11 E(ould)-.11 E(be longer for lo)72
479.4 Q(wer)-.275 E
(-speed links, or for routers in the center of the netw)-.22 E
(ork that e)-.11 E(xpect to ha)-.165 E .33 -.165(ve a)-.22 H(lar)72
492.4 Q(ger number of entries\). If the Join/Prune-Period is modi\214ed\
 during operation, these changes)-.198 E(should be made relati)72 505.4
Q -.165(ve)-.275 G
(ly infrequently and the router should continue to refresh at its pre)
.165 E(vious)-.275 E
(Join/Prune-Period for at least Join/Prune-Holdtime, in order to allo)72
518.4 Q 2.75(wt)-.275 G(he upstream router to adapt.)-2.75 E(The holdti\
me speci\214ed in a Join/Prune message should be set to \(3.5 * t_perio\
dic\).)72 535 Q(t_o)72 551.6 Q -.165(ve)-.165 G(rride depends on the Ov)
.165 E(erride Interv)-.165 E(al of the upstream interf)-.275 E
(ace which may change when)-.11 E(Hello messages are recei)72 564.6 Q
-.165(ve)-.275 G(d.).165 E
(t_suppressed depends on the Suppression State of the upstream interf)72
581.2 Q(ace \( 4.3.3\) and becomes)-.11 E
(zero when suppression is disabled.)72 594.2 Q F1 -.198(Ti)72 620.2 S
(mer Name: Upstr).198 E(eam Ov)-.198 E(erride T)-.11 E(imer \(O)-.198 E
(T\(S,G,r)-.44 E(pt\)\))-.11 E 503.999 634.55 72 634.55 DL -1.012(Va)
91.09 644.8 S(lue Name)1.012 E -1.012(Va)60.02 G 137.933
(lue Explanation)1.012 F 503.999 649.55 72 649.55 DL 503.999 651.55 72
651.55 DL F0(t_o)91.09 661.8 Q -.165(ve)-.165 G 69.117(rride see).165 F
(Upstream Join T)2.75 E 54.52(imer see)-.385 F(Upstream Join T)2.75 E
(imer)-.385 E 503.999 666.55 72 666.55 DL 346.373 634.55 346.373 666.55
DL 179.202 634.55 179.202 666.55 DL 503.999 634.55 503.999 666.55 DL 72
634.55 72 666.55 DL(The upstream Ov)72 684.4 Q(erride T)-.165 E
(imer is only e)-.385 E -.165(ve)-.275 G 2.75(rs).165 G(et to t_o)-2.75
E -.165(ve)-.165 G(rride; this v).165 E
(alue is de\214ned in the section on)-.275 E(Upstream Join T)72 697.4 Q
(imers.)-.385 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E
163.721(elas Section)-.165 F 2.75(4.12. [P)2.75 F(age 95])-.165 E EP
%%Page: 96 96
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF -.198
(Ti)72 85 S(mer Name: K).198 E(eepAli)-.275 E .22 -.11(ve T)-.11 H
(imer \(KA)-.088 E(T\(S,G\)\))-1.045 E .44 LW 503.994 99.35 72 99.35 DL
-1.012(Va)88.404 109.6 S(lue Name)1.012 E -1.012(Va)89.538 G 118.721
(lue Explanation)1.012 F 503.994 114.35 72 114.35 DL 503.994 116.35 72
116.35 DL F0 -.275(Ke)88.404 126.6 S(epali).275 E -.165(ve)-.275 G
65.415(_Period Def).165 F(ault: 210 secs)-.11 E
(Period after last \(S,G\))382.628 126.6 Q(data pack)382.628 139.6 Q
(et during)-.11 E(which \(S,G\) Join state)382.628 152.6 Q
(will be maintained e)382.628 165.6 Q -.165(ve)-.275 G(n).165 E
(in the absence of \(S,G\))382.628 178.6 Q(Join messages.)382.628 191.6
Q 503.994 196.35 72 196.35 DL(RP_K)88.404 206.6 Q(eepali)-.275 E -.165
(ve)-.275 G(_Period).165 E 2.75(\(3*R)234.669 206.6 S -.165(eg)-2.75 G
(ister_).165 E(Suppression_T)234.669 219.6 Q(ime \) +)-.385 E(Re)234.669
232.6 Q(gister_ Probe_T)-.165 E(ime)-.385 E(As K)382.628 206.6 Q(eepali)
-.275 E -.165(ve)-.275 G(_Period,).165 E -.22(bu)382.628 219.6 S 2.75
(ta).22 G 2.75(tt)-2.75 G(he RP when a)-2.75 E(Re)382.628 232.6 Q
(gisterStop is sent.)-.165 E 503.994 237.35 72 237.35 DL 358.022 99.35
358.022 237.35 DL 210.063 99.35 210.063 237.35 DL 503.994 99.35 503.994
237.35 DL 72 99.35 72 237.35 DL(The normal k)72 251.6 Q(eepali)-.11 E
.33 -.165(ve p)-.275 H(eriod for the KA).165 E(T\(S,G\) def)-1.221 E
(aults to 210 seconds.)-.11 E(Ho)5.5 E(we)-.275 E -.165(ve)-.275 G 2.75
(ra).165 G 2.75(tt)-2.75 G(he RP)-2.75 E 2.75(,t)-1.221 G(he)-2.75 E
-.11(ke)72 264.6 S(epali).11 E .33 -.165(ve p)-.275 H
(eriod must be at least the Re).165 E(gister_Suppression_T)-.165 E
(ime or the RP may time out the)-.385 E(\(S,G\) state before the ne)72
277.6 Q(xt Null-Re)-.165 E(gister arri)-.165 E -.165(ve)-.275 G 2.75
(s. Thus).165 F(the KA)2.75 E(T\(S,G\) is set to)-1.221 E(max\(K)72
290.6 Q(eepali)-.275 E -.165(ve)-.275 G(_Period, RP_K).165 E(eepali)
-.275 E -.165(ve)-.275 G(_Period\).).165 E F1 -.198(Ti)72 316.6 S
(mer Name: Register Stop T).198 E(imer \(RST\(S,G\)\))-.198 E 503.998
330.95 72 330.95 DL -1.012(Va)85.77 341.2 S(lue Name)1.012 E -1.012(Va)
108.696 G 102.085(lue Explanation)1.012 F 503.998 345.95 72 345.95 DL
503.998 347.95 72 347.95 DL F0(Re)85.77 358.2 Q(gister_Suppression_T)
-.165 E 38.56(ime Def)-.385 F(ault: 60 seconds)-.11 E
(Period during which a)382.516 358.2 Q(DR stops sending)382.516 371.2 Q
(Re)382.516 384.2 Q(gister)-.165 E(-encapsulated)-.22 E
(data to the RP after)382.516 397.2 Q(recei)382.516 410.2 Q(ving a Re)
-.275 E(gisterStop)-.165 E 503.998 414.95 72 414.95 DL(Re)85.77 425.2 Q
(gister_Probe_T)-.165 E 66.676(ime Def)-.385 F(ault: 5 seconds)-.11 E
-.385(Ti)382.516 425.2 S(me before RST).385 E -.165(ex)382.516 438.2 S
(pires when a DR may).165 E(send a Null-Re)382.516 451.2 Q(gister to)
-.165 E(the RP to cause it to)382.516 464.2 Q(resend a Re)382.516 477.2
Q(gisterStop)-.165 E(message.)382.516 490.2 Q 503.998 494.95 72 494.95
DL 361.861 330.95 361.861 494.95 DL 230.538 330.95 230.538 494.95 DL
503.998 330.95 503.998 494.95 DL 72 330.95 72 494.95 DL F1(5.)72 522.2 Q
/F2 14/Times-Bold@0 SF(IAN)5.5 E 3.5(AC)-.28 G(onsiderations)-3.5 E F1
(5.1.)72 548.2 Q/F3 13/Times-Bold@0 SF(PIM Addr)5.5 E(ess F)-.234 E
(amily)-.325 E F0(The PIM Address F)72 564.8 Q(amily \214eld w)-.165 E
(as chosen to be 8 bits as a tradeof)-.11 E 2.75(fb)-.275 G(etween)-2.75
E(pack)72 577.8 Q(et format and use of the IAN)-.11 E 2.75(Aa)-.385 G
(ssigned numbers.)-2.75 E(Since when the PIM pack)5.5 E(et format w)-.11
E(as)-.11 E(designed only 15 v)72 590.8 Q
(alues were assigned for Address F)-.275 E(amilies, and lar)-.165 E
(ge numbers of ne)-.198 E 2.75(wA)-.275 G(ddress)-2.75 E -.165(Fa)72
603.8 S(mily v).165 E(alues were not en)-.275 E
(visioned, 8 bits seemed lar)-.44 E(ge enough.)-.198 E(Ho)5.5 E(we)-.275
E -.165(ve)-.275 G .88 -.44(r, t).165 H(he IAN).44 E 2.75(Aa)-.385 G
(ssigns)-2.75 E(Address F)72 616.8 Q(amilies in a 16-bit \214eld.)-.165
E(Therefore, the PIM Address F)5.5 E(amily is allocated as follo)-.165 E
(ws:)-.275 E -1.221(Va)97 633.4 S
(lues 0 through 127 are designated to ha)1.221 E .33 -.165(ve t)-.22 H
(he same meaning as IAN).165 E(A-assigned Address)-.385 E -.165(Fa)97
646.4 S(mily Numbers [11].).165 E -1.221(Va)97 663 S
(lues 128 through 250 are designated to be assigned by the IAN)1.221 E
2.75(Ab)-.385 G(ased upon IESG)-2.75 E(Appro)97 676 Q -.275(va)-.165 G
(l, as de\214ned in [13].).275 E -1.221(Va)97 692.6 S
(lues 251 through 255 are designated for Pri)1.221 E -.275(va)-.275 G
(te Use, as de\214ned in [13].).275 E(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 169.221(elas Section)-.165 F 2.75
(5.1. [P)2.75 F(age 96])-.165 E EP
%%Page: 97 97
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF(5.2.)
72 85 Q/F2 13/Times-Bold@0 SF(PIM Hello Options)5.5 E F0 -1.221(Va)72
101.6 S(lues 17 through 65000 are to be assigned by the IAN)1.221 E 2.75
(A. Since)-.385 F(the space is lar)2.75 E(ge, the)-.198 E 2.75(ym)-.165
G(ay be)-2.75 E(assigned as First Come First Serv)72 114.6 Q
(ed as de\214ned in [13]. Such assignments are v)-.165 E
(alid for one year)-.275 E(,)-.44 E(and may be rene)72 127.6 Q 2.75
(wed. Permanent)-.275 F
(assignments require a speci\214cation \(see "Speci\214cation)2.75 E
(Required" in [13].\))72 140.6 Q F1(6.)72 166.6 Q/F3 14/Times-Bold@0 SF
(Security Considerations)5.5 E F0
(The IPsec authentication header [12] MA)72 183.2 Q 2.75(Yb)-1.155 G
2.75(eu)-2.75 G(sed to pro)-2.75 E(vide data inte)-.165 E
(grity protection and)-.165 E
(groupwise data origin authentication of PIM protocol messages.)72 196.2
Q(Authentication of PIM messages)5.5 E(can protect ag)72 209.2 Q
(ainst unw)-.055 E(anted beha)-.11 E
(viors caused by unauthorized or altered PIM messages.)-.22 E F1(6.1.)72
235.2 Q F2(Attacks based on f)5.5 E(or)-.325 E(ged messages)-.13 E F0
(The e)72 251.8 Q(xtent of possible damage depends on the type of count\
erfeit messages accepted.)-.165 E 1.76 -.88(We n)5.5 H -.165(ex).88 G(t)
.165 E(consider the impact of possible for)72 264.8 Q
(geries, including for)-.198 E(ged link-local \(Join/Prune, Hello, and)
-.198 E(Assert\) and for)72 277.8 Q(ged unicast \(Re)-.198 E
(gister and Re)-.165 E(gisterStop\) messages.)-.165 E F1 2.75(6.1.1. F)
72 303.8 R(or)-.275 E(ged link-local messages)-.11 E F0(Join/Prune, Hel\
lo, and Assert messages are all sent to the link-local ALL_PIM_R)72
320.4 Q(OUTERS)-.44 E(multicast addresses, and thus are not forw)72
333.4 Q(arded by a compliant router)-.11 E 5.5(.A)-.605 G(for)-2.75 E
(ged message of this)-.198 E(type can only reach a LAN if it w)72 346.4
Q(as sent by a local host or if it w)-.11 E(as allo)-.11 E
(wed onto the LAN by a)-.275 E(compromised or non-compliant router)72
359.4 Q(.)-.605 E 14(1. A)72 376 R(for)2.75 E
(ged Join/Prune message can cause multicast traf)-.198 E
(\214c to be deli)-.275 E -.165(ve)-.275 G(red to links where there).165
E(are no le)97 389 Q(gitimate requesters, potentially w)-.165 E
(asting bandwidth on that link.)-.11 E 2.75(Af)5.5 G(or)-2.75 E(ged lea)
-.198 E -.165(ve)-.22 G(message on a multi-access LAN is generally not \
a signi\214cant attack in PIM, because an)97 402 Q(y)-.165 E(le)97 415 Q
(gitimately joined router on the LAN w)-.165 E(ould o)-.11 E -.165(ve)
-.165 G(rride the lea).165 E .33 -.165(ve w)-.22 H
(ith a join before the).165 E(upstream router stops forw)97 428 Q
(arding data to the LAN.)-.11 E 16.75(2. By)72 444.6 R(for)2.75 E(ging \
a Hello message, an unauthorized router can cause itself to be elected \
as the)-.198 E(designated router on a LAN.)97 457.6 Q
(The designated router on a LAN is \(in the absence of asserts\))5.5 E
(responsible for forw)97 470.6 Q(arding traf)-.11 E
(\214c to that LAN on behalf of an)-.275 E 2.75(yl)-.165 G
(ocal members.)-2.75 E(The)5.5 E
(designated router is also responsible for re)97 483.6 Q(gister)-.165 E
(-encapsulating to the RP an)-.22 E 2.75(yp)-.165 G(ack)-2.75 E
(ets that)-.11 E(are originated by hosts on the LAN.)97 496.6 Q
(Thus, the ability of local hosts to send and recei)5.5 E -.165(ve)-.275
G(multicast traf)97 509.6 Q(\214c may be compromised by a for)-.275 E
(ged Hello message.)-.198 E 14(3. By)72 526.2 R(for)2.75 E
(ging an Assert message on a multi-access LAN, an attack)-.198 E
(er could cause the le)-.11 E(gitimate)-.165 E(designated forw)97 539.2
Q(arder to stop forw)-.11 E(arding traf)-.11 E(\214c to the LAN.)-.275 E
(Such a for)5.5 E(gery w)-.198 E(ould pre)-.11 E -.165(ve)-.275 G(nt)
.165 E(an)97 552.2 Q 2.75(yh)-.165 G(osts do)-2.75 E
(wnstream of that LAN from recei)-.275 E(ving traf)-.275 E(\214c.)-.275
E F1 2.75(6.1.2. F)72 578.2 R(or)-.275 E(ged unicast messages)-.11 E F0
(Re)72 594.8 Q(gister messages and)-.165 E(Re)5.5 E
(gisterStop messages are forw)-.165 E
(arded by intermediate routers to their)-.11 E
(destination using normal IP forw)72 607.8 Q 2.75(arding. W)-.11 F
(ithout data origin authentication, an attack)-.44 E(er who is)-.11 E
(located an)72 620.8 Q(ywhere in the netw)-.165 E
(ork may be able to for)-.11 E(ge a Re)-.198 E(gister or Re)-.165 E
(gisterStop message.)-.165 E -.88(We)5.5 G(consider the ef)72 633.8 Q
(fect of a for)-.275 E(gery of each of these messages ne)-.198 E(xt.)
-.165 E 19.5(1B)72 650.4 S 2.75(yf)-19.5 G(or)-2.75 E(ging a Re)-.198 E
(gister message, an attack)-.165 E(er can cause the RP to inject for)
-.11 E(ged traf)-.198 E(\214c onto the)-.275 E(shared multicast tree.)97
663.4 Q 19.5(2B)72 680 S 2.75(yf)-19.5 G(or)-2.75 E(ging a Re)-.198 E
(gister)-.165 E(-stop message, an attack)-.22 E(er can pre)-.11 E -.165
(ve)-.275 G(nt a le).165 E(gitimate DR from)-.165 E(Re)97 693 Q
(gistering pack)-.165 E(ets to the RP)-.11 E 5.5(.T)-1.221 G
(his can pre)-5.5 E -.165(ve)-.275 G
(nt local hosts on that LAN from sending).165 E(multicast pack)97 706 Q
(ets.)-.11 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E
160.971(elas Section)-.165 F 2.75(6.1.2. [P)2.75 F(age 97])-.165 E EP
%%Page: 98 98
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E(The abo)72 85 Q .33 -.165
(ve t)-.165 H .22 -.11(wo P).165 H
(IM messages are not changed by intermediate routers and need only be e)
.11 E(xamined)-.165 E(by the intended recei)72 98 Q -.165(ve)-.275 G
3.96 -.605(r. T).165 H
(hus these messages can be authenticated end-to-end, using AH.).605 E
(Attacks on Re)72 111 Q(gister and Re)-.165 E
(gisterStop messages do not apply to a PIM-SSM-only implementation,)
-.165 E(as these messages are not required for PIM-SSM.)72 124 Q/F1 11
/Times-Bold@0 SF(6.2.)72 150 Q/F2 13/Times-Bold@0 SF
(Non-cryptographic A)5.5 E(uthentication Mechanisms)-.65 E F0 2.75(AP)72
166.6 S(IM router SHOULD pro)-2.75 E
(vide an option to limit the set of neighbors from which it will accept)
-.165 E(Join/Prune, Assert, and Hello messages.)72 179.6 Q
(Either static con\214guration of IP addresses or an IPsec)5.5 E
(security association may be used.)72 192.6 Q
(Furthermore, a PIM router SHOULD NO)5.5 E 2.75(Ta)-.44 G
(ccept protocol)-2.75 E
(messages from a router from which it has not yet recei)72 205.6 Q -.165
(ve)-.275 G 2.75(dav).165 G(alid Hello message.)-3.025 E 2.75(AD)72
222.2 S(esignated Router MUST NO)-2.75 E 2.75(Tr)-.44 G -.165(eg)-2.75 G
(ister).165 E(-encapsulate a pack)-.22 E
(et and send it to the RP unless the)-.11 E(source address of the pack)
72 235.2 Q(et is a le)-.11 E -.055(ga)-.165 G 2.75(la).055 G
(ddress for the subnet on which the pack)-2.75 E(et w)-.11 E(as recei)
-.11 E -.165(ve)-.275 G(d.).165 E(Similarly)72 248.2 Q 2.75(,aD)-.715 G
(esignated Router SHOULD NO)-2.75 E 2.75(Ta)-.44 G(ccept a Re)-2.75 E
(gisterStop pack)-.165 E(et whose IP source)-.11 E(address is not a v)72
261.2 Q(alid RP address for the local domain.)-.275 E
(An implementation SHOULD pro)72 277.8 Q(vide a mechanism to allo)-.165
E 2.75(wa)-.275 G 2.75(nR)-2.75 G 2.75(Pt)-2.75 G 2.75(or)-2.75 G
(estrict the range of source)-2.75 E(addresses from which it accepts Re)
72 290.8 Q(gister)-.165 E(-encapsulated pack)-.22 E(ets.)-.11 E
(All options that restrict the range of addresses from which pack)72
307.4 Q(ets are accepted MUST def)-.11 E(ault to)-.11 E(allo)72 320.4 Q
(wing all pack)-.275 E(ets.)-.11 E F1(6.3.)72 346.4 Q F2 -.65(Au)5.5 G
(thentication using IPsec).65 E F0(The IPsec [12] transport mode using \
the Authentication Header \(AH\) is the recommended)72 363 Q
(method to pre)72 376 Q -.165(ve)-.275 G(nt the abo).165 E .33 -.165
(ve a)-.165 H(ttacks ag).165 E(ainst PIM.)-.055 E
(The speci\214c AH authentication algorithm and)5.5 E(parameters, inclu\
ding the choice of authentication algorithm and the choice of k)72 389 Q
-.165(ey)-.11 G 2.75(,a)-.55 G(re con\214gured)-2.75 E(by the netw)72
402 Q(ork administrator)-.11 E 5.5(.W)-.605 G
(hen IPsec authentication is used, a PIM router should reject)-5.5 E
(\(drop without processing\) an)72 415 Q 2.75(yu)-.165 G
(nauthorized PIM protocol messages.)-2.75 E(As of this writing, the IPs\
ec anti-replay option does not handle the case of a Security Associatio\
n)72 431.6 Q(identi\214ed by a multicast destination address.)72 444.6 Q
(Thus, the anti-replay option currently must be)5.5 E
(disabled on these Security Associations.)72 457.6 Q
(The anti-replay option SHOULD be enabled on all)5.5 E
(security associations ha)72 470.6 Q
(ving a unicast destination address.)-.22 E 1.76 -.88(To u)72 487.2 T
(se IPsec, the administrator of a PIM netw).88 E
(ork con\214gures each PIM router with one or more)-.11 E(Security Asso\
ciations and associated SPI\(s\) that are used by senders to sign PIM p\
rotocol)72 500.2 Q(messages and are used by recei)72 513.2 Q -.165(ve)
-.275 G(rs to authenticate recei).165 E -.165(ve)-.275 G 2.75(dP).165 G
(IM protocol messages.)-2.75 E(This)5.5 E(document does not describe pr\
otocols for establishing Security Associations.)72 526.2 Q
(It assumes that)5.5 E
(manual con\214guration of Security Associations is performed, b)72
539.2 Q(ut it does not preclude the use of a)-.22 E(ne)72 552.2 Q
(gotiation protocol such as The Internet K)-.165 E .33 -.165(ey E)-.275
H(xchange [9] to establish Security Associations.).165 E(The follo)72
568.8 Q(wing sections describe the Security Associations required to pr\
otect PIM protocol)-.275 E(messages.)72 581.8 Q F1 2.75(6.3.1. Pr)72
607.8 R(otecting link-local multicast messages)-.198 E F0(The netw)72
624.4 Q(ork administrator de\214nes a Security Association \(SA\) and S\
ecurity P)-.11 E(arameters Inde)-.165 E(x)-.165 E(\(SPI\) that is to be\
 used to authenticate all link-local PIM protocol messages \(Hello, Joi\
n/Prune,)72 637.4 Q(and Assert\) on each link in a PIM domain.)72 650.4
Q(All link-local PIM protocol messages use SPI 0.)5.5 E
(The Security Polic)72 667 Q 2.75(yD)-.165 G(atabase at a PIM router sh\
ould be con\214gured to ensure that all incoming)-2.75 E
(and outgoing Join/Prune, Assert, and Hello pack)72 680 Q
(ets use the SA associated with the interf)-.11 E(ace to)-.11 E
(which the pack)72 693 Q(et is sent.)-.11 E
(Note that, according to [12] there is nominally a dif)72 709.6 Q
(ferent Security Association Database \(SAD\))-.275 E
(for each router interf)72 722.6 Q 2.75(ace. Thus,)-.11 F
(the selected Security Association for an inbound PIM pack)2.75 E
(et can)-.11 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E
160.971(elas Section)-.165 F 2.75(6.3.1. [P)2.75 F(age 98])-.165 E EP
%%Page: 99 99
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E -.275(va)72 85 S
(ry depending on the interf).275 E(ace on which the pack)-.11 E(et arri)
-.11 E -.165(ve)-.275 G 2.75(d. This).165 F -.11(fa)2.75 G(ct allo).11 E
(ws the netw)-.275 E(ork)-.11 E(administrator to use dif)72 98 Q
(ferent authentication methods for each link, e)-.275 E -.165(ve)-.275 G
2.75(nt).165 G(hough the destination)-2.75 E
(address is the same for all link-local PIM pack)72 111 Q(ets, re)-.11 E
-.055(ga)-.165 G(rdless of interf).055 E(ace.)-.11 E/F1 11/Times-Bold@0
SF 2.75(6.3.2. Pr)72 140.6 R(otecting unicast messages)-.198 E F0
(IPSec can also be used to pro)72 157.2 Q
(vide data origin authentication and data inte)-.165 E
(grity protection for the)-.165 E(Re)72 170.2 Q(gister and Re)-.165 E
(gisterStop unicast messages.)-.165 E F1 2.75(6.3.2.1. Register)72 196.2
R(messages)2.75 E F0(The Security Polic)72 212.8 Q 2.75(yD)-.165 G
(atabase at e)-2.75 E -.165(ve)-.275 G
(ry PIM router is con\214gured to select a Security Association to).165
E(use when sending PIM Re)72 225.8 Q(gister pack)-.165 E
(ets to each rendezv)-.11 E(ous point.)-.22 E
(In the most general mode of operation, the Security Polic)72 242.4 Q
2.75(yD)-.165 G(atabase at each DR is con\214gured to)-2.75 E
(select a unique SA and SPI for traf)72 255.4 Q(\214c sent to each RP)
-.275 E 5.5(.T)-1.221 G(his allo)-5.5 E(ws each DR to ha)-.275 E .33
-.165(ve a d)-.22 H(if).165 E(ferent)-.275 E
(authentication algorithm and k)72 268.4 Q .33 -.165(ey t)-.11 H 2.75
(ot).165 G(alk to the RP)-2.75 E 5.5(.H)-1.221 G -.275(ow)-5.5 G -2.365
-.275(ev e).275 H .88 -.44(r, t).275 H(his creates a daunting k).44 E
-.165(ey)-.11 G(management and distrib)72 281.4 Q
(ution problem for the netw)-.22 E(ork administrator)-.11 E 5.5(.T)-.605
G(herefore, it may be)-5.5 E(preferable in PIM domains where all Design\
ated Routers are under a single administrati)72 294.4 Q -.165(ve)-.275 G
(control, to use the same authentication algorithm parameters \(includi\
ng the k)72 307.4 Q -.165(ey)-.11 G 2.75(\)f).165 G(or all Re)-2.75 E
(gistered)-.165 E(pack)72 320.4 Q(ets in a domain, re)-.11 E -.055(ga)
-.165 G(rdless of who is the RP and re).055 E -.055(ga)-.165 G
(rdless of who is the DR.).055 E(In this "single shared k)72 337 Q -.165
(ey)-.11 G 2.75("m).165 G(ode of operation, the netw)-2.75 E
(ork administrator must choose an SPI for)-.11 E
(each DR that will be used to send it PIM protocol pack)72 350 Q 2.75
(ets. The)-.11 F(Security Polic)2.75 E 2.75(yD)-.165 G(atabase at e)
-2.75 E -.165(ve)-.275 G(ry).165 E(DR is con\214gured to select a Secur\
ity Association \(including the authentication algorithm,)72 363 Q
(authentication parameters, and this SPI\) when sending Re)72 376 Q
(gister messages to this RP)-.165 E(.)-1.221 E(By using a single authen\
tication algorithm and associated parameters, the k)72 392.6 Q .33 -.165
(ey d)-.11 H(istrib).165 E(ution)-.22 E(problem is simpli\214ed.)72
405.6 Q(Note ho)5.5 E(we)-.275 E -.165(ve)-.275 G .88 -.44(r, t).165 H
(hat this method has the property that, in order to change).44 E
(the authentication method or authentication k)72 418.6 Q .33 -.165
(ey u)-.11 H(sed, all routers in the domain must be updated.).165 E F1
2.75(6.3.2.2. Register)72 444.6 R(Stop messages)2.75 E F0(Similarly)72
461.2 Q 2.75(,t)-.715 G(he Security Polic)-2.75 E 2.75(yD)-.165 G
(atabase at each Rendezv)-2.75 E
(ous Point should be con\214gured to choose)-.22 E 2.75(aS)72 474.2 S
(ecurity Association to use when sending Re)-2.75 E
(gister Stop messages.)-.165 E(Because Re)5.5 E(gister Stop)-.165 E
(messages are unicast to the destination DR, a dif)72 487.2 Q
(ferent Security Association and a potentially)-.275 E
(unique SPI is required for each DR.)72 500.2 Q(In order to simplify th\
e management problem, it may be acceptable to use the same authenticati\
on)72 516.8 Q(algorithm and authentication parameters, re)72 529.8 Q
-.055(ga)-.165 G(rdless of the sending RP and re).055 E -.055(ga)-.165 G
(rdless of the).055 E(destination DR.)72 542.8 Q
(Although a unique Security Association is needed for each DR, the same)
5.5 E(authentication algorithm and authentication algorithm parameters \
\(secret k)72 555.8 Q -.165(ey)-.11 G 2.75(\)c).165 G(an be shared by)
-2.75 E(all DRs and by all RPs.)72 568.8 Q F1(6.4.)72 598.4 Q/F2 13
/Times-Bold@0 SF(Denial of Ser)5.5 E(vice Attacks)-.13 E F0
(There are a number of possible denial of service attacks ag)72 615 Q
(ainst PIM that can be caused by)-.055 E(generating f)72 628 Q
(alse PIM protocol messages or e)-.11 E -.165(ve)-.275 G 2.75(nb).165 G
2.75(yg)-2.75 G(enerating data f)-2.75 E(alse traf)-.11 E 2.75
(\214c. Authenticating)-.275 F(PIM protocol traf)72 641 Q(\214c pre)
-.275 E -.165(ve)-.275 G(nts some, b).165 E
(ut not all of these attacks.)-.22 E -1.1 -.88(Tw o)5.5 H
(of the possible attacks)3.63 E(include:)72 654 Q 21.337(-S)72 670.6 S
(ending pack)-21.337 E(ets to man)-.11 E 2.75(yd)-.165 G(if)-2.75 E
(ferent group addresses quickly can be a denial of service attack)-.275
E(in and of itself.)97 683.6 Q(This will cause man)5.5 E 2.75(yr)-.165 G
-.165(eg)-2.75 G(ister).165 E(-encapsulated pack)-.22 E
(ets, loading the DR, the RP)-.11 E(,)-1.221 E
(and the routers between the DR and the RP)97 696.6 Q(.)-1.221 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 169.221
(elas Section)-.165 F 2.75(6.4. [P)2.75 F(age 99])-.165 E EP
%%Page: 100 100
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E 21.337(-F)72 85 S(or)-21.502
E(ging Join messages can cause a multicast tree to get set up.)-.198 E
2.75(Al)5.5 G(ar)-2.75 E(ge number of for)-.198 E(ged)-.198 E
(joins can consume router resources and result in denial of service.)97
98 Q/F1 11/Times-Bold@0 SF(7.)72 124 Q/F2 14/Times-Bold@0 SF -.7(Au)5.5
G(thors' Addr).7 E(esses)-.252 E F0(Bill Fenner)108 143 Q -1.221(AT)108
156 S(&T Labs - Research)1.221 E(75 W)108 169 Q(illo)-.44 E 2.75(wR)
-.275 G(oad)-2.75 E(Menlo P)108 182 Q(ark, CA 94025)-.165 E
(fenner@research.att.com)108 195 Q(Mark Handle)108 220 Q(y)-.165 E
(ICIR/ICSI)108 233 Q(1947 Center St, Suite 600)108 246 Q(Berk)108 259 Q
(ele)-.11 E 1.43 -.715(y, C)-.165 H 2.75(A9).715 G(4708)-2.75 E
(mjh@icir)108 272 Q(.or)-.605 E(g)-.198 E(Hugh Holbrook)108 297 Q
(Cisco Systems)108 310 Q(170 W)108 323 Q 2.75(.T)-1.012 G(asman Dri)
-3.63 E -.165(ve)-.275 G(San Jose, CA 95134)108 336 Q
(holbrook@cisco.com)108 349 Q(Isidor K)108 374 Q(ouv)-.385 E(elas)-.165
E(Cisco Systems)108 387 Q(170 W)108 400 Q 2.75(.T)-1.012 G(asman Dri)
-3.63 E -.165(ve)-.275 G(San Jose, CA 95134)108 413 Q -.11(ko)108 426 S
(uv).11 E(elas@cisco.com)-.165 E F1(8.)72 471 Q F2(Ackno)5.5 E
(wledgments)-.14 E F0(PIM-SM w)72 487.6 Q(as designed o)-.11 E -.165(ve)
-.165 G 2.75(rm).165 G(an)-2.75 E 2.75(yy)-.165 G(ears by a lar)-2.75 E
(ge group of people, including ideas, comments,)-.198 E
(and corrections from Deborah Estrin, Dino F)72 500.6 Q
(arinacci, Ahmed Helmy)-.165 E 2.75(,D)-.715 G -.22(av)-2.75 G
(id Thaler).22 E 2.75(,S)-.44 G(te)-2.75 E -.165(ve)-.275 G(Deering, V)
72 513.6 Q(an Jacobson, C. Liu, Puneet Sharma, Liming W)-1.221 E(ei, T)
-.88 E(om Pusateri, T)-.88 E(on)-.88 E 2.75(yB)-.165 G(allardie, Scott)
-2.75 E(Brim, Jon Cro)72 526.6 Q(wcroft, P)-.275 E
(aul Francis, Joel Halpern, Horst Hodel, Polly Huang, Stephen Ostro)
-.165 E(wski,)-.275 E
(Lixia Zhang, Girish Chandranmenon, Brian Haberman, Hal Sandick, Mik)72
539.6 Q 2.75(eM)-.11 G(roz and Garry)-2.75 E -.165(Ku)72 552.6 S(mp.)
.165 E(Thanks are due to the American Licorice Compan)72 569.2 Q 1.43
-.715(y, f)-.165 H(or its obscure b).715 E
(ut possibly essential role in)-.22 E(the creation of this document.)72
582.2 Q F1(9.)72 608.2 Q F2(Refer)5.5 E(ences)-.252 E F0([1] T)72 624.8
Q 2.75(.B)-.814 G(ates , R. Chandra , D. Katz , Y)-2.75 E 2.75(.R)-1.419
G(ekhter)-2.75 E 2.75(,")-.44 G
(Multiprotocol Extensions for BGP-4", RFC)-2.75 E(2283)97 637.8 Q
([2] D. Black, "Dif)72 654.4 Q(ferentiated Services and T)-.275 E
(unnels", RFC 2983.)-.495 E([3] S.E. Deering, "Host e)72 671 Q
(xtensions for IP multicasting", RFC 1112, Aug 1989.)-.165 E
([4] S. Deering, W)72 687.6 Q 2.75(.F)-1.012 G(enner)-2.75 E 2.75(,B)
-.44 G 2.75(.H)-2.75 G(aberman, "Multicast Listener Disco)-2.75 E -.165
(ve)-.165 G(ry \(MLD\) for IPv6", RFC).165 E(2710.)97 700.6 Q
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 171.971
(elas Section)-.165 F 2.75(9. [P)2.75 F(age 100])-.165 E EP
%%Page: 101 101
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E
([5] S. Deering, R. Hinden, "Internet Protocol, V)72 85 Q
(ersion 6 \(IPv6\) Speci\214cation", RFC 2460.)-1.221 E
([6] B. Cain, S. Deering, I. K)72 101.6 Q(ouv)-.385 E(elas, B. Fenner)
-.165 E 2.75(,A)-.44 G 2.75(.T)-2.75 G -.055(hy)-2.75 G(ag).055 E
(arajan, "Internet Group Management)-.055 E(Protocol, V)97 114.6 Q
(ersion 3", RFC 3376.)-1.221 E([7] W)72 131.2 Q 2.75(.F)-1.012 G(enner)
-2.75 E 2.75(,M)-.44 G 2.75(.H)-2.75 G(andle)-2.75 E 1.43 -.715(y, R)
-.165 H 2.75(.K).715 G(ermode, D. Thaler)-3.025 E 2.75(,")-.44 G
(Bootstrap Router \(BSR\) Mechanism for)-2.75 E
(PIM Sparse Mode", draft-ietf-pim-sm-bsr)97 144.2 Q(-03.txt, w)-.22 E
(ork in progress.)-.11 E([8] M. Handle)72 160.8 Q 1.43 -.715(y, I)-.165
H 2.75(.K).715 G(ouv)-3.135 E(elas, T)-.165 E 2.75(.S)-.814 G
(peakman, L. V)-2.75 E(icisano, "Bi-directional Protocol Independent)
-.66 E(Multicast", draft-ietf-pim-bidir)97 173.8 Q(-04.txt, w)-.22 E
(ork in progress.)-.11 E([9] D. Harkins , D. Carrell, "The Internet K)72
190.4 Q .33 -.165(ey E)-.275 H(xchange \(IKE\)", RFC 2409.).165 E([10] \
H. Holbrook, B. Cain, "Source-Speci\214c Multicast for IP", draft-holbr\
ook-ssm-00.txt, w)72 207 Q(ork in)-.11 E(progress.)97 220 Q([11] IAN)72
236.6 Q(A, "Address F)-.385 E(amily Numbers", link)-.165 E
(ed from http://www)-.11 E(.iana.or)-.715 E(g/numbers.html)-.198 E
([12] S. K)72 253.2 Q(ent, R. Atkinson, "Security Architecture for the \
Internet Protocol.", RFC 2401.)-.275 E([13] T)72 269.8 Q 2.75(.N)-.814 G
(arten , H. Alv)-2.75 E(estrand, "Guidelines for Writing an IAN)-.165 E
2.75(AC)-.385 G(onsiderations Section in)-2.75 E(RFCs", RFC 2434.)97
282.8 Q([14] D. Thaler)72 299.4 Q 2.75(,")-.44 G
(Interoperability Rules for Multicast Routing Protocols", RFC 2715.)
-2.75 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 171.971
(elas Section)-.165 F 2.75(9. [P)2.75 F(age 101])-.165 E EP
%%Page: 102 102
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 11/Times-Bold@0 SF(10.)72
85 Q/F2 14/Times-Bold@0 SF(Index)5.5 E/F3 10/Times-Roman@0 SF
(Assert\(*,G\))72 97 Q F0 11(..........................)11.07 G F3(18,)
-6 E/F4 10/Times-Bold@0 SF(92)A F3(Assert\(S,G\))72 109 Q F0 11
(..........................)10.51 G F3(18,)-6 E F4(92)A F3
(AssertCancel\(*,G\))72 121 Q F0 11(........................)10.8 G F3
(69,)-6 E F4(70)A F3(AssertCancel\(S,G\))72 133 Q F0 11
(........................)10.24 G F3(57,64,)-18.5 E F4(70)A F3(AssertT)
72 145 Q(imer\(*,G,I\))-.35 E F0 11(........................)8.65 G F3
(11,16,64,)-31 E F4(95)A F3(AssertT)72 157 Q(imer\(S,G,I\))-.35 E F0 11
(........................)8.09 G F3(12,16,59,)-31 E F4(95)A F3(AssertT)
72 169 Q(rackingDesired\(*,G,I\))-.35 E F0 11(.....................)7.14
G F4(66)-18.5 E F3(,67,68)A(AssertT)72 181 Q(rackingDesired\(S,G,I\))
-.35 E F0 11(.....................)6.58 G F3(60,)-31 E F4(61)A F3
(,62,63)A(AssertW)72 193 Q(inner\(*,G,I\))-.4 E F0 11
(........................)3.15 G F3(14,16,66,69,)-43.5 E F4(71)A F3
(AssertW)72 205 Q(inner\(S,G,I\))-.4 E F0 11(........................)
2.59 G F3(14,16,61,63,71,)-56 E F4(71)A F3(AssertW)72 217 Q
(innerMetric\(*,G,I\))-.4 E F0 11(......................)3.99 G F3(69,)
-6 E F4(71)A F3(AssertW)72 229 Q(innerMetric\(S,G,I\))-.4 E F0 11
(......................)3.43 G F3(63,)-6 E F4(71)A F3(assert_metric)72
241 Q F0 11(..........................)4.68 G F4(69)6.5 E F3(Assert_Ov)
72 253 Q(erride_Interv)-.15 E(al)-.25 E F0 11(......................)
11.21 G F3(63,69,)-18.5 E F4(95)A F3(Assert_T)72 265 Q(ime)-.35 E F0 11
(..........................)6.69 G F3(63,69,)-18.5 E F4(95)A F3 -1.11
(AT)72 277 S(\(*,G,I\))1.11 E F0 11(...........................)4.82 G
F3(11,16,64,92,)-43.5 E F4(95)A F3 -1.11(AT)72 289 S(\(S,G,I\))1.11 E F0
11(...........................)4.26 G F3(12,16,59,92,)-43.5 E F4(95)A F3
(CheckSwitchT)72 301 Q(oSpt\(S,G\))-.8 E F0 11(.......................)
.33 G F3(18,)-6 E F4(19)A F3(CouldAssert\(*,G,I\))72 313 Q F0 11
(........................)8.29 G F3(65,)-43.5 E F4(66)A F3(,67,68,70)A
(CouldAssert\(S,G,I\))72 325 Q F0 11(........................)7.73 G F3
(59,)-56 E F4(60)A F3(,61,62,63,70)A(CouldRe)72 337 Q(gister\(S,G\))-.15
E F0 11(........................)5.93 G F3(26,)-6 E F4(28)A F3(Def)72
349 Q(ault_Hello_Holdtime)-.1 E F0 11(......................)13.11 G F3
(22)6.5 E(DirectlyConnected\(S\))72 361 Q F0 11(.......................)
11.49 G F3(18,)-43.5 E F4(18)A F3(,19,28,73)A(Do)72 373 Q
(wnstreamJPState\(*,*,RP)-.25 E(,I\))-1.11 E F0 11
(.....................)7.84 G F4(15)-6 E F3(,74)A(Do)72 385 Q
(wnstreamJPState\(*,G,I\))-.25 E F0 11(......................)5.49 G F4
(15)6.5 E F3(Do)72 397 Q(wnstreamJPState\(S,G,I\))-.25 E F0 11
(......................)4.93 G F4(15)-6 E F3(,27)A(Do)72 409 Q
(wnstreamJPState\(S,G,rpt,I\))-.25 E F0 11(.....................)5.07 G
F4(15)6.5 E F3(DR\(I\))72 421 Q F0 11(............................)6.62
G F4(22)6.5 E F3(dr_is_better\(a,b,I\))72 433 Q F0 11
(........................)13.3 G F3(22,)-6 E F4(22)A F3(DR_priority)72
445 Q F0 11(..........................)9.11 G F3(21,22)-6 E(ET\(*,*,RP)
72 457 Q(,I\))-1.11 E F0 11(..........................)7.17 G F3
(10,31,92,)-31 E F4(94)A F3(ET\(*,G,I\))72 469 Q F0 11
(...........................)4.82 G F3(11,34,92,)-31 E F4(94)A F3
(ET\(S,G,I\))72 481 Q F0 11(...........................)4.26 G F3
(12,37,92,)-31 E F4(94)A F3(ET\(S,G,rpt,I\))72 493 Q F0 11
(..........................)4.4 G F3(13,39,42,92,)-43.5 E F4(94)A F3
(GenID)72 505 Q F0 11(............................)3.29 G F3(10,11,12,)
-106 E F4(21)A F3(,45,48,50,52,59,65)A(Hash_Function)72 517 Q F0 11
(.........................)10.64 G F3(8,)-1 E F4(76)A F3(Hello_Holdtime)
72 529 Q F0 11(.........................)6.75 G F3(22,)-6 E F4(94)A F3
(Hello_Period)72 541 Q F0 11(..........................)4.67 G F3(20,)-6
E F4(94)A F3(HT\(I\))72 553 Q F0 11(............................)7.18 G
F4(20)-6 E F3(,94)A(IGMP)72 565 Q F0 11(............................)5.5
G F3(5,6,11,15,72,76)-46 E(immediate_olist\(*,*,RP\))72 577 Q F0 11
(.......................).91 G F4(14)-6 E F3(,45)A
(immediate_olist\(*,G\))72 589 Q F0 11(.......................)13.42 G
F4(14)-6 E F3(,48)A(immediate_olist\(S,G\))72 601 Q F0 11
(.......................)12.86 G F4(14)-18.5 E F3(,27,52)A
(in\214nite_assert_metric\(\))72 613 Q F0 11(.......................)
5.93 G F4(70)6.5 E F3(inherited_olist\(S,G\))72 625 Q F0 11
(........................)5.78 G F4(14)-56 E F3(,18,29,52,61,78)A
(inherited_olist\(S,G,rpt\))72 637 Q F0 11(.......................)5.92
G F4(14)-56 E F3(,18,19,54,56,58)A(I_Am_Assert_Loser\(*,G,I\))72 649 Q
F0 11(......................)4.14 G F3(16)6.5 E
(I_Am_Assert_Loser\(S,G,I\))72 661 Q F0 11(......................)3.58 G
F3(16)6.5 E(I_am_DR\(I\))72 673 Q F0 11(..........................)8.57
G F3(14,)-43.5 E F4(22)A F3(,28,61,66)A(I_am_RP\(G\))72 685 Q F0 11
(..........................)6.34 G F3(29,)-6 E F4(29)A F3(J/P_Holdtime)
72 697 Q F0 11(..........................)2.99 G F3
(32,35,38,42,46,49,53,87,)-106 E F4(94)A F3(,95)A(J/P_Ov)72 709 Q
(erride_Interv)-.15 E(al\(I\))-.25 E F0 11(.......................).79 G
F3(33,36,38,42,87,)-56 E F4(94)A F3(JoinDesired\(*,*,RP\))72 721 Q F0 11
(........................)3.84 G F4(45)-6 E F3(,56)A F0(Fenner/Handle)72
769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 166.471(elas Section)-.165 F 2.75
(10. [P)2.75 F(age 102])-.165 E EP
%%Page: 103 103
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 10/Times-Roman@0 SF
(JoinDesired\(*,G\))72 84 Q F0 11(.........................)2.6 G F1
(11,)-43.5 E/F2 10/Times-Bold@0 SF(48)A F1(,56,61,69)A
(JoinDesired\(S,G\))72 96 Q F0 11(.........................)2.04 G F1
(12,19,)-56 E F2(52)A F1(,61,62,64)A(joins\(*,*,RP\(G\)\))72 108 Q F0 11
(.........................)4.53 G F1(14)6.5 E(joins\(*,*,RP\))72 120 Q
F0 11(..........................)4.66 G F1(14,)-31 E F2(15)A F1(,60,66)A
(joins\(*,G\))72 132 Q F0 11(...........................)3.42 G F1(14,)
-31 E F2(15)A F1(,60,66)A(joins\(S,G\))72 144 Q F0 11
(...........................)2.86 G F1(14,)-18.5 E F2(15)A F1(,60)A
(JT\(*,*,RP\))72 156 Q F0 11(...........................).36 G F1
(10,44,92,)-31 E F2(95)A F1(JT\(*,G\))72 168 Q F0 11
(...........................)12.87 G F1(11,47,92,)-31 E F2(95)A F1
(JT\(S,G\))72 180 Q F0 11(...........................)12.31 G F1
(12,50,92,)-31 E F2(95)A F1(KA)72 192 Q(T\(S,G\))-1.11 E F0 11
(...........................)2.87 G F1(12,17,18,19,28,29,52,78,92,)-106
E F2(95)A F1 -.25(Ke)72 204 S(epali).25 E -.15(ve)-.25 G -.35(Ti).15 G
(mer\(S,G\)).35 E F0 11(.......................)13.33 G F1
(12,17,18,18,19,28,29,52,78,92,)-118.5 E F2(95)A F1 -.25(Ke)72 216 S
(epali).25 E -.15(ve)-.25 G(_Period).15 E F0 11
(.........................).75 G F1(18,)-6 E F2(95)A F1(LAN_delay_def)72
228 Q(ault)-.1 E F0 11(........................)5.62 G F1(24,)-6 E F2
(93)A F1(lan_delay_enabled\(I\))72 240 Q F0 11(........................)
.53 G F2(23)-6 E F1(,25)A(LAN_Prune_Delay)72 252 Q F0 11
(........................)7.74 G F2(21)6.5 E F1(local_recei)72 264 Q
-.15(ve)-.25 G(r_e).15 E(xclude\(S,G,I\))-.15 E F0 11
(.....................)6.79 G F2(15)6.5 E F1(local_recei)72 276 Q -.15
(ve)-.25 G(r_include\(*,G,I\)).15 E F0 11(.....................)8.86 G
F2(15)-18.5 E F1(,66,74)A(local_recei)72 288 Q -.15(ve)-.25 G
(r_include\(S,G,I\)).15 E F0 11(.....................)8.3 G F2(15)-18.5
E F1(,61,74)A(lost_assert\(*,G\))72 300 Q F0 11
(.........................)8.15 G F1(14,)-18.5 E F2(15)A F1(,60)A
(lost_assert\(*,G,I\))72 312 Q F0 11(.........................)2.32 G F1
(14,15,)-18.5 E F2(71)A F1(lost_assert\(S,G\))72 324 Q F0 11
(.........................)7.59 G F1(14,)-6 E F2(15)A F1
(lost_assert\(S,G,I\))72 336 Q F0 11(.........................)1.76 G F1
(14,15,)-18.5 E F2(71)A F1(lost_assert\(S,G,rpt\))72 348 Q F0 11
(........................)7.73 G F2(15)6.5 E F1
(lost_assert\(S,G,rpt,I\))72 360 Q F0 11(........................)1.9 G
F1(15,)-6 E F2(71)A F1(MBGP)72 372 Q F0 11(............................)
2.16 G F1(4,5)4 E(MFIB)72 384 Q F0 11(............................)6.05
G F1(5,9)4 E(MLD)72 396 Q F0 11(............................)8.28 G F1
(5,6,11,15,72,76)-46 E(MRIB)72 408 Q F0 11(............................)
4.94 G F2(4)-128.5 E F1(,5,8,10,12,16,44,46,47,54,70,75,92)A(MRIB.ne)72
420 Q(xt_hop\(host\))-.15 E F0 11(.......................)10.79 G F1
(16,)-68.5 E F2(16)A F1(,44,45,48,52,73)A(my_assert_metric\(S,G,I\))72
432 Q F0 11(.......................).38 G F1(60,63,65,67,)-43.5 E F2(70)
A F1(NL)72 444 Q(T\(N,I\))-.92 E F0 11(...........................)6.02
G F1(10,22,92,94)-31 E -.4(OT)72 456 S(\(S,G,rpt\)).4 E F0 11
(..........................)9.52 G F1(13,55,92,)-31 E F2(95)A F1(Ov)72
468 Q(erride_Interv)-.15 E(al\(I\))-.25 E F0 11
(........................)4.27 G F1(10,21,23,)-68.5 E F2(24)A F1(,83,)A
F2(93)A F1(,94)A(pack)72 480 Q(et_arri)-.1 E -.15(ve)-.25 G
(s_on_rp_tunnel\(pkt\)).15 E F0 11(....................)4.92 G F2(29)6.5
E F1(pim_e)72 492 Q(xclude\(S,G\))-.15 E F0 11(........................)
12.05 G F1(14,)-31 E F2(14)A F1(,19,60)A(pim_include\(*,G\))72 504 Q F0
11(.........................).37 G F1(11,14,)-56 E F2(14)A F1(,19,60,66)
A(pim_include\(S,G\))72 516 Q F0 11(........................)13.56 G F1
(12,14,)-43.5 E F2(14)A F1(,19,60)A(PPT\(*,*,RP)72 528 Q(,I\))-1.11 E F0
11(..........................)2.16 G F1(10,31,92,)-31 E F2(94)A F1
(PPT\(*,G,I\))72 540 Q F0 11(..........................)13.56 G F1
(11,34,92,)-31 E F2(94)A F1(PPT\(S,G,I\))72 552 Q F0 11
(..........................)13 G F1(12,37,92,)-31 E F2(94)A F1
(PPT\(S,G,rpt,I\))72 564 Q F0 11(.........................)13.14 G F1
(13,40,42,92,)-43.5 E F2(94)A F1(Propag)72 576 Q(ation_Delay\(I\))-.05 E
F0 11(.......................)12.1 G F1(21,)-31 E F2(24)A F1(,)A F2(93)A
F1(,94)A(PruneDesired\(S,G,rpt\))72 588 Q F0 11(.......................)
9.27 G F2(56)-31 E F1(,57,62,64)A(prunes\(S,G,rpt\))72 600 Q F0 11
(.........................)9.54 G F1(14,)-18.5 E F2(15)A F1(,60)A(Re)72
612 Q(gisterStop\(*,G\))-.15 E F0 11(........................)12.6 G F2
(28)6.5 E F1(Re)72 624 Q(gisterStop\(S,G\))-.15 E F0 11
(........................)12.04 G F1(29)6.5 E(Re)72 636 Q(gisterStopT)
-.15 E(imer\(S,G\))-.35 E F0 11(.......................)1.7 G F1
(25,27,93,)-31 E F2(96)A F1(Re)72 648 Q(gister_Probe_T)-.15 E(ime)-.35 E
F0 11(.......................)11.98 G F1(27,30,)-18.5 E F2(96)A F1(Re)72
660 Q(gister_Suppression_T)-.15 E(ime)-.35 E F0 11
(......................).17 G F1(27,30,)-18.5 E F2(96)A F1(RP\(G\))72
672 Q F0 11(............................)4.39 G F1
(4,14,16,27,29,33,48,55,60,66,70,72,92)-138.5 E(RPF)72 684 Q F0 11
(............................)12.71 G F2(4)11.5 E F1(RPF'\(*,G\))72 696
Q F0 11(...........................)1.75 G F2(16)-93.5 E F1
(,19,47,48,50,54,56,69,72)A(RPF'\(S,G\))72 708 Q F0 11
(...........................)1.19 G F2(16)-68.5 E F1(,19,50,54,56,64,72)
A(RPF'\(S,G,rpt\))72 720 Q F0 11(..........................)1.33 G F2
(16)-31 E F1(,54,57,72)A F0(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E
(ouv)-.385 E 166.471(elas Section)-.165 F 2.75(10. [P)2.75 F(age 103])
-.165 E EP
%%Page: 104 104
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 65.168(-DRAFT Expires:)-1.012 F
(September 2003)2.75 E(March 2003)106.935 E/F1 10/Times-Roman@0 SF
(RPF_interf)72 84 Q(ace)-.1 E F0 11(..........................).33 G F1
(66)6.5 E(RPF_interf)72 96 Q(ace\(host\))-.1 E F0 11
(........................)4.5 G F1(16,18,19,28,48,49,53,61,66,71,73,78)
-131 E(RPTJoinDesired\(G\))72 108 Q F0 11(........................)5.51
G/F2 10/Times-Bold@0 SF(56)-18.5 E F1(,58,66)A(rpt_assert_metric\(G,I\))
72 120 Q F0 11(.......................)10.11 G F1(68,)-6 E F2(70)A F1
(RST\(S,G\))72 132 Q F0 11(...........................)3.97 G F1
(25,27,93,)-31 E F2(96)A F1(SPTbit\(S,G\))72 144 Q F0 11
(..........................)8.27 G F2(13)-156 E F1
(,18,19,29,36,53,54,56,60,61,63,64,71,78)A(spt_assert_metric\(S,I\))72
156 Q F0 11(.......................)11.21 G F1(63,)-18.5 E F2(70)A F1
(,71)A(SSM)72 168 Q F0 11(............................)10.49 G F1(7,77)
-1 E(Suppression_Enabled\(I\))72 180 Q F0 11(.......................)2.6
G F2(25)-6 E F1(,95)A(SwitchT)72 192 Q(oSptDesired\(S,G\))-.8 E F0 11
(......................)8.53 G F1(19,)-6 E F2(19)A F1(TIB)72 204 Q F0 11
(.............................).64 G F1(5,9,17)-8.5 E -.35(Tr)72 216 S
(iggered_Hello_Delay).35 E F0 11(.......................)4.07 G F1
(20,21,)-18.5 E F2(94)A F1(t_joinsuppress)72 228 Q F0 11
(..........................).22 G F1(45,46,48,49,53)-43.5 E(t_o)72 240 Q
-.15(ve)-.15 G(rride).15 E F0 11(...........................)3.45 G F1
(45,48,52,56,95,)-56 E F2(95)A F1(t_o)72 252 Q -.15(ve)-.15 G(rride_def)
.15 E(ault)-.1 E F0 11(........................)12.03 G F1(24,93)-6 E
(t_periodic)72 264 Q F0 11(...........................)3.7 G F1
(45,48,52,95)-31 E(t_suppressed)72 276 Q F0 11
(..........................)6.34 G F1(25,46,49,52,53,95)-56 E
(Update_SPTbit\(S,G,iif\))72 288 Q F0 11(.......................)4.25 G
F1(18,)-6 E F2(19)A F1(UpstreamJPState\(S,G\))72 300 Q F0 11
(.......................)8.98 G F2(18)-6 E F1(,78)A F0(Fenner/Handle)72
769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 166.471(elas Section)-.165 F 2.75
(10. [P)2.75 F(age 104])-.165 E EP
%%Trailer
end
%%EOF

PAFTECH AB 2003-20262026-04-22 06:07:05