One document matched: draft-ietf-pim-sm-v2-new-08.ps
%!PS-Adobe-3.0
%%Creator: groff version 1.19
%%CreationDate: Wed Oct 1 12:28:10 2003
%%DocumentNeededResources: font Courier-Bold
%%+ font Times-Bold
%%+ font Times-Roman
%%+ font Courier
%%+ font Times-Italic
%%+ font Symbol
%%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.19 0
%%Pages: 104
%%PageOrder: Ascend
%%DocumentMedia: Default 612 792 0 () ()
%%Orientation: Portrait
%%EndComments
%%BeginDefaults
%%PageMedia: Default
%%EndDefaults
%%BeginProlog
%%BeginResource: procset grops 1.19 0
/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
/Fr{
setrgbcolor fill
}bind def
/setcmykcolor where{
pop
/Fk{
setcmykcolor fill
}bind def
}if
/Fg{
setgray fill
}bind def
/FL/fill load def
/LW/setlinewidth load def
/Cr/setrgbcolor load def
/setcmykcolor where{
pop
/Ck/setcmykcolor load def
}if
/Cg/setgray 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
/setpagedevice{}def
}bind def
/PEND{
clear
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%BeginFeature: *PageSize Default
<< /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice
%%EndFeature
%%IncludeResource: font Courier-Bold
%%IncludeResource: font Times-Bold
%%IncludeResource: font Times-Roman
%%IncludeResource: font Courier
%%IncludeResource: font Times-Italic
%%IncludeResource: font Symbol
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/Euro/.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)
209.999 E 245.999(INTERNET-DRAFT Bill)72 98 R(Fenner/AT&T)6 E 143.999
(draft-ietf-pim-sm-v2-new-08.ps Mark)72 111 R(Handley/ICIR)6 E
(Hugh Holbrook/Cisco)389.999 124 Q(Isidor Kouvelas/Cisco)377.999 137 Q 6
(1O)419.999 150 S(ctober 2003)-6 E(Expires: April 2004)389.999 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 0 Cg EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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(17)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.3.4. Maintaining Secondary Address Lists)117 363 Q F0 11
(............)4.68 G F2(25)6.5 E(4.4. PIM Re)107 375 Q(gister Messages)
-.15 E F0 11(.................)9.41 G F2(25)6.5 E(4.4.1. Sending Re)117
387 Q(gister Messages from the DR)-.15 E F0 11(...........)6.36 G F2(26)
6.5 E(4.4.2. Recei)117 399 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 411 Q F0 11(................)13.56 G
F2(30)6.5 E(4.5.1. Recei)117 423 Q(ving \(*,*,RP\) Join/Prune Messages)
-.25 E F0 11(...........)5.9 G F2(30)6.5 E(4.5.2. Recei)117 435 Q
(ving \(*,G\) Join/Prune Messages)-.25 E F0 11(............)4.66 G F2
(33)6.5 E(4.5.3. Recei)117 447 Q(ving \(S,G\) Join/Prune Messages)-.25 E
F0 11(............)4.1 G F2(36)6.5 E(4.5.4. Recei)117 459 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 471 Q F0 11
(...........)13.42 G F2(43)6.5 E
(4.5.6. Sending \(*,G\) Join/Prune Messages)117 483 Q F0 11
(............)12.18 G F2(46)6.5 E
(4.5.7. Sending \(S,G\) Join/Prune Messages)117 495 Q F0 11
(............)11.62 G F2(49)6.5 E(4.5.8. \(S,G,rpt\) Periodic Messages)
117 507 Q F0 11(...............)1.49 G F2(53)6.5 E
(4.5.9. State Machine for \(S,G,rpt\) T)117 519 Q(riggered Messages)-.35
E F0 11(.........)4.09 G F2(54)6.5 E
(4.5.10. Background: \(*,*,RP\) and \(S,G,rpt\) interaction)117 531 Q F0
11(.........)3.44 G F2(57)6.5 E(4.6. PIM Assert Messages)107 543 Q F0 11
(..................)3.29 G F2(58)6.5 E
(4.6.1. \(S,G\) Assert Message State Machine)117 555 Q F0 11
(............)8.03 G F2(58)6.5 E
(4.6.2. \(*,G\) Assert Message State Machine)117 567 Q F0 11
(............)8.59 G F2(64)6.5 E(4.6.3. Assert Metrics)117 579 Q F0 11
(...................).65 G F2(69)6.5 E(4.6.4. AssertCancel Messages)117
591 Q F0 11(................)5.8 G F2(70)6.5 E
(4.6.5. Assert State Macros)117 603 Q F0 11(.................)6.21 G F2
(70)6.5 E(4.7. PIM Multicast Border Router Beha)107 615 Q(vior)-.2 E F0
11(.............)2.24 G F2(72)6.5 E
(4.7.1. Sources External to the PIM-SM Domain)117 627 Q F0 11
(...........)3.43 G F2(73)6.5 E
(4.7.2. Sources Internal to the PIM-SM Domain)117 639 Q F0 11
(...........)6.21 G F2(73)6.5 E(4.8. PIM Bootstrap and RP Disco)107 651
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 663 Q F0 11(................)9.67 G F2
(75)6.5 E(4.8.2. Hash Function)117 675 Q F0 11(...................).64 G
F2(76)6.5 E(4.9. Source-Speci\214c Multicast)107 687 Q F0 11
(.................).65 G F2(76)6.5 E
(4.9.1. Protocol Modi\214cations for SSM destination addresses)117 699 Q
F0 11(.......)8.42 G F2(77)6.5 E(4.9.2. PIM-SSM-only Routers)117 711 Q
F0 11(................)4.66 G F2(77)6.5 E(4.10. PIM P)107 723 Q(ack)-.15
E(et F)-.1 E(ormats)-.15 E F0 11(..................)3.68 G F2(78)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 0 Cg EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 10/Times-Roman@0 SF
(4.10.1. Encoded Source and Group Address F)117 84 Q(ormats)-.15 E F0 11
(.........)11.1 G F1(79)6.5 E(4.10.2. Hello Message F)117 96 Q(ormat)
-.15 E F0 11(................)4.55 G F1(81)6.5 E(4.10.3. Re)117 108 Q
(gister Message F)-.15 E(ormat)-.15 E F0 11(...............)7.34 G F1
(84)6.5 E(4.10.4. Re)117 120 Q(gister)-.15 E(-Stop Message F)-.2 E
(ormat)-.15 E F0 11(.............)13.37 G F1(85)6.5 E
(4.10.5. Join/Prune Message F)117 132 Q(ormat)-.15 E F0 11
(..............)11.49 G F1(85)6.5 E
(4.10.5.1. Group Set Source List Rules)127 144 Q F0 11(.............)
4.81 G F1(88)6.5 E(4.10.5.2. Group Set Fragmentation)127 156 Q F0 11
(..............)3.84 G F1(90)6.5 E(4.10.6. Assert Message F)117 168 Q
(ormat)-.15 E F0 11(................)1.22 G F1(91)6.5 E(4.11. PIM T)107
180 Q(imers)-.35 E F0 11(....................)9.74 G F1(92)6.5 E
(4.12. T)107 192 Q(imer V)-.35 E(alues)-1.11 E F0 11
(....................)4.75 G F1(93)6.5 E(5. IAN)97 204 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 216 Q(amily)-.15 E F0 11(..................)6.76
G F1(96)6.5 E(5.2. PIM Hello Options)107 228 Q F0 11
(...................).08 G F1(97)6.5 E(6. Security Considerations)97 240
Q F0 11(..................)12.17 G F1(97)6.5 E
(6.1. Attacks based on for)107 252 Q(ged messages)-.18 E F0 11
(..............)8.49 G F1(97)6.5 E(6.1.1. F)117 264 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 276 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 288 Q F0 11
(..........)9.42 G F1(98)6.5 E(6.3. Authentication using IPsec)107 300 Q
F0 11(................)10.23 G F1(98)6.5 E
(6.3.1. Protecting link-local multicast messages)117 312 Q F0 11
(...........)7.87 G F1(98)6.5 E(6.3.2. Protecting unicast messages)117
324 Q F0 11(...............)2.04 G F1(99)6.5 E(6.3.2.1. Re)127 336 Q
(gister messages)-.15 E F0 11(................)9.55 G F1(99)6.5 E
(6.3.2.2. Re)127 348 Q(gister)-.15 E(-Stop messages)-.2 E F0 11
(...............)1.83 G F1(99)6.5 E(6.4. Denial of Service Attacks)107
360 Q F0 11(.................)1.22 G F1(99)6.5 E(7. Authors' Addresses)
97 372 Q F0 11(....................)1.35 G F1(100)1.5 E(8. Ackno)97 384
Q(wledgments)-.25 E F0 11(....................)5.76 G F1(100)1.5 E
(9. References)97 396 Q F0 11(......................)8.58 G F1(100)1.5 E
(10. Inde)97 408 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 460 Q(es)-.234 E
F1(Figure 1. Per)97 498 Q(-\(S,G\) re)-.2 E
(gister state-machine at a DR)-.15 E F0 11(............).06 G F1(26)6.5
E(Figure 2. Do)97 510 Q(wnstream per)-.25 E(-interf)-.2 E
(ace \(*,*,RP\) state-machine)-.1 E F0 11(.........)4.58 G F1(31)6.5 E
(Figure 3. Do)97 522 Q(wnstream per)-.25 E(-interf)-.2 E
(acce \(*,G\) state-machine)-.1 E F0 11(.........)12.65 G F1(34)6.5 E
(Figure 4. Do)97 534 Q(wnstream per)-.25 E(-interf)-.2 E
(ace \(S,G\) state-machine)-.1 E F0 11(..........)2.78 G F1(36)6.5 E
(Figure 5. Do)97 546 Q(wnstream per)-.25 E(-interf)-.2 E
(ace \(S,G,rpt\) state-machine)-.1 E F0 11(.........)2.92 G F1(39)6.5 E
(Figure 6. Upstream \(*,*,RP\) state-machine)97 558 Q F0 11
(..............)1.08 G F1(43)6.5 E
(Figure 7. Upstream \(*,G\) state-machine)97 570 Q F0 11(..............)
13.59 G F1(47)6.5 E(Figure 8. Upstream \(S,G\) state-machine)97 582 Q F0
11(..............)13.03 G F1(50)6.5 E
(Figure 9. Upstream \(S,G,rpt\) state-machine for triggered messages)97
594 Q F0 11(.......)2.64 G F1(54)6.5 E(Figure 10. Per)97 606 Q(-interf)
-.2 E(ace \(S,G\) Assert State-machine)-.1 E F0 11(...........)7.1 G F1
(59)6.5 E(Figure 11. Per)97 618 Q(-interf)-.2 E
(ace \(*,G\) Assert State-machine)-.1 E F0 11(...........)7.66 G F1(64)
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 0 Cg EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 0 Cg EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 0 Cg EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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)-2.75 E
(-Stop)-.407 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 0 Cg EP
%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(While the RP is in the proces\
s 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(gister)-.165 E(-Stop message back to)-.22
E(S')72 137 Q 2.75(sD)-.605 G 2.75(Rt)-2.75 G 2.75(op)-2.75 G(re)-2.75 E
-.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 0 Cg EP
%%Page: 8 8
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 0 Cg EP
%%Page: 9 9
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 0 Cg EP
%%Page: 10 10
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 T).165 E(imer \(NL)-.385 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\), "Prune-Pending" \(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 T)72 565 Q
(imer is used to send out periodic Join\(*,*,RP\) messages, and)-.385 E
(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 0 Cg EP
%%Page: 11 11
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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\), "Prune-Pending" \(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 T)72 539.8 Q
(imer is used to send out periodic Join\(*,G\) messages, and to)-.385 E
-.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 0 Cg EP
%%Page: 12 12
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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\), "Prune-Pending" \(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 T)72 573 Q
(imer is used to send out periodic Join\(S,G\) messages, and to)-.385 E
-.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 0 Cg EP
%%Page: 13 13
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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", "Prune-Pending"})-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 0 Cg EP
%%Page: 14 14
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 0 Cg EP
%%Page: 15 15
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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
(Prune-Pending })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 Prune-Pending })111.6 311
Q F0(Do)72 327.6 Q(wnstreamJPState\(*,G,I\) is the state of the \214nit\
e 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 Prune-Pending })111.6
386.8 Q F0(Do)72 403.4 Q(wnstreamJPState\(S,G,I\) is the state of the \
\214nite 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 0 Cg
EP
%%Page: 16 16
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 NBR\( RPF_interface\(RP\(G\)\), 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 NBR\( RPF_interface\(S\), 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 an address of the ne)2.75 E(xt-hop PIM neighbor to)-.165 E -.11
(wa)-.275 G(rd).11 E(the host S, as indicated by the current MRIB.)72
547.8 Q(If S is directly adjacent, then)5.5 E F1(MRIB.next_hop\()2.75 E
6.6(S\))72 560.8 S F0(returns NULL.)-3.85 E(At the RP for G,)5.5 E F1
(MRIB.next_hop\( RP\(G \)\))2.75 E F0(returns NULL.)2.75 E(The function)
72 577.4 Q F1(NBR\( I, A \))2.75 E F0(uses information g)2.75 E
(athered through PIM Hello messages to map the)-.055 E
(IP address A of a directly connected PIM neighbor router on interf)72
590.4 Q(ace I to the primary IP address)-.11 E(of the same router \(sec\
tion 4.3.4\). The primary IP address of a neighbor is the link-local ad\
dress)72 603.4 Q(that it uses as the source of its PIM Hello messages. \
Note that a neighbor')72 616.4 Q 2.75(sI)-.605 G 2.75(Pa)-2.75 G
(ddress may not be)-2.75 E(unique within the PIM neighbor database due \
to scope issues. The address must ho)72 629.4 Q(we)-.275 E -.165(ve)
-.275 G 2.75(rb).165 G(e)-2.75 E(unique amongst the addresses of all th\
e PIM neighbors on a speci\214c interf)72 642.4 Q(ace.)-.11 E(I_Am_Asse\
rt_Loser\(S, G, I\) is true if the Assert start machine \(in Section 4.\
6.1\) for \(S,G\) on)72 659 Q(Interf)72 672 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 688.6 Q(Interf)72 701.6 Q
(ace I is in "I am Assert Loser" 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.1.6. [P)2.75 F(age 16])-.165 E 0 Cg EP
%%Page: 17 17
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Times-Bold@0 SF(4.2.)72
85 Q/F2 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 101.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/F3 11/Courier@0 SF(iif)97 118.2 Q F0
(is the incoming interf)2.75 E(ace of the pack)-.11 E(et.)-.11 E F3(S)97
131.2 Q F0(is the source address of the pack)2.75 E(et.)-.11 E F3(G)97
144.2 Q F0(is the destination address of the pack)2.75 E
(et \(group address\).)-.11 E F3(RP)97 157.2 Q F0
(is the address of the Rendezv)2.75 E(ous Point for this group.)-.22 E
F3(RPF_interface\(S\))97 170.2 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 183.2 Q F3(RPF_interface\(RP\))97 196.2 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 209.2 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 222.2 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 238.8 Q(eepali)-.275 E .33
-.165(ve T)-.275 H
(imer if the source is on a directly connected subnet.)-.22 E
(Second, we check to see if the SPT bit should be set because we')72
255.4 Q .33 -.165(ve n)-.55 H .55 -.275(ow s).165 H(witched from the RP)
.275 E(tree to the SPT)72 268.4 Q(.)-.814 E(Ne)72 285 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 298 Q(et arri)-.11 E -.165(ve)-.275 G 2.75(do).165 G
(n.)-2.75 E(If the pack)72 314.6 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 327.6 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)-.275 E .33 -.165
(ve T)-.275 H(imer)-.22 E(.)-.605 E(If the pack)72 344.2 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 357.2 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 370.2 Q
(Finally we remo)72 386.8 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
399.8 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 0 Cg EP
%%Page: 18 18
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E
(On receipt of 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: a 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 UpstreamJPState\(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_interfac\
e\(RP\(G\)\) 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 0 Cg EP
%%Page: 19 19
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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\(G\)\))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\) \(see Section 4.6.1\).)-.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 0 Cg EP
%%Page: 20 20
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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.)-.165 E(A)5.5 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 the `)72 576 Q(ALL-PIM-R)-.88 E
(OUTERS' group address \(`224.0.0.13' for IPv4 and `f)-.44 E(f02::d')
-.275 E(for IPv6\).)72 589 Q/F3 11/Times-Italic@0 SF 2.024 -1.012(We n)
99.75 605.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 618.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 631.6 Q -.11(ge)-.11 G(s, e).11 E
(ven on point-to-point interfaces.)-.165 E F0 2.75(Ap)72 648.2 S
(er interf)-2.75 E(ace Hello T)-.11 E(imer \(HT\(I\)\) is used to trigg\
er sending Hello messages on each acti)-.385 E -.165(ve)-.275 G(interf)
72 661.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 T)-.11 E(imer of that)-.385 E
(interf)72 674.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 687.2 Q
(wered on simultaneously)-.275 E 5.5(.A)-.715 G(fter the)-5.5 E
(initial randomized interv)72 700.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 T)72 713.2 Q(imer should not be reset e)-.385
E(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 0 Cg EP
%%Page: 21 21
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(Note that neighbors will not \
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 T)
-.11 E(imer to e)-.385 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
(The Interf)72 372.4 Q(ace_Address_List Option SHOULD be included in al\
l IPv4 Hello messages and MUST)-.11 E
(be included in all IPv6 Hello messages. This option adv)72 385.4 Q
(ertises all the secondary addresses)-.165 E
(associated with the source interf)72 398.4 Q
(ace of the router originating the message.)-.11 E 1.76 -.88(To a)72 415
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 428 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 441 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 454 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 467 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 480 Q
2.75(wn)-.275 G(eighbor before this)-2.75 E(randomized delay has e)72
493 Q(xpired, then it MUST immediately send the rele)-.165 E -.275(va)
-.275 G(nt Hello message).275 E(without w)72 506 Q
(aiting for the Hello T)-.11 E(imer to e)-.385 E(xpire, follo)-.165 E
(wed by the Join/Prune or Assert message.)-.275 E(If it)5.5 E
(does not do this, then the ne)72 519 Q 2.75(wn)-.275 G
(eighbor will discard the Join/Prune or Assert message.)-2.75 E
(Before an interf)72 535.6 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 548.6 Q(This will cause)5.5 E
(PIM neighbors to remo)72 561.6 Q .33 -.165(ve t)-.165 H
(his neighbor \(or its old IP address\) immediately).165 E 5.5(.A)-.715
G(fter an interf)-5.5 E(ace has)-.11 E
(changed its IP address, it MUST send a Hello message with its ne)72
574.6 Q 2.75(wI)-.275 G 2.75(Pa)-2.75 G(ddress.)-2.75 E/F2 11
/Times-Bold@0 SF 2.75(4.3.2. DR)72 600.6 R(Election)2.75 E F0
(When a PIM-Hello message is recei)72 617.2 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
630.2 Q F1(neighbor.interface)97 646.8 Q F0(The interf)122 659.8 Q
(ace on which the Hello message arri)-.11 E -.165(ve)-.275 G(d.).165 E
F1(neighbor.primary_ip_address)97 676.4 Q F0(The IP address that the PI\
M neighbor used as the source address of the Hello message.)122 689.4 Q
F1(neighbor.genid)97 706 Q F0(The Generation ID of the PIM neighbor)122
719 Q(.)-.605 E(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 0 Cg
EP
%%Page: 22 22
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Courier@0 SF
(neighbor.dr_priority)97 85 Q F0(The DR Priority \214eld of the PIM nei\
ghbor if it is present in the Hello message.)122 98 Q F1
(neighbor.dr_priority_present)97 114.6 Q F0 2.75<418d>122 127.6 S
(ag indicating if the DR Priority \214eld w)-2.75 E
(as present in the Hello message.)-.11 E F1(neighbor.timeout)97 144.2 Q
F0 2.75(At)122 157.2 S(imer v)-2.75 E
(alue to time out the neighbor state when it becomes stale.)-.275 E
(The Neighbor Li)122 170.2 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 183.2 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 196.2 Q F1
(Default_Hello_Holdtime)2.75 E F0(if the Hello message does not contain)
2.75 E(the Holdtime option.)122 209.2 Q
(Neighbor state is deleted when the neighbor timeout e)72 225.8 Q
(xpires.)-.165 E(The function for computing the DR on interf)72 251.8 Q
(ace I is:)-.11 E F1(host)85.2 270.8 Q(DR\(I\) {)85.2 283.8 Q(dr = me)
111.6 296.8 Q(for each neighbor on interface I {)111.6 309.8 Q
(if \( dr_is_better\( neighbor, dr, I \) == TRUE \) {)138 322.8 Q
(dr = neighbor)164.4 335.8 Q(})138 348.8 Q(})111.6 361.8 Q(return dr)
111.6 374.8 Q(})85.2 387.8 Q F0
(The function used for comparing DR "metrics" on interf)72 410.4 Q
(ace I is:)-.11 E F1(bool)85.2 429.4 Q(dr_is_better\(a,b,I\) {)85.2
442.4 Q(if\( there is a neighbor n on I for which n.dr_priority_present)
111.6 455.4 Q(is false \) {)164.4 468.4 Q
(return a.primary_ip_address > b.primary_ip_address)138 481.4 Q 6.6(}e)
111.6 494.4 S(lse {)-6.6 E
(return \( a.dr_priority > b.dr_priority \) OR)138 507.4 Q 6.6(\(a)158.9
520.4 S(.dr_priority == b.dr_priority AND)-6.6 E
(a.primary_ip_address > b.primary_ip_address \))197.4 533.4 Q(})111.6
546.4 Q(})85.2 559.4 Q F0(The tri)72 578.4 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 597.4 Q(I_am_DR\(I\) {)85.2 610.4 Q(return DR\(I\) == me)99.5 623.4
Q(})85.2 636.4 Q F0(The DR election priority is a 32-bit unsigned numbe\
r and the numerically lar)72 659 Q(ger priority is al)-.198 E -.11(wa)
-.11 G(ys).11 E 2.75(preferred. A)72 672 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 685 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 become\
s the DR or ceases to be the DR, this will normally cause the DR Re)72
698 Q(gister state-)-.165 E(machine to change state.)72 711 Q
(Subsequent actions are determined by that state-machine.)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.3.2. [P)2.75 F(age 22])-.165 E 0 Cg EP
%%Page: 23 23
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Times-Italic@0 SF 2.024
-1.012(We n)99.75 85 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 98 Q 2.75
(hi)-.165 G 2.75(nterfaces. This)-2.75 F(in non-)2.75 E
(compliant behavior)97 111 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(interfaces.)97
124 Q/F2 11/Times-Bold@0 SF 2.75(4.3.3. Reducing)72 163 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 179.6 Q(wing per neighbor)-.275 E
(information is obtained from the LAN Prune Delay Hello option:)72 192.6
Q/F3 11/Courier@0 SF(neighbor.lan_prune_delay_present)97 209.2 Q F0 2.75
<418d>122 222.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
238.8 Q F0 2.75<418d>122 251.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 264.8 Q 2.75
(sc)-.605 G(apability to disable Join message)-2.75 E(suppression.)122
277.8 Q F3(neighbor.lan_delay)97 294.4 Q F0(The LAN Delay \214eld of th\
e LAN Prune Delay option \(if present\) in the Hello)122 307.4 Q
(message.)122 320.4 Q F3(neighbor.override_interval)97 337 Q F0(The Ov)
122 350 Q(erride_Interv)-.165 E
(al \214eld of the LAN Prune Delay option \(if present\) in the Hello)
-.275 E(message.)122 363 Q(The additional state described abo)72 379.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 392.6 Q(xpires.)-.165 E(Just lik)72 409.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 422.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 441.2 Q
(lan_delay_enabled\(I\) {)85.2 454.2 Q
(for each neighbor on interface I {)111.6 467.2 Q
(if \( neighbor.lan_prune_delay_present == false \) {)138 480.2 Q
(return false)164.4 493.2 Q(})138 506.2 Q(})111.6 519.2 Q(return true)
111.6 532.2 Q(})85.2 545.2 Q F0
(The LAN Delay inserted by a router in the LAN Prune Delay option e)72
567.8 Q(xpresses the e)-.165 E(xpected)-.165 E(message propag)72 580.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 593.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
606.8 Q(ace.)-.11 E(PIM implementors should enforce a lo)72 623.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
636.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 649.4 Q
(Setting this LAN Prune Delay to too lo)72 662.4 Q 2.75(wav)-.275 G
(alue may result in temporary forw)-3.025 E(arding outages)-.11 E
(because a do)72 675.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 688.4 Q
(arding.)-.11 E(When all routers on a link are in a position to ne)72
705 Q(gotiate a dif)-.165 E(ferent than def)-.275 E(ault Propag)-.11 E
(ation Delay)-.055 E(,)-.715 E(the lar)72 718 Q(gest v)-.198 E
(alue from those adv)-.275 E
(ertised by each neighbor is chosen. The function for computing)-.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.3. [P)2.75 F(age 23])-.165 E 0 Cg EP
%%Page: 24 24
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(the Propag)72 85 Q
(ation Delay of interf)-.055 E(ace I is:)-.11 E/F1 11/Courier@0 SF
(time_interval)85.2 104 Q(Propagation_Delay\(I\) {)85.2 117 Q
(if \( lan_delay_enabled\(I\) == false \) {)111.6 130 Q
(return LAN_delay_default)138 143 Q(})111.6 156 Q(delay = 0)111.6 169 Q
(for each neighbor on interface I {)111.6 182 Q
(if \( neighbor.lan_delay > delay \) {)138 195 Q
(delay = neighbor.lan_delay)164.4 208 Q(})138 221 Q(})111.6 234 Q
(return delay)111.6 247 Q(})85.2 260 Q F0 1.76 -.88(To a)72 282.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 295.6 Q(of randomization should repre\
sent the size of the PIM router population on the link.)72 308.6 Q
(Each router)5.5 E -.165(ex)72 321.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
334.6 Q(When all routers on a link are in a position to ne)72 351.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 364.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 377.2 Q(erride Interv)-.165 E(al of interf)-.275 E(ace I is:)
-.11 E F1(time_interval)85.2 396.2 Q(Override_Interval\(I\) {)85.2 409.2
Q(if \( lan_delay_enabled\(I\) == false \) {)111.6 422.2 Q
(return t_override_default)138 435.2 Q(})111.6 448.2 Q(delay = 0)111.6
461.2 Q(for each neighbor on interface I {)111.6 474.2 Q
(if \( neighbor.override_interval > delay \) {)138 487.2 Q
(delay = neighbor.override_interval)164.4 500.2 Q(})138 513.2 Q(})111.6
526.2 Q(return delay)111.6 539.2 Q(})85.2 552.2 Q F0(Although the mecha\
nisms are not speci\214ed in this document, it is possible for upstream\
routers to)72 574.8 Q -.165(ex)72 587.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
600.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 613.8 Q(gotiate this capability)-.165 E(,)-.715 E -.165(ex)72 626.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 639.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 0
Cg EP
%%Page: 25 25
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 2.75(4.3.4. Maintaining)72 286 R
(Secondary Addr)2.75 E(ess Lists)-.198 E F0
(Communication of a routers interf)72 302.6 Q
(ace secondary addresses to its PIM neighbors is necessary to)-.11 E
(pro)72 315.6 Q(vide the neighbors with a mechanism for mapping ne)-.165
E(xt_hop information obtained through)-.165 E(their MRIB to a primary a\
ddress that can be used as a destination for Join/Prune messages.)72
328.6 Q(The)5.5 E(mapping is performed through the NBR macro.)72 341.6 Q
(The primary address of a PIM neighbor is)5.5 E(obtained from the sourc\
e IP address used in its PIM Hello messages. Secondary addresses are)72
354.6 Q(carried within the Hello message in an Address List Hello optio\
n. The primary address of the)72 367.6 Q(source interf)72 380.6 Q
(ace of the router MUST NO)-.11 E 2.75(Tb)-.44 G 2.75(el)-2.75 G
(isted within the Address List Hello option.)-2.75 E
(In addition to the information recorded for the DR Election, the follo)
72 397.2 Q(wing per neighbor)-.275 E
(information is obtained from the Address List Hello option:)72 410.2 Q
F1(neighbor.secondary_address_list)97 426.8 Q F0
(The list of secondary addresses used by the PIM neighbor on the interf)
122 439.8 Q(ace through)-.11 E(which the Hello message w)122 452.8 Q
(as transmitted.)-.11 E(When processing a recei)72 469.4 Q -.165(ve)
-.275 G 2.75(dP).165 G
(IM Hello message containing an Address List Hello option, the list)
-2.75 E(of secondary addresses in the message completely replaces an)72
482.4 Q 2.75(yp)-.165 G(re)-2.75 E(viously associated secondary)-.275 E
(addresses for that neighbor)72 495.4 Q 2.75(.I)-.605 G 2.75(far)-2.75 G
(ecei)-2.75 E -.165(ve)-.275 G 2.75(dP).165 G
(IM Hello message does not contain an Address List)-2.75 E(Hello option\
then all secondary addresses associated with the neighbor must be dele\
ted.)72 508.4 Q(All the adv)72 525 Q
(ertised secondary addresses in recei)-.165 E -.165(ve)-.275 G 2.75(dH)
.165 G(ello messages must be check)-2.75 E(ed ag)-.11 E(ainst those)
-.055 E(pre)72 538 Q(viously adv)-.275 E
(ertised by all other PIM neighbors on that interf)-.165 E
(ace. If there is a con\215ict and the)-.11 E(same secondary address w)
72 551 Q(as pre)-.11 E(viously adv)-.275 E
(ertised by another neighbor then only the most)-.165 E(recently recei)
72 564 Q -.165(ve)-.275 G 2.75(dm).165 G
(apping MUST be maintained and an error message SHOULD be logged to the)
-2.75 E(administrator in a rate limited manner)72 577 Q(.)-.605 E F2
(4.4.)72 616 Q/F3 13/Times-Bold@0 SF(PIM Register Messages)5.5 E F2(Ov)
72 642 Q(er)-.11 E(view)-.11 E F0(The Designated Router \(DR\) on a LAN\
or point-to-point link encapsulates multicast pack)72 658.6 Q(ets from)
-.11 E(local sources to the RP for the rele)72 671.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).165 E(-Stop message)-.22 E
(for that \(S,G\) or \(*,G\) from the RP)72 684.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).165 E(-Stop message from the RP)-.22 E(,)-1.221 E
(it starts a Re)72 697.6 Q(gister)-.165 E(-Stop T)-.22 E
(imer to maintain this state.)-.385 E(Just before the Re)5.5 E(gister)
-.165 E(-Stop T)-.22 E(imer e)-.385 E(xpires,)-.165 E
(the DR sends a Null-Re)72 710.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)-.165 E
(-Stop)-.22 E(information at the DR.)72 723.6 Q(If the Re)5.5 E(gister)
-.165 E(-Stop T)-.22 E(imer actually e)-.385 E
(xpires, the DR will resume)-.165 E(Fenner/Handle)72 769 Q(y/Holbrook/K)
-.165 E(ouv)-.385 E 169.221(elas Section)-.165 F 2.75(4.4. [P)2.75 F
(age 25])-.165 E 0 Cg EP
%%Page: 26 26
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(encapsulating pack)72 85 Q
(ets from the source to the RP)-.11 E(.)-1.221 E/F1 11/Times-Bold@0 SF
2.75(4.4.1. Sending)72 124 R(Register Messages fr)2.75 E(om the DR)-.198
E F0(Ev)72 140.6 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 153.6 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 166.6 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 179.6 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 as)-.11 E
(speci\214ed in Section 4.2.)72 192.6 Q(If re)72 209.2 Q(gister state i\
s maintained, it is maintained only for directly connected sources, and\
is)-.165 E(per)72 222.2 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 F1 -.165(Jo)72 238.8 S
(in \(J\)).165 E F0(The re)97 251.8 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 264.8 Q(ace\).)-.11 E F1
(Prune \(P\))72 281.4 Q F0(The re)97 294.4 Q
(gister tunnel is "pruned" \(this occurs when a Re)-.165 E(gister)-.165
E(-Stop is recei)-.22 E -.165(ve)-.275 G(d\).).165 E F1 -.165(Jo)72 311
S(in-P).165 E(ending \(JP\))-.22 E F0(The re)97 324 Q
(gister tunnel is pruned b)-.165 E
(ut the DR is contemplating adding it back.)-.22 E F1(NoInf)72 340.6 Q
2.75(o\()-.275 G(NI\))-2.75 E F0(No information.)97 353.6 Q(This is the\
initial state, and the state when the router is not the DR.)5.5 E
(In addition, a Re)72 370.2 Q(gister)-.165 E(-Stop T)-.22 E
(imer \(RST\) is k)-.385 E
(ept if the state machine is not in the NoInfo state.)-.11 E 27 237 396
517 -248.936 325 108 638.136 PBEGIN
%%BeginDocument: register-std.ps
%%Creator: idraw
%%DocumentFonts: Helvetica Times-Italic
%%Pages: 1
%%BoundingBox: 27 237 544 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-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 36 473 ] concat
%I
[
(CouldRegister\(S,G\))
(->TRUE)
([Add 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 126.5 422.5 ] concat
%I
[
(CouldRegister\(S,G\))
(-> FALSE)
([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)
([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 209 381 ] 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 200.5 580.5 ] concat
%I
[
(RegStop Timer expires)
([Add 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 477 505 ] concat
%I
[
(CouldRegister\(S,G\))
(-> FALSE)
([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 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 422 405.5 ] concat
%I
[
(RegStop Timer)
(expired)
([Set RegStop Timer)
(to probetime])
([Send Null-Register])
] 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)
([Remove reg tunnel])
([Set RegStop Timer to)
(randomized RST - 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 356 466 ] concat
%I
[
(RegStop received )
(from RP)
([Set RegStop Timer)
(to randomized RST)
(-probetime])
] Text
End
End %I eop
showpage
end
%%EndDocument
end PEND F1(Figur)188.294 677.136 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
(Notes:)72 699.736 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 26])-.165
E 0 Cg EP
%%Page: 27 27
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(Per)72 88.6 Q(-\(S,G\) re)-.22
E(gister state-machine at a DR in tab)-.165 E(ular form:)-.22 E .44 LW
503.994 99.35 72 99.35 DL/F1 11/Times-Bold@0 SF(Ev)310.604 109.6 Q(ent)
-.11 E 503.994 114.35 141.789 114.35 DL(Pr)75.63 130.1 Q .33 -.165(ev S)
-.198 H(tate).165 E(Register)148.234 124.6 Q(-)-.407 E 8.441(Stop T)
148.234 137.6 R(imer)-.198 E(expir)148.234 150.6 Q(es)-.198 E(Could-)
220.838 124.6 Q(Register)220.838 137.6 Q/F2 11/Symbol SF<ae>220.838
150.6 Q F1 -.814(Tr)C(ue).814 E(Could-)293.442 124.6 Q(Register)293.442
137.6 Q F2<ae>293.442 150.6 Q F1 -.275(Fa)C(lse).275 E(Register)366.046
124.6 Q(-)-.407 E(Stop)366.046 137.6 Q -.198(re)366.046 150.6 S(cei).198
E -.11(ve)-.11 G(d).11 E(RP changed)438.65 124.6 Q 503.994 155.35 72
155.35 DL 503.994 157.35 72 157.35 DL F0 141.545(--)148.234 167.6 S
68.941(--)-72.604 G F2<ae>220.838 167.6 Q F0 2.75(Js)2.75 G(tate)-2.75 E
F1(NoInf)75.63 180.6 Q 2.75(o\()-.275 G(NI\))-2.75 E F0 29.198(add re)
220.838 180.6 R(g)-.165 E(tunnel)220.838 193.6 Q 503.994 198.35 72
198.35 DL 68.941(--)148.234 208.6 S F2<ae>293.442 208.6 Q F0(NI state)
2.75 E F2<ae>366.046 208.6 Q F0 2.75(Ps)2.75 G(tate)-2.75 E F2<ae>438.65
208.6 Q F0 2.75(Js)2.75 G(tate)-2.75 E F1 -.165(Jo)75.63 234.6 S
(in \(J\)).165 E F0(remo)293.442 221.6 Q 12.753 -.165(ve r)-.165 H -.165
(eg).165 G(tunnel)293.442 234.6 Q(remo)366.046 221.6 Q 12.753 -.165
(ve r)-.165 H -.165(eg).165 G 16.185(tunnel; set)366.046 234.6 R(Re)
366.046 247.6 Q(gister)-.165 E(-Stop)-.22 E -.385(Ti)366.046 260.6 S
(mer\(*\)).385 E 15.756(update re)438.65 221.6 R(g)-.165 E(tunnel)438.65
234.6 Q 503.994 265.35 72 265.35 DL(-)220.838 275.6 Q F2<ae>148.234
275.6 Q F0 2.75(Js)2.75 G(tate)-2.75 E F2<ae>293.442 275.6 Q F0
(NI state)2.75 E F2<ae>366.046 275.6 Q F0 2.75(Ps)2.75 G(tate)-2.75 E F2
<ae>438.65 275.6 Q F0 2.75(Js)2.75 G(tate)-2.75 E F1 -.165(Jo)75.63
295.1 S(in-).165 E -.22(Pe)75.63 308.1 S 1.126(nding \(JP\)).22 F F0
29.198(add re)148.234 288.6 R(g)-.165 E(tunnel)148.234 301.6 Q(remo)
293.442 288.6 Q 12.753 -.165(ve r)-.165 H -.165(eg).165 G(tunnel)293.442
301.6 Q 6.802(set Re)366.046 288.6 R(gister)-.165 E(-)-.22 E(Stop)
366.046 301.6 Q -.385(Ti)366.046 314.6 S(mer\(*\)).385 E 29.198(add re)
438.65 288.6 R(g)-.165 E .312(tunnel; cancel)438.65 301.6 R(Re)438.65
314.6 Q(gister)-.165 E(-Stop)-.22 E -.385(Ti)438.65 327.6 S(mer).385 E
503.994 332.35 72 332.35 DL 141.545(--)220.838 342.6 S F2<ae>148.234
342.6 Q F0(JP state)2.75 E F2<ae>293.442 342.6 Q F0(NI state)2.75 E F2
<ae>438.65 342.6 Q F0 2.75(Js)2.75 G(tate)-2.75 E F1(Prune \(P\))75.63
375.1 Q F0 6.802(set Re)148.234 355.6 R(gister)-.165 E(-)-.22 E(Stop)
148.234 368.6 Q -.385(Ti)148.234 381.6 S(mer\(**\);).385 E 15.58
(send Null-)148.234 394.6 R(Re)148.234 407.6 Q(gister)-.165 E(remo)
293.442 355.6 Q 12.753 -.165(ve r)-.165 H -.165(eg).165 G(tunnel)293.442
368.6 Q 29.198(add re)438.65 355.6 R(g)-.165 E .312(tunnel; cancel)
438.65 368.6 R(Re)438.65 381.6 Q(gister)-.165 E(-Stop)-.22 E -.385(Ti)
438.65 394.6 S(mer).385 E 503.994 412.35 72 412.35 DL 433.205 114.35
433.205 412.35 DL 360.601 114.35 360.601 412.35 DL 287.997 114.35
287.997 412.35 DL 215.393 114.35 215.393 412.35 DL 141.789 99.35 141.789
412.35 DL 143.789 99.35 143.789 412.35 DL 503.994 99.35 503.994 412.35
DL 72 99.35 72 412.35 DL/F3 11/Courier@0 SF(\(*\))72 426.6 Q F0(The Re)
2.75 E(gister)-.165 E(-Stop T)-.22 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
439.6 Q(gister_Suppression_T)-.165 E(ime, 1.5 * Re)-.385 E
(gister_Suppression_T)-.165 E(ime\) minus)-.385 E(Re)97 452.6 Q
(gister_Probe_T)-.165 E(ime;)-.385 E(Subtracting of)97 469.2 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 482.2 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 495.2 Q(.)-.715 E(\(**\) The Re)72 511.8 Q(gister)
-.165 E(-Stop T)-.22 E(imer is set to Re)-.385 E(gister_Probe_T)-.165 E
(ime.)-.385 E(The follo)72 528.4 Q(wing actions are de\214ned:)-.275 E
F1(Add Register T)72 554.4 Q(unnel)-1.012 E F0 2.75(AR)72 571 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 584 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 597 Q(ace to be added to)-.11 E F3
(immediate_olist\(S,G\))2.75 E F0(.)A F1(Remo)72 623 Q .22 -.11(ve R)
-.11 H(egister T).11 E(unnel)-1.012 E F0(VI is the Re)72 639.6 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 652.6 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
665.6 Q F3(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 678.6 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 0 Cg EP
%%Page: 28 28
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 it)-.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 encapsulating 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 Register)72 666 Q(-Stop\(*,G\) Messages at the DR)
-.407 E F0(An old RP might send a Re)72 682.6 Q(gister)-.165 E
(-Stop message with the source address set to all-zeros.)-.22 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(gister)-.165 E
(-Stop\(*,G\) is ambiguous or incorrect in some circumstances.)-.22 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 0 Cg EP
%%Page: 29 29
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E 1.76 -.88(We s)72 85 T
(pecify that an RP should not send Re).88 E(gister)-.165 E
(-Stop\(*,G\) messages, b)-.22 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(ister)
.165 E(-Stop\(*,G\) should be treated as a Re)-.22 E(gister)-.165 E
(-Stop\(S,G\) for all e)-.22 E(xisting \(S,G\) Re)-.165 E(gister)-.165 E
(state machines.)72 127.6 Q 2.75(Ar)5.5 G(outer should not apply a Re)
-2.75 E(gister)-.165 E(-Stop\(*,G\) to sources that become acti)-.22 E
-.165(ve)-.275 G(after the Re)72 140.6 Q(gister)-.165 E(-Stop\(*,G\) w)
-.22 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
(if \( SPTbit\(S,G\) || SwitchToSptDesired\(S,G\) \) {)127 306.2 Q
(restart KeepaliveTimer\(S,G\))154.5 319.2 Q(})127 332.2 Q
(if \( SPTbit\(S,G\) ||)127 345.2 Q 6.6(\(S)133.6 358.2 S
(witchToSptDesired\(S,G\) && \( inherited_olist\(S,G\) != NULL \)\)\) {)
-6.6 E(send Register-Stop\(S,G\) to outer.src)151.2 371.2 Q(})127 384.2
Q(if\( !SPTbit\(S,G\) && ! pkt.NullRegisterBit \) {)127 397.2 Q
(decapsulate and pass the inner packet to the normal)154.5 410.2 Q
(forwarding path for forwarding on the \(*,G\) tree.)154.5 423.2 Q(})127
436.2 Q 6.6(}e)98.4 449.2 S(lse {)-6.6 E
(send Register-Stop\(S,G\) to outer.src)124.8 462.2 Q(#)124.8 475.2 Q F0
(Note \(*\))6.6 E F2(})98.4 488.2 Q(})72 501.2 Q(outer.dst)72 536.8 Q F0
(is the IP destination address of the encapsulating header)2.75 E(.)
-.605 E F2(outer.src)72 562.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 588.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 601.8 Q
(Note \(*\): This may block traf)72 618.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 631.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
644.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 657.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 670.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
683.4 Q(vity follo)-.275 E(wing an RP change.)-.275 E -.275(Ke)72 700 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 and)-.11 E
(the RP desires to switch to the SPT or the SPTbit is already set.)72
713 Q(This may cause the upstream)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.4.2. [P)2.75 F(age 29])-.165 E 0 Cg EP
%%Page: 30 30
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(\(S,G\) state machine to trig\
ger a join if the inherited_olist\(S,G\) is not NULL;)72 85 Q
(An RP should preserv)72 101.6 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 114.6 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 127.6 Q 2.75(gisters. T)-.165 F(raf)
-.385 E(\214c w)-.275 E(ould then be interrupted until the Re)-.11 E
(gister)-.165 E(-Stop T)-.22 E(imer)-.385 E -.165(ex)72 140.6 S
(pires at the DR.).165 E(Thus, at the RP)72 157.2 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 170.2 Q
(gister_Probe_T)-.165 E(ime \).)-.385 E(Just lik)72 186.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 after it is)-.11 E(decapsulated from the Re)72 199.8
Q(gister T)-.165 E(unnel.)-.495 E
(The IP ECN bits should be copied from the IP header of the Re)72 216.4
Q(gister pack)-.165 E(et to the decapsulated)-.11 E(pack)72 229.4 Q(et.)
-.11 E(The Dif)72 246 Q(fserv Code Point \(DSCP\) should be copied from\
the IP header of the Re)-.275 E(gister pack)-.165 E(et to)-.11 E
(the decapsulated pack)72 259 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 272 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 285 Q/F1 11/Times-Bold@0 SF(4.5.)72 311 Q/F2 13/Times-Bold@0
SF(PIM J)5.5 E(oin/Prune Messages)-.195 E F0 2.75(AP)72 327.6 S(IM Join\
/Prune message consists of a list of groups and a list of Joined and Pr\
uned sources for)-2.75 E(each group.)72 340.6 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 353.6 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 366.6 R(considering a Join/Prune message whose PIM D\
estination \214eld addresses this)2.75 E(router)72 379.6 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 392.6 Q(fect their respecti)-.275 E .33 -.165(ve d)-.275 H -.275(ow)
.165 G(nstream).275 E(state machines.)72 405.6 Q(When considering a Joi\
n/Prune message whose PIM Destination \214eld addresses)5.5 E
(another router)72 418.6 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
435.2 Q(kno)72 448.2 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 461.2 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 474.2 Q
(discarded without further processing.)72 487.2 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 500.2 Q
(MUST also be authenticated using IPsec AH.)72 513.2 Q 1.76 -.88(We n)72
529.8 T(ote that some older PIM implementations incorrectly f).88 E
(ail to send Hello messages on point-)-.11 E(to-point interf)72 542.8 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 555.8 Q
(ut that this con\214guration option SHOULD NO)-.22 E 2.75(Tb)-.44 G(e)
-2.75 E(enabled by def)72 568.8 Q(ault.)-.11 E F1 2.75(4.5.1. Recei)72
607.8 R(ving \(*,*,RP\) J)-.11 E(oin/Prune Messages)-.165 E F0(The per)
72 624.4 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 637.4
Q F1(NoInf)97 654 Q 2.75(o\()-.275 G(NI\))-2.75 E F0(The interf)122 667
Q(ace has no \(*,*,RP\) Join state and no timers running.)-.11 E F1
-.165(Jo)97 683.6 S(in \(J\)).165 E F0(The interf)122 696.6 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 709.6 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 722.6 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 0 Cg
EP
%%Page: 31 31
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Times-Bold@0 SF(Prune-P)
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 Prune-Pending 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(Prune-P)97 212.8 Q(ending T)-.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 Prune-Pending)2.75
E -.385(Ti)122 238.8 S(mer 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 per)-.198 E
(-interface \(*,*,RP\) state-machine)-.407 E F0(The transition e)72
527.4 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
540.4 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 553.4 Q
2.75(,a)-.44 G(lthough seeing such a)-2.75 E(pack)72 566.4 Q
(et may cause state transitions in other state machines.)-.11 E
(On unnumbered interf)72 583 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 596 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 Join/Prune messages with a dest\
ination address of all)72 609 Q(zeros are also accepted.)72 622 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 31])-.165 E 0 Cg EP
%%Page: 32 32
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(Do)72 88.6 Q(wnstream per)
-.275 E(-interf)-.22 E(ace \(*,*,RP\) state-machine in tab)-.11 E
(ular form:)-.22 E .44 LW 503.993 99.35 72 99.35 DL/F1 11/Times-Bold@0
SF(Ev)317.494 109.6 Q(ent)-.11 E 503.993 114.35 154.767 114.35 DL(Pr)
77.237 123.6 Q .33 -.165(ev S)-.198 H(tate).165 E(Recei)163.623 124.6 Q
-.11(ve)-.11 G -.165(Jo)163.623 137.6 S(in\(*,*,RP\)).165 E(Recei)
251.334 124.6 Q 4.933 -.11(ve P)-.11 H(rune).11 E(\(*,*,RP\))251.334
137.6 Q(Prune-P)339.045 124.6 Q(ending)-.22 E -.198(Ti)339.045 137.6 S
(mer Expir).198 E(es)-.198 E 7.727(Expiry T)426.756 124.6 R(imer)-.198 E
(Expir)426.756 137.6 Q(es)-.198 E 503.993 142.35 72 142.35 DL 503.993
144.35 72 144.35 DL/F2 11/Symbol SF<ae>163.623 154.6 Q F0 2.75(Js)2.75 G
(tate)-2.75 E F2<ae>46.912 E F0(NI state)2.75 E 84.048(--)39.586 G F1
(NoInf)77.237 167.6 Q 2.75(o\()-.275 G(NI\))-2.75 E F0 20.366
(start Expiry)163.623 167.6 R -.385(Ti)163.623 180.6 S(mer).385 E
503.993 185.35 72 185.35 DL F2<ae>163.623 195.6 Q F0 2.75(Js)2.75 G
(tate)-2.75 E F2<ae>46.912 E F0(PP state)2.75 E(-)38.959 E F2<ae>84.048
E F0(NI state)2.75 E F1 -.165(Jo)77.237 208.6 S(in \(J\)).165 E F0
11.819(restart Expiry)163.623 208.6 R -.385(Ti)163.623 221.6 S(mer).385
E 20.982(start Prune-)251.334 208.6 R(Pending T)251.334 221.6 Q(imer)
-.385 E 503.993 226.35 72 226.35 DL F2<ae>163.623 236.6 Q F0 2.75(Js)
2.75 G(tate)-2.75 E F2<ae>46.912 E F0(PP state)2.75 E F2<ae>38.959 E F0
(NI state)2.75 E F2<ae>39.586 E F0(NI state)2.75 E F1(Prune-P)77.237
256.1 Q(ending)-.22 E(\(PP\))77.237 269.1 Q F0 11.819(restart Expiry)
163.623 249.6 R -.385(Ti)163.623 262.6 S 11.599(mer; cancel).385 F
(Prune-Pending)163.623 275.6 Q -.385(Ti)163.623 288.6 S(mer).385 E
17.924(Send Prune-)339.045 249.6 R(Echo\(*,*,RP\))339.045 262.6 Q
503.993 293.35 72 293.35 DL 418.9 114.35 418.9 293.35 DL 331.189 114.35
331.189 293.35 DL 243.478 114.35 243.478 293.35 DL 154.767 99.35 154.767
293.35 DL 156.767 99.35 156.767 293.35 DL 503.993 99.35 503.993 293.35
DL 72 99.35 72 293.35 DL F1 -.814(Tr)72 307.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 324.2 Q(wing e)-.275 E -.165(ve)
-.275 G(nt may trigger a transition:).165 E F1(Recei)97 340.8 Q .22 -.11
(ve J)-.11 H(oin\(*,*,RP\))-.055 E F0 2.75(AJ)122 353.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 366.8 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E
(The \(*,*,RP\) do)122 383.4 Q(wnstream state machine on interf)-.275 E
(ace I transitions to the Join state.)-.11 E(The Expiry T)122 396.4 Q
(imer \(ET\) is started, and set to the HoldT)-.385 E
(ime from the triggering)-.385 E(Join/Prune message.)122 409.4 Q
(Note that it is possible to recei)122 426 Q .33 -.165(ve a J)-.275 H
(oin\(*,*,RP\) message for an RP that we do not).165 E(ha)122 439 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 452 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 465 Q 2.75(ep)-.11 G(lace.)-2.75 E F1 -.814(Tr)72 491 S
(ansitions fr).814 E(om J)-.198 E(oin State)-.165 E F0
(When in Join state, the follo)72 507.6 Q(wing e)-.275 E -.165(ve)-.275
G(nts may trigger a transition:).165 E F1(Recei)97 524.2 Q .22 -.11
(ve J)-.11 H(oin\(*,*,RP\))-.055 E F0 2.75(AJ)122 537.2 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 550.2 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E
(The \(*,*,RP\) do)122 566.8 Q(wnstream state machine on interf)-.275 E
(ace I remains in Join state, and the)-.11 E(Expiry T)122 579.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 592.8 Q F1(Recei)97 609.4 Q
.22 -.11(ve P)-.11 H(rune\(*,*,RP\)).11 E F0 2.75(AP)122 622.4 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
635.4 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(*,*,RP\) do)122 652 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the Prune-Pending)-.11 E 2.75(state. The)122 665 R
(Prune-Pending T)2.75 E(imer is started; it is set to the J/P_Ov)-.385 E
(erride_Interv)-.165 E(al\(I\) if)-.275 E
(the router has more than one neighbor on that interf)122 678 Q
(ace; otherwise it is set to zero)-.11 E(causing it to e)122 691 Q
(xpire immediately)-.165 E(.)-.715 E F1(Expiry T)97 707.6 Q(imer Expir)
-.198 E(es)-.198 E F0(The Expiry T)122 720.6 Q
(imer for the \(*,*,RP\) 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.1. [P)2.75 F(age 32])-.165 E 0 Cg EP
%%Page: 33 33
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(The \(*,*,RP\) 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
-.814(Tr)72 111 S(ansitions fr).814 E(om Prune-P)-.198 E(ending State)
-.22 E F0(When in Prune-Pending 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\(*,*,RP\))-.055 E F0 2.75(AJ)122 157.2
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
170.2 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(*,*,RP\) do)122 186.8
Q(wnstream state machine on interf)-.275 E
(ace I transitions to the Join state.)-.11 E(The Prune-Pending T)122
199.8 Q(imer is canceled \(without triggering an e)-.385 E(xpiry e)-.165
E -.165(ve)-.275 G 2.75(nt\). The).165 F(Expiry T)122 212.8 Q
(imer is restarted, set to maximum of its current v)-.385 E
(alue and the HoldT)-.275 E(ime from)-.385 E
(the triggering Join/Prune message.)122 225.8 Q F1(Expiry T)97 242.4 Q
(imer Expir)-.198 E(es)-.198 E F0(The Expiry T)122 255.4 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 272 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the NoInfo state.)-.11 E F1(Prune-P)97 288.6 Q
(ending T)-.22 E(imer Expir)-.198 E(es)-.198 E F0(The Prune-Pending T)
122 301.6 Q(imer for the \(*,*,RP\) do)-.385 E
(wnstream state machine on interf)-.275 E(ace I)-.11 E -.165(ex)122
314.6 S(pires.).165 E(The \(*,*,RP\) do)122 331.2 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the NoInfo state.)-.11 E 2.75(AP)122 344.2 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 360.8 Q(arding)-.11 E(on an interf)122 373.8 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 386.8 Q
(wn address in the Upstream)-.275 E(Neighbor Address \214eld.)122 399.8
Q(Its purpose is to add additional reliability so that if a Prune)5.5 E
(that should ha)122 412.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)
.165 E(PruneEcho may be recei)122 425.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\(*,*,RP\))-2.75 E(need not be sent on an interf)122
438.8 Q(ace that contains only a single PIM neighbor during the)-.11 E
(time this state machine w)122 451.8 Q(as in Prune-Pending state.)-.11 E
F1 2.75(4.5.2. Recei)72 490.8 R(ving \(*,G\) J)-.11 E
(oin/Prune Messages)-.165 E F0(When a router recei)72 507.4 Q -.165(ve)
-.275 G 2.75(saJ).165 G(oin\(*,G\) or Prune\(*,G\) it must \214rst chec\
k to see whether the RP in the)-2.75 E
(message matches RP\(G\) \(the router')72 520.4 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\(*,G\) or Prune\(*,G\) should be silently dropp\
ed.)72 533.4 Q(If a router has no RP)5.5 E
(information \(e.g. has not recently recei)72 546.4 Q -.165(ve)-.275 G
2.75(daB).165 G(SR message\) then it may choose to accept)-2.75 E(Join\
\(*,G\) or Prune\(*,G\) and treat the RP in the message as RP\(G\).)72
559.4 Q(The per)72 576 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 589 Q F1(NoInf)97 605.6 Q 2.75(o\()-.275 G(NI\))
-2.75 E F0(The interf)122 618.6 Q
(ace has no \(*,G\) Join state and no timers running.)-.11 E F1 -.165
(Jo)97 635.2 S(in \(J\)).165 E F0(The interf)122 648.2 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 661.2 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 674.2 Q
(ace.)-.11 E F1(Prune-P)97 690.8 Q(ending \(PP\))-.22 E F0
(The router has recei)122 703.8 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 716.8 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(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 0 Cg EP
%%Page: 34 34
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(router)122 85 Q 5.5(.F)-.605 G
(or forw)-5.665 E(arding purposes, the Prune-Pending state functions e)
-.11 E(xactly lik)-.165 E 2.75(et)-.11 G(he)-2.75 E(Join state.)122 98 Q
(In addition, the state-machine uses tw)72 114.6 Q 2.75(ot)-.11 G
(imers:)-2.75 E/F1 11/Times-Bold@0 SF(Expiry T)97 131.2 Q(imer \(ET\))
-.198 E F0(This timer is restarted when a v)122 144.2 Q
(alid Join\(*,G\) is recei)-.275 E -.165(ve)-.275 G 2.75(d. Expiry).165
F(of the Expiry T)2.75 E(imer)-.385 E(causes the interf)122 157.2 Q
(ace state to re)-.11 E -.165(ve)-.275 G(rt to NoInfo for this group.)
.165 E F1(Prune-P)97 173.8 Q(ending T)-.22 E(imer \(PPT\))-.198 E F0
(This timer is set when a v)122 186.8 Q(alid Prune\(*,G\) is recei)-.275
E -.165(ve)-.275 G 2.75(d. Expiry).165 F(of the Prune-Pending)2.75 E
-.385(Ti)122 199.8 S(mer 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 426.8 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)171.745 465.8 Q 2.75(e3)-.198 G 2.75(:D)-2.75 G -.11
(ow)-2.75 G(nstr).11 E(eam per)-.198 E
(-interfacce \(*,G\) state-machine)-.407 E F0(Do)72 488.4 Q
(wnstream per)-.275 E(-interf)-.22 E(acce \(*,G\) state-machine in tab)
-.11 E(ular form:)-.22 E .44 LW 503.993 499.15 72 499.15 DL F1(Ev)
317.494 509.4 Q(ent)-.11 E 503.993 514.15 154.767 514.15 DL(Pr)77.237
523.4 Q .33 -.165(ev S)-.198 H(tate).165 E(Recei)163.623 524.4 Q -.11
(ve)-.11 G -.165(Jo)163.623 537.4 S(in\(*,G\)).165 E(Recei)251.334 524.4
Q -.11(ve)-.11 G(Prune\(*,G\))251.334 537.4 Q(Prune-P)339.045 524.4 Q
(ending)-.22 E -.198(Ti)339.045 537.4 S(mer Expir).198 E(es)-.198 E
7.727(Expiry T)426.756 524.4 R(imer)-.198 E(Expir)426.756 537.4 Q(es)
-.198 E 503.993 542.15 72 542.15 DL 503.993 544.15 72 544.15 DL/F2 11
/Symbol SF<ae>163.623 554.4 Q F0 2.75(Js)2.75 G(tate)-2.75 E F2<ae>
46.912 E F0(NI state)2.75 E 84.048(--)39.586 G F1(NoInf)77.237 567.4 Q
2.75(o\()-.275 G(NI\))-2.75 E F0 20.366(start Expiry)163.623 567.4 R
-.385(Ti)163.623 580.4 S(mer).385 E 503.993 585.15 72 585.15 DL F2<ae>
163.623 595.4 Q F0 2.75(Js)2.75 G(tate)-2.75 E F2<ae>46.912 E F0
(PP state)2.75 E(-)38.959 E F2<ae>84.048 E F0(NI state)2.75 E F1 -.165
(Jo)77.237 608.4 S(in \(J\)).165 E F0 11.819(restart Expiry)163.623
608.4 R -.385(Ti)163.623 621.4 S(mer).385 E 20.982(start Prune-)251.334
608.4 R(Pending T)251.334 621.4 Q(imer)-.385 E 503.993 626.15 72 626.15
DL F2<ae>163.623 636.4 Q F0 2.75(Js)2.75 G(tate)-2.75 E F2<ae>46.912 E
F0(PP state)2.75 E F2<ae>38.959 E F0(NI state)2.75 E F2<ae>39.586 E F0
(NI state)2.75 E F1(Prune-P)77.237 655.9 Q(ending)-.22 E(\(PP\))77.237
668.9 Q F0 11.819(restart Expiry)163.623 649.4 R -.385(Ti)163.623 662.4
S 11.599(mer; cancel).385 F(Prune-Pending)163.623 675.4 Q -.385(Ti)
163.623 688.4 S(mer).385 E 17.924(Send Prune-)339.045 649.4 R
(Echo\(*,G\))339.045 662.4 Q 503.993 693.15 72 693.15 DL 418.9 514.15
418.9 693.15 DL 331.189 514.15 331.189 693.15 DL 243.478 514.15 243.478
693.15 DL 154.767 499.15 154.767 693.15 DL 156.767 499.15 156.767 693.15
DL 503.993 499.15 503.993 693.15 DL 72 499.15 72 693.15 DL
(The transition e)72 711 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 724
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(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 0 Cg EP
%%Page: 35 35
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E
(correct, these state transitions in this state machine must not occur)
72 85 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 98 Q
(On unnumbered interf)72 114.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 127.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 Join/Prune messages with\
a destination address of all)72 140.6 Q(zeros are also accepted.)72
153.6 Q/F1 11/Times-Bold@0 SF -.814(Tr)72 179.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 196.2 Q(wing e)-.275 E -.165(ve)
-.275 G(nt may trigger a transition:).165 E F1(Recei)97 212.8 Q .22 -.11
(ve J)-.11 H(oin\(*,G\))-.055 E F0 2.75(AJ)122 225.8 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
238.8 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(*,G\) do)122 255.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
268.4 Q(imer \(ET\) is started, and set to the HoldT)-.385 E
(ime from the triggering Join/Prune)-.385 E(message.)122 281.4 Q F1
-.814(Tr)72 307.4 S(ansitions fr).814 E(om J)-.198 E(oin State)-.165 E
F0(When in Join state, the follo)72 324 Q(wing e)-.275 E -.165(ve)-.275
G(nts may trigger a transition:).165 E F1(Recei)97 340.6 Q .22 -.11
(ve J)-.11 H(oin\(*,G\))-.055 E F0 2.75(AJ)122 353.6 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
366.6 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(*,G\) do)122 383.2 Q
(wnstream state machine on interf)-.275 E
(ace I remains in Join state, and the)-.11 E(Expiry T)122 396.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 409.2 Q F1(Recei)97 425.8 Q
.22 -.11(ve P)-.11 H(rune\(*,G\)).11 E F0 2.75(AP)122 438.8 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
451.8 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(*,G\) do)122 468.4 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the Prune-Pending)-.11 E 2.75(state. The)122 481.4
R(Prune-Pending T)2.75 E(imer is started; it is set to the J/P_Ov)-.385
E(erride_Interv)-.165 E(al\(I\) if)-.275 E
(the router has more than one neighbor on that interf)122 494.4 Q
(ace; otherwise it is set to zero)-.11 E(causing it to e)122 507.4 Q
(xpire immediately)-.165 E(.)-.715 E F1(Expiry T)97 524 Q(imer Expir)
-.198 E(es)-.198 E F0(The Expiry T)122 537 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 553.6 Q(wnstream state machine on interf)
-.275 E(ace I transitions to the NoInfo state.)-.11 E F1 -.814(Tr)72
579.6 S(ansitions fr).814 E(om Prune-P)-.198 E(ending State)-.22 E F0
(When in Prune-Pending state, the follo)72 596.2 Q(wing e)-.275 E -.165
(ve)-.275 G(nts may trigger a transition:).165 E F1(Recei)97 612.8 Q .22
-.11(ve J)-.11 H(oin\(*,G\))-.055 E F0 2.75(AJ)122 625.8 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
638.8 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(*,G\) do)122 655.4 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the Join state.)-.11 E(The)5.5 E(Prune-Pending T)
122 668.4 Q(imer is canceled \(without triggering an e)-.385 E(xpiry e)
-.165 E -.165(ve)-.275 G 2.75(nt\). The).165 F(Expiry)2.75 E -.385(Ti)
122 681.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 694.4 Q F1(Expiry T)97 711 Q
(imer Expir)-.198 E(es)-.198 E F0(The Expiry T)122 724 Q
(imer for the \(*,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.2. [P)2.75 F
(age 35])-.165 E 0 Cg EP
%%Page: 36 36
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(The \(*,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
(Prune-P)97 101.6 Q(ending T)-.22 E(imer Expir)-.198 E(es)-.198 E F0
(The Prune-Pending T)122 114.6 Q(imer for the \(*,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 \(*,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\(*,G\) is sent onto the subnet connected to interf)122 157.2
Q(ace I.)-.11 E(The action "Send PruneEcho\(*,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\(*,G\) is simply a Prune\(*,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\(*,G\) need not be)-2.75 E(sent on an interf)122
251.8 Q(ace that contains only a single PIM neighbor during the time th\
is state)-.11 E(machine w)122 264.8 Q(as in Prune-Pending state.)-.11 E
F1 2.75(4.5.3. Recei)72 290.8 R(ving \(S,G\) J)-.11 E
(oin/Prune Messages)-.165 E F0(The per)72 307.4 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 320.4 Q
(There are three states:)5.5 E F1(NoInf)97 337 Q 2.75(o\()-.275 G(NI\))
-2.75 E F0(The interf)122 350 Q
(ace has no \(S,G\) Join state and no \(S,G\) timers running.)-.11 E F1
-.165(Jo)97 366.6 S(in \(J\)).165 E F0(The interf)122 379.6 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 392.6 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 405.6 Q(ace.)-.11 E F1
(Prune-P)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\) 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 Prune-Pending state functions e)-.11 E(xactly lik)
-.165 E 2.75(et)-.11 G(he)-2.75 E(Join state.)122 474.2 Q
(In addition, there are tw)72 490.8 Q 2.75(ot)-.11 G(imers:)-2.75 E F1
(Expiry T)97 507.4 Q(imer \(ET\))-.198 E F0(This timer is set when a v)
122 520.4 Q(alid Join\(S,G\) is recei)-.275 E -.165(ve)-.275 G 2.75
(d. Expiry).165 F(of the Expiry T)2.75 E(imer)-.385 E
(causes this state machine to re)122 533.4 Q -.165(ve)-.275 G
(rt to NoInfo state.).165 E F1(Prune-P)97 550 Q(ending T)-.22 E
(imer \(PPT\))-.198 E F0(This timer is set when a v)122 563 Q
(alid Prune\(S,G\) is recei)-.275 E -.165(ve)-.275 G 2.75(d. Expiry).165
F(of the Prune-Pending)2.75 E -.385(Ti)122 576 S
(mer causes this state machine to re).385 E -.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.3. [P)2.75 F(age 36])
-.165 E 0 Cg EP
%%Page: 37 37
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E 309 365 225 225 -202 202 193.5
287 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 11/Times-Bold@0 SF(Figur)173.879 326 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 348.6 Q(wnstream per)
-.275 E(-interf)-.22 E(ace \(S,G\) state-machine in tab)-.11 E
(ular form:)-.22 E .44 LW 503.993 359.35 72 359.35 DL F1(Ev)317.494
369.6 Q(ent)-.11 E 503.993 374.35 154.767 374.35 DL(Pr)77.237 383.6 Q
.33 -.165(ev S)-.198 H(tate).165 E(Recei)163.623 384.6 Q -.11(ve)-.11 G
-.165(Jo)163.623 397.6 S(in\(S,G\)).165 E(Recei)251.334 384.6 Q -.11(ve)
-.11 G(Prune\(S,G\))251.334 397.6 Q(Prune-P)339.045 384.6 Q(ending)-.22
E -.198(Ti)339.045 397.6 S(mer Expir).198 E(es)-.198 E 7.727(Expiry T)
426.756 384.6 R(imer)-.198 E(Expir)426.756 397.6 Q(es)-.198 E 503.993
402.35 72 402.35 DL 503.993 404.35 72 404.35 DL/F2 11/Symbol SF<ae>
163.623 414.6 Q F0 2.75(Js)2.75 G(tate)-2.75 E F2<ae>46.912 E F0
(NI state)2.75 E 84.048(--)39.586 G F1(NoInf)77.237 427.6 Q 2.75(o\()
-.275 G(NI\))-2.75 E F0 20.366(start Expiry)163.623 427.6 R -.385(Ti)
163.623 440.6 S(mer).385 E 503.993 445.35 72 445.35 DL F2<ae>163.623
455.6 Q F0 2.75(Js)2.75 G(tate)-2.75 E F2<ae>46.912 E F0(PP state)2.75 E
(-)38.959 E F2<ae>84.048 E F0(NI state)2.75 E F1 -.165(Jo)77.237 468.6 S
(in \(J\)).165 E F0 11.819(restart Expiry)163.623 468.6 R -.385(Ti)
163.623 481.6 S(mer).385 E 20.982(start Prune-)251.334 468.6 R
(Pending T)251.334 481.6 Q(imer)-.385 E 503.993 486.35 72 486.35 DL F2
<ae>163.623 496.6 Q F0 2.75(Js)2.75 G(tate)-2.75 E F2<ae>46.912 E F0
(PP state)2.75 E F2<ae>38.959 E F0(NI state)2.75 E F2<ae>39.586 E F0
(NI state)2.75 E F1(Prune-P)77.237 516.1 Q(ending)-.22 E(\(PP\))77.237
529.1 Q F0 11.819(restart Expiry)163.623 509.6 R -.385(Ti)163.623 522.6
S 11.599(mer; cancel).385 F(Prune-Pending)163.623 535.6 Q -.385(Ti)
163.623 548.6 S(mer).385 E 17.924(Send Prune-)339.045 509.6 R
(Echo\(S,G\))339.045 522.6 Q 503.993 553.35 72 553.35 DL 418.9 374.35
418.9 553.35 DL 331.189 374.35 331.189 553.35 DL 243.478 374.35 243.478
553.35 DL 154.767 359.35 154.767 553.35 DL 156.767 359.35 156.767 553.35
DL 503.993 359.35 503.993 553.35 DL 72 359.35 72 553.35 DL
(The transition e)72 571.2 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
584.2 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 597.2 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 610.2 Q
(On unnumbered interf)72 626.8 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 639.8 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 Join/Prune messages with\
a destination address of all)72 652.8 Q(zeros are also accepted.)72
665.8 Q F1 -.814(Tr)72 691.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 708.4 Q
(wing e)-.275 E -.165(ve)-.275 G(nt may trigger a transition:).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 37])-.165 E 0 Cg EP
%%Page: 38 38
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Times-Bold@0 SF(Recei)97
85 Q .22 -.11(ve J)-.11 H(oin\(S,G\))-.055 E F0 2.75(AJ)122 98 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
111 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G\) do)122 127.6 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the Join state.)-.11 E(The)5.5 E(Expiry T)122
140.6 Q(imer \(ET\) is started, and set to the HoldT)-.385 E
(ime from the triggering Join/Prune)-.385 E(message.)122 153.6 Q F1
-.814(Tr)72 179.6 S(ansitions fr).814 E(om J)-.198 E(oin State)-.165 E
F0(When in Join state, the follo)72 196.2 Q(wing e)-.275 E -.165(ve)
-.275 G(nts may trigger a transition:).165 E F1(Recei)97 212.8 Q .22
-.11(ve J)-.11 H(oin\(S,G\))-.055 E F0 2.75(AJ)122 225.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
238.8 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G\) do)122 255.4 Q
(wnstream state machine on interf)-.275 E
(ace I remains in Join state, and the)-.11 E(Expiry T)122 268.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 281.4 Q F1(Recei)97 298 Q
.22 -.11(ve P)-.11 H(rune\(S,G\)).11 E F0 2.75(AP)122 311 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
324 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G\) do)122 340.6 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the Prune-Pending)-.11 E 2.75(state. The)122 353.6
R(Prune-Pending T)2.75 E(imer is started; it is set to the J/P_Ov)-.385
E(erride_Interv)-.165 E(al\(I\) if)-.275 E
(the router has more than one neighbor on that interf)122 366.6 Q
(ace; otherwise it is set to zero)-.11 E(causing it to e)122 379.6 Q
(xpire immediately)-.165 E(.)-.715 E F1(Expiry T)97 396.2 Q(imer Expir)
-.198 E(es)-.198 E F0(The Expiry T)122 409.2 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 425.8 Q(wnstream state machine on interf)
-.275 E(ace I transitions to the NoInfo state.)-.11 E F1 -.814(Tr)72
451.8 S(ansitions fr).814 E(om Prune-P)-.198 E(ending State)-.22 E F0
(When in Prune-Pending state, the follo)72 468.4 Q(wing e)-.275 E -.165
(ve)-.275 G(nts may trigger a transition:).165 E F1(Recei)97 485 Q .22
-.11(ve J)-.11 H(oin\(S,G\))-.055 E F0 2.75(AJ)122 498 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
511 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G\) do)122 527.6 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the Join state.)-.11 E(The)5.5 E(Prune-Pending T)
122 540.6 Q(imer is canceled \(without triggering an e)-.385 E(xpiry e)
-.165 E -.165(ve)-.275 G 2.75(nt\). The).165 F(Expiry)2.75 E -.385(Ti)
122 553.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 566.6 Q F1(Expiry T)97 583.2 Q
(imer Expir)-.198 E(es)-.198 E F0(The Expiry T)122 596.2 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 612.8 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the NoInfo state.)-.11 E F1(Prune-P)97 629.4 Q
(ending T)-.22 E(imer Expir)-.198 E(es)-.198 E F0(The Prune-Pending T)
122 642.4 Q(imer for the \(S,G\) do)-.385 E
(wnstream state machine on interf)-.275 E(ace I)-.11 E -.165(ex)122
655.4 S(pires.).165 E(The \(S,G\) do)122 672 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 685 Q
(ace I.)-.11 E(The action "Send PruneEcho\(S,G\)" is triggered when the\
router stops forw)122 701.6 Q(arding on)-.11 E(an interf)122 714.6 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(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 0 Cg EP
%%Page: 39 39
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E
(sent by the upstream router on a LAN with its o)122 85 Q
(wn address in the Upstream Neighbor)-.275 E(Address \214eld.)122 98 Q(\
Its purpose is to add additional reliability so that if a Prune that sh\
ould)5.5 E(ha)122 111 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 124 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 137
Q(ace that contains only a single PIM neighbor during the time this sta\
te)-.11 E(machine w)122 150 Q(as in Prune-Pending state.)-.11 E/F1 11
/Times-Bold@0 SF 2.75(4.5.4. Recei)72 176 R(ving \(S,G,r)-.11 E(pt\) J)
-.11 E(oin/Prune Messages)-.165 E F0(The per)72 192.6 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 205.6 Q
2.75(es)-.165 G(tates:)-2.75 E F1(NoInf)97 222.2 Q 2.75(o\()-.275 G
(NI\))-2.75 E F0(The interf)122 235.2 Q
(ace has no \(S,G,rpt\) Prune state and no \(S,G,rpt\) timers running.)
-.11 E F1(Prune \(P\))97 251.8 Q F0(The interf)122 264.8 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
277.8 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 290.8 Q F1(Prune-P)97 307.4 Q(ending \(PP\))-.22 E F0
(The router has recei)122 320.4 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 333.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 346.4 Q 5.5
(.F)-.605 G(or forw)-5.665 E
(arding purposes, the Prune-Pending state functions e)-.11 E(xactly lik)
-.165 E 2.75(et)-.11 G(he)-2.75 E(NoInfo state.)122 359.4 Q F1
(PruneTmp \(P'\))97 376 Q F0
(This state is a transient state which for forw)122 389 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 402 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 415 Q(message contains a \(*,G\) Join.)122 428 Q
(Later in the message we will normally encounter an)5.5 E
(\(S,G,rpt\) prune to re-instate the Prune state.)122 441 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 454 Q -.165(ve)-.275 G(rt to NoInfo).165 E
(state in this state machine.)122 467 Q
(As no time is spent in this state, no timers can e)122 483.6 Q(xpire.)
-.165 E F1(Prune-P)97 500.2 Q(ending-Tmp \(PP'\))-.22 E F0
(This state is a transient state which is identical to P' e)122 513.2 Q
(xcept that it is associated with)-.165 E
(the PP state rather than the P state.)122 526.2 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 539.2 Q
(In addition, there are tw)72 555.8 Q 2.75(ot)-.11 G(imers:)-2.75 E F1
(Expiry T)97 572.4 Q(imer \(ET\))-.198 E F0(This timer is set when a v)
122 585.4 Q(alid Prune\(S,G,rpt\) is recei)-.275 E -.165(ve)-.275 G 2.75
(d. Expiry).165 F(of the Expiry T)2.75 E(imer)-.385 E
(causes this state machine to re)122 598.4 Q -.165(ve)-.275 G
(rt to NoInfo state.).165 E F1(Prune-P)97 615 Q(ending T)-.22 E
(imer \(PPT\))-.198 E F0(This timer is set when a v)122 628 Q
(alid Prune\(S,G,rpt\) is recei)-.275 E -.165(ve)-.275 G 2.75(d. Expiry)
.165 F(of the Prune-Pending)2.75 E -.385(Ti)122 641 S
(mer 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(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 0 Cg EP
%%Page: 40 40
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E 129 366 354 354 -205 205 129
290 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 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 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 256 449 ] concat
%I
[
(Prune\(S,G,rpt\))
([Start 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 376 481 ] 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 300.982 545.988 ] concat
%I
[
(PP Timer)
(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 215.201 533.094 ] concat
%I
[
(Prune\(S,G,rpt\))
] Text
End
End %I eop
showpage
end
%%EndDocument
end PEND/F1 11/Times-Bold@0 SF(Figur)165.227 329 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
(The transition e)72 351.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 364.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, these state transitions in t\
his state machine must not occur)72 377.6 Q(,)-.44 E
(although seeing such a pack)72 390.6 Q
(et may cause state transitions in other state machines.)-.11 E
(On unnumbered interf)72 407.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 420.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 Join/Prune messages with\
a destination address of all)72 433.2 Q(zeros are also accepted.)72
446.2 Q F1 -.814(Tr)72 472.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
488.8 Q(wing e)-.275 E -.165(ve)-.275 G(nt may trigger a transition:)
.165 E F1(Recei)97 505.4 Q .22 -.11(ve P)-.11 H(rune\(S,G,r).11 E(pt\))
-.11 E F0 2.75(AP)122 518.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
531.4 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G,rpt\) do)122 548
Q(wnstream state machine on interf)-.275 E
(ace I transitions to the Prune-)-.11 E(Pending state.)122 561 Q
(The Expiry T)5.5 E(imer \(ET\) is started, and set to the HoldT)-.385 E
(ime from the)-.385 E(triggering Join/Prune message.)122 574 Q
(The Prune-Pending T)5.5 E(imer is started; it is set to the)-.385 E
(J/P_Ov)122 587 Q(erride_Interv)-.165 E
(al\(I\) if the router has more than one neighbor on that interf)-.275 E
(ace;)-.11 E(otherwise it is set to zero causing it to e)122 600 Q
(xpire immediately)-.165 E(.)-.715 E F1 -.814(Tr)72 626 S(ansitions fr)
.814 E(om Prune-P)-.198 E(ending State)-.22 E F0
(When in Prune-Pending \(PP\) state, the follo)72 642.6 Q(wing e)-.275 E
-.165(ve)-.275 G(nts may trigger a transition:).165 E F1(Recei)97 659.2
Q .22 -.11(ve J)-.11 H(oin\(*,G\))-.055 E F0 2.75(AJ)122 672.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
685.2 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G,rpt\) do)122
701.8 Q(wnstream state machine on interf)-.275 E
(ace I transitions to Prune-Pending-)-.11 E(Tmp state whilst the remain\
der of the compound Join/Prune message containing the)122 714.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.4. [P)2.75 F(age 40])-.165 E 0 Cg EP
%%Page: 41 41
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(Do)72 88.6 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.985 99.35 72 99.35 DL/F1 11/Times-Bold@0
SF(Ev)305.11 109.6 Q(ent)-.11 E 503.985 114.35 130.654 114.35 DL(Pr)
75.943 136.6 Q .33 -.165(ev S)-.198 H(tate).165 E(Recei)137.569 124.6 Q
-.11(ve)-.11 G -.165(Jo)137.569 137.6 S(in\(*,G\)).165 E(Recei)203.398
124.6 Q -.11(ve)-.11 G -.165(Jo)203.398 137.6 S(in).165 E(\(S,G,r)
203.398 150.6 Q(pt\))-.11 E(Recei)263.352 124.6 Q -.11(ve)-.11 G(Prune)
263.352 137.6 Q(\(S,G,r)263.352 150.6 Q(pt\))-.11 E 22.518(End of)
329.181 124.6 R(Message)329.181 137.6 Q(Prune-)395.01 124.6 Q -.22(Pe)
395.01 137.6 S(nding).22 E -.198(Ti)395.01 150.6 S(mer).198 E(Expir)
395.01 163.6 Q(es)-.198 E(Expiry)449.475 124.6 Q -.198(Ti)449.475 137.6
S(mer).198 E(Expir)449.475 150.6 Q(es)-.198 E 503.985 168.35 72 168.35
DL 503.985 170.35 72 170.35 DL F0 -4.962 62.166(-- -n)137.569 180.6 T
38.273(/a n/a)-62.166 F/F2 11/Symbol SF<ae>263.352 180.6 Q F0(PP state)
2.75 E F1(NoInf)75.943 206.6 Q(o)-.275 E(\(NI\))75.943 219.6 Q F0 2.982
(start Prune-)263.352 193.6 R(Pending)263.352 206.6 Q -.385(Ti)263.352
219.6 S 2.751(mer; start).385 F(Expiry)263.352 232.6 Q -.385(Ti)263.352
245.6 S(mer).385 E 503.985 250.35 72 250.35 DL 62.166(-n)329.181 260.6 S
(/a)-62.166 E F2<ae>137.569 260.6 Q F0(P' state)2.75 E F2<ae>203.398
260.6 Q F0(NI state)2.75 E F2<ae>263.352 260.6 Q F0 2.75(Ps)2.75 G(tate)
-2.75 E F2<ae>449.475 260.6 Q F1(NI state)2.75 E(Prune \(P\))75.943
280.1 Q F0(restart)263.352 273.6 Q(Expiry)263.352 286.6 Q -.385(Ti)
263.352 299.6 S(mer).385 E 503.985 304.35 72 304.35 DL -10.451 62.166
(-- n)263.352 314.6 T(/a)-62.166 E F1(Prune-)75.943 314.6 Q -.22(Pe)
75.943 327.6 S(nding).22 E(\(PP\))75.943 340.6 Q F2<ae>137.569 314.6 Q
F0 .792(PP' state)3.543 F F2<ae>203.398 314.6 Q F0(NI state)2.75 E F2
<ae>395.01 314.6 Q F0 2.75(Ps)2.75 G(tate)-2.75 E 503.985 345.35 72
345.35 DL 41.706(error error)137.569 355.6 R 38.273(n/a n/a)170.239 F F2
<ae>263.352 355.6 Q F0 2.75(Ps)2.75 G(tate)-2.75 E F2<ae>329.181 355.6 Q
F0(NI state)2.75 E F1(Prune-)75.943 368.6 Q(Tmp \(P'\))75.943 381.6 Q F0
(restart)263.352 368.6 Q(Expiry)263.352 381.6 Q -.385(Ti)263.352 394.6 S
(mer).385 E 503.985 399.35 72 399.35 DL 41.706(error error)137.569 409.6
R 38.273(n/a n/a)170.239 F F2<ae>263.352 409.6 Q F0(PP state)2.75 E F2
<ae>329.181 409.6 Q F0(NI state)2.75 E F1(Prune-)75.943 416.1 Q -.22(Pe)
75.943 429.1 S(nding-).22 E(Tmp \(PP'\))75.943 442.1 Q F0(restart)
263.352 422.6 Q(Expiry)263.352 435.6 Q -.385(Ti)263.352 448.6 S(mer).385
E 503.985 453.35 72 453.35 DL 443.56 114.35 443.56 453.35 DL 389.095
114.35 389.095 453.35 DL 323.266 114.35 323.266 453.35 DL 257.437 114.35
257.437 453.35 DL 197.483 114.35 197.483 453.35 DL 130.654 99.35 130.654
453.35 DL 132.654 99.35 132.654 453.35 DL 503.985 99.35 503.985 453.35
DL 72 99.35 72 453.35 DL(Join\(*,G\) is processed.)122 467.6 Q F1(Recei)
97 484.2 Q .22 -.11(ve J)-.11 H(oin\(S,G,r)-.055 E(pt\))-.11 E F0 2.75
(AJ)122 497.2 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
510.2 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G,rpt\) do)122
526.8 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 539.8 Q F1(Prune-P)97 556.4 Q(ending T)-.22 E
(imer Expir)-.198 E(es)-.198 E F0(The Prune-Pending T)122 569.4 Q
(imer for the \(S,G,rpt\) do)-.385 E(wnstream state machine on interf)
-.275 E(ace I)-.11 E -.165(ex)122 582.4 S(pires.).165 E
(The \(S,G,rpt\) do)122 599 Q(wnstream state machine on interf)-.275 E
(ace I transitions to the Prune state.)-.11 E F1 -.814(Tr)72 625 S
(ansitions fr).814 E(om Prune State)-.198 E F0
(When in Prune \(P\) state, the follo)72 641.6 Q(wing e)-.275 E -.165
(ve)-.275 G(nts may trigger a transition:).165 E F1(Recei)97 658.2 Q .22
-.11(ve J)-.11 H(oin\(*,G\))-.055 E F0 2.75(AJ)122 671.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
684.2 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G,rpt\) do)122
700.8 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 713.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.4. [P)2.75 F(age 41])-.165 E 0 Cg EP
%%Page: 42 42
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(processed.)122 85 Q/F1 11
/Times-Bold@0 SF(Recei)97 101.6 Q .22 -.11(ve J)-.11 H(oin\(S,G,r)-.055
E(pt\))-.11 E F0 2.75(AJ)122 114.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
127.6 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G,rpt\) do)122
144.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 157.2 Q F1(Recei)97 173.8 Q .22 -.11(ve P)
-.11 H(rune\(S,G,r).11 E(pt\))-.11 E F0 2.75(AP)122 186.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
199.8 Q 2.75(sa)-.605 G(ddress on I.)-2.75 E(The \(S,G,rpt\) do)122
216.4 Q(wnstream state machine on interf)-.275 E
(ace I remains in Prune state.)-.11 E(The)5.5 E(Expiry T)122 229.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 242.4 Q F1(Expiry T)97 259
Q(imer Expir)-.198 E(es)-.198 E F0(The Expiry T)122 272 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 288.6 Q
(wnstream state machine on interf)-.275 E
(ace I transitions to the NoInfo state.)-.11 E(ET and PPT are canceled.)
122 301.6 Q F1 -.814(Tr)72 327.6 S(ansitions fr).814 E(om Prune-P)-.198
E(ending-Tmp State)-.22 E F0(When in Prune-Pending-Tmp \(PP'\) state an\
d processing a compound Join/Prune message, the)72 344.2 Q(follo)72
357.2 Q(wing e)-.275 E -.165(ve)-.275 G(nts may trigger a transition:)
.165 E F1(Recei)97 373.8 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 386.8 Q(The \(S,G,rpt\) do)122 403.4 Q
(wnstream state machine on interf)-.275 E
(ace I transitions back to the Prune-)-.11 E(Pending state.)122 416.4 Q
(The Expiry T)5.5 E
(imer \(ET\) is restarted, set to maximum of its current)-.385 E -.275
(va)122 429.4 S(lue and the HoldT).275 E
(ime from the triggering Join/Prune message.)-.385 E F1(End of Message)
97 446 Q F0(The end of the compound Join/Prune message is reached.)122
459 Q(The \(S,G,rpt\) do)122 475.6 Q(wnstream state machine on interf)
-.275 E(ace I transitions to the NoInfo state.)-.11 E
(ET and PPT are canceled.)122 488.6 Q F1 -.814(Tr)72 514.6 S
(ansitions fr).814 E(om PruneTmp State)-.198 E F0(When in PruneTmp \(P'\
\) state and processing a compound Join/Prune message, the follo)72
531.2 Q(wing)-.275 E -2.365 -.275(ev e)72 544.2 T
(nts may trigger a transition:).275 E F1(Recei)97 560.8 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 573.8
Q(The \(S,G,rpt\) do)122 590.4 Q(wnstream state machine on interf)-.275
E(ace I transitions back to the Prune)-.11 E 2.75(state. The)122 603.4 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 616.4 Q
(ime from the triggering Join/Prune message.)-.385 E F1(End of Message)
97 633 Q F0(The end of the compound Join/Prune message is reached.)122
646 Q(The \(S,G,rpt\) do)122 662.6 Q(wnstream state machine on interf)
-.275 E(ace I transitions to the NoInfo state.)-.11 E
(ET and PPT are canceled.)122 675.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 0 Cg EP
%%Page: 43 43
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Times-Bold@0 SF(Notes:)
72 85 Q F0(Recei)72 101.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 118.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 131.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 144.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 157.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
170.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 183.2 R(is considered acceptable, as \(*\
,*,RP\) state is intended to be used only in)2.75 E(long-li)72 196.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 235.2 R(\(*,*,RP\) J)2.75 E(oin/Prune Messages)-.165
E F0(The per)72 251.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 264.8 Q
(ate a Join\(*,*,RP\) upstream to)-.055 E -.11(wa)-.275 G(rds the).11 E
(RP)72 277.8 Q(.)-1.221 E(If a router wishes to propag)72 294.4 Q
(ate a Join\(*,*,RP\) upstream, it must also w)-.055 E
(atch for messages on its)-.11 E(upstream interf)72 307.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 320.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 333.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 346.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
(of the correct upstream neighbor change, it kno)72 359.4 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 372.4 Q(.)-.715 E
(In addition, if the MRIB changes to indicate that the ne)72 389 Q
(xt hop to)-.165 E -.11(wa)-.275 G(rds the RP has changed, the).11 E
(router should prune of)72 402 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 418.6 Q 2.75
(os)-.11 G(tates:)-2.75 E F1(Not J)72 435.2 Q(oined)-.165 E F0(The do)97
448.2 Q(wnstream state-machines indicate that the router does not need \
to join the \(*,*,RP\))-.275 E(tree for this RP)97 461.2 Q(.)-1.221 E F1
-.165(Jo)72 477.8 S(ined).165 E F0(The do)97 490.8 Q(wnstream state-mac\
hines indicate that the router should join the \(*,*,RP\) tree for this)
-.275 E(RP)97 503.8 Q(.)-1.221 E
(In addition, one timer JT\(*,*,RP\) is k)72 520.4 Q
(ept which is used to trigger the sending of a Join\(*,*,RP\) to)-.11 E
(the upstream ne)72 533.4 Q(xt hop to)-.165 E -.11(wa)-.275 G
(rds the RP).11 E 2.75(,N)-1.221 G(BR\(RPF_interf)-2.75 E
(ace\(RP\), MRIB.ne)-.11 E(xt_hop\(RP\)\).)-.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 43])-.165 E 0 Cg EP
%%Page: 44 44
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E 74 361 396 527 -151.036 201
108 236.036 PBEGIN
%%BeginDocument: sending-starstarrp-std.ps
%%Creator: idraw
%%DocumentFonts: Helvetica
%%Pages: 1
%%BoundingBox: 74 361 601 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
closepath
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
closepath
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 13 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 -45.4543 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 -45.4543 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 -45.4543 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 -45.4543 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 -45.4543 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 6.54568 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 6.54568 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 6.54568 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 198.546 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 101.546 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 95.0457 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 291.046 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 389.046 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 388.546 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 142.046 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 305.547 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 138.046 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 218.546 418 ] concat
%I
[
(NBR\(RPF_interface\(RP\), 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 149.07 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 11/Times-Bold@0 SF(Figur)205.388 275.036 Q 2.75(e6)-.198 G
2.75(:U)-2.75 G(pstr)-2.75 E(eam \(*,*,RP\) state-machine)-.198 E F0
(Upstream \(*,*,RP\) state-machine in tab)72 297.636 Q(ular form:)-.22 E
.44 LW 504 308.386 72 308.386 DL F1(Ev)337.19 318.636 Q(ent)-.11 E 504
323.386 187.747 323.386 DL(Pr)90.046 332.636 Q .33 -.165(ev S)-.198 H
(tate).165 E -.165(Jo)215.816 333.636 S(inDesir).165 E(ed\(*,*,RP\))
-.198 E/F2 11/Symbol SF<ae>215.816 346.636 Q F1 -.814(Tr)C(ue).814 E
-.165(Jo)377.954 333.636 S(inDesir).165 E(ed\(*,*,RP\))-.198 E F2<ae>
377.954 346.636 Q F1 -.275(Fa)C(lse).275 E 504 351.386 72 351.386 DL 504
353.386 72 353.386 DL F0(-)377.954 363.636 Q F2<ae>215.816 363.636 Q F0
2.75(Js)2.75 G(tate)-2.75 E F1(NotJ)90.046 376.636 Q(oined \(NJ\))-.165
E F0 3.884(Send Join\(*,*,RP\); Set)215.816 376.636 R .583(Join T)
215.816 389.636 R .584(imer to t_periodic)-.385 F 504 394.386 72 394.386
DL(-)215.816 404.636 Q F1 -.165(Jo)90.046 404.636 S(ined \(J\)).165 E F2
<ae>377.954 404.636 Q F0(NJ state)2.75 E 17.25(Send Prune\(*,*,RP\);)
377.954 417.636 R(Cancel Join T)377.954 430.636 Q(imer)-.385 E 504
435.386 72 435.386 DL 350.885 323.386 350.885 435.386 DL 187.747 308.386
187.747 435.386 DL 189.747 308.386 189.747 435.386 DL 504 308.386 504
435.386 DL 72 308.386 72 435.386 DL(In addition, we ha)72 453.236 Q .33
-.165(ve t)-.22 H(he follo).165 E
(wing transitions which occur within the Joined state:)-.275 E 503.993
463.986 72 463.986 DL F1(In J)244.843 474.236 Q(oined \(J\) State)-.165
E 503.993 478.986 72 478.986 DL 503.993 480.986 72 480.986 DL -.198(Ti)
85.747 491.236 S(mer Expir).198 E(es)-.198 E 9.268(See J)213.388 491.236
R(oin\(*,*,RP\))-.165 E 38.132(to MRIB.-)213.388 504.236 R
(next_hop\(RP\))213.388 517.236 Q .556(See Prune\(*,*,RP\))341.029
491.236 R 38.132(to MRIB.-)341.029 504.236 R(next_hop\(RP\))341.029
517.236 Q 503.993 521.986 72 521.986 DL 503.993 523.986 72 523.986 DL F0
2.976(Send Join\(*,*,RP\);)85.747 534.236 R 3.566(Set Join T)85.747
547.236 R 3.566(imer to)-.385 F(t_periodic)85.747 560.236 Q 28.672
(Increase Join)213.388 534.236 R -.385(Ti)213.388 547.236 S 48.593
(mer to).385 F(t_joinsuppress)213.388 560.236 Q 25.009(Decrease Join)
341.029 534.236 R -.385(Ti)341.029 547.236 S .482(mer to t_o).385 F
-.165(ve)-.165 G(rride).165 E 503.993 564.986 72 564.986 DL 320.408
480.986 320.408 564.986 DL 192.767 480.986 192.767 564.986 DL 503.993
463.986 503.993 564.986 DL 72 463.986 72 564.986 DL 504 576.986 72
576.986 DL F1(In J)244.847 587.236 Q(oined \(J\) State)-.165 E 504
591.986 72 591.986 DL 504 593.986 72 593.986 DL
(NBR\(RPF_interface\(RP\),)100.8 604.236 Q 2.232
(MRIB.next_hop\(RP\)\) changes)100.8 617.236 R 11.395
(MRIB.next_hop\(RP\) GenID)331.2 604.236 R(changes)331.2 617.236 Q 504
621.986 72 621.986 DL 504 623.986 72 623.986 DL F0 2.5
(Send Join\(*,*,RP\) to ne)100.8 634.236 R 5.249(wn)-.275 G -.165(ex)
-5.249 G(t).165 E 1.471(hop; Send Prune\(*,*,RP\) to old)100.8 647.236 R
(ne)100.8 660.236 Q 5.26(xt hop; set Join T)-.165 F 5.26(imer to)-.385 F
(t_periodic)100.8 673.236 Q 14.017(Decrease Join T)331.2 634.236 R
14.018(imer to)-.385 F(t_o)331.2 647.236 Q -.165(ve)-.165 G(rride).165 E
504 677.986 72 677.986 DL 288 593.986 288 677.986 DL 504 576.986 504
677.986 DL 72 576.986 72 677.986 DL(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 0 Cg EP
%%Page: 45 45
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E
(This state machine uses the follo)72 85 Q(wing macro:)-.275 E/F1 11
/Courier@0 SF(bool JoinDesired\(*,*,RP\) {)85.2 104 Q
(if immediate_olist\(*,*,RP\) != NULL)105 117 Q(return TRUE)131.4 130 Q
(else)105 143 Q(return FALSE)131.4 156 Q(})85.2 169 Q F0
(JoinDesired\(*,*,RP\) is true when the router has recei)72 188 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 201 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 suppressed by anothe\
r router sending a Join\(*,*,RP\) onto the upstream interf)72 214 Q
(ace.)-.11 E/F2 11/Times-Bold@0 SF -.814(Tr)72 240 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 256.6 Q(wing e)-.275 E
-.165(ve)-.275 G(nt may trigger).165 E 2.75(as)72 269.6 S
(tate transition:)-2.75 E F2 -.165(Jo)97 286.2 S(inDesir).165 E
(ed\(*,*,RP\) becomes T)-.198 E(rue)-.814 E F0(The do)122 299.2 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
312.2 Q(rue.)-.385 E
(The upstream \(*,*,RP\) state machine transitions to Joined state.)122
328.8 Q(Send Join\(*,*,RP\) to)5.5 E(the appropriate upstream neighbor)
122 341.8 Q 2.75(,w)-.44 G(hich is NBR\(RPF_interf)-2.75 E(ace\(RP\),)
-.11 E(MRIB.ne)122 354.8 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
F2 -.814(Tr)72 380.8 S(ansitions fr).814 E(om J)-.198 E(oined State)
-.165 E F0(When the upstream \(*,*,RP\) state-machine is in Joined stat\
e, the follo)72 397.4 Q(wing e)-.275 E -.165(ve)-.275 G(nts may trigger)
.165 E(state transitions:)72 410.4 Q F2 -.165(Jo)97 427 S(inDesir).165 E
(ed\(*,*,RP\) becomes F)-.198 E(alse)-.275 E F0(The do)122 440 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
453 Q(alse.)-.165 E
(The upstream \(*,*,RP\) state machine transitions to NotJoined state.)
122 469.6 Q(Send)5.5 E
(Prune\(*,*,RP\) to the appropriate upstream neighbor)122 482.6 Q 2.75
(,w)-.44 G(hich is)-2.75 E(NBR\(RPF_interf)122 495.6 Q
(ace\(RP\), MRIB.ne)-.11 E 2.75(xt_hop\(RP\)\). Cancel)-.165 F
(the Join T)2.75 E(imer \(JT\).)-.385 E F2 -.165(Jo)97 512.2 S(in T).165
E(imer Expir)-.198 E(es)-.198 E F0(The Join T)122 525.2 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 541.8 Q
2.75(,w)-.44 G(hich is)-2.75 E(NBR\(RPF_interf)122 554.8 Q
(ace\(RP\), MRIB.ne)-.11 E 2.75(xt_hop\(RP\)\). Restart)-.165 F
(the Join T)2.75 E(imer \(JT\) to e)-.385 E(xpire)-.165 E
(after t_periodic seconds.)122 567.8 Q F2(See J)97 584.4 Q
(oin\(*,*,RP\) to MRIB.next_hop\(RP\))-.165 E F0(This e)122 597.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 610.4 Q
(ace\(RP\) send a Join\(*,*,RP\) to an)-.11 E 2.75(yo)-.165 G 2.75(ft)
-2.75 G(he addresses)-2.75 E(belonging to NBR\(RPF_interf)122 623.4 Q
(ace\(RP\), MRIB.ne)-.11 E 2.75(xt_hop\(RP\)\). This)-.165 F
(causes this router)2.75 E(to suppress its o)122 636.4 Q(wn Join.)-.275
E(The upstream \(*,*,RP\) state machine remains in Joined state.)122 653
Q(Let t_joinsuppress be the minimum of t_suppressed and the HoldT)122
669.6 Q(ime from the)-.385 E(Join/Prune message triggering this e)122
682.6 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 695.6 Q
(xpires after t_joinsuppress seconds.)-.165 E(If the)5.5 E(Join T)122
708.6 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(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 0 Cg EP
%%Page: 46 46
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Times-Bold@0 SF
(See Prune\(*,*,RP\) to MRIB.next_hop\(RP\))97 85 Q F0(This e)122 98 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 111 Q
(ace\(RP\) send a Prune\(*,*,RP\) to an)-.11 E 2.75(yo)-.165 G 2.75(ft)
-2.75 G(he addresses)-2.75 E(belonging to NBR\(RPF_interf)122 124 Q
(ace\(RP\), MRIB.ne)-.11 E 2.75(xt_hop\(RP\)\). As)-.165 F
(this router is in)2.75 E(Joined state, it must o)122 137 Q -.165(ve)
-.165 G(rride the Prune after a short random interv).165 E(al.)-.275 E
(The upstream \(*,*,RP\) state machine remains in Joined state.)122
153.6 Q(If the Join T)5.5 E(imer is set)-.385 E(to e)122 166.6 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 179.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 192.6 Q F1
(NBR\(RPF_interface\(RP\), MRIB.next_hop\(RP\)\) changes)97 209.2 Q F0
2.75(Ac)122 222.2 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
238.8 Q(Send Join\(*,*,RP\) to)5.5 E(the ne)122 251.8 Q 2.75(wu)-.275 G
(pstream neighbor which is the ne)-2.75 E 2.75(wv)-.275 G
(alue of NBR\(RPF_interf)-3.025 E(ace\(RP\),)-.11 E(MRIB.ne)122 264.8 Q
2.75(xt_hop\(RP\)\). Send)-.165 F
(Prune\(*,*,RP\) to the old upstream neighbor)2.75 E 2.75(,w)-.44 G
(hich is the)-2.75 E(old v)122 277.8 Q(alue of NBR\(RPF_interf)-.275 E
(ace\(RP\), MRIB.ne)-.11 E 2.75(xt_hop\(RP\)\). Set)-.165 F(the Join T)
2.75 E(imer \(JT\))-.385 E(to e)122 290.8 Q
(xpire after t_periodic seconds.)-.165 E F1
(MRIB.next_hop\(RP\) GenID changes)97 307.4 Q F0
(The Generation ID of the router that is MRIB.ne)122 320.4 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 333.4 Q(Th\
e upstream \(*,*,RP\) state machine remains in Joined state. If the Joi\
n T)122 350 Q(imer is set)-.385 E(to e)122 363 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(seconds.)122 376
Q F1 2.75(4.5.6. Sending)72 402 R(\(*,G\) J)2.75 E(oin/Prune Messages)
-.165 E F0(The per)72 418.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 431.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 448.2 Q
(ate a Join\(*,G\) upstream, it must also w)-.055 E
(atch for messages on its)-.11 E(upstream interf)72 461.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 474.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 487.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
500.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 513.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 526.2 Q(.)-.715 E
(If a \(*,G\) Assert occurs on the upstream interf)72 542.8 Q
(ace, and this changes the this router')-.11 E 2.75(si)-.605 G
(dea of the)-2.75 E(upstream neighbor)72 555.8 Q 2.75(,i)-.44 G 2.75(ts)
-2.75 G(hould be prepared to ensure that the Assert winner is a)-2.75 E
-.11(wa)-.165 G(re of do).11 E(wnstream)-.275 E
(routers by sending a Join\(*,G\) almost immediately)72 568.8 Q(.)-.715
E(In addition, if the MRIB changes to indicate that the ne)72 585.4 Q
(xt hop to)-.165 E -.11(wa)-.275 G(rds the RP has changed, and).11 E
(either the upstream interf)72 598.4 Q
(ace changes or there is no Assert winner on the upstream interf)-.11 E
(ace, the)-.11 E(router should prune of)72 611.4 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 628 Q
2.75(os)-.11 G(tates:)-2.75 E F1(Not J)72 644.6 Q(oined)-.165 E F0
(The do)97 657.6 Q(wnstream state-machines indicate that the router doe\
s not need to join the RP tree for)-.275 E(this group.)97 670.6 Q F1
-.165(Jo)72 687.2 S(ined).165 E F0(The do)97 700.2 Q(wnstream state-mac\
hines indicate that the router should join the RP tree for this)-.275 E
(group.)97 713.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.6. [P)2.75 F(age 46])-.165 E 0
Cg EP
%%Page: 47 47
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E
(In addition, one timer JT\(*,G\) is k)72 85 Q
(ept which is used to trigger the sending of a Join\(*,G\) to the)-.11 E
(upstream ne)72 98 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 499 -161.892 204 108
278.892 PBEGIN
%%BeginDocument: sending-starg-std.ps
%%Creator: idraw
%%DocumentFonts: Helvetica
%%Pages: 1
%%BoundingBox: 106 361 605 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
closepath
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
closepath
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 13 Grid 2.73551e-39 1.33263e-40
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 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 525.118 501.778 ] 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 251.5 418 ] concat
%I
[
(RPF'\(*,G\) changes not due to assert)
([Send Join\(*,G\) to new RPF'\(*,G\)])
([Send Prune\(*,G\) to old RPF'\(*,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 150.528 538.989 ] concat
%I
[
(JoinDesired\(*,G\)->TRUE)
([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 423.499 453.997 ] concat
%I
[
(RPF'\(*,G\) changes)
(due to an Assert)
] 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.249654 0 0 0.249654 455.619 417.172 ] concat
%I 8
205 536
231 536
232 315
263 287
268 287
232 258
233 56
204 56
8 BSpl
%I 4
End
End %I eop
showpage
end
%%EndDocument
end PEND/F1 11/Times-Bold@0 SF(Figur)212.566 317.892 Q 2.75(e7)-.198 G
2.75(:U)-2.75 G(pstr)-2.75 E(eam \(*,G\) state-machine)-.198 E F0
(This state machine uses the follo)72 340.492 Q(wing macro:)-.275 E/F2
11/Courier@0 SF(bool JoinDesired\(*,G\) {)85.2 359.492 Q
(if \(immediate_olist\(*,G\) != NULL ||)105 372.492 Q
(\(JoinDesired\(*,*,RP\(G\)\) &&)131.4 385.492 Q
(AssertWinner\(*, G, RPF_interface\(RP\(G\)\)\) != NULL\)\))138 398.492
Q(return TRUE)131.4 411.492 Q(else)105 424.492 Q(return FALSE)131.4
437.492 Q(})85.2 450.492 Q F0
(JoinDesired\(*,G\) is true when the router has forw)72 469.492 Q
(arding state that w)-.11 E(ould cause it to forw)-.11 E(ard)-.11 E
(traf)72 482.492 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 495.492 Q(upstream interf)72
508.492 Q(ace.)-.11 E F1 -.814(Tr)72 534.492 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 551.092 Q(wing e)-.275 E
-.165(ve)-.275 G(nt may trigger a).165 E(state transition:)72 564.092 Q
F1 -.165(Jo)97 580.692 S(inDesir).165 E(ed\(*,G\) becomes T)-.198 E(rue)
-.814 E F0(The do)122 593.692 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 606.692
Q(rue.)-.385 E
(The upstream \(*,G\) state machine transitions to Joined state.)122
623.292 Q(Send Join\(*,G\) to the)5.5 E(appropriate upstream neighbor)
122 636.292 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 649.292 Q F1 -.814(Tr)72 675.292 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 691.892 Q(wing e)-.275 E -.165(ve)-.275 G(nts may trigger state).165
E(transitions:)72 704.892 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 47])
-.165 E 0 Cg EP
%%Page: 48 48
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E
(Upstream \(*,G\) state-machine in tab)72 88.6 Q(ular form:)-.22 E .44
LW 504 99.35 72 99.35 DL/F1 11/Times-Bold@0 SF(Ev)337.19 109.6 Q(ent)
-.11 E 504 114.35 187.747 114.35 DL(Pr)90.046 123.6 Q .33 -.165(ev S)
-.198 H(tate).165 E -.165(Jo)215.816 124.6 S(inDesir).165 E(ed\(*,G\))
-.198 E/F2 11/Symbol SF<ae>215.816 137.6 Q F1 -.814(Tr)C(ue).814 E -.165
(Jo)377.954 124.6 S(inDesir).165 E(ed\(*,G\))-.198 E F2<ae>377.954 137.6
Q F1 -.275(Fa)C(lse).275 E 504 142.35 72 142.35 DL 504 144.35 72 144.35
DL F0(-)377.954 154.6 Q F2<ae>215.816 154.6 Q F0 2.75(Js)2.75 G(tate)
-2.75 E F1(NotJ)90.046 167.6 Q(oined \(NJ\))-.165 E F0 .147
(Send Join\(*,G\); Set Join)215.816 167.6 R -.385(Ti)215.816 180.6 S
(mer to t_periodic).385 E 504 185.35 72 185.35 DL(-)215.816 195.6 Q F1
-.165(Jo)90.046 195.6 S(ined \(J\)).165 E F2<ae>377.954 195.6 Q F0
(NJ state)2.75 E 31.011(Send Prune\(*,G\);)377.954 208.6 R
(Cancel Join T)377.954 221.6 Q(imer)-.385 E 504 226.35 72 226.35 DL
350.885 114.35 350.885 226.35 DL 187.747 99.35 187.747 226.35 DL 189.747
99.35 189.747 226.35 DL 504 99.35 504 226.35 DL 72 99.35 72 226.35 DL
(In addition, we ha)72 244.2 Q .33 -.165(ve t)-.22 H(he follo).165 E
(wing transitions which occur within the Joined state:)-.275 E 503.994
254.95 72 254.95 DL F1(In J)244.844 265.2 Q(oined \(J\) State)-.165 E
503.994 269.95 72 269.95 DL 503.994 271.95 72 271.95 DL -.198(Ti)79.854
282.2 S(mer Expir).198 E(es)-.198 E 5.855(See J)189.816 282.2 R 5.855
(oin\(*,G\) to)-.165 F(RPF'\(*,G\))189.816 295.2 Q 1.499
(See Prune\(*,G\) to)299.778 282.2 R(RPF'\(*,G\))299.778 295.2 Q
(RPF'\(*,G\))409.74 282.2 Q .992(changes due to an)409.74 295.2 R
(Assert)409.74 308.2 Q 503.994 312.95 72 312.95 DL 503.994 314.95 72
314.95 DL F0 16.737(Send Join\(*,G\);)79.854 325.2 R 3.566(Set Join T)
79.854 338.2 R 3.566(imer to)-.385 F(t_periodic)79.854 351.2 Q 28.672
(Increase Join)189.816 325.2 R -.385(Ti)189.816 338.2 S 48.593(mer to)
.385 F(t_joinsuppress)189.816 351.2 Q 25.009(Decrease Join)299.778 325.2
R -.385(Ti)299.778 338.2 S .482(mer to t_o).385 F -.165(ve)-.165 G
(rride).165 E 25.009(Decrease Join)409.74 325.2 R -.385(Ti)409.74 338.2
S .482(mer to t_o).385 F -.165(ve)-.165 G(rride).165 E 503.994 355.95 72
355.95 DL 397.959 271.95 397.959 355.95 DL 287.997 271.95 287.997 355.95
DL 178.035 271.95 178.035 355.95 DL 503.994 254.95 503.994 355.95 DL 72
254.95 72 355.95 DL 504 367.95 72 367.95 DL F1(In J)244.847 378.2 Q
(oined \(J\) State)-.165 E 504 382.95 72 382.95 DL 504 384.95 72 384.95
DL 1.245(RPF'\(*,G\) changes not due to)100.8 395.2 R(an Assert)100.8
408.2 Q(RPF'\(*,G\) GenID changes)331.2 395.2 Q 504 412.95 72 412.95 DL
504 414.95 72 414.95 DL F0 .29(Send Join\(*,G\) to ne)100.8 425.2 R 3.04
(wn)-.275 G -.165(ex)-3.04 G 3.04(th).165 G(op;)-3.04 E 5.106
(Send Prune\(*,G\) to old ne)100.8 438.2 R(xt)-.165 E 11.498
(hop; Set Join T)100.8 451.2 R 11.497(imer to)-.385 F(t_periodic)100.8
464.2 Q 14.017(Decrease Join T)331.2 425.2 R 14.018(imer to)-.385 F(t_o)
331.2 438.2 Q -.165(ve)-.165 G(rride).165 E 504 468.95 72 468.95 DL 288
384.95 288 468.95 DL 504 367.95 504 468.95 DL 72 367.95 72 468.95 DL F1
-.165(Jo)97 483.2 S(inDesir).165 E(ed\(*,G\) becomes F)-.198 E(alse)
-.275 E F0(The do)122 496.2 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
509.2 Q(alse.)-.165 E
(The upstream \(*,G\) state machine transitions to NotJoined state.)122
525.8 Q(Send Prune\(*,G\) to)5.5 E(the appropriate upstream neighbor)122
538.8 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 555.4 S(in T).165 E
(imer Expir)-.198 E(es)-.198 E F0(The Join T)122 568.4 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 585 Q 2.75
(,w)-.44 G(hich is RPF'\(*,G\).)-2.75 E(Restart the)5.5 E(Join T)122 598
Q(imer \(JT\) to e)-.385 E(xpire after t_periodic seconds.)-.165 E F1
(See J)97 614.6 Q(oin\(*,G\) to RPF'\(*,G\))-.165 E F0(This e)122 627.6
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 640.6 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 653.6 Q(wn Join.)-.275 E
(The upstream \(*,G\) state machine remains in Joined state.)122 670.2 Q
(Let t_joinsuppress be the minimum of t_suppressed and the HoldT)122
686.8 Q(ime from the)-.385 E(Join/Prune message triggering this e)122
699.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 712.8 Q
(xpires after t_joinsuppress seconds.)-.165 E(If the)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.6. [P)2.75 F(age 48])-.165 E 0 Cg EP
%%Page: 49 49
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(Join T)122 85 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 11/Times-Bold@0 SF
(See Prune\(*,G\) to RPF'\(*,G\))97 101.6 Q F0(This e)122 114.6 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 127.6 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 140.6 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 157.2 Q
(If the Join T)5.5 E(imer is set to)-.385 E -.165(ex)122 170.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 2.75(seconds. If)122 183.2 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 196.2 Q F1(RPF'\(*,G\) changes due to an Assert)97 212.8
Q F0(The current ne)122 225.8 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
238.8 Q(ace\(RP\(G\)\).)-.11 E
(The upstream \(*,G\) state machine remains in Joined state.)122 255.4 Q
(If the Join T)5.5 E(imer is set to)-.385 E -.165(ex)122 268.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 2.75(seconds. If)122 281.4 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 294.4 Q F1(RPF'\(*,G\) changes not due to an Assert)97
311 Q F0(An e)122 324 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.)122 337 Q
(Note that this transition)5.5 E(does not occur if an Assert is acti)122
350 Q .33 -.165(ve a)-.275 H(nd the upstream interf).165 E
(ace does not change.)-.11 E
(The upstream \(*,G\) state machine remains in Joined state.)122 366.6 Q
(Send Join\(*,G\) to the ne)5.5 E(w)-.275 E
(upstream neighbor which is the ne)122 379.6 Q 2.75(wv)-.275 G
(alue of RPF'\(*,G\).)-3.025 E(Send Prune\(*,G\) to the old)5.5 E
(upstream neighbor)122 392.6 Q 2.75(,w)-.44 G(hich is the old v)-2.75 E
(alue of RPF'\(*,G\).)-.275 E(Set the Join T)5.5 E(imer \(JT\) to)-.385
E -.165(ex)122 405.6 S(pire after t_periodic seconds.).165 E F1
(RPF'\(*,G\) GenID changes)97 422.2 Q F0
(The Generation ID of the router that is RPF'\(*,G\) changes.)122 435.2
Q(This normally means that)5.5 E
(this neighbor has lost state, and so the state must be refreshed.)122
448.2 Q(The upstream \(*,G\) state machine remains in Joined state. If \
the Join T)122 464.8 Q(imer is set to)-.385 E -.165(ex)122 477.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 490.8 Q F1 2.75
(4.5.7. Sending)72 516.8 R(\(S,G\) J)2.75 E(oin/Prune Messages)-.165 E
F0(The per)72 533.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 546.4 Q
(ate a Join\(S,G\) upstream to)-.055 E -.11(wa)-.275 G(rds the).11 E
(source.)72 559.4 Q(If a router wishes to propag)72 576 Q
(ate a Join\(S,G\) upstream, it must also w)-.055 E
(atch for messages on its)-.11 E(upstream interf)72 589 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 602 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 615 Q -.11
(wa)-.275 G(rds S, it should).11 E(be prepared to o)72 628 Q -.165(ve)
-.165 G(rride that prune by scheduling a Join\(S,G\) to be sent almost \
immediately).165 E(.)-.715 E(Finally)72 641 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 almost)72 654 Q
(immediately)72 667 Q(.)-.715 E
(If a \(S,G\) Assert occurs on the upstream interf)72 683.6 Q
(ace, and this changes the this router')-.11 E 2.75(si)-.605 G
(dea of the)-2.75 E(upstream neighbor)72 696.6 Q 2.75(,i)-.44 G 2.75(ts)
-2.75 G(hould be prepared to ensure that the Assert winner is a)-2.75 E
-.11(wa)-.165 G(re of do).11 E(wnstream)-.275 E
(routers by scheduling a Join\(S,G\) to be sent almost immediately)72
709.6 Q(.)-.715 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 49])-.165 E 0
Cg EP
%%Page: 50 50
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E
(In addition, if MRIB changes cause the ne)72 85 Q(xt hop to)-.165 E
-.11(wa)-.275 G(rds the source to change, and either the).11 E
(upstream interf)72 98 Q
(ace changes or there is no Assert winner on the upstream interf)-.11 E
(ace, the router)-.11 E(should send a prune to the old ne)72 111 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 127.6 Q 2.75(os)
-.11 G(tates:)-2.75 E/F1 11/Times-Bold@0 SF(Not J)72 144.2 Q(oined)-.165
E F0(The do)97 157.2 Q(wnstream state machines and local membership inf\
ormation do not indicate that the)-.275 E
(router needs to join the shortest-path tree for this \(S,G\).)97 170.2
Q F1 -.165(Jo)72 186.8 S(ined).165 E F0(The do)97 199.8 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 212.8 Q
(In addition, one timer JT\(S,G\) is k)72 229.4 Q
(ept which is used to trigger the sending of a Join\(S,G\) to the)-.11 E
(upstream ne)72 242.4 Q(xt hop to)-.165 E -.11(wa)-.275 G
(rds S, RPF'\(S,G\).).11 E 106 352 396 506 -181.565 232 108 442.965
PBEGIN
%%BeginDocument: sending-sg-std.ps
%%Creator: idraw
%%DocumentFonts: Helvetica Times-Italic
%%Pages: 1
%%BoundingBox: 106 352 612 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
closepath
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
closepath
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 13 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
[ 1 0 0 1 51 114 ] concat
%I 4
285 374
293 430
325 430
296 390
4 BSpl
%I 1
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 0 0 1 51 114 ] concat
%I 4
290 372
372 419
372 393
316 381
4 BSpl
%I 1
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 0 0 1 51 114 ] concat
%I 4
284 374
362 448
368 422
305 386
4 BSpl
%I 1
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
[ 1 0 0 1 -39 79 ] concat
%I 4
390 408
459 421
461 396
407 406
4 BSpl
%I 1
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 0 0 1 -39 79 ] concat
%I 4
375 409
458 391
455 353
401 398
4 BSpl
%I 1
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 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 39.5 192 ] concat
%I 3
593 592
385 528
273 576
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 231.5 192 ] concat
%I
209 592 64 32 Elli
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 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 426.5 559 ] 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 425.5 471 ] 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 425 456 ] 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.105263 0 0 0.1375 444.961 387.275 ] 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 424.5 532 ] 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 424.5 493 ] 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 532.625 498 ] 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 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
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 428 ] concat
%I
[
(RPF'\(S,G\) changes)
(due to an Assert)
] 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 425 510.5 ] 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 200.964 414.499 ] concat
%I
[
(RPF'\(S,G\) changes not due to assert)
([Send Join\(S,G\) to new RPF'\(S,G\)])
([Send Prune\(S,G\) to old RPF'\(S,G\)])
([Set Join Timer to t_periodic])
] 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.249654 0 0 0.249654 229.182 339.529 ] concat
%I 4
432 530
434 316
206 292
362 540
4 BSpl
%I 4
End
End %I eop
showpage
end
%%EndDocument
end PEND F1(Figur)212.258 481.965 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 504.565 Q(ular form:)-.22 E
.44 LW 504 515.315 72 515.315 DL F1(Ev)337.19 525.565 Q(ent)-.11 E 504
530.315 187.747 530.315 DL(Pr)90.046 539.565 Q .33 -.165(ev S)-.198 H
(tate).165 E -.165(Jo)215.816 540.565 S(inDesir).165 E(ed\(S,G\))-.198 E
/F2 11/Symbol SF<ae>215.816 553.565 Q F1 -.814(Tr)C(ue).814 E -.165(Jo)
377.954 540.565 S(inDesir).165 E(ed\(S,G\))-.198 E F2<ae>377.954 553.565
Q F1 -.275(Fa)C(lse).275 E 504 558.315 72 558.315 DL 504 560.315 72
560.315 DL F2<ae>215.816 570.565 Q F0 2.75(Js)2.75 G 118.589(tate -)
-2.75 F F1(NotJ)90.046 570.565 Q(oined \(NJ\))-.165 E F0 10.456
(Send Join\(S,G\); Set)215.816 583.565 R .584(Join T)215.816 596.565 R
.584(imer to t_periodic)-.385 F 504 601.315 72 601.315 DL(-)215.816
611.565 Q F2<ae>158.475 E F0(NJ state)2.75 E F1 -.165(Jo)90.046 611.565
S(ined \(J\)).165 E F0 6.793(Send Prune\(S,G\); Set)377.954 624.565 R
1.69(SPTbit\(S,G\) to F)377.954 637.565 R(ALSE;)-.814 E(Cancel Join T)
377.954 650.565 Q(imer)-.385 E 504 655.315 72 655.315 DL 350.885 530.315
350.885 655.315 DL 187.747 515.315 187.747 655.315 DL 189.747 515.315
189.747 655.315 DL 504 515.315 504 655.315 DL 72 515.315 72 655.315 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 50])-.165 E 0 Cg EP
%%Page: 51 51
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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)244.843 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)80.166 236 Q(RPF'\(S,G\))80.166 249 Q(RPF'\(S,G\))
190.101 236 Q(changes not due)190.101 249 Q(to an Assert)190.101 262 Q
(RPF'\(S,G\) GenID)300.454 236 Q(changes)300.454 249 Q(RPF'\(S,G\))
410.389 236 Q(changes due to an)410.389 249 Q(Assert)410.389 262 Q
503.992 266.75 72 266.75 DL 503.992 268.75 72 268.75 DL F0
(Decrease Join)80.166 279 Q -.385(Ti)80.166 292 S(mer to t_o).385 E
-.165(ve)-.165 G(rride).165 E(Send Join\(S,G\) to)190.101 279 Q(ne)
190.101 292 Q 2.75(wn)-.275 G -.165(ex)-2.75 G 2.75(th).165 G(op;)-2.75
E(Send Prune\(S,G\) to)190.101 305 Q(old ne)190.101 318 Q(xt hop; Set)
-.165 E(Join T)190.101 331 Q(imer to)-.385 E(t_periodic)190.101 344 Q
(Decrease Join)300.454 279 Q -.385(Ti)300.454 292 S(mer to t_o).385 E
-.165(ve)-.165 G(rride).165 E(Decrease Join)410.389 279 Q -.385(Ti)
410.389 292 S(mer to t_o).385 E -.165(ve)-.165 G(rride).165 E 503.992
348.75 72 348.75 DL 398.14 225.75 398.14 348.75 DL 288.205 225.75
288.205 348.75 DL 177.852 225.75 177.852 348.75 DL 503.992 208.75
503.992 348.75 DL 72 208.75 72 348.75 DL
(This state machine uses the follo)72 366.6 Q(wing macro:)-.275 E/F2 11
/Courier@0 SF(bool JoinDesired\(S,G\) {)85.2 385.6 Q
(return\( immediate_olist\(S,G\) != NULL)111.6 398.6 Q
(OR \( KeepaliveTimer\(S,G\) is running)164.4 411.6 Q
(AND inherited_olist\(S,G\) != NULL \) \))197.4 424.6 Q(})85.2 437.6 Q
F0(JoinDesired\(S,G\) is true when the router has forw)72 456.6 Q
(arding state that w)-.11 E(ould cause it to forw)-.11 E(ard)-.11 E
(traf)72 469.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 482.6 Q
(eepali)-.275 E .33 -.165(ve T)-.275 H(imer and acti)-.22 E .33 -.165
(ve n)-.275 H(on-source-speci\214c state. Note).165 E
(that although JoinDesired is true, the router')72 495.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
508.6 Q(ace.)-.11 E F1 -.814(Tr)72 534.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 551.2 Q(wing e)-.275 E -.165(ve)
-.275 G(nt may trigger a).165 E(state transition:)72 564.2 Q F1 -.165
(Jo)97 580.8 S(inDesir).165 E(ed\(S,G\) becomes T)-.198 E(rue)-.814 E F0
(The do)122 593.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 606.8 Q
(rue.)-.385 E
(The upstream \(S,G\) state machine transitions to Joined state.)122
623.4 Q(Send Join\(S,G\) to the)5.5 E(appropriate upstream neighbor)122
636.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
649.4 Q F1 -.814(Tr)72 675.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 692 Q(wing e)-.275 E -.165(ve)-.275 G(nts may trigger state).165 E
(transitions:)72 705 Q(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 0 Cg EP
%%Page: 52 52
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Times-Bold@0 SF -.165
(Jo)97 85 S(inDesir).165 E(ed\(S,G\) becomes F)-.198 E(alse)-.275 E F0
(The do)122 98 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 111 Q(alse.)-.165 E
(The upstream \(S,G\) state machine transitions to NotJoined state.)122
127.6 Q(Send Prune\(S,G\) to)5.5 E(the appropriate upstream neighbor)122
140.6 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 153.6 Q(ALSE.)
-.814 E F1 -.165(Jo)97 170.2 S(in T).165 E(imer Expir)-.198 E(es)-.198 E
F0(The Join T)122 183.2 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 199.8 Q 2.75
(,w)-.44 G(hich is RPF'\(S,G\).)-2.75 E(Restart the)5.5 E(Join T)122
212.8 Q(imer \(JT\) to e)-.385 E(xpire after t_periodic seconds.)-.165 E
F1(See J)97 229.4 Q(oin\(S,G\) to RPF'\(S,G\))-.165 E F0(This e)122
242.4 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 255.4 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 268.4 Q(wn Join.)-.275 E
(The upstream \(S,G\) state machine remains in Joined state.)122 285 Q
(Let t_joinsuppress be the minimum of t_suppressed and the HoldT)122
301.6 Q(ime from the)-.385 E(Join/Prune message triggering this e)122
314.6 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 327.6 Q
(xpires after t_joinsuppress seconds.)-.165 E(If the)5.5 E(Join T)122
340.6 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 357.2 Q 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\(S\) is a shared medium.)-.11 E(This router sees)5.5 E
(another router on RPF_interf)122 383.2 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 396.2 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 412.8 Q
(If the Join T)5.5 E(imer is set to)-.385 E -.165(ex)122 425.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 438.8 Q F1(See Prune\(S,G,r)
97 455.4 Q(pt\) to RPF'\(S,G\))-.11 E 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\(S\) is a shared medium.)-.11 E(This router sees)5.5 E
(another router on RPF_interf)122 481.4 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 494.4 Q 2.75
(,t)-.44 G(hen the Prune\(S,G,rpt\) will)-2.75 E(cause it to stop forw)
122 507.4 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 520.4 Q(arding continues.)-.11
E(The upstream \(S,G\) state machine remains in Joined state.)122 537 Q
(If the Join T)5.5 E(imer is set to)-.385 E -.165(ex)122 550 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 563 Q F1
(See Prune\(*,G\) to RPF'\(S,G\))97 579.6 Q F0(This e)122 592.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 605.6 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 618.6 Q 2.75(,t)-.44 G
(hen the Prune\(*,G\) will cause it to stop)-2.75 E(forw)122 631.6 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 644.6 Q(arding continues.)-.11
E(The upstream \(S,G\) state machine remains in Joined state.)122 661.2
Q(If the Join T)5.5 E(imer is set to)-.385 E -.165(ex)122 674.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 687.2 Q F1
(RPF'\(S,G\) changes due to an Assert)97 703.8 Q F0(The current ne)122
716.8 Q(xt hop to)-.165 E -.11(wa)-.275 G
(rds S changes due to an Assert\(S,G\) on 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.5.7. [P)2.75 F(age 52])-.165 E 0 Cg EP
%%Page: 53 53
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(RPF_interf)122 85 Q(ace\(S\).)
-.11 E(The upstream \(S,G\) state machine remains in Joined state.)122
101.6 Q(If the Join T)5.5 E(imer is set to)-.385 E -.165(ex)122 114.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 127.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 140.6 Q/F1 11/Times-Bold@0 SF(RPF'\(S,G\) changes)97
157.2 Q F0 2.75(Ac)122 170.2 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 and there is no \(S,G\) Assert acti)122 183.2 Q -.165(ve)-.275 G
(.).165 E(The upstream \(S,G\) state machine remains in Joined state.)
122 199.8 Q(Send Join\(S,G\) to the ne)5.5 E(w)-.275 E
(upstream neighbor which is the ne)122 212.8 Q 2.75(wv)-.275 G
(alue of RPF'\(S,G\).)-3.025 E(Send Prune\(S,G\) to the old)5.5 E
(upstream neighbor)122 225.8 Q 2.75(,w)-.44 G(hich is the old v)-2.75 E
(alue of RPF'\(S,G\).)-.275 E(Set the Join T)5.5 E(imer \(JT\) to)-.385
E -.165(ex)122 238.8 S(pire after t_periodic seconds.).165 E F1
(RPF'\(S,G\) GenID changes)97 255.4 Q F0
(The Generation ID of the router that is RPF'\(S,G\) changes.)122 268.4
Q(This normally means that)5.5 E
(this neighbor has lost state, and so the state must be refreshed.)122
281.4 Q(The upstream \(S,G\) state machine remains in Joined state. If \
the Join T)122 298 Q(imer is set to)-.385 E -.165(ex)122 311 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 324 Q F1 2.75(4.5.8. \(S,G,r)
72 350 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 tree with the RPT bi\
t set,)72 366.6 Q
(either to modify the results of \(*,G\) Joins, or to o)72 379.6 Q -.165
(ve)-.165 G(rride the beha).165 E(vior of other upstream LAN)-.22 E 2.75
(peers. The)72 392.6 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 405.6 Q
(When a router is going to send a Join\(*,G\), it should use the follo)
72 422.2 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
435.2 Q(Join/Prune message:)72 448.2 Q/F2 11/Courier@0 SF
(if\( SPTbit\(S,G\) == TRUE \) {)85.2 467.2 Q(#)111.6 480.2 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 493.2 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 506.2 Q
(add Prune\(S,G,rpt\) to compound message)144.6 519.2 Q(})118.2 532.2 Q
6.6(}e)85.2 545.2 S(lse if \( inherited_olist\(S,G,rpt\) == NULL \) {)
-6.6 E(#)98.4 558.2 Q F0(Note: all \(*,G\) olist interf)9.35 E
(aces recei)-.11 E -.165(ve)-.275 G 2.75(dR).165 G
(PT prunes for \(S,G\).)-2.75 E F2
(add Prune\(S,G,rpt\) to compound message)98.4 571.2 Q 6.6(}e)85.2 584.2
S(lse if \( RPF'\(*,G\) != RPF'\(S,G,rpt\) {)-6.6 E(#)98.4 597.2 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 610.2 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 623.2 Q(})85.2 636.2 Q F0
(Note that Join\(S,G,rpt\) is not normally sent as a periodic message, \
b)72 658.8 Q(ut only as a triggered)-.22 E(message.)72 671.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.8. [P)2.75 F(age 53])-.165 E 0 Cg EP
%%Page: 54 54
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 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 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
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 538.5 475.5 ] concat
%I
[
(Set/lower)
(\(don't raise\))
(\(S,G,rpt\) )
(Override Timer)
(to randomized)
(prune_override)
(interval)
] 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 54])-.165 E 0 Cg EP
%%Page: 55 55
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E
(Upstream \(S,G,rpt\) state-machine for triggered messages in tab)72
88.6 Q(ular form:)-.22 E .44 LW 503.987 99.35 72 99.35 DL/F1 11
/Times-Bold@0 SF(Ev)319.495 109.6 Q(ent)-.11 E 503.987 114.35 158.014
114.35 DL(Pr)78.76 130.1 Q .33 -.165(ev S)-.198 H(tate).165 E
(PruneDesir)169.154 124.6 Q(ed-)-.198 E(\(S,G,r)169.154 137.6 Q(pt\))
-.11 E/F2 11/Symbol SF<ae>169.154 150.6 Q F1 -.814(Tr)C(ue).814 E
(PruneDesir)261.434 124.6 Q(ed-)-.198 E(\(S,G,r)261.434 137.6 Q(pt\))
-.11 E F2<ae>261.434 150.6 Q F1 -.275(Fa)C(lse).275 E(RPTJ)353.714 124.6
Q(oin-)-.165 E(Desir)353.714 137.6 Q(ed\(G\))-.198 E F2<ae>353.714 150.6
Q F1 -.275(Fa)C(lse).275 E(inherited_olist-)425.727 124.6 Q(\(S,G,r)
425.727 137.6 Q(pt\))-.11 E F2<ae>425.727 150.6 Q F1(non-NULL)A 503.987
155.35 72 155.35 DL 503.987 157.35 72 157.35 DL F2<ae>169.154 167.6 Q F0
2.75(Ps)2.75 G 46.894(tate -)-2.75 F(-)88.617 E F2<ae>68.35 E F0
(NP state)2.75 E F1(RPTNotJ)78.76 167.6 Q(oined)-.165 E(\(G\) \(NJ\))
78.76 180.6 Q 503.987 185.35 72 185.35 DL F0(-)169.154 195.6 Q F2<ae>
88.617 E F0(NP state)2.75 E F2<ae>41.702 E F0(NJ state)2.75 E(-)23.272 E
F1(Pruned)78.76 202.1 Q(\(S,G,r)78.76 215.1 Q(pt\) \(P\))-.11 E F0
28.913(Send Join)261.434 208.6 R(\(S,G,rpt\))261.434 221.6 Q 503.987
226.35 72 226.35 DL F2<ae>169.154 236.6 Q F0 2.75(Ps)2.75 G 46.894
(tate -)-2.75 F F2<ae>88.617 E F0(NJ state)2.75 E(-)23.272 E F1
(NotPruned)78.76 249.6 Q(\(S,G,r)78.76 262.6 Q(pt\) \(NP\))-.11 E F0
21.587(Send Prune)169.154 249.6 R(\(S,G,rpt\);)169.154 262.6 Q(Cancel O)
169.154 275.6 Q(T)-.44 E(Cancel O)353.714 249.6 Q(T)-.44 E 503.987
280.35 72 280.35 DL 415.587 114.35 415.587 280.35 DL 343.574 114.35
343.574 280.35 DL 251.294 114.35 251.294 280.35 DL 158.014 99.35 158.014
280.35 DL 160.014 99.35 160.014 280.35 DL 503.987 99.35 503.987 280.35
DL 72 99.35 72 280.35 DL(Additionally)72 294.6 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 307.6 Q -.165(ve)-.165 G(rride beha).165 E
(vior)-.22 E(.)-.605 E 503.989 318.35 72 318.35 DL F1
(In NotPruned\(S,G,r)221.136 328.6 Q(pt\) State)-.11 E 503.989 333.35 72
333.35 DL 503.989 335.35 72 335.35 DL(Ov)78.621 345.6 Q(erride)-.11 E
-.198(Ti)78.621 358.6 S(mer expir).198 E(es)-.198 E(See Prune)163.769
345.6 Q(\(S,G,r)163.769 358.6 Q(pt\) to)-.11 E(RPF' \(S,G,r)163.769
371.6 Q(pt\))-.11 E(See J)253.482 345.6 Q(oin)-.165 E(\(S,G,r)253.482
358.6 Q(pt\) to)-.11 E(RPF' \(S,G,r)253.482 371.6 Q(pt\))-.11 E
(See Prune)343.195 345.6 Q(\(S,G\) to RPF')343.195 358.6 Q(\(S,G,r)
343.195 371.6 Q(pt\))-.11 E(RPF' \(S,G,r)427.518 345.6 Q(pt\))-.11 E F2
<ae>427.518 358.6 Q F1(RPF' \(*,G\))2.75 E 503.989 376.35 72 376.35 DL
503.989 378.35 72 378.35 DL F0(Send Join)78.621 388.6 Q(\(S,G,rpt\);)
78.621 401.6 Q(Cancel O)78.621 414.6 Q(T)-.44 E .88 -.44(OT = m)163.769
388.6 T(in\(O).44 E -.814(T,)-.44 G(t_o)163.769 401.6 Q -.165(ve)-.165 G
(rride\)).165 E(Cancel O)253.482 388.6 Q(T)-.44 E .88 -.44(OT = m)
343.195 388.6 T(in\(O).44 E -.814(T,)-.44 G(t_o)343.195 401.6 Q -.165
(ve)-.165 G(rride\)).165 E .88 -.44(OT = m)427.518 388.6 T(in\(O).44 E
-.814(T,)-.44 G(t_o)427.518 401.6 Q -.165(ve)-.165 G(rride\)).165 E
503.989 419.35 72 419.35 DL 417.586 335.35 417.586 419.35 DL 333.263
335.35 333.263 419.35 DL 243.55 335.35 243.55 419.35 DL 153.837 335.35
153.837 419.35 DL 503.989 318.35 503.989 419.35 DL 72 318.35 72 419.35
DL(Note that the)72 437.2 Q/F3 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 450.2 Q(alue \(e.g.)-.275 E F3
(min\(not-running, t_override\))2.75 E F0(=)2.75 E F3(t_override)2.75 E
F0(\).)A(This state machine uses the follo)72 466.8 Q(wing macros:)-.275
E F3(bool RPTJoinDesired\(G\) {)77.5 485.8 Q
(return \(JoinDesired\(*,G\) || JoinDesired\(*,*,RP\(G\)\)\))98.4 498.8
Q(})85.2 511.8 Q F0
(RPTJoinDesired\(G\) is true when the router has forw)72 534.4 Q
(arding state that w)-.11 E(ould cause it to forw)-.11 E(ard)-.11 E
(traf)72 547.4 Q
(\214c for G using either \(*,G\) or \(*,*,RP\) shared tree state.)-.275
E F3(bool PruneDesired\(S,G,rpt\) {)77.5 566.4 Q
(return \( RPTJoinDesired\(G\) AND)118.2 579.4 Q 6.6(\(i)177.6 592.4 S
(nherited_olist\(S,G,rpt\) == NULL)-6.6 E(OR \(SPTbit\(S,G\)==TRUE)190.8
605.4 Q(AND \(RPF'\(*,G\) != RPF'\(S,G\)\) \)\)\))217.2 618.4 Q(})85.2
631.4 Q F0(PruneDesired\(S,G,rpt\) can only be true if RPTJoinDesired\(\
G\) is true.)72 654 Q(If RPTJoinDesired\(G\) is)5.5 E(true, then PruneD\
esired\(S,G,rpt\) is true if either there are no outgoing interf)72 667
Q(aces that S w)-.11 E(ould be)-.11 E(forw)72 680 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(The state machine contains the follo)72 696.6 Q
(wing transition e)-.275 E -.165(ve)-.275 G(nts:).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.9. [P)2.75 F(age 55])-.165 E 0 Cg EP
%%Page: 56 56
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Times-Bold@0 SF(See J)72
85 Q(oin\(S,G,r)-.165 E(pt\) to RPF'\(S,G,r)-.11 E(pt\))-.11 E F0
(This e)97 98 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 114.6 Q
(upstream neighbor)97 127.6 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 140.6 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 153.6 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 170.2 Q(erride T)-.165 E(imer)-.385 E
(.)-.605 E F1(See Prune\(S,G,r)72 186.8 Q(pt\) to RPF'\(S,G,r)-.11 E
(pt\))-.11 E F0(This e)97 199.8 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 216.4 Q(correct upstream neighbor)97 229.4 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 242.4 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 255.4 Q -.165(ve)-.165 G(rride the Prune.).165 E
(The action is to set the \(S,G,rpt\) Ov)97 272 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 285 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
298 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 311 Q F1(See Prune\(S,G\) to RPF'\(S,G,r)72
327.6 Q(pt\))-.11 E F0(This e)97 340.6 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 357.2 Q .33
-.165(ve t)-.165 H(ransition and action, e).165 E(xcept that the)-.165 E
(Prune does not ha)97 370.2 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 383.2 Q 2.75(tm)-.198 G
(aintain separate \(S,G\) and \(S,G,rpt\) state.)-2.75 E F1(The \(S,G,r)
72 399.8 Q(pt\) prune Ov)-.11 E(erride T)-.11 E(imer expir)-.198 E(es)
-.198 E F0(This e)97 412.8 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
429.4 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 442.4 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
455.4 Q(router that does not ha)97 468.4 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 481.4 Q(If RPF'\(S,G,rpt\) is n\
ot the same as RPF'\(*,G\), then it may stop forw)5.5 E(arding S.)-.11 E
(Ho)97 494.4 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
507.4 Q(w\).)-.275 E F1(RPF'\(S,G,r)72 524 Q
(pt\) changes to become equal to RPF'\(*,G\))-.11 E F0(This e)97 537 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
553.6 Q
(ferent from RPF'\(*,G\) if an \(S,G\) Assert has happened, which)-.275
E(means that traf)97 566.6 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 579.6 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 592.6 Q(arding S ag)-.11 E(ain.)-.055 E
(The action is to set the \(S,G,rpt\) Ov)97 609.2 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 622.2 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 635.2 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
648.2 Q F1(PruneDesir)72 664.8 Q(ed\(S,G,r)-.198 E(pt\))-.11 E/F2 11
/Symbol SF<ae>A F1(TR)A(UE)-.33 E F0(See macro abo)97 677.8 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 694.4 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 707.4 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 56])-.165 E 0 Cg EP
%%Page: 57 57
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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\))-.11 E/F2
11/Symbol SF<ae>A F1 -.99(FA)C(LSE).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 Pr\
uned\(S,G,rpt\) 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 RPTJoinD\
esired\(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\))97 222.2 Q F2<ae>A F0 -.814(FA)C
(LSE" transition should happen. Thus this transition).814 E
(should be interpreted as "PruneDesired\(S,G,rpt\))97 235.2 Q F2<ae>A F0
-.814(FA)C(LSE 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\))-.198 E F2<ae>A F1 -.99(FA)C
(LSE).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
2.75(4.5.10. Backgr)72 448.2 R(ound: \(*,*,RP\) and \(S,G,r)-.198 E
(pt\) interaction)-.11 E F0(In sections 4.5.8 and 4.5.9 the mechanisms \
for sending periodic and triggered \(S,G,rpt\) messages)72 464.8 Q
(are described.)72 477.8 Q(The astute reader will note that periodic Pr\
une\(S,G,rpt\) messages are only sent in)5.5 E(PIM Join/Prune messages \
containing a Join\(*,G\), whereas it is possible for a triggered)72
490.8 Q(Prune\(S,G,rpt\) message to be sent when the router has no \(*,\
G\) join state.)72 503.8 Q(This may seem lik)5.5 E 2.75(ea)-.11 G
(contradiction, b)72 516.8 Q(ut in f)-.22 E
(act it is intentional, and is a side ef)-.11 E
(fect of not optimizing \(*,*,RP\) beha)-.275 E(vior)-.22 E(.)-.605 E
1.76 -.88(We \214)72 533.4 T(rst note that reception of a Join\(*,*,RP\
\) by itself does not cancel \(S,G,rpt\) prune state on that).88 E
(interf)72 546.4 Q(ace, whereas recei)-.11 E(ving a Join\(*,G\) by itse\
lf does cancel \(S,G,rpt\) prune state on that)-.275 E(interf)72 559.4 Q
2.75(ace. Similarly)-.11 F 2.75(,r)-.715 G
(eception of a Prune\(*,G\) on an interf)-2.75 E
(ace with \(*,*,RP\) join state does not by)-.11 E(itself pre)72 572.4 Q
-.165(ve)-.275 G(nt forw).165 E(arding of G using the \(*,*,RP\) state \
- this is because a Prune\(*,G\) only serv)-.11 E(es)-.165 E
(to cancel \(*,G\) join state.)72 585.4 Q
(Conceptually \(*,*,RP\) state functions "abo)5.5 E -.165(ve)-.165 G
2.75("t).165 G(he normal \(*,G\) and)-2.75 E(\(S,G\) mechanisms, and so\
neither Join\(*,*,RP\) or Prune\(*,*,RP\) messages af)72 598.4 Q
(fect an)-.275 E 2.75(yo)-.165 G(ther state.)-2.75 E
(The upshot of this is that to pre)72 615 Q -.165(ve)-.275 G(nt forw)
.165 E(arding \(S,G\) on \(*,*,RP\) state, a Prune\(S,G,rpt\) must be)
-.11 E(used.)72 628 Q 1.76 -.88(We a)72 644.6 T(lso note that for histo\
rical reasons there is no Assert\(*,*,RP\) message, so an).88 E 2.75(yf)
-.165 G(orw)-2.75 E(arding)-.11 E(contention is resolv)72 657.6 Q
(ed using Assert\(*,G\) messages.)-.165 E 1.76 -.88(We n)72 674.2 T .55
-.275(ow n).88 H(eed to consider the interaction between \(*,*,RP\) sta\
te and \(*,G\) state.).275 E(If there is a need)5.5 E
(for an assert between tw)72 687.2 Q 2.75(ou)-.11 G
(pstream routers on a LAN, we need to ensure that the correct thing)
-2.75 E(happens for all combinations of \(*,*,RP\) and \(*,G\) forw)72
700.2 Q(arding state.)-.11 E(As there is no)5.5 E(Assert\(*,*,RP\) mess\
age, no router can tell whether the assert winner has \(*,*,RP\) state \
or \(*,G\))72 713.2 Q(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)
-.385 E 155.471(elas Section)-.165 F 2.75(4.5.10. [P)2.75 F(age 57])
-.165 E 0 Cg EP
%%Page: 58 58
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E 2.75(state. Thus)72 85 R 2.75
(ad)2.75 G -.275(ow)-2.75 G(nstream router has to treat the tw).275 E
2.75(ot)-.11 G(he same and send its periodic)-2.75 E
(Prune\(S,G,rpt\) messages to RPF'\(*,G\).)72 98 Q 1.76 -.88(To a)72
114.6 T -.22(vo).66 G(id needing to specify all the comple).22 E 2.75
(xo)-.165 G -.165(ve)-2.915 G
(rride rules between \(*,*,RP\), \(*,G\) and \(S,G,rpt\),).165 E
(we simply require that to prune \(S,G\) of)72 127.6 Q 2.75(ft)-.275 G
(he \(*,*,RP\) tree, a Join\(*,G\) must also be sent.)-2.75 E
(If a router is recei)72 144.2 Q(ving on \(*,*,RP\) state, and has not \
yet had \(*,G\) state instantiated, it may still)-.275 E
(need to send a triggered Join\(S,G,rpt\) to o)72 157.2 Q -.165(ve)-.165
G(rride a Prune\(S,G,rpt\) that it sees directed to).165 E
(RPF'\(*,G\) on its upstream interf)72 170.2 Q 2.75(ace. Hence)-.11 F
(triggered \(S,G,rpt\) messages may be sent when)2.75 E
(JoinDesired\(*,G\) is f)72 183.2 Q(alse b)-.11 E
(ut JoinDesired\(*,*,RP\) is true.)-.22 E(Finally we note that there is\
an unoptimized case when the upstream router on a LAN already has)72
199.8 Q(\(*,G\) join and \(S,G,rpt\) prune state caused by an e)72 212.8
Q(xisting do)-.165 E(wnstream router)-.275 E 5.5(.I)-.605 G 2.75(fa)-5.5
G 2.75(tt)-2.75 G(his time a ne)-2.75 E(w)-.275 E
(Join\(*,*,RP\) is sent to the upstream router from a dif)72 225.8 Q
(ferent do)-.275 E(wnstream router)-.275 E 2.75(,t)-.44 G(his will not)
-2.75 E -.165(ove)72 238.8 S
(rride the \(S,G,rpt\) prune state at the upstream router).165 E 5.5(.T)
-.605 G(he o)-5.5 E -.165(ve)-.165 G(rride will not occur until the).165
E(ne)72 251.8 Q(xt time the original do)-.165 E
(wnstream router resends its Prune\(S,G,rpt\).)-.275 E(This case w)5.5 E
(as considered to)-.11 E(be not w)72 264.8 Q
(orth optimizing, as \(*,*,RP\) state is generally v)-.11 E(ery long li)
-.165 E -.165(ve)-.275 G(d, and so an).165 E 2.75(ym)-.165 G
(inor delays in)-2.75 E(getting traf)72 277.8 Q(\214c to a ne)-.275 E
2.75(wP)-.275 G(MBR seem unimportant.)-2.75 E/F1 11/Times-Bold@0 SF
(4.6.)72 316.8 Q/F2 13/Times-Bold@0 SF(PIM Assert Messages)5.5 E F0
(Where multiple PIM routers peer o)72 333.4 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 346.4 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 359.4 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 372.4 Q
(arder amongst the upstream routers to)-.11 E(pre)72 385.4 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 398.4 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 411.4 Q
(on the Assert.)-.11 E(In general, a PIM Assert message should only be \
accepted for processing if it comes from a)72 428 Q(kno)72 441 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 454 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 467 Q
(further processing.)72 480 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 493 Q
(authenticated using IPsec AH.)72 506 Q F1 2.75(4.6.1. \(S,G\))72 532 R
(Assert Message State Machine)2.75 E F0
(The \(S,G\) Assert state machine for interf)72 548.6 Q(ace I is sho)
-.11 E(wn in Figure 10. There are three states:)-.275 E F1(NoInf)72
565.2 Q 2.75(o\()-.275 G(NI\))-2.75 E F0
(This router has no \(S,G\) assert state on interf)97 578.2 Q(ace I.)
-.11 E F1 2.75(Ia)72 594.8 S 2.75(mA)-2.75 G(ssert W)-2.75 E
(inner \(W\))-.198 E F0(This router has w)97 607.8 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 620.8 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 633.8 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 646.8 Q .33 -.165(ve m)
-.22 H(ade membership requests that speci\214cally refer to S).165 E
(\(and G\).)97 659.8 Q F1 2.75(Ia)72 676.4 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 689.4 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 702.4 Q(ace I.)-.11 E
(If it is the DR on I, it is no longer responsible for)5.5 E(forw)97
715.4 Q(arding traf)-.11 E(\214c onto I to satisfy local hosts with mem\
bership requests that speci\214cally)-.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 58])-.165 E 0 Cg EP
%%Page: 59 59
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(refer to S and G.)97 85 Q
(In addition, there is also an Assert T)72 101.6 Q(imer \(A)-.385 E
(T\) that is used to time out asserts on the assert losers)-1.221 E
(and to resend asserts on the assert winner)72 114.6 Q(.)-.605 E 62 151
396 547 -339.532 469 108 473.132 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 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 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 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 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 353 ] 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 377 ] concat
%I
[
(Assert 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 532 572 ] concat
%I
[
(Assert 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 440.021 438.864 ] concat
%I
[
(Actions:)
()
(A1: [Send Assert\(S,G\)])
( [Set Assert 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 Assert 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 Assert 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 441.266 198.303 ] concat
%I
[
(A6: [Store assert winner and metric])
( [Set Assert 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 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 247 577.5 ] concat
%I
[
(Receive assert with)
(RPTbit 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 264.5 407.002 ] concat
%I
[
(Receive preferred assert )
(with RPTbit clear AND)
(AssertTrackingDesired\(S,G,I\))
( ==TRUE)
([A6])
] Text
End
End %I eop
showpage
end
%%EndDocument
end PEND/F1 11/Times-Bold@0 SF(Figur)184.835 512.132 Q 2.75(e1)-.198 G
(0: P)-2.75 E(er)-.22 E(-interface \(S,G\) Assert State-machine)-.407 E
.44 LW 503.992 528.882 72 528.882 DL(In I Am Assert Loser \(L\) State)
216.204 539.132 Q 503.992 543.882 72 543.882 DL 503.992 545.882 72
545.882 DL(AssT)82.063 556.132 Q(rDes \(S,G,I\))-.814 E/F2 11/Symbol SF
<ae>82.063 569.132 Q F1 -.99(FA)2.75 G(LSE).99 E(my_metric)191.793
556.132 Q F2<ae>2.75 E F1(better than)191.793 569.132 Q(winner')191.793
582.132 Q 2.75(sm)-.407 G(etric)-2.75 E(RPF_interface \(S\))295.803
556.132 Q(stops being I)295.803 569.132 Q(Recei)410.604 556.132 Q .22
-.11(ve J)-.11 H(oin\(S,G\))-.055 E(on interface I)410.604 569.132 Q
503.992 586.882 72 586.882 DL 503.992 588.882 72 588.882 DL F2<ae>82.063
599.132 Q F0(NI state)2.75 E F2<ae>61.605 E F0(NI state)2.75 E F2<ae>
55.885 E F0(NI state)2.75 E F2<ae>66.676 E F0(NI State)2.75 E
([Actions A5])82.063 612.132 Q([Actions A5])51.991 E([Actions A5])46.271
E([Actions A5])57.062 E 503.992 616.882 72 616.882 DL 395.509 545.882
395.509 616.882 DL 280.708 545.882 280.708 616.882 DL 176.698 545.882
176.698 616.882 DL 503.992 528.882 503.992 616.882 DL 72 528.882 72
616.882 DL(Note that for reasons of compactness, "AssT)72 634.732 Q
(rDes\(S,G,I\)" is used in the state-machine table to)-.385 E
(refer to AssertT)72 647.732 Q(rackingDesired\(S,G,I\).)-.385 E -.77(Te)
72 664.332 S(rminology:).77 E 2.75(A")97 677.332 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 693.932
Q/F3 11/Courier@0 SF(my_assert_metric\(S,G,I\))97 706.932 Q 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 59])-.165 E 0 Cg EP
%%Page: 60 60
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(Per)72 88.6 Q(-interf)-.22 E
(ace \(S,G\) Assert State-machine in tab)-.11 E(ular form:)-.22 E .44 LW
503.994 99.35 72 99.35 DL/F1 11/Times-Bold@0 SF(In NoInf)240.625 109.6 Q
2.75(o\()-.275 G(NI\) State)-2.75 E 503.994 114.35 72 114.35 DL 503.994
116.35 72 116.35 DL(Recei)79.854 126.6 Q 10.786 -.11(ve I)-.11 H
(nferior).11 E 32.94(Assert with)79.854 139.6 R 2.56(RPTbit clear and)
79.854 152.6 R(CouldAssert)79.854 165.6 Q(\(S,G,I\))79.854 178.6 Q
(Recei)189.816 126.6 Q 18.123 -.11(ve A)-.11 H(ssert).11 E 6.229
(with RPTbit set)189.816 139.6 R 7.255(and CouldAssert)189.816 152.6 R
(\(S,G,I\))189.816 165.6 Q 1.257(Data arri)299.778 126.6 R -.11(ve)-.11
G 4.007(sf).11 G -.198(ro)-4.007 G(m).198 E 5.787(St)299.778 139.6 S
5.787(oGo)-5.787 G -8.536 5.787(nI a)-5.787 H(nd)-5.787 E(CouldAssert)
299.778 152.6 Q(\(S,G,I\))299.778 165.6 Q(Recei)409.74 126.6 Q 2.646
-.11(ve P)-.11 H -.198(re).11 G(ferr).198 E(ed)-.198 E 32.94
(Assert with)409.74 139.6 R 2.56(RPTbit clear and)409.74 152.6 R(AssT)
409.74 165.6 Q(rDes \(S,G,I\))-.814 E 503.994 183.35 72 183.35 DL
503.994 185.35 72 185.35 DL/F2 11/Symbol SF<ae>79.854 195.6 Q F0 2.75
(Ws)2.75 G(tate)-2.75 E F2<ae>63.058 E F0 2.75(Ws)2.75 G(tate)-2.75 E F2
<ae>63.058 E F0 2.75(Ws)2.75 G(tate)-2.75 E F2<ae>63.058 E F0 2.75(Ls)
2.75 G(tate)-2.75 E([Actions A1])79.854 208.6 Q([Actions A1])52.223 E
([Actions A1])52.223 E([Actions A6])52.223 E 503.994 213.35 72 213.35 DL
397.959 116.35 397.959 213.35 DL 287.997 116.35 287.997 213.35 DL
178.035 116.35 178.035 213.35 DL 503.994 99.35 503.994 213.35 DL 72
99.35 72 213.35 DL 503.999 225.35 72 225.35 DL F1(In I Am Assert W)
209.888 235.6 Q(inner \(W\) State)-.198 E 503.999 240.35 72 240.35 DL
503.999 242.35 72 242.35 DL 24.591(Assert T)80.2 252.6 R(imer)-.198 E
(Expir)80.2 265.6 Q(es)-.198 E(Recei)191.2 252.6 Q 10.786 -.11(ve I)-.11
H(nferior).11 E(Assert)191.2 265.6 Q(Recei)302.2 252.6 Q 2.646 -.11
(ve P)-.11 H -.198(re).11 G(ferr).198 E(ed)-.198 E(Assert)302.2 265.6 Q
(CouldAssert)413.2 252.6 Q(\(S,G,I\))413.2 265.6 Q F2<ae>2.75 E F1 -.99
(FA)2.75 G(LSE).99 E 503.999 270.35 72 270.35 DL 503.999 272.35 72
272.35 DL F2<ae>80.2 282.6 Q F0 2.75(Ws)2.75 G(tate)-2.75 E F2<ae>64.096
E F0 2.75(Ws)2.75 G(tate)-2.75 E F2<ae>64.096 E F0 2.75(Ls)2.75 G(tate)
-2.75 E F2<ae>67.759 E F0(NI state)2.75 E([Actions A3])80.2 295.6 Q
([Actions A3])53.261 E([Actions A2])53.261 E([Actions A4])53.261 E
503.999 300.35 72 300.35 DL 400.9 242.35 400.9 300.35 DL 289.9 242.35
289.9 300.35 DL 178.9 242.35 178.9 300.35 DL 503.999 225.35 503.999
300.35 DL 72 225.35 72 300.35 DL 503.993 312.35 72 312.35 DL F1
(In I Am Assert Loser \(L\) State)170.963 322.6 Q 503.993 327.35 72
327.35 DL 503.993 329.35 72 329.35 DL(Recei)78.161 339.6 Q -.11(ve)-.11
G(Pr)78.161 352.6 Q(eferr)-.198 E(ed)-.198 E(Assert)78.161 365.6 Q
(Recei)154.383 339.6 Q -.11(ve)-.11 G(Acceptable)154.383 352.6 Q 16.307
(Assert fr)154.383 365.6 R(om)-.198 E(Curr)154.383 378.6 Q(ent)-.198 E
-.198(Wi)154.383 391.6 S(nner).198 E(Recei)244.866 339.6 Q -.11(ve)-.11
G 2.051(Inferior Assert)244.866 352.6 R(fr)244.866 365.6 Q 7.947
(om Curr)-.198 F(ent)-.198 E -.198(Wi)244.866 378.6 S(nner).198 E 10.191
(Assert T)335.349 339.6 R(imer)-.198 E(Expir)335.349 352.6 Q(es)-.198 E
(Curr)425.832 339.6 Q(ent)-.198 E -.198(Wi)425.832 352.6 S(nner').198 E
(s)-.407 E .192(GenID changes)425.832 365.6 R 503.993 396.35 72 396.35
DL 503.993 398.35 72 398.35 DL F2<ae>78.161 408.6 Q F0 2.75(Ls)2.75 G
(tate)-2.75 E F2<ae>32.981 E F0 2.75(Ls)2.75 G(tate)-2.75 E F2<ae>47.242
E F0(NI state)2.75 E F2<ae>42.358 E F0(NI state)2.75 E F2<ae>42.358 E F0
(NI state)2.75 E([Actions A2])78.161 421.6 Q([Actions A2])18.483 E
([Actions A5])32.744 E([Actions A5])32.744 E([Actions A5])32.744 E
503.993 426.35 72 426.35 DL 416.59 329.35 416.59 426.35 DL 326.107
329.35 326.107 426.35 DL 235.624 329.35 235.624 426.35 DL 145.141 329.35
145.141 426.35 DL 503.993 312.35 503.993 426.35 DL 72 312.35 72 426.35
DL(An "inferior assert" is one with a w)97 440.6 Q(orse metric than)-.11
E/F3 11/Courier@0 SF(my_assert_metric\(S,G,I\))2.75 E F0(.)A
(The state machine uses the follo)97 453.6 Q(wing macros:)-.275 E F3
(CouldAssert\(S,G,I\) =)72 470.2 Q(SPTbit\(S,G\)==TRUE)105 483.2 Q
(AND \(RPF_interface\(S\) != I\))105 496.2 Q
(AND \(I in \( \( joins\(*,*,RP\(G\)\) \(+\) joins\(*,G\) \(-\))105
509.2 Q(prunes\(S,G,rpt\) \))72 522.2 Q
(\(+\) \( pim_include\(*,G\) \(-\) pim_exclude\(S,G\) \))184.2 535.2 Q
(\(-\) lost_assert\(*,G\))184.2 548.2 Q
(\(+\) joins\(S,G\) \(+\) pim_include\(S,G\) \) \))184.2 561.2 Q F0
(CouldAssert\(S,G,I\) is true for do)72 577.8 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 590.8 Q(as not tak)-.11 E
(en into account.)-.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 60])
-.165 E 0 Cg EP
%%Page: 61 61
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Courier@0 SF
(AssertTrackingDesired\(S,G,I\) =)72 85 Q
(\(I in \( \( joins\(*,*,RP\(G\)\) \(+\) joins\(*,G\) \(-\))105 98 Q
(prunes\(S,G,rpt\) \))72 111 Q
(\(+\) \( pim_include\(*,G\) \(-\) pim_exclude\(S,G\) \))157.8 124 Q
(\(-\) lost_assert\(*,G\))157.8 137 Q(\(+\) joins\(S,G\) \) \))157.8 150
Q(OR \(local_receiver_include\(S,G,I\) == TRUE)105 163 Q
(AND \(I_am_DR\(I\) OR \(AssertWinner\(S,G,I\) == me\)\)\))131.4 176 Q
(OR \(\(RPF_interface\(S\) == I\) AND \(JoinDesired\(S,G\) == TRUE\)\))
105 189 Q
(OR \(\(RPF_interface\(RP\(G\)\) == I\) AND \(JoinDesired\(*,G\) ==)105
202 Q(TRUE\))72 215 Q(AND \(SPTbit\(S,G\) == FALSE\)\))131.4 228 Q F0
(AssertT)72 244.6 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 257.6 Q(vior)-.22 E(.)-.605 E
(The \214rst three lines of AssertT)72 274.2 Q
(rackingDesired account for \(*,G\) join and local membership)-.385 E
(information recei)72 287.2 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
303.8 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
316.8 Q(The 5th and 6th lines account for \(S,G\) local membership info\
rmation on I. Note that we can')72 333.4 Q(t)-.198 E(use the pim_includ\
e\(S,G\) macro since it uses lost_assert\(S,G,I\) and w)72 346.4 Q
(ould result in the router)-.11 E(for)72 359.4 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 372.4
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 385.4 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
398.4 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 411.4 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 428 Q
(act that a router must k)-.11 E(eep track of assert information on)-.11
E(upstream interf)72 441 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 467 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 483.6 Q(wing e)-.275 E -.165(ve)
-.275 G(nts may trigger transitions:).165 E F2(Recei)97 500.2 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 513.2 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 526.2 Q(forw)122 539.2 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
552.2 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 565.2 Q
5.5(.W)-.605 G 2.75(et)-6.38 G(ransition to the "I am)-2.75 E(Assert W)
122 578.2 Q(inner" state, and perform Actions A1 \(belo)-.44 E(w\).)
-.275 E F2(Recei)97 594.8 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 607.8 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 620.8 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 633.8 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 646.8 Q(w\).)-.275 E F2
(An \(S,G\) data pack)97 663.4 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 676.4 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 689.4 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 702.4 Q
(inner" state, and perform Actions)-.44 E(A1 \(belo)122 715.4 Q
(w\) which will initiate the assert ne)-.275 E(gotiation for \(S,G\).)
-.165 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 0 Cg EP
%%Page: 62 62
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Times-Bold@0 SF(Recei)97
85 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 98 Q(rackingDesir)
-.814 E(ed\(S,G,I\)==TR)-.198 E(UE)-.33 E F0 -.88(We)122 111 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 124 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 137 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 150 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 163 Q(w\).)-.275 E F1 -.814(Tr)72 189 S(ansitions fr).814 E
(om "I am Assert W)-.198 E(inner" State)-.198 E F0
(When in "I am Assert W)72 205.6 Q(inner" state, the follo)-.44 E
(wing e)-.275 E -.165(ve)-.275 G(nts trigger transitions:).165 E F1
(Assert T)97 222.2 Q(imer Expir)-.198 E(es)-.198 E F0
(The \(S,G\) Assert T)122 235.2 Q(imer e)-.385 E 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 248.2 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 Assert T)122 261.2 Q(imer \(Action A3 belo)-.385 E 2.75
(w\). Note)-.275 F(that the assert winner')2.75 E 2.75(sA)-.605 G(ssert)
-2.75 E -.385(Ti)122 274.2 S(mer is engineered to e).385 E
(xpire shortly before timers on assert losers; this pre)-.165 E -.165
(ve)-.275 G(nts).165 E(unnecessary thrashing of the forw)122 287.2 Q
(arder and periodic \215ooding of duplicate pack)-.11 E(ets.)-.11 E F1
(Recei)97 303.8 Q .22 -.11(ve I)-.11 H(nferior Assert).11 E F0 1.76 -.88
(We r)122 316.8 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 329.8 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 Assert T)122 342.8 Q(imer \(Action A3 belo)-.385 E(w\).)
-.275 E F1(Recei)97 359.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 372.4 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 385.4 Q 2.75
(w\). Note)-.275 F(that this may af)2.75 E(fect the)-.275 E -.275(va)122
398.4 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 411.4 Q F1
(CouldAssert\(S,G,I\))97 428 Q/F2 11/Symbol SF<ae>2.75 E F1 -.99(FA)2.75
G(LSE).99 E F0(Our \(S,G\) forw)122 441 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 454 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
467 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
480 Q F1 -.814(Tr)72 506 S(ansitions fr).814 E
(om "I am Assert Loser" State)-.198 E F0
(When in "I am Assert Loser" state, the follo)72 522.6 Q
(wing transitions can occur:)-.275 E F1(Recei)97 539.2 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 552.2 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 565.2 Q -.715(w.)-.275 G
F1(Recei)97 581.8 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 594.8
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
607.8 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 620.8 T
(tay in Loser state, and perform actions A2 belo).88 E -.715(w.)-.275 G
F1(Recei)97 637.4 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 650.4
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
663.4 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 676.4 Q
(wing the normal PIM Join/Prune)-.275 E(mechanisms to operate.)122 689.4
Q(Usually we will e)5.5 E -.165(ve)-.275 G
(ntually re-assert and win when data).165 E(pack)122 702.4 Q
(ets from S ha)-.11 E .33 -.165(ve s)-.22 H(tarted \215o).165 E(wing ag)
-.275 E(ain.)-.055 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 62])-.165
E 0 Cg EP
%%Page: 63 63
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Times-Bold@0 SF
(Assert T)97 85 Q(imer Expir)-.198 E(es)-.198 E F0(The \(S,G\) Assert T)
122 98 Q(imer e)-.385 E 2.75(xpires. W)-.165 F 2.75(et)-.88 G
(ransition to NoInfo state, deleting the \(S,G\))-2.75 E
(assert information \(action A5 belo)122 111 Q(w\).)-.275 E F1(Curr)97
127.6 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 140.6 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 153.6 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 166.6 Q
(wn and come back up, and so we must assume it no longer kno)-.275 E
(ws it)-.275 E -.11(wa)122 179.6 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 192.6 Q(w\).)-.275 E F1(AssertT)97
209.2 Q(rackingDesir)-.814 E(ed\(S,G,I\))-.198 E/F2 11/Symbol SF<ae>A F1
-.99(FA)C(LSE).99 E F0(AssertT)122 222.2 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 235.2 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 248.2 Q F1
(My metric becomes better than the assert winner')97 264.8 Q 2.75(sm)
-.407 G(etric)-2.75 E F0
(my_assert_metric\(S,G,I\) has changed so that no)122 277.8 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 290.8 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 changes, or when\
CouldAssert\(S,G,I\) becomes true; for)122 303.8 Q -.165(ex)122 316.8 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 329.8 Q(w\), and allo)-.275 E
2.75(wt)-.275 G(he normal PIM Join/Prune)-2.75 E(mechanisms to operate.)
122 342.8 Q(Usually we will e)5.5 E -.165(ve)-.275 G
(ntually re-assert and win when data).165 E(pack)122 355.8 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\(S\) stops being interface I)97
372.4 Q F0(Interf)122 385.4 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
398.4 Q(w\).)-.275 E F1(Recei)97 415 Q .22 -.11(ve J)-.11 H
(oin\(S,G\) on Interface I)-.055 E F0 1.76 -.88(We r)122 428 T(ecei).88
E .33 -.165(ve a J)-.275 H(oin\(S,G\) that has the Upstream Neighbor Ad\
dress \214eld set to one my IP).165 E(address on interf)122 441 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 454 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 467 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 480
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 493 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 506 Q 2.75(wf)-.275 G(orw)-2.75 E(arder)-.11 E(.)-.605 E F1
(\(S,G\) Assert State-machine Actions)72 532 Q F0 5.75(A1: Send)97 548.6
R(Assert\(S,G\))2.75 E(Set Assert T)122 561.6 Q(imer to \(Assert_T)-.385
E(ime - Assert_Ov)-.385 E(erride_Interv)-.165 E(al\))-.275 E
(Store self as AssertW)122 574.6 Q(inner\(S,G,I\))-.44 E
(Store spt_assert_metric\(S,I\) as AssertW)122 587.6 Q
(innerMetric\(S,G,I\))-.44 E 5.75(A2: Store)97 604.2 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 617.2 Q
(innerMetric\(S,G,I\).)-.44 E(Set Assert T)122 630.2 Q(imer to Assert_T)
-.385 E(ime)-.385 E 5.75(A3: Send)97 646.8 R(Assert\(S,G\))2.75 E
(Set Assert T)122 659.8 Q(imer to \(Assert_T)-.385 E(ime - Assert_Ov)
-.385 E(erride_Interv)-.165 E(al\))-.275 E 5.75(A4: Send)97 676.4 R
(AssertCancel\(S,G\))2.75 E(Delete assert info \(AssertW)122 689.4 Q
(inner\(S,G,I\) and AssertW)-.44 E(innerMetric\(S,G,I\) will then)-.44 E
(return their def)122 702.4 Q(ault v)-.11 E(alues\).)-.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 63])-.165 E 0 Cg EP
%%Page: 64 64
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E 5.75(A5: Delete)97 85 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 98 Q(ault v)
-.11 E(alues\).)-.275 E 5.75(A6: Store)97 114.6 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 127.6 Q
(innerMetric\(S,G,I\).)-.44 E(Set Assert T)122 140.6 Q(imer to Assert_T)
-.385 E(ime)-.385 E(If I is RPF_interf)122 153.6 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 170.2 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 m\
achines.)72 183.2 Q/F1 11/Times-Bold@0 SF 2.75(4.6.2. \(*,G\))72 209.2 R
(Assert Message State Machine)2.75 E F0
(The \(*,G\) Assert state-machine for interf)72 225.8 Q(ace I is sho)
-.11 E(wn in Figure 11. There are three states:)-.275 E F1(NoInf)72
242.4 Q 2.75(o\()-.275 G(NI\))-2.75 E F0
(This router has no \(*,G\) assert state on interf)97 255.4 Q(ace I.)
-.11 E F1 2.75(Ia)72 272 S 2.75(mA)-2.75 G(ssert W)-2.75 E(inner \(W\))
-.198 E F0(This router has w)97 285 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 298 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
311 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 324 Q
F1 2.75(Ia)72 340.6 S 2.75(mA)-2.75 G(ssert Loser \(L\))-2.75 E F0
(This router has lost an \(*,G\) assert on interf)97 353.6 Q(ace I.)-.11
E(It must not forw)5.5 E(ard pack)-.11 E(ets for G onto)-.11 E(interf)97
366.6 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 379.6 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 392.6 Q
(In addition, there is also an Assert T)72 409.2 Q(imer \(A)-.385 E
(T\) that is used to time out asserts on the assert losers)-1.221 E
(and to resend asserts on the assert winner)72 422.2 Q(.)-.605 E F1
(When an Assert message is r)72 438.8 Q(ecei)-.198 E -.11(ve)-.11 G
(d, a PIM implementation must \214rst match it against the).11 E
(possible e)72 451.8 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 464.8 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 477.8 Q(It is important to \
note that NO TRANSITION CAN OCCUR in the \(*,G\) state machine as a)72
494.4 Q -.198(re)72 507.4 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 520.4 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
533.4 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 546.4 Q F0 -.165(Fo)72 563 S 2.75(re).165 G(xample, if both the \
\(S,G\) and \(*,G\) assert state machines where in the NoInfo state whe\
n an)-2.915 E(Assert message arri)72 576 Q -.165(ve)-.275 G(s, and the \
message causes the \(S,G\) state machine to transition to either).165 E
("W" or "L" state, then the assert w)72 589 Q
(ould not be processed by the \(*,G\) assert state machine.)-.11 E
(Another e)72 605.6 Q(xample: if the \(S,G\) assert state machine is in\
"L" state when an assert message is)-.165 E(recei)72 618.6 Q -.165(ve)
-.275 G(d, and the assert metric in the message is w).165 E(orse than)
-.11 E/F2 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 631.6 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
644.6 Q(ould transition to "W" state, b)-.11 E(ut)-.22 E(this is not th\
e case because this message already triggered a transition in the \(S,G\
\) assert state)72 657.6 Q(machine.)72 670.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 64])-.165 E 0 Cg EP
%%Page: 65 65
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E 75 145 396 534 -307.011 414
108 392.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 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 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 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 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
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
[
(Assert 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 532 572 ] concat
%I
[
(Assert 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 342.518 209.001 ] concat
%I
[
(Receive preferred )
(assert)
(with RPTbit 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 234.396 208.004 ] concat
%I
[
(Receive acceptable)
(assert from )
(current winner)
(with RPTbit 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 231.5 436 ] concat
%I
[
(Receive preferred assert )
(with RPTbit 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 249.501 533.982 ] concat
%I
[
(Receive inferior assert with)
(RPTbit 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 397 442.5 ] concat
%I
[
(Receive preferred assert)
(with RPTbit 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 443.017 381.943 ] concat
%I
[
(Actions:)
()
(A1: [Send Assert\(*,G\)])
( [Set Assert Timer to Assert_Time -)
( Assert_Override_Interval])
( [Store self as AssertWinner\(*,G,I\)])
( [Store own rpt metric as)
( AssertWinnerMetric\(*,G,I\)])
()
(A2: [Set Assert Timer to Assert_Time])
( [Store winner as )
( AssertWinner\(*,G,I\)])
( [Store winner's metric as)
( AssertWinnerMetric\(*,G,I\)])
()
(A3: [Send Assert\(*,G\)])
( [Set Assert Timer to Assert_Time - )
( Assert_Override_Interval])
()
(A4: [Send AssertCancel\(*,G\)])
( [Delete Assert Info])
()
(A5: [Delete Assert Info])
] Text
End
End %I eop
showpage
end
%%EndDocument
end PEND/F1 11/Times-Bold@0 SF(Figur)185.143 431.011 Q 2.75(e1)-.198 G
(1: P)-2.75 E(er)-.22 E(-interface \(*,G\) Assert State-machine)-.407 E
F0(The state machine uses the follo)72 466.611 Q(wing macros:)-.275 E/F2
11/Courier@0 SF(CouldAssert\(*,G,I\) =)72 483.211 Q 6.6(\(Ii)98.4
496.211 S 6.6(n\(j)-6.6 G(oins\(*,*,RP\(G\)\) \(+\) joins\(*,G\))-6.6 E
(\(+\) pim_include\(*,G\)\) \))157.8 509.211 Q
(AND \(RPF_interface\(RP\(G\)\) != I\))98.4 522.211 Q F0
(CouldAssert\(*,G,I\) is true on do)72 538.811 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 551.811 Q 2.75(yt)-.165 G
(raf)-2.75 E(\214c destined for G.)-.275 E F2
(AssertTrackingDesired\(*,G,I\) =)72 568.411 Q(CouldAssert\(*,G\))98.4
581.411 Q(OR \(local_receiver_include\(*,G,I\)==TRUE)98.4 594.411 Q
(AND \(I_am_DR\(I\) OR AssertWinner\(*,G,I\) == me\)\))124.8 607.411 Q
(OR \(RPF_interface\(RP\(G\)\) == I AND RPTJoinDesired\(G\)\))98.4
620.411 Q F0(AssertT)72 637.011 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
650.011 Q(vior)-.22 E(.)-.605 E
(Note that for reasons of compactness, "AssT)72 666.611 Q
(rDes\(*,G,I\)" is used in the state-machine table to)-.385 E
(refer to AssertT)72 679.611 Q(rackingDesired\(*,G,I\).)-.385 E -.77(Te)
72 696.211 S(rminology:).77 E 2.75(A")97 709.211 S
(preferred assert" is one with a better metric than the current winner)
-2.75 E(.)-.605 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 65])-.165 E 0
Cg EP
%%Page: 66 66
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(Per)72 88.6 Q(-interf)-.22 E
(ace \(*,G\) Assert State-machine in tab)-.11 E(ular form:)-.22 E .44 LW
504 99.35 72 99.35 DL/F1 11/Times-Bold@0 SF(In NoInf)240.628 109.6 Q
2.75(o\()-.275 G(NI\) State)-2.75 E 504 114.35 72 114.35 DL 504 116.35
72 116.35 DL(Recei)85.5 126.6 Q 32.386 -.11(ve I)-.11 H(nferior).11 E
.459(Assert with RPTbit set)85.5 139.6 R(and)85.5 152.6 Q
(CouldAssert\(*,G,I\))85.5 165.6 Q .131(Data arri)234 126.6 R -.11(ve)
-.11 G 2.88(sf).11 G .13(or G on I)-3.155 F 28.855(and CouldAssert)234
139.6 R(\(*,G,I\))234 152.6 Q(Recei)382.5 126.6 Q 24.246 -.11(ve P)-.11
H -.198(re).11 G(ferr).198 E(ed)-.198 E .459(Assert with RPTbit set)
382.5 139.6 R(and AssT)382.5 152.6 Q(rDes \(*,G,I\))-.814 E 504 170.35
72 170.35 DL 504 172.35 72 172.35 DL/F2 11/Symbol SF<ae>85.5 182.6 Q F0
2.75(Ws)2.75 G(tate)-2.75 E F2<ae>101.596 E F0 2.75(Ws)2.75 G(tate)-2.75
E F2<ae>101.596 E F0 2.75(Ls)2.75 G(tate)-2.75 E([Actions A1])85.5 195.6
Q([Actions A1])90.761 E([Actions A2])90.761 E 504 200.35 72 200.35 DL
362.25 116.35 362.25 200.35 DL 213.75 116.35 213.75 200.35 DL 504 99.35
504 200.35 DL 72 99.35 72 200.35 DL 503.999 212.35 72 212.35 DL F1
(In I Am Assert W)209.888 222.6 Q(inner \(W\) State)-.198 E 503.999
227.35 72 227.35 DL 503.999 229.35 72 229.35 DL 24.591(Assert T)80.256
239.6 R(imer)-.198 E(Expir)80.256 252.6 Q(es)-.198 E(Recei)191.424 239.6
Q 10.786 -.11(ve I)-.11 H(nferior).11 E(Assert)191.424 252.6 Q(Recei)
302.592 239.6 Q 2.646 -.11(ve P)-.11 H -.198(re).11 G(ferr).198 E(ed)
-.198 E(Assert)302.592 252.6 Q(CouldAssert)413.76 239.6 Q(\(*,G,I\))
413.76 252.6 Q F2<ae>2.75 E F1 -.99(FA)2.75 G(LSE).99 E 503.999 257.35
72 257.35 DL 503.999 259.35 72 259.35 DL F2<ae>80.256 269.6 Q F0 2.75
(Ws)2.75 G(tate)-2.75 E F2<ae>64.264 E F0 2.75(Ws)2.75 G(tate)-2.75 E F2
<ae>64.264 E F0 2.75(Ls)2.75 G(tate)-2.75 E F2<ae>67.927 E F0(NI state)
2.75 E([Actions A3])80.256 282.6 Q([Actions A3])53.429 E([Actions A2])
53.429 E([Actions A4])53.429 E 503.999 287.35 72 287.35 DL 401.376
229.35 401.376 287.35 DL 290.208 229.35 290.208 287.35 DL 179.04 229.35
179.04 287.35 DL 503.999 212.35 503.999 287.35 DL 72 212.35 72 287.35 DL
503.998 299.35 72 299.35 DL F1(In I Am Assert Loser \(L\) State)176.568
309.6 Q 503.998 314.35 72 314.35 DL 503.998 316.35 72 316.35 DL(Recei)
79.18 326.6 Q -.11(ve)-.11 G(Pr)79.18 339.6 Q(eferr)-.198 E(ed)-.198 E
(Assert)79.18 352.6 Q(Recei)158.459 326.6 Q -.11(ve)-.11 G(Acceptable)
158.459 339.6 Q 16.307(Assert fr)158.459 352.6 R(om)-.198 E(Curr)158.459
365.6 Q(ent)-.198 E -.198(Wi)158.459 378.6 S(nner).198 E(Recei)251.999
326.6 Q -.11(ve)-.11 G 2.051(Inferior Assert)251.999 339.6 R(fr)251.999
352.6 Q 7.947(om Curr)-.198 F(ent)-.198 E -.198(Wi)251.999 365.6 S(nner)
.198 E 10.191(Assert T)345.539 326.6 R(imer)-.198 E(Expir)345.539 339.6
Q(es)-.198 E(Curr)439.079 326.6 Q(ent)-.198 E -.198(Wi)439.079 339.6 S
(nner').198 E(s)-.407 E(GenID)439.079 352.6 Q(Changes)439.079 365.6 Q
503.998 383.35 72 383.35 DL 503.998 385.35 72 385.35 DL F2<ae>79.18
395.6 Q F0 2.75(Ls)2.75 G(tate)-2.75 E F2<ae>36.038 E F0 2.75(Ls)2.75 G
(tate)-2.75 E F2<ae>50.299 E F0(NI state)2.75 E F2<ae>45.415 E F0
(NI state)2.75 E F2<ae>45.415 E F0(NI state)2.75 E([Actions A2])79.18
408.6 Q([Actions A2])21.54 E([Actions A5])35.801 E([Actions A5])35.801 E
([Actions A5])35.801 E 503.998 413.35 72 413.35 DL 428.309 316.35
428.309 413.35 DL 334.769 316.35 334.769 413.35 DL 241.229 316.35
241.229 413.35 DL 147.689 316.35 147.689 413.35 DL 503.998 299.35
503.998 413.35 DL 72 299.35 72 413.35 DL 503.994 425.35 72 425.35 DL F1
(In I Am Assert Loser \(L\) State)161.224 435.6 Q 503.994 440.35 72
440.35 DL 503.994 442.35 72 442.35 DL(AssT)79.854 452.6 Q 7.475
(rDes \(*,G,I\))-.814 F F2<ae>79.854 465.6 Q F1 -.99(FA)2.75 G(LSE).99 E
(my_metric)189.816 452.6 Q F2<ae>24.844 E F1 34.161(better than)189.816
465.6 R -.198(Wi)189.816 478.6 S(nner').198 E 2.75(sm)-.407 G(etric)
-2.75 E(RPF_interface)299.778 452.6 Q 21.94(\(RP\(G\)\) stops)299.778
465.6 R(being I)299.778 478.6 Q(Recei)409.74 452.6 Q 3.911 -.11(ve J)
-.11 H(oin\(*,G\))-.055 E 49.594(or J)409.74 465.6 R(oin-)-.165 E 17.661
(\(*,*,RP\(G\)\) on)409.74 478.6 R(Interface I)409.74 491.6 Q 503.994
496.35 72 496.35 DL 503.994 498.35 72 498.35 DL F2<ae>79.854 508.6 Q F0
(NI state)2.75 E F2<ae>61.837 E F0(NI state)2.75 E F2<ae>61.837 E F0
(NI state)2.75 E F2<ae>61.837 E F0(NI State)2.75 E([Actions A5])79.854
521.6 Q([Actions A5])52.223 E([Actions A5])52.223 E([Actions A5])52.223
E 503.994 526.35 72 526.35 DL 397.959 442.35 397.959 526.35 DL 287.997
442.35 287.997 526.35 DL 178.035 442.35 178.035 526.35 DL 503.994 425.35
503.994 526.35 DL 72 425.35 72 526.35 DL
(An "acceptable assert" is one that has a better metric than)97 540.6 Q
/F3 11/Courier@0 SF(my_assert_metric\(S,G,I\))97 553.6 Q F0(.)A
(An "inferior assert" is one with a w)97 570.2 Q(orse metric than)-.11 E
F3(my_assert_metric\(S,G,I\))2.75 E F0(.)A F1 -.814(Tr)72 596.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 612.8 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 625.8 Q F1(Recei)97 642.4 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 655.4 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 668.4 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 681.4 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 694.4 S
(nner" state, and perform Actions A1 \(belo).44 E(w\).)-.275 E F1 2.75
(Ad)97 711 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 724 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(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 0 Cg EP
%%Page: 67 67
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(outgoing interf)122 85 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 98 Q
(inner" state, and perform Actions A1)-.44 E(\(belo)122 111 Q(w\).)-.275
E/F1 11/Times-Bold@0 SF(Recei)97 127.6 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
140.6 Q(rackingDesir)-.814 E(ed\(*,G,I\)==TR)-.198 E(UE)-.33 E F0 -.88
(We)122 153.6 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 166.6 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 179.6 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 192.6
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 205.6 Q(w\).)-.275 E F1 -.814(Tr)72 231.6 S(ansitions fr).814 E
(om "I am Assert W)-.198 E(inner" State)-.198 E F0
(When in "I am Assert W)72 248.2 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 261.2 Q F1(Recei)97 277.8 Q .22 -.11(ve I)-.11 H(nferior Assert).11 E
F0 1.76 -.88(We r)122 290.8 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 Assert \
T)122 303.8 Q(imer \(Action)-.385 E(A3 belo)122 316.8 Q(w\).)-.275 E F1
(Recei)97 333.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 346.4 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 359.4 Q(w\).)
-.275 E(When in "I am Assert W)72 376 Q(inner" state, the follo)-.44 E
(wing e)-.275 E -.165(ve)-.275 G(nts trigger transitions:).165 E F1
(Assert T)97 392.6 Q(imer Expir)-.198 E(es)-.198 E F0
(The \(*,G\) Assert T)122 405.6 Q(imer e)-.385 E 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 418.6 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 431.6 Q
(arder and periodic \215ooding of duplicate pack)-.11 E
(ets, we re-send the)-.11 E(\(*,G\) Assert, and restart the Assert T)122
444.6 Q(imer \(Action A3 belo)-.385 E(w\).)-.275 E F1
(CouldAssert\(*,G,I\))97 461.2 Q/F2 11/Symbol SF<ae>2.75 E F1 -.99(FA)
2.75 G(LSE).99 E F0(Our \(*,G\) forw)122 474.2 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 487.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 500.2 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 526.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 542.8 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 555.8 Q F1(Recei)97 572.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 585.4 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 598.4 Q -.715(w.)-.275
G F1(Recei)97 615 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 628 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 641 Q(orse than the winner')-.11 E 2.75(sp)-.605 G(re)-2.75 E(vious)
-.275 E 2.75(metric\). W)122 654 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 670.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 683.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 because the winner')
122 696.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)-2.75 E
(NoInfo state, delete this \(*,G\) assert state \(action A5\), and allo)
122 709.6 Q 2.75(wt)-.275 G(he normal PIM)-2.75 E
(Join/Prune mechanisms to operate.)122 722.6 Q(Usually we will e)5.5 E
-.165(ve)-.275 G(ntually re-assert and win when).165 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 0 Cg EP
%%Page: 68 68
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(data pack)122 85 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
101.6 Q(wing e)-.275 E -.165(ve)-.275 G(nts trigger transitions:).165 E
/F1 11/Times-Bold@0 SF(Assert T)97 118.2 Q(imer Expir)-.198 E(es)-.198 E
F0(The \(*,G\) Assert T)122 131.2 Q(imer e)-.385 E 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 144.2 Q F1(Curr)97 160.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 173.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 186.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 199.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 212.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 225.8 Q F1(AssertT)97 242.4 Q(rackingDesir)
-.814 E(ed\(*,G,I\))-.198 E/F2 11/Symbol SF<ae>A F1 -.99(FA)C(LSE).99 E
F0(AssertT)122 255.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 268.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
281.4 Q F1(My metric becomes better than the assert winner')97 298 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
311 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 324 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 337 Q 2.75(wt)-.275 G(he)-2.75 E
(normal PIM Join/Prune mechanisms to operate.)122 350 Q
(Usually we will e)5.5 E -.165(ve)-.275 G(ntually re-assert).165 E
(and win when data pack)122 363 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 379.6 Q F0(Interf)
122 392.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
405.6 Q F1(Recei)97 422.2 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 435.2 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 448.2 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 461.2
Q 2.75(wt)-.275 G(he normal PIM Join/Prune)-2.75 E
(mechanisms to operate.)122 474.2 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 487.2 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 500.2 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 513.2 Q 2.75(wf)-.275 G(orw)-2.75 E
(arder)-.11 E(.)-.605 E F1(\(*,G\) Assert State-machine Actions)72 539.2
Q F0 5.75(A1: Send)97 555.8 R(Assert\(*,G\))2.75 E(Set Assert T)122
568.8 Q(imer to \(Assert_T)-.385 E(ime - Assert_Ov)-.385 E
(erride_Interv)-.165 E(al\))-.275 E(Store self as AssertW)122 581.8 Q
(inner\(*,G,I\).)-.44 E(Store rpt_assert_metric\(G,I\) as AssertW)122
594.8 Q(innerMetric\(*,G,I\).)-.44 E 5.75(A2: Store)97 611.4 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 624.4 Q
(innerMetric\(*,G,I\).)-.44 E(Set Assert T)122 637.4 Q(imer to Assert_T)
-.385 E(ime)-.385 E 5.75(A3: Send)97 654 R(Assert\(*,G\))2.75 E
(Set Assert T)122 667 Q(imer to \(Assert_T)-.385 E(ime - Assert_Ov)-.385
E(erride_Interv)-.165 E(al\))-.275 E 5.75(A4: Send)97 683.6 R
(AssertCancel\(*,G\))2.75 E(Delete assert info \(AssertW)122 696.6 Q
(inner\(*,G,I\) and AssertW)-.44 E(innerMetric\(*,G,I\) will then)-.44 E
(return their def)122 709.6 Q(ault v)-.11 E(alues\).)-.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.2. [P)2.75 F(age 68])-.165 E 0 Cg EP
%%Page: 69 69
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E 5.75(A5: Delete)97 85 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 98 Q(ault v)
-.11 E(alues\).)-.275 E(Note that some of these actions may cause the v)
72 114.6 Q(alue of JoinDesired\(*,G\) or RPF'\(*,G\)\) to)-.275 E
(change, which could cause further transitions in other state machines.)
72 127.6 Q/F1 11/Times-Bold@0 SF 2.75(4.6.3. Assert)72 157.2 R(Metrics)
2.75 E F0(Assert metrics are de\214ned as:)72 173.8 Q/F2 11/Courier@0 SF
(struct assert_metric {)85.2 192.8 Q(rpt_bit_flag;)98.4 205.8 Q
(metric_preference;)98.4 218.8 Q(route_metric;)98.4 231.8 Q(ip_address;)
98.4 244.8 Q(};)85.2 257.8 Q F0(When comparing assert_metrics, the rpt_\
bit_\215ag, metric_preference, and route_metric \214eld are)72 289.8 Q
(compared in order)72 302.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 primary IP address)5.5 E
(of the router that sourced the Assert message is used as a tie-break)72
315.8 Q(er)-.11 E 2.75(,w)-.44 G(ith the highest IP address)-2.75 E
(winning.)72 328.8 Q
(An assert metric for \(S,G\) to include in \(or compare ag)72 345.4 Q
(ainst\) an Assert message sent on interf)-.055 E(ace I)-.11 E
(should be computed using the follo)72 358.4 Q(wing pseudocode:)-.275 E
F2(assert_metric)85.2 390.4 Q(my_assert_metric\(S,G,I\) {)85.2 403.4 Q
(if\( CouldAssert\(S,G,I\) == TRUE \) {)111.6 416.4 Q
(return spt_assert_metric\(S,I\))138 429.4 Q 6.6(}e)111.6 442.4 S
(lse if\( CouldAssert\(*,G,I\) == TRUE \) {)-6.6 E
(return rpt_assert_metric\(G,I\))138 455.4 Q 6.6(}e)111.6 468.4 S(lse {)
-6.6 E(return infinite_assert_metric\(\))138 481.4 Q(})111.6 494.4 Q(})
85.2 507.4 Q(spt_assert_metric\(S,I\))72 530 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 543 Q .33 -.165(ve \()
-.275 H(S,G\) forw).165 E(arding state:)-.11 E F2(assert_metric)85.2 562
Q(spt_assert_metric\(S,I\) {)85.2 575 Q
(return {0,MRIB.pref\(S\),MRIB.metric\(S\),my_ip_address\(I\)})105 588 Q
(})85.2 601 Q(rpt_assert_metric\(G,I\))72 623.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(only on \(*,G\) forw)72 636.6 Q
(arding state:)-.11 E F2(assert_metric)85.2 655.6 Q
(rpt_assert_metric\(G,I\) {)85.2 668.6 Q(return {1,MRIB.pref\(RP\(G\)\)\
,MRIB.metric\(RP\(G\)\),my_ip_address\(I\)})111.6 681.6 Q(})85.2 694.6 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.3. [P)2.75 F(age 69])-.165 E 0 Cg EP
%%Page: 70 70
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Courier@0 SF
(MRIB.pref\(X\))72 85 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 98 Q F1(my_ip_address\(I\))72 111 Q F0
(is simply the router')2.75 E 2.75(sp)-.605 G
(rimary IP address that is associated with the local)-2.75 E(interf)72
124 Q(ace I.)-.11 E F1(infinite_assert_metric\(\))72 140.6 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 153.6 Q(arding state:)
-.11 E F1(assert_metric)85.2 172.6 Q(infinite_assert_metric\(\) {)85.2
185.6 Q(return {1,infinity,infinity,0})118.2 198.6 Q(})85.2 211.6 Q/F2
11/Times-Bold@0 SF 2.75(4.6.4. AssertCancel)72 243.6 R(Messages)2.75 E
F0(An AssertCancel message is simply an RPT Assert message b)72 260.2 Q
(ut with in\214nite metric.)-.22 E(It is sent by)5.5 E
(the assert winner when it deletes the forw)72 273.2 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 286.2
Q 2.75(yo)-.165 G(ther router that has forw)-2.75 E
(arding state to send its)-.11 E -.275(ow)72 299.2 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 315.8 Q
(An AssertCancel\(*,G\) is an in\214nite metric assert with the RPT bit\
set, and typically will name)72 332.4 Q
(RP\(G\) as the source as it cannot name an appropriate S.)72 345.4 Q
(AssertCancel messages are simply an optimization.)72 362 Q
(The original Assert timeout mechanism will)5.5 E(allo)72 375 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 388 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
(an Assert message from the current winner)72 401 Q(.)-.605 E F2 2.75
(4.6.5. Assert)72 427 R(State Macr)2.75 E(os)-.198 E F0(The macros)72
443.6 Q F1(lost_assert\(S,G,rpt,I\))2.75 E F0(,)A F1
(lost_assert\(S,G,I\))2.75 E F0 2.75(,a)C(nd)-2.75 E F1
(lost_assert\(*,G,I\))72 456.6 Q F0(are used in the olist computations \
of Section 4.1, and are de\214ned as:)2.75 E F1
(bool lost_assert\(S,G,rpt,I\) {)85.2 475.6 Q
(if \( RPF_interface\(RP\(G\)\) == I)98.4 488.6 Q(OR)13.2 E 6.6(\(R)
131.4 501.6 S(PF_interface\(S\) == I AND SPTbit\(S,G\) == TRUE \) \) {)
-6.6 E(return FALSE)118.2 514.6 Q 6.6(}e)98.4 527.6 S(lse {)-6.6 E
(return \( AssertWinner\(S,G,I\) != NULL AND)118.2 540.6 Q
(AssertWinner\(S,G,I\) != me \))177.6 553.6 Q(})98.4 566.6 Q(})85.2
579.6 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.5. [P)2.75 F(age 70])-.165 E 0 Cg
EP
%%Page: 71 71
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Courier@0 SF
(bool lost_assert\(S,G,I\) {)85.2 85 Q
(if \( RPF_interface\(S\) == I \) {)98.4 98 Q(return FALSE)118.2 111 Q
6.6(}e)98.4 124 S(lse {)-6.6 E
(return \( AssertWinner\(S,G,I\) != NULL AND)118.2 137 Q
(AssertWinner\(S,G,I\) != me)177.6 150 Q(AND)13.2 E
(\(AssertWinnerMetric\(S,G,I\) is better)177.6 163 Q
(than spt_assert_metric\(S,I\) \))197.4 176 Q(})98.4 189 Q(})85.2 202 Q
F0(Note: the term "AssertW)72 224.6 Q(innerMetric\(S,G,I\) is better th\
an spt_assert_metric\(S,I\)" is required to)-.44 E(correctly handle the\
transition phase when a router has \(S,G\) join state, b)72 237.6 Q
(ut has not yet set the)-.22 E(SPT bit.)72 250.6 Q(In this case it need\
s to ignore the assert state if it will win the assert once the SPT bit\
is)5.5 E(set.)72 263.6 Q F1(bool lost_assert\(*,G,I\) {)85.2 282.6 Q
(if \( RPF_interface\(RP\(G\)\) == I \) {)98.4 295.6 Q(return FALSE)
118.2 308.6 Q 6.6(}e)98.4 321.6 S(lse {)-6.6 E
(return \( AssertWinner\(*,G,I\) != NULL AND)118.2 334.6 Q
(AssertWinner\(*,G,I\) != me \))177.6 347.6 Q(})98.4 360.6 Q(})85.2
373.6 Q(AssertWinner\(S,G,I\))72 396.2 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 409.2 Q F1(AssertWinner\(*,G,I\))72 425.8
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 438.8 Q F1
(AssertWinnerMetric\(S,G,I\))72 455.4 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 468.4 Q F1(AssertWinnerMetric\(*,G,I\))72 485 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 498 Q F1(AssertWinner\(S,G,I\))72 514.6 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)-.11 E(to In\214nity when in the NoInfo state.)72
527.6 Q/F2 11/Times-Bold@0 SF(Summary of Assert Rules and Rationale)72
553.6 Q F0(This section summarizes the k)72 570.2 Q .33 -.165(ey r)-.11
H(ules for sending and reacting to asserts and the rationale for).165 E
(these rules.)72 583.2 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 596.2 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 609.2 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 622.2 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 635.2 Q 14
(1. Beha)72 651.8 R(vior: Do)-.22 E(wnstream neighbors send Join\(*,G\)\
and Join\(S,G\) periodic messages to the)-.275 E
(appropriate RPF' neighbor)97 664.8 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 677.8 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 690.8 S(rride rules apply)
.165 E(.)-.715 E(Rationale: By sending the periodic and triggered Join \
messages to the RPF' neighbor)97 707.4 Q(instead of to the RPF neighbor)
97 720.4 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(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 0 Cg EP
%%Page: 72 72
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(process with e)97 85 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 98 Q(This will not)5.5 E
(happen until data stops \215o)97 111 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 127.6
R(vior: The assert winner for \(*,G\) acts as the local DR for \(*,G\) \
on behalf of)-.22 E(IGMP/MLD members.)97 140.6 Q
(Rationale: This is required to allo)97 157.2 Q 2.75(was)-.275 G
(ingle router to mer)-2.75 E(ge PIM and IGMP/MLD joins and)-.198 E(lea)
97 170.2 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 186.8 R(vior: The assert winner for \(S,G\) acts as the local DR for\
\(S,G\) on behalf of IGMPv3)-.22 E(members.)97 199.8 Q
(Rationale: Same rationale as for 2.)97 216.4 Q 14(4. Beha)72 233 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 246 Q
(gular RPF neighbor)-.165 E(.)-.605 E(Rationale: Same as for 1.)97 262.6
Q 14(5. Beha)72 279.2 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 295.8 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 308.8 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 321.8 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 334.8 Q 14(6. Beha)72 351.4 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 364.4 Q
(ace cancels the \(S,G\) Assert T)-.11 E(imer)-.385 E(.)-.605 E
(Rationale: This is necessary in order to ha)97 381 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 394 Q(wnstream router \
that initially sent a join to the prior Assert winner has under)-.275 E
(gone a)-.198 E(topology change.)97 407 Q 14(7. Beha)72 423.6 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 436.6 Q
(ace cancels the \(*,G\) Assert)-.11 E -.385(Ti)97 449.6 S
(mer and all \(S,G\) assert timers that do not ha).385 E .33 -.165(ve c)
-.22 H(orresponding Prune\(S,G,rpt\) messages in).165 E
(the compound Join/Prune message.)97 462.6 Q(Rationale: Same as 6.)97
479.2 Q 14(8. Beha)72 495.8 R(vior: An assert winner for \(*,G\) or \(S\
,G\) sends a canceling assert when it is about to)-.22 E(stop forw)97
508.8 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 525.4 Q
(ws switching back to the shared tree after the last SPT router on the)
-.275 E(LAN lea)97 538.4 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 551.4 Q -.165(ve)-.275 G(.).165 E 14(9. Beha)72 568 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 581 Q
(Rationale: This pre)97 597.6 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 610.6 Q 8.5
(10. Beha)72 627.2 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 RPF'\(*,G\).)97 640.2 Q(Rationale: This allo)97
656.8 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 686.4 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
703 Q(In these cases, the)5.5 E
(border routers of the PIM domain speak PIM-SM on some interf)72 716 Q
(aces and speak other multicast)-.11 E(Fenner/Handle)72 769 Q
(y/Holbrook/K)-.165 E(ouv)-.385 E 169.221(elas Section)-.165 F 2.75
(4.7. [P)2.75 F(age 72])-.165 E 0 Cg EP
%%Page: 73 73
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E
(routing protocols on other interf)72 85 Q 2.75(aces. Such)-.11 F
(routers are termed PIM Multicast Border Routers or)2.75 E 2.75
(PMBRs. In)72 98 R(general, RFC 2715 [14] pro)2.75 E
(vides rules for interoperability between dif)-.165 E(ferent)-.275 E
(multicast routing protocols.)72 111 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 124 Q(From the point of vie)72 140.6 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 157.2 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 170.2 Q 7.15<8354>72
186.8 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 199.8 Q 1.76 -.88(We n)72
216.4 T(ote that multiple PIM-SM domains are sometimes connected togeth\
er using protocols such).88 E(as MSDP)72 229.4 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 242.4 R(such cases the domains are not co\
nnected via PMBRs because Join\(S,G\) messages)2.75 E(tra)72 255.4 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 268.4 Q(SM.)72 281.4 Q/F1 11
/Times-Bold@0 SF 2.75(4.7.1. Sour)72 307.4 R(ces Exter)-.198 E
(nal to the PIM-SM Domain)-.165 E F0 2.75(AP)72 324 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 337 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 350 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
366.6 Q .33 -.165(ve a)-.275 H 2.75(n\().165 G(S,G\) Creation)-2.75 E
-2.365 -.275(ev e)72 379.6 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 392.6 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 405.6 Q 2.75(,a)-.44 G
(nd the PIM-SM component of the PMBR will not process the)-2.75 E(pack)
72 418.6 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)-.165 E
(Section 4.4.1 with the follo)72 431.6 Q(wing modi\214cations:)-.275 E
7.15<8354>72 448.2 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 464.8 S
(irectlyConnected\(S\) is treated as being TR)-7.15 E
(UE for these sources.)-.44 E 7.15<8354>72 481.4 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 494.4 Q
(ace that is not part of the PIM-SM component of the PMBR \(see Section\
4.2\).)-.11 E F1 2.75(4.7.2. Sour)72 520.4 R(ces Inter)-.198 E
(nal to the PIM-SM Domain)-.165 E F0 2.75(AP)72 537 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 550 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 566.6 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 579.6 Q
(\214c from all internal sources reaches the PMBR until it is)-.275 E
(informed otherwise.)83 592.6 Q 7.15<834e>72 609.2 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 622.2 S
(plicit information as to which groups or \(source,group\) pairs the e)
.165 E(xternal domains wish to)-.165 E(recei)83 635.2 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 651.8 Q 2.75(domain. This)72
664.8 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 677.8 Q -.165(ve)-.275
G(rs, and trigger the transition to a shortest path tree).165 E
(\(see Section 4.2.1\).)72 690.8 Q(In the latter case, the PMBR will no\
t need to send Join\(*,*,RP\) messages.)72 707.4 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 720.4 Q
-.165(ve)-.275 G(rs on behalf of the e).165 E(xternal recei)-.165 E
-.165(ve)-.275 G(rs).165 E(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E
(ouv)-.385 E 160.971(elas Section)-.165 F 2.75(4.7.2. [P)2.75 F(age 73])
-.165 E 0 Cg EP
%%Page: 74 74
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(in terms of being able to swi\
tch to the shortest-path tree for internally-reached sources.)72 85 Q
(According to RFC 2715, the PIM-SM component of the PMBR may recei)72
101.6 Q .33 -.165(ve a n)-.275 H(umber of alerts).165 E(generated by e)
72 114.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 127.6 Q
(ay to map these alerts into PIM-SM state as follo)-.11 E(ws:)-.275 E
7.15<8357>72 144.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 157.2 Q(ALSE for the discard interf)
-.814 E(ace.)-.11 E 7.15<8357>72 173.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 186.8 Q(ALSE for the discard interf)
-.814 E(ace.)-.11 E 7.15<8357>72 203.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 216.4 Q(UE for the discard interf)
-.44 E(ace.)-.11 E 7.15<8357>72 233 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 246 Q(UE for the discard interf)-.44
E(ace.)-.11 E 7.15<8357>72 262.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 275.6 Q
(ace for all RPs in the PIM-SM domain.)-.11 E 7.15<8357>72 292.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 305.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 318.2 Q 1.76 -.88
(We r)72 334.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 347.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 360.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 377.4
Q(normal w)72 390.4 Q(ay)-.11 E(.)-.715 E(These rules are ho)72 407 Q
(we)-.275 E -.165(ve)-.275 G 2.75(rn).165 G(ot suf)-2.75 E
(\214cent to allo)-.275 E 2.75(wp)-.275 G(runing of)-2.75 E 2.75(ft)
-.275 G(he \(*,*,RP\) tree.)-2.75 E(Some additional)5.5 E(rules pro)72
420 Q(vide guidance as to one w)-.165 E(ay this may be done:)-.11 E 7.15
<8349>72 436.6 S 2.75(ft)-7.15 G
(he PMBR has joined on the \(*,*,RP\) tree, then it should set Do)-2.75
E(wnstreamJPState\(*,G,I\) to)-.275 E(TR)83 449.6 Q
(UE on the discard interf)-.44 E(ace for all acti)-.11 E .33 -.165(ve g)
-.275 H(roups.).165 E 7.15<8349>72 466.2 S 2.75(ft)-7.15 G
(he router recei)-2.75 E -.165(ve)-.275 G 2.75(sa\().165 G
(S,G\) prune alert it will need to set Do)-2.75 E
(wnstreamJPState\(S,G,rpt,I\) to)-.275 E(PR)83 479.2 Q
(UNE on the discard interf)-.44 E(ace.)-.11 E 7.15<8349>72 495.8 S 2.75
(ft)-7.15 G(he router recei)-2.75 E -.165(ve)-.275 G 2.75(sa\().165 G
(*,G\) prune alert, it will need to set Do)-2.75 E
(wnstreamJPState\(S,G,rpt,I\) to)-.275 E(PR)83 508.8 Q
(UNE on the discard interf)-.44 E(ace for all acti)-.11 E .33 -.165
(ve s)-.275 H(ources sending to G.).165 E
(The rationale for this is that there is no w)72 525.4 Q
(ay in PIM-SM to prune traf)-.11 E(\214c of)-.275 E 2.75(ft)-.275 G
(he \(*,*,RP\) tree,)-2.75 E -.165(ex)72 538.4 S
(cept by Joining the \(*,G\) tree and then pruning each source indi).165
E(vidually)-.275 E(.)-.715 E/F1 11/Times-Bold@0 SF(4.8.)72 577.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 594 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 607 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 620 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(contiguous set of routers that all implement PIM and are con\
\214gured to operate within a common)72 633 Q(boundary de\214ned by PIM\
Multicast Border Routers \(PMBRs\). PMBRs connect each PIM domain)72
646 Q(to the rest of the Internet.)72 659 Q 2.75(An)72 675.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
688.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 701.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 714.6 Q
(The modi\214ed criteria for admin-scoped re)5.5 E(gions are that the)
-.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 0 Cg EP
%%Page: 75 75
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(re)72 85 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 98 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 114.6 Q(vide routers with the)-.165 E
(information to perform the group-to-RP mapping.)72 127.6 Q
(Currently three mechanisms are possible, and)5.5 E(all three ha)72
140.6 Q .33 -.165(ve a)-.22 H(ssociated problems:).165 E/F1 11
/Times-Bold@0 SF(Static Con\214guration)72 157.2 Q F0 2.75(AP)97 170.2 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 183.2 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 196.2 Q F1(Cisco')
72 212.8 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 225.8 Q 2.75
(ac)97 238.8 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 251.8 Q
(as only intended for use with PIM Sparse-Mode)-.11 E -1.221(Ve)97 264.8
S(rsion 1.)1.221 E(No standard speci\214cation currently e)5.5 E(xists.)
-.165 E F1(BootStrap Router \(BSR\))72 281.4 Q F0(RFC 2362 speci\214es \
a bootstrap mechanism based around the automatic election of a)97 294.4
Q(bootstrap router \(BSR\).)97 307.4 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 320.4 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 333.4 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 346.4 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 359.4 Q(ork for global-scoped groups.)-.11 E(As f)
72 376 Q(ar as PIM-SM is concerned, the only important requirement is t\
hat all routers in the domain)-.11 E
(\(or admin scope zone for scoped re)72 389 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 402 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 415 Q(An)72 431.6 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 470.6 R
(oup-to-RP Mapping)-.198 E F0(Using one of the mechanisms described abo)
72 487.2 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 500.2 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 513.2 Q
(Each mapping may also ha)5.5 E .33 -.165(ve a)-.22 H(n).165 E
(associated priority)72 526.2 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 539.2 Q
(The algorithm for performing the group-to-)5.5 E
(RP mapping is as follo)72 552.2 Q(ws:)-.275 E 19.5(1P)72 568.8 S
(erform longest match on group-range to obtain a list of RPs.)-19.5 E
19.5(2F)72 585.4 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 598.4 Q .33 -.165(ve l)-.22 H -.275(ow).165 G
(er priorities.).275 E 19.5(3I)72 615 S 2.75(fo)-19.5 G
(nly one RP remains in the list, use that RP)-2.75 E(.)-1.221 E 19.5(4I)
72 631.6 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 648.2 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 661.2 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 674.2 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 687.2 Q(choose the RP)72 700.2 Q(.)-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 0 Cg EP
%%Page: 76 76
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(This algorithm is in)72 85 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 98 Q
(et or IGMP/MLD membership indication for a group for which the DR does)
-.11 E(not kno)72 111 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 124 Q 5.5
(.F)-.715 G(urthermore, the mapping function is)-5.5 E(in)72 137 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 153.6 Q(check whether an)72 166.6 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 179.6 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 196.2 Q
(ap mec)-.165 E(hanism described in RFC 2362 omitted step)-.165 E
(\(1\) abo)97 209.2 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 222.2 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 235.2 Q(ectly inter)-.407 E(oper)-.495 E
(ate with implementations of this speci\214cation when)-.165 E
(used with the BSR mec)97 248.2 Q(hanism described in [7].)-.165 E/F2 11
/Times-Bold@0 SF 2.75(4.8.2. Hash)72 277.8 R(Function)2.75 E F0(The has\
h function is used by all routers within a domain, to map a group to on\
e of the RPs from)72 294.4 Q
(the matching set of group-range-to-RP mappings \(this set all ha)72
307.4 Q .33 -.165(ve t)-.22 H(he same longest mask length).165 E
(and same highest priority\). The algorithm tak)72 320.4 Q
(es as input the group address, and the addresses of)-.11 E
(the candidate RPs from the mappings, and gi)72 333.4 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 359.4 Q(xcept for transients\).)-.165 E(The follo)72 372.4 Q
(wing hash function must be used in each router:)-.275 E 19.5(1F)72 389
S(or RP addresses in the matching group-range-to-RP mappings, compute a\
v)-19.665 E(alue:)-.275 E -1.221(Va)97 408 S(lue\(G,M,C\(i\)\)=)1.221 E
(\(1103515245 * \(\(1103515245 * \(G&M\)+12345\) XOR C\(i\)\) + 12345\)\
mod 2^31)99.75 421 Q
(where C\(i\) is the RP address and M is a hash-mask.)97 443.6 Q
(If BSR is being used, the hash-mask is)5.5 E(gi)97 456.6 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 469.6 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 482.6 Q(one for IPv6.)97 495.6 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 508.6 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 521.6 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 538.2 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 551.2 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 564.2 Q
(or IPv6 addresses, we recommend using the)-.165 E(equi)97 577.2 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
590.2 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 603.2 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 616.2 Q(xclusi)-.165 E
-.165(ve)-.275 G(-or operation.).165 E 19.5(2T)72 632.8 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
645.8 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 658.8 Q
F2(4.9.)72 688.4 Q/F3 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 705 Q
(of the PIM-SM protocol mechanisms.)72 718 Q(Both re)5.5 E
(gular IP Multicast and SSM semantics can coe)-.165 E(xist)-.165 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 169.221
(elas Section)-.165 F 2.75(4.9. [P)2.75 F(age 76])-.165 E 0 Cg EP
%%Page: 77 77
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(on a single router and both c\
an be implemented using the PIM-SM protocol.)72 85 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 98 Q
(ed for SSM, and the choice of semantics is)-.165 E
(determined by the multicast group address in both data pack)72 111 Q
(ets and PIM messages.)-.11 E/F1 11/Times-Bold@0 SF 2.75(4.9.1. Pr)72
137 R(otocol Modi\214cations f)-.198 E(or SSM destination addr)-.275 E
(esses)-.198 E F0(The follo)72 153.6 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 166.6 Q
(ed range:)-.165 E 7.15<8341>72 183.2 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 199.8 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 216.4 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 229.4 Q 7.15
<8341>72 246 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 259
Q 2.75(yS)-.165 G(SM address, for the purposes)-2.75 E(of pack)83 272 Q
(et forw)-.11 E(arding.)-.11 E 7.15<8341>72 288.6 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 301.6 Q(The last tw)72 318.2 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 331.2 Q
(gister messages for SSM destination addresses.)-.165 E(Additionally:)72
347.8 Q 7.15<8341>72 364.4 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 377.4 Q(gister)-.165 E
(-Stop message to an)-.22 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 390.4 Q 7.15<8341>72 407 S(router MA)
-4.4 E 2.75(Yo)-1.155 G(ptimize out the creation and maintenance of \(S\
,G,rpt\) and \(*,G\) state for SSM)-2.75 E
(destination addresses -- this state is not needed for SSM pack)83 420 Q
(ets.)-.11 E F1 2.75(4.9.2. PIM-SSM-only)72 446 R(Routers)2.75 E F0(An \
implementor may choose to implement only the subset of PIM Sparse-Mode \
that pro)72 462.6 Q(vides)-.165 E(SSM forw)72 475.6 Q(arding semantics.)
-.11 E 2.75(AP)72 492.2 S(IM-SSM-only router MUST implement the follo)
-2.75 E(wing portions of this speci\214cation:)-.275 E 18.15<8355>72
512.4 S(pstream \(S,G\) state machine \(Section 4.5.7\))-18.15 E 18.15
<8344>72 529 S -.275(ow)-18.15 G
(nstream \(S,G\) state machine \(Section 4.5.3\)).275 E 18.15<8328>72
545.6 S(S,G\) Assert state machine \(Section 4.6.1\))-18.15 E 18.15
<8348>72 562.2 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 578.8 S(ack)
-18.315 E(et forw)-.11 E(arding rules \(Section 4.2\))-.11 E 2.75(AP)72
595.4 S(IM-SSM-only router does not need to implement the follo)-2.75 E
(wing protocol elements:)-.275 E 18.15<8352>72 615.6 S -.165(eg)-18.15 G
(ister state machine \(Section 4.4\)).165 E 18.15<8328>72 632.2 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 648.8 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
665.4 S(*,G\) Assert state machine \(Section 4.6.2\))-18.15 E 18.15
<8342>72 682 S(ootstrap RP Election \(Section 4.8\))-18.15 E 18.15<834b>
72 698.6 S(eepali)-18.425 E .33 -.165(ve T)-.275 H(imer)-.22 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 0 Cg EP
%%Page: 78 78
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E 18.15<8353>72 85 S
(ptBit \(Section 4.2.2\))-18.15 E(The)72 101.6 Q/F1 11/Courier@0 SF
(Keepalive Timer)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 114.6 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 127.6 Q F1(if\( iif =\
= RPF_interface\(S\) AND UpstreamJPState\(S,G\) == Joined \) {)83 146.6
Q(oiflist = inherited_olist\(S,G\))124.8 159.6 Q 6.6(}e)98.4 172.6 S
(lse if\( iif is in inherited_olist\(S,G\) \) {)-6.6 E
(send Assert\(S,G\) on iif)124.8 185.6 Q(})98.4 198.6 Q
(oiflist = oiflist \(-\) iif)98.4 224.6 Q
(forward packet on all interfaces in oiflist)98.4 237.6 Q F0
(This is nothing more than the reduction of the normal PIM-SM forw)72
269.6 Q(arding rule, with all \(S,G,rpt\))-.11 E
(and \(*,G\) clauses replaced with NULL.)72 282.6 Q/F2 11/Times-Bold@0
SF(4.10.)72 308.6 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 325.2 Q(et formats for PIM control messages.)-.11 E
(All PIM control messages ha)72 341.8 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 358.4 Q(Re)5.5 E
(gisters and Re)-.165 E(gister)-.165 E
(-Stop\), or multicast with TTL 1 to)-.22 E(the `)72 371.4 Q(ALL-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 384.4 Q
(messages is the link-local address of the interf)72 397.4 Q
(ace on which the message is being sent.)-.11 E(The IPv4 `)72 414 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 427 Q(f02::d'.)-.275 E
F1 125.4(0123)78.6 446 S 6.6(01234567890123456789012345678901)78.6 459 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
472 Q(|PIM Ver| Type)72 485 Q 19.8(|R)13.2 G 19.8(eserved |)-19.8 F 72.6
(Checksum |)72.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
498 Q F2(PIM V)72 520.6 Q(er)-1.1 E F0(PIM V)97 533.6 Q
(ersion number is 2.)-1.221 E F2 -.814(Ty)72 550.2 S(pe).814 E F0 -.88
(Ty)97 563.2 S(pes for speci\214c PIM messages.).88 E(PIM T)5.5 E
(ypes are:)-.88 E(Message T)72 585.8 Q 120.736(ype Destination)-.88 F
.44 LW 417.334 590.55 72 590.55 DL 2.75(0=H)72 600.8 S 142.054
(ello Multicast)-2.75 F(to ALL-PIM-R)2.75 E(OUTERS)-.44 E 2.75(1=R)72
613.8 S -.165(eg)-2.75 G 129.998(ister Unicast).165 F(to RP)2.75 E 2.75
(2=R)72 626.8 S -.165(eg)-2.75 G(ister).165 E 106.381(-Stop Unicast)-.22
F(to source of Re)2.75 E(gister pack)-.165 E(et)-.11 E 2.75(3=J)72 639.8
S 119.438(oin/Prune Multicast)-2.75 F(to ALL-PIM-R)2.75 E(OUTERS)-.44 E
2.75(4=B)72 652.8 S 123.717(ootstrap Multicast)-2.75 F(to ALL-PIM-R)2.75
E(OUTERS)-.44 E 2.75(5=A)72 665.8 S 138.391(ssert Multicast)-2.75 F
(to ALL-PIM-R)2.75 E(OUTERS)-.44 E 2.75(6=G)72 678.8 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 691.8 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
704.8 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(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 0 Cg EP
%%Page: 79 79
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Times-Bold@0 SF(Reser)72
85 Q -.11(ve)-.11 G(d).11 E F0(Set to zero on transmission.)97 98 Q
(Ignored upon receipt.)5.5 E F1(Checksum)72 127.6 Q F0
(The checksum is a standard IP checksum, i.e.)97 140.6 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 153.6 Q
(xcluding the "Multicast data pack)-.165 E(et" section)-.11 E(of the Re)
97 166.6 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 183.2 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 196.2 Q(calculating the checksum.)97 209.2 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 222.2 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 235.2 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 248.2 Q F1 2.75
(4.10.1. Encoded)72 287.2 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 316.8 Q(ess)-.198
E F0(An Encoded-Unicast address tak)72 333.4 Q(es the follo)-.11 E
(wing format:)-.275 E/F2 11/Courier@0 SF 125.4(0123)78.6 352.4 S 6.6
(01234567890123456789012345678901)78.6 365.4 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
378.4 Q 13.2(|A)72 391.4 S(ddr Family)-13.2 E 6.6(|E)13.2 G
(ncoding Type |)-6.6 E(Unicast Address)33 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...)72 404.4 Q F1
(Addr F)72 427 Q(amily)-.275 E F0(The PIM address f)97 440 Q
(amily of the `Unicast Address' \214eld of this address.)-.11 E -1.221
(Va)97 456.6 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 469.6 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 482.6 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 495.6 Q(xpected.)-.165 E F1
(Encoding T)72 512.2 Q(ype)-.814 E F0
(The type of encoding used within a speci\214c Address F)97 525.2 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 538.2 Q .33
-.165(ve e)-.275 H(ncoding of the Address F).165 E(amily)-.165 E(.)-.715
E F1(Unicast Addr)72 567.8 Q(ess)-.198 E F0
(The unicast address as represented by the gi)97 580.8 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 0 Cg EP
%%Page: 80 80
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 0 Cg
EP
%%Page: 81 81
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 0 Cg EP
%%Page: 82 82
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 in Section 4.10.)97 390.2 Q F1
(OptionT)72 406.8 Q(ype)-.814 E F0(The type of the option gi)97 419.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 449.4 Q
F0(The length of the OptionV)97 462.4 Q(alue \214eld in bytes.)-1.221 E
F1(OptionV)72 492 Q(alue)-1.012 E F0 2.75(Av)97 505 S
(ariable length \214eld, carrying the v)-3.025 E(alue of the option.)
-.275 E(The Option \214elds may contain the follo)97 521.6 Q(wing v)
-.275 E(alues:)-.275 E 7.15<834f>97 538.2 S(ptionT)-7.15 E
(ype 1: Holdtime)-.88 E F2 125.4(0123)114.6 557.2 S 6.6
(01234567890123456789012345678901)114.6 570.2 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
583.2 Q 66(|T)108 596.2 S(ype = 1)-66 E 59.4(|L)85.8 G(ength = 2)-59.4 E
(|)79.2 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
609.2 Q 59.4(|H)108 622.2 S 79.2(oldtime |)-59.4 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108 635.2 Q F0
(Holdtime is the amount of time a recei)108 654.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 667.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 680.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
693.2 Q(Hello messages with a Holdtime v)108 719.2 Q
(alue set to `0' are also sent by a router on an interf)-.275 E(ace)-.11
E(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 0 Cg EP
%%Page: 83 83
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(about to go do)108 85 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 98 Q
(ving routers should immediately time out the neighbor)-.275 E
(information for the sender)108 111 Q(.)-.605 E 7.15<834f>97 127.6 S
(ptionT)-7.15 E(ype 2: LAN Prune Delay)-.88 E/F1 11/Courier@0 SF 125.4
(0123)114.6 146.6 S 6.6(01234567890123456789012345678901)114.6 159.6 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
172.6 Q 66(|T)108 185.6 S(ype = 2)-66 E 66(|L)85.8 G(ength = 4)-66 E(|)
72.6 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
198.6 Q 46.2(|T| LAN)108 211.6 R 72.6(Delay |)6.6 F 46.2
(Override_Interval |)39.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
224.6 Q F0(The LAN_Prune_Delay option is used to tune the prune propag)
108 243.6 Q(ation delay on multi-)-.055 E(access LANs.)108 256.6 Q(The \
T bit speci\214es the ability of the sending router to disable joins su\
ppression.)97 273.2 Q(LAN Delay and Ov)97 289.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
302.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 315.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 332.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 349 S(ptionT)-7.15 E
(ype 18: deprecated and should not be used.)-.88 E 7.15<834f>97 365.6 S
(ptionT)-7.15 E(ype 19: DR Priority)-.88 E F1 125.4(0123)114.6 384.6 S
6.6(01234567890123456789012345678901)114.6 397.6 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
410.6 Q 66(|T)108 423.6 S(ype = 19)-66 E 66(|L)79.2 G(ength = 4)-66 E(|)
72.6 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
436.6 Q 165(|D)108 449.6 S 6.6(RP)-165 G 171.6(riority |)-6.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
462.6 Q F0(DR Priority is a 32-bit unsigned number and should be consid\
ered in the DR election as)108 481.6 Q(described in Section 4.3.2.)108
494.6 Q 7.15<834f>97 511.2 S(ptionT)-7.15 E(ype 20: Generation ID)-.88 E
F1 125.4(0123)114.6 530.2 S 6.6(01234567890123456789012345678901)114.6
543.2 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
556.2 Q 66(|T)108 569.2 S(ype = 20)-66 E 66(|L)79.2 G(ength = 4)-66 E(|)
72.6 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
582.2 Q 151.8(|G)108 595.2 S(eneration ID)-151.8 E(|)178.2 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
608.2 Q F0(Generation ID is a random 32-bit v)108 627.2 Q
(alue for the interf)-.275 E(ace on which the Hello message is)-.11 E
2.75(sent. The)108 640.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 653.2 Q(ace.)
-.11 E 7.15<834f>97 669.8 S(ptionT)-7.15 E(ype 24: Address List)-.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.2. [P)2.75 F(age 83])-.165 E 0 Cg EP
%%Page: 84 84
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Courier@0 SF 125.4(0123)
114.6 85 S 6.6(01234567890123456789012345678901)114.6 98 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
111 Q 66(|T)108 124 S(ype = 24)-66 E 39.6(|L)79.2 G(ength = <Variable>)
-39.6 E(|)39.6 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
137 Q 59.4(|S)108 150 S(econdary Address 1 \(Encoded-Unicast format\))
-59.4 E(|)66 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
163 Q(...)312.6 176 Q
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
189 Q 59.4(|S)108 202 S(econdary Address N \(Encoded-Unicast format\))
-59.4 E(|)66 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)108
215 Q F0(The contents of the Address List Hello option are described in\
section 4.3.4.)108 234 Q(OptionT)97 250.6 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 263.6 Q(ed for Pri)-.165
E -.275(va)-.275 G(te Use, as de\214ned in [13].).275 E(Unkno)97 276.6 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
289.6 Q/F2 11/Times-Bold@0 SF 2.75(4.10.3. Register)72 328.6 R
(Message F)2.75 E(ormat)-.275 E F0 2.75(AR)72 345.2 S -.165(eg)-2.75 G(\
ister message is sent by the DR or a PMBR to the RP when a multicast pa\
ck).165 E(et needs to be)-.11 E(transmitted on the RP-tree.)72 358.2 Q
(The IP source address is set to the address of the DR, the destination)
5.5 E(address to the RP')72 371.2 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 F1 125.4(0123)78.6 390.2 S 6.6
(01234567890123456789012345678901)78.6 403.2 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
416.2 Q(|PIM Ver| Type)72 429.2 Q 19.8(|R)13.2 G 19.8(eserved |)-19.8 F
72.6(Checksum |)72.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
442.2 Q 145.2(|B|N| Reserved2)72 455.2 R(|)178.2 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
468.2 Q 415.8(||)72 481.2 S 138.6(.M)72 494.2 S(ulticast data packet)
-138.6 E(.)138.6 E 415.8(||)72 507.2 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
520.2 Q F2(PIM V)72 542.8 Q(ersion, T)-1.1 E(ype, Reser)-.814 E -.11(ve)
-.11 G(d, Checksum).11 E F0(Described in Section 4.10. Note that in ord\
er to reduce encapsulation o)97 555.8 Q -.165(ve)-.165 G(rhead, the).165
E(checksum for Re)97 568.8 Q
(gisters is done only on \214rst 8 bytes of the pack)-.165 E
(et, including the PIM header)-.11 E(and the ne)97 581.8 Q
(xt 4 bytes, e)-.165 E(xcluding the data pack)-.165 E(et portion. F)-.11
E(or interoperability reasons, a)-.165 E
(message carrying a checksum calculated o)97 594.8 Q -.165(ve)-.165 G
2.75(rt).165 G(he entire PIM Re)-2.75 E(gister message should also)-.165
E(be accepted.)97 607.8 Q F2(B)72 637.4 Q F0(The Border bit. If the rou\
ter is a DR for a source that it is directly connected to, it sets the \
B)17.663 E(bit to 0. If the router is a PMBR for a source in a directly\
connected cloud, it sets the B bit)97 650.4 Q(to 1.)97 663.4 Q F2(N)72
693 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 706 Q(gister)-.165 E(-Suppression T)
-.22 E(imer)-.385 E 2.75(.S)-.605 G(et to 0 otherwise.)-2.75 E
(Fenner/Handle)72 769 Q(y/Holbrook/K)-.165 E(ouv)-.385 E 155.471
(elas Section)-.165 F 2.75(4.10.3. [P)2.75 F(age 84])-.165 E 0 Cg EP
%%Page: 85 85
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 11/Times-Bold@0 SF(Reser)72
85 Q -.11(ve)-.11 G(d2).11 E F0 -.385(Tr)97 98 S
(ansmitted as zero, ignored on receipt.).385 E F1(Multicast data pack)72
127.6 Q(et)-.11 E F0(The original pack)97 140.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 153.6 Q(et, e.g. an IPv6 data pack)
-.11 E(et must be encapsulated in an IPv6)-.11 E(PIM pack)97 166.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 179.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 192.6 Q(arding the pack)-.11 E(et do)-.11
E(wn the shared tree.)-.275 E -.165(Fo)97 209.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 222.2
Q F1 2.75(4.10.4. Register)72 261.2 R(-Stop Message F)-.407 E(ormat)
-.275 E F0 2.75(AR)72 277.8 S -.165(eg)-2.75 G(ister).165 E
(-Stop is unicast from the RP to the sender of the Re)-.22 E
(gister message.)-.165 E(The IP source)5.5 E
(address is the address to which the re)72 290.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 303.8 Q(gister message.)-.165 E/F2 11
/Courier@0 SF 125.4(0123)78.6 322.8 S 6.6
(01234567890123456789012345678901)78.6 335.8 S
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
348.8 Q(|PIM Ver| Type)72 361.8 Q 19.8(|R)13.2 G 19.8(eserved |)-19.8 F
72.6(Checksum |)72.6 F
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
374.8 Q 85.8(|G)72 387.8 S(roup Address \(Encoded-Group format\))-85.8 E
(|)92.4 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
400.8 Q 79.2(|S)72 413.8 S(ource Address \(Encoded-Unicast format\))
-79.2 E(|)79.2 E
(+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+)72
426.8 Q F1(PIM V)72 449.4 Q(ersion, T)-1.1 E(ype, Reser)-.814 E -.11(ve)
-.11 G(d, Checksum).11 E F0(Described in Section 4.10.)97 462.4 Q F1(Gr)
72 479 Q(oup Addr)-.198 E(ess)-.198 E F0
(The group address from the multicast data pack)97 492 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 505 Q(gister)-.165 E
(-Stops the Mask Len \214eld contains the full address)-.22 E
(length * 8 \(e.g. 32 for IPv4 nati)97 518 Q .33 -.165(ve e)-.275 H
(ncoding\), if the message is sent for a single group.).165 E F1(Sour)72
547.6 Q(ce Addr)-.198 E(ess)-.198 E F0
(The host address of the source from the multicast data pack)97 560.6 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 573.6 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 586.6 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 F1
2.75(4.10.5. J)72 625.6 R(oin/Prune Message F)-.165 E(ormat)-.275 E F0
2.75(AJ)72 642.2 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 655.2 S(ild shared trees \(RP trees\) or source trees \(SPT\
\). Prunes are sent to prune source trees when).22 E(members lea)72
668.2 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 0 Cg EP
%%Page: 86 86
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 0 Cg EP
%%Page: 87 87
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 in Section 4.10.)97 98 Q F1(Unicast Upstr)72 114.6 Q
(eam Neighbor Addr)-.198 E(ess)-.198 E F0
(The address of the RPF or upstream neighbor)97 127.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 140.6 Q
(the upstream neighbor)97 153.6 Q 2.75(,a)-.44 G 2.75(so)-2.75 G
(btained from the RPF lookup.)-2.75 E F1(Reser)72 183.2 Q -.11(ve)-.11 G
(d).11 E F0 -.385(Tr)97 196.2 S(ansmitted as zero, ignored on receipt.)
.385 E F1(Holdtime)72 225.8 Q F0(The amount of time a recei)97 238.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 251.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 264.8 Q -.715(y.)-.165 G
(This may be used with dial-on-demand links, to a)97 277.8 Q -.22(vo)
-.22 G(id k).22 E(eeping the link up with periodic)-.11 E
(Join/Prune messages.)97 290.8 Q(Note that the HoldT)97 316.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 346.4 Q(oups)-.198 E F0
(The number of multicast group sets contained in the message.)97 359.4 Q
F1(Multicast gr)72 389 Q(oup addr)-.198 E(ess)-.198 E F0 -.165(Fo)97 402
S 2.75(rf).165 G(ormat description see Section 4.10.1.)-2.75 E F1
(Number of J)72 418.6 Q(oined Sour)-.165 E(ces)-.198 E F0
(Number of join source addresses listed for a gi)97 431.6 Q -.165(ve)
-.275 G 2.75(ng).165 G(roup.)-2.75 E F1 -.165(Jo)72 461.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
474.2 Q(ard multicast datagrams for if)-.11 E(recei)97 487.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 513.2 Q F1
(Number of Pruned Sour)72 529.8 Q(ces)-.198 E F0
(Number of prune source addresses listed for a group.)97 542.8 Q F1
(Prune Sour)72 572.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
585.4 Q(ant to forw)-.11 E(ard multicast)-.11 E
(datagrams for when recei)97 598.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 628 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 641 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 654 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 667 Q(pack)72 680 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 0 Cg EP
%%Page: 88 88
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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\))5.5 E
(source 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 0 Cg EP
%%Page: 89 89
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(the Source-Address Mask-Len s\
et 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 0 Cg EP
%%Page: 90 90
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 0 Cg EP
%%Page: 91 91
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E(If only N \(S,G,rpt\) Prune e\
ntries \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 in Section 4.10.)97 416.2 Q F1(Gr)
72 432.8 Q(oup Addr)-.198 E(ess)-.198 E F0
(The group address for which the router wishes to resolv)97 445.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 458.8 Q F1(Sour)72
475.4 Q(ce Addr)-.198 E(ess)-.198 E F0
(Source address for which the router wishes to resolv)97 488.4 Q 2.75
(et)-.165 G(he forw)-2.75 E(arding con\215ict. The source)-.11 E
(address MA)97 501.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 514.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 531 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 544 Q F1(Metric Pr)72 573.6 Q(efer)-.198 E
(ence)-.198 E F0(Preference v)97 586.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 599.6 Q
(ous-Point.)-.22 E F1(Metric)72 629.2 Q F0(The unicast routing table me\
tric associated with the route used to reach the multicast source)97
642.2 Q(or Rendezv)97 655.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 684.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 697.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 0 Cg EP
%%Page: 92 92
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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\) Prune-P)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\) Prune-P)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\) Prune-P)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\) Prune-P)-.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 0 Cg EP
%%Page: 93 93
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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)122 184.6 Q
(-Stop T)-.407 E(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 0 Cg EP
%%Page: 94 94
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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.998 542.95 72 542.95 DL
-1.012(Va)86.705 553.2 S(lue Name)1.012 E -1.012(Va)95.694 G 115.835
(lue Explanation)1.012 F 503.998 557.95 72 557.95 DL 503.998 559.95 72
559.95 DL F0(J/P_Ov)86.705 570.2 Q(erride_Interv)-.165 E(al\(I\))-.275 E
(Def)239.126 570.2 Q(ault: Propag)-.11 E(ation_-)-.055 E
(Delay\(I\) + Ov)239.126 583.2 Q(erride_-)-.165 E(Interv)239.126 596.2 Q
(al\(I\))-.275 E(Short period after a join)384.199 570.2 Q
(or prune to allo)384.199 583.2 Q 2.75(wo)-.275 G(ther)-2.75 E
(routers on the LAN to)384.199 596.2 Q -.165(ove)384.199 609.2 S
(rride the join or).165 E(prune)384.199 622.2 Q 503.998 626.95 72 626.95
DL 362.141 542.95 362.141 626.95 DL 217.068 542.95 217.068 626.95 DL
503.998 542.95 503.998 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 0 Cg EP
%%Page: 95 95
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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, Ov)181.481 391.8 Q
(erride_-)-.165 E(Interv)181.481 404.8 Q(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 0 Cg
EP
%%Page: 96 96
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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
(gister)-.165 E(-Stop is sent.)-.22 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).198 E(-Stop T)-.407 E(imer \(RST\(S,G\)\))-.198 E
503.996 330.95 72 330.95 DL -1.012(Va)86.042 341.2 S(lue Name)1.012 E
-1.012(Va)109.512 G 102.901(lue Explanation)1.012 F 503.996 345.95 72
345.95 DL 503.996 347.95 72 347.95 DL F0(Re)86.042 358.2 Q
(gister_Suppression_T)-.165 E 39.376(ime Def)-.385 F(ault: 60 seconds)
-.11 E(Period during which a)384.42 358.2 Q(DR stops sending)384.42
371.2 Q(Re)384.42 384.2 Q(gister)-.165 E(-encapsulated)-.22 E
(data to the RP after)384.42 397.2 Q(recei)384.42 410.2 Q(ving a Re)
-.275 E(gister)-.165 E(-)-.22 E(Stop message.)384.42 423.2 Q 503.996
427.95 72 427.95 DL(Re)86.042 438.2 Q(gister_Probe_T)-.165 E 67.492
(ime Def)-.385 F(ault: 5 seconds)-.11 E -.385(Ti)384.42 438.2 S
(me before RST).385 E -.165(ex)384.42 451.2 S(pires when a DR may).165 E
(send a Null-Re)384.42 464.2 Q(gister to)-.165 E(the RP to cause it to)
384.42 477.2 Q(resend a Re)384.42 490.2 Q(gister)-.165 E(-Stop)-.22 E
(message.)384.42 503.2 Q 503.996 507.95 72 507.95 DL 363.357 330.95
363.357 507.95 DL 231.218 330.95 231.218 507.95 DL 503.996 330.95
503.996 507.95 DL 72 330.95 72 507.95 DL F1(5.)72 535.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
561.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 577.8 Q(amily \214eld w)-.165 E
(as chosen to be 8 bits as a tradeof)-.11 E 2.75(fb)-.275 G(etween pack)
-2.75 E(et format and)-.11 E(use of the IAN)72 590.8 Q 2.75(Aa)-.385 G
(ssigned numbers.)-2.75 E(Since when the PIM pack)5.5 E(et format w)-.11
E(as designed only 15)-.11 E -.275(va)72 603.8 S
(lues were assigned for Address F).275 E(amilies, and lar)-.165 E
(ge numbers of ne)-.198 E 2.75(wA)-.275 G(ddress F)-2.75 E(amily v)-.165
E(alues)-.275 E(were not en)72 616.8 Q(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 Address F)-2.75 E(amilies)
-.165 E(in a 16-bit \214eld.)72 629.8 Q(Therefore, the PIM Address F)5.5
E(amily is allocated as follo)-.165 E(ws:)-.275 E -1.221(Va)97 646.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
659.4 S(mily Numbers [11].).165 E -1.221(Va)97 676 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 689 Q -.275(va)-.165 G
(l, as de\214ned in [13].).275 E -1.221(Va)97 705.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 0 Cg EP
%%Page: 97 97
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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(gister)-.165 E(-Stop\) messages.)-.22 E F1 2.75
(6.1.1. F)72 303.8 R(or)-.275 E(ged link-local messages)-.11 E F0(Join/\
Prune, Hello, and Assert messages are all sent to the link-local ALL_PI\
M_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(gister)-.165 E
(-Stop messages are forw)-.22 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
(gister)-.165 E(-Stop message.)-.22 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 0 Cg EP
%%Page: 98 98
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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(gister)-.165 E
(-Stop messages do not apply to a PIM-SSM-only)-.22 E
(implementation, 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
(gister)-.165 E(-Stop pack)-.22 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 0 Cg
EP
%%Page: 99 99
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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
(gister)-.165 E(-Stop unicast messages.)-.22 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)-.407 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)-.165 E
(-Stop messages.)-.22 E(Because Re)5.5 E(gister)-.165 E(-Stop)-.22 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 0 Cg EP
%%Page: 100 100
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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, Garry K)-2.75 E(ump,)-.165 E -.165(Pa)72
552.6 S(vlin Radosla)-.055 E -2.475 -.22(vo v)-.22 H(and Mik)2.97 E 2.75
(eD)-.11 G -.22(av)-2.75 G(ison.).22 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 0 Cg EP
%%Page: 101 101
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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 0 Cg EP
%%Page: 102 102
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 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
(68,)-6 E F4(70)A F3(AssertCancel\(S,G\))72 133 Q F0 11
(........................)10.24 G F3(56,63,)-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(65)-18.5 E F3(,67,68)A(AssertT)72 181 Q(rackingDesired\(S,G,I\))
-.35 E F0 11(.....................)6.58 G F3(59,)-31 E F4(60)A F3
(,62,63)A(AssertW)72 193 Q(inner\(*,G,I\))-.4 E F0 11
(........................)3.15 G F3(14,16,65,68,)-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,60,63,70,)-56 E F4(71)A F3(AssertW)72 217 Q
(innerMetric\(*,G,I\))-.4 E F0 11(......................)3.99 G F3(68,)
-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,68,)-18.5 E F4(95)A F3(Assert_T)72 265 Q(ime)-.35 E F0 11
(..........................)6.69 G F3(63,68,)-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(65)A F3(,66,67,69)A
(CouldAssert\(S,G,I\))72 325 Q F0 11(........................)7.73 G F3
(59,)-56 E F4(60)A F3(,61,62,63,69)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(22,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,36,92,)-31 E F4(94)A F3(ET\(S,G,rpt,I\))72 493 Q F0 11
(..........................)4.4 G F3(13,39,41,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(,44,47,49,51,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(,44)A
(immediate_olist\(*,G\))72 589 Q F0 11(.......................)13.42 G
F4(14)-6 E F3(,47)A(immediate_olist\(S,G\))72 601 Q F0 11
(.......................)12.86 G F4(14)-18.5 E F3(,27,51)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,51,60,78)A
(inherited_olist\(S,G,rpt\))72 637 Q F0 11(.......................)5.92
G F4(14)-56 E F3(,18,19,53,55,57)A(Interf)72 649 Q(ace_Address_List)-.1
E F0 11(.......................)5.49 G F4(21)6.5 E F3
(I_Am_Assert_Loser\(*,G,I\))72 661 Q F0 11(......................)4.14 G
F3(16)6.5 E(I_Am_Assert_Loser\(S,G,I\))72 673 Q F0 11
(......................)3.58 G F3(16)6.5 E(I_am_DR\(I\))72 685 Q F0 11
(..........................)8.57 G F3(14,)-43.5 E F4(22)A F3(,28,60,65)A
(I_am_RP\(G\))72 697 Q F0 11(..........................)6.34 G F3(29,)-6
E F4(29)A F3(J/P_Holdtime)72 709 Q F0 11(..........................)2.99
G F3(31,35,38,40,45,49,52,87,)-106 E F4(94)A F3(,95)A(J/P_Ov)72 721 Q
(erride_Interv)-.15 E(al\(I\))-.25 E F0 11(.......................).79 G
F3(32,35,38,40,87,)-56 E F4(94)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 0 Cg EP
%%Page: 103 103
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 10/Times-Roman@0 SF
(JoinDesired\(*,*,RP\))72 84 Q F0 11(........................)3.84 G/F2
10/Times-Bold@0 SF(44)-6 E F1(,55)A(JoinDesired\(*,G\))72 96 Q F0 11
(.........................)2.6 G F1(11,)-43.5 E F2(47)A F1(,55,60,69)A
(JoinDesired\(S,G\))72 108 Q F0 11(.........................)2.04 G F1
(12,19,)-56 E F2(51)A F1(,60,62,64)A(joins\(*,*,RP\(G\)\))72 120 Q F0 11
(.........................)4.53 G F1(14)6.5 E(joins\(*,*,RP\))72 132 Q
F0 11(..........................)4.66 G F1(14,)-31 E F2(15)A F1(,60,65)A
(joins\(*,G\))72 144 Q F0 11(...........................)3.42 G F1(14,)
-31 E F2(15)A F1(,60,65)A(joins\(S,G\))72 156 Q F0 11
(...........................)2.86 G F1(14,)-18.5 E F2(15)A F1(,60)A
(JT\(*,*,RP\))72 168 Q F0 11(...........................).36 G F1
(10,43,92,)-31 E F2(95)A F1(JT\(*,G\))72 180 Q F0 11
(...........................)12.87 G F1(11,47,92,)-31 E F2(95)A F1
(JT\(S,G\))72 192 Q F0 11(...........................)12.31 G F1
(12,50,92,)-31 E F2(95)A F1(KA)72 204 Q(T\(S,G\))-1.11 E F0 11
(...........................)2.87 G F1(12,17,18,19,28,29,51,77,92,)-106
E F2(95)A F1 -.25(Ke)72 216 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,51,77,92,)-118.5 E F2(95)A F1 -.25(Ke)72 228 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
240 Q(ault)-.1 E F0 11(........................)5.62 G F1(24,)-6 E F2
(93)A F1(lan_delay_enabled\(I\))72 252 Q F0 11(........................)
.53 G F2(23)-6 E F1(,25)A(LAN_Prune_Delay)72 264 Q F0 11
(........................)7.74 G F2(21)6.5 E F1(local_recei)72 276 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 288 Q -.15
(ve)-.25 G(r_include\(*,G,I\)).15 E F0 11(.....................)8.86 G
F2(15)-18.5 E F1(,65,74)A(local_recei)72 300 Q -.15(ve)-.25 G
(r_include\(S,G,I\)).15 E F0 11(.....................)8.3 G F2(15)-6 E
F1(,60)A(local_recei)72 312 Q -.15(ve)-.25 G(r_include\(S,G,I\).).15 E
F0 11(.....................)5.8 G F1(74)6.5 E(lost_assert\(*,G\))72 324
Q F0 11(.........................)8.15 G F1(14,)-18.5 E F2(15)A F1(,60)A
(lost_assert\(*,G,I\))72 336 Q F0 11(.........................)2.32 G F1
(14,15,)-18.5 E F2(71)A F1(lost_assert\(S,G\))72 348 Q F0 11
(.........................)7.59 G F1(14,)-6 E F2(15)A F1
(lost_assert\(S,G,I\))72 360 Q F0 11(.........................)1.76 G F1
(14,15,)-18.5 E F2(71)A F1(lost_assert\(S,G,rpt\))72 372 Q F0 11
(........................)7.73 G F2(15)6.5 E F1
(lost_assert\(S,G,rpt,I\))72 384 Q F0 11(........................)1.9 G
F1(15,)-6 E F2(70)A F1(MBGP)72 396 Q F0 11(............................)
2.16 G F1(4,5)4 E(MFIB)72 408 Q F0 11(............................)6.05
G F1(5,9)4 E(MLD)72 420 Q F0 11(............................)8.28 G F1
(5,6,11,15,72,76)-46 E(MRIB)72 432 Q F0 11(............................)
4.94 G F2(4)-128.5 E F1(,5,8,10,12,16,43,46,46,53,69,75,92)A(MRIB.ne)72
444 Q(xt_hop\(host\))-.15 E F0 11(.......................)10.79 G F1
(16,)-31 E F2(16)A F1(,43,44)A(my_assert_metric\(S,G,I\))72 456 Q F0 11
(.......................).38 G F1(59,63,64,66,)-43.5 E F2(69)A F1
(NBR\(Interf)72 468 Q(ace,IP_address\))-.1 E F0 11
(......................)3.97 G F2(16)-43.5 E F1(,25,43,45,46)A(NL)72 480
Q(T\(N,I\))-.92 E F0 11(...........................)6.02 G F1
(10,22,92,94)-31 E -.4(OT)72 492 S(\(S,G,rpt\)).4 E F0 11
(..........................)9.52 G F1(13,54,92,)-31 E F2(95)A F1(Ov)72
504 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 516 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 528 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 540 Q F0
11(.........................).37 G F1(11,14,)-56 E F2(14)A F1(,19,60,65)
A(pim_include\(S,G\))72 552 Q F0 11(........................)13.56 G F1
(12,14,)-43.5 E F2(14)A F1(,19,60)A(PPT\(*,*,RP)72 564 Q(,I\))-1.11 E F0
11(..........................)2.16 G F1(10,31,92,)-31 E F2(94)A F1
(PPT\(*,G,I\))72 576 Q F0 11(..........................)13.56 G F1
(11,34,92,)-31 E F2(94)A F1(PPT\(S,G,I\))72 588 Q F0 11
(..........................)13 G F1(12,36,92,)-31 E F2(94)A F1
(PPT\(S,G,rpt,I\))72 600 Q F0 11(.........................)13.14 G F1
(13,39,41,92,)-43.5 E F2(94)A F1(Propag)72 612 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 624 Q F0 11(.......................)
9.27 G F2(55)-31 E F1(,56,62,64)A(prunes\(S,G,rpt\))72 636 Q F0 11
(.........................)9.54 G F1(14,)-18.5 E F2(15)A F1(,60)A(Re)72
648 Q(gister)-.15 E(-Stop\(*,G\))-.2 E F0 11(........................)
9.47 G F2(28)6.5 E F1(Re)72 660 Q(gister)-.15 E(-Stop\(S,G\))-.2 E F0 11
(........................)8.91 G F1(29)6.5 E(Re)72 672 Q(gister)-.15 E
(-StopT)-.2 E(imer\(S,G\))-.35 E F0 11(......................)12.32 G F1
(26,27,93,)-31 E F2(96)A F1(Re)72 684 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
696 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
708 Q F0 11(............................)4.39 G F1
(4,14,16,27,29,33,47,54,60,65,69,72,92)-138.5 E(RPF)72 720 Q F0 11
(............................)12.71 G F2(4)11.5 E 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 0 Cg EP
%%Page: 104 104
%%BeginPageSetup
BP
%%EndPageSetup
/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 77.081(-DRAFT Expires:)-1.012 F
(April 2004)2.75 E(October 2003)112.127 E/F1 10/Times-Roman@0 SF
(RPF'\(*,G\))72 84 Q F0 11(...........................)1.75 G/F2 10
/Times-Bold@0 SF(16)-93.5 E F1(,19,47,47,49,53,55,69,71)A(RPF'\(S,G\))72
96 Q F0 11(...........................)1.19 G F2(16)-68.5 E F1
(,19,50,53,55,64,71)A(RPF'\(S,G,rpt\))72 108 Q F0 11
(..........................)1.33 G F2(16)-31 E F1(,53,56,72)A
(RPF_interf)72 120 Q(ace)-.1 E F0 11(..........................).33 G F1
(65)6.5 E(RPF_interf)72 132 Q(ace\(host\))-.1 E F0 11
(........................)4.5 G F1(16,18,19,28,47,48,52,60,65,70,73,78)
-131 E(RPTJoinDesired\(G\))72 144 Q F0 11(........................)5.51
G F2(55)-18.5 E F1(,57,65)A(rpt_assert_metric\(G,I\))72 156 Q F0 11
(.......................)10.11 G F1(68,)-6 E F2(69)A F1(RST\(S,G\))72
168 Q F0 11(...........................)3.97 G F1(26,27,93,)-31 E F2(96)
A F1(SPTbit\(S,G\))72 180 Q F0 11(..........................)8.27 G F2
(13)-156 E F1(,18,19,29,36,52,53,55,60,60,63,64,70,78)A
(spt_assert_metric\(S,I\))72 192 Q F0 11(.......................)11.21 G
F1(63,)-18.5 E F2(69)A F1(,71)A(SSM)72 204 Q F0 11
(............................)10.49 G F1(7,76)-1 E
(Suppression_Enabled\(I\))72 216 Q F0 11(.......................)2.6 G
F2(25)-6 E F1(,95)A(SwitchT)72 228 Q(oSptDesired\(S,G\))-.8 E F0 11
(......................)8.53 G F1(19,)-18.5 E F2(19)A F1(,29)A(TIB)72
240 Q F0 11(.............................).64 G F1(5,9,17)-8.5 E -.35
(Tr)72 252 S(iggered_Hello_Delay).35 E F0 11(.......................)
4.07 G F1(20,21,)-18.5 E F2(94)A F1(t_joinsuppress)72 264 Q F0 11
(..........................).22 G F1(44,45,47,49,52)-43.5 E(t_o)72 276 Q
-.15(ve)-.15 G(rride).15 E F0 11(...........................)3.45 G F1
(44,47,51,55,95,)-56 E F2(95)A F1(t_o)72 288 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 300 Q F0 11(...........................)3.7 G F1
(44,47,51,95)-31 E(t_suppressed)72 312 Q F0 11
(..........................)6.34 G F1(25,45,49,51,52,95)-56 E
(Update_SPTbit\(S,G,iif\))72 324 Q F0 11(.......................)4.25 G
F1(18,)-6 E F2(19)A F1(UpstreamJPState\(S,G\))72 336 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 0 Cg EP
%%Trailer
end
%%EOF
| PAFTECH AB 2003-2026 | 2026-04-22 06:11:13 |