?? draft-ietf-pim-bidir-04.ps
字號:
(ut which are used to forw)-.22 E(ard pack)-.11 E(ets tra)-.11 E -.165(ve)-.22 G(ling upstream from sources to).165 E -.11(wa)-.275 G(rds the RP).11 E(.)-1.221 E(Routers along source-only branches only ha)72 641.4 Q .33 -.165(ve t)-.22 H(he RPF_interf).165 E(ace to the RP in their olist for G and)-.11 E(hence do not need to maintain an)72 654.4 Q 2.75(yg)-.165 G(roup speci\214c state. Upstream forw)-2.75 E(arding can be performed)-.11 E(using RP state.)72 667.4 Q(An implementation may decide to maint\ain group state for source-only branches)5.5 E(for accounting or performance reasons.)72 680.4 Q(Handle)72 769 Q(y/K)-.165 E(ouv)-.385 E(elas/Speakman/V)-.165 E 154.91(icisano Section)-.66F 2.75(3.3.1. [P)2.75 F(age 8])-.165 E EP%%Page: 9 9%%BeginPageSetupBP%%EndPageSetup/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 66.092(-DRAFT Expires:)-1.012 F(December 2002)2.75 E(June 2002)116.406 E/F1 11/Times-Bold@0 SF(3.4.)7285 Q/F2 13/Times-Bold@0 SF(PIM J)5.5 E(oin/Prune Messages)-.195 E F02.75(AB)72 101.6 S(IDIR-PIM Join/Prune message consists of a list of Jo\ined and Pruned Groups. When)-2.75 E(processing a recei)72 114.6 Q -.165(ve)-.275 G 2.75(dJ).165 G(oin/Prune message, each Joined or Pruned Group is ef)-2.75 E(fecti)-.275 E -.165(ve)-.275 G(ly considered).165 E(indi)72 127.6 Q(vidually by applying the follo)-.275 E(wing state machines.)-.275 E(When considering a Join/Prune message)5.5 E(whose PIM Destination \214eld addresses this router)72 140.6 Q 2.75(,\()-.44 G(*,G\) Joins and Prunes can af)-2.75 E(fect the)-.275 E(do)72153.6 Q(wnstream state machine.)-.275 E(When considering a Join/Prune message whose PIM Destination \214eld)5.5E(addresses another router)72 166.6 Q 2.75(,m)-.44 G(ost Join or Prune entries could af)-2.75 E(fect the upstream state machine.)-.275 E F1 2.75(3.4.1. Recei)72 205.6R(ving \(*,G\) J)-.11 E(oin/Prune Messages)-.165 E F0(When a router recei)72 222.2 Q -.165(ve)-.275 G 2.75(saJ).165 G(oin\(*\,G\) or Prune\(*,G\) it must \214rst check to see whether the RP in the)-2.75 E(message matches RP\(G\) \(the router')72 235.2 Q 2.75(si)-.605 G(dea of who the RP is\). If the RP in the message does not)-2.75 E(matc\h RP\(G\) the Join or Prune MUST be silently dropped. In addition a rou\ter MUST NO)72 248.2 Q(T)-.44 E(process Join\(*,G\) messages tar)72261.2 Q(geted to itself if it is not the DF for RP\(G\) on the interf)-.198 E(ace on)-.11 E(which the message w)72 274.2 Q(as recei)-.11 E-.165(ve)-.275 G(d.).165 E(The per)72 290.8 Q(-interf)-.22 E(ace state-machine for recei)-.11 E(ving \(*,G\) Join/Prune Messages is gi)-.275 E -.165(ve)-.275 G 2.75(nb).165 G(elo)-2.75 E 1.43 -.715(w. T)-.275 H(here).715 E(are three states:)72 303.8 Q F1(NoInf)97 320.4 Q 2.75(o\()-.275 G(NI\))-2.75 E F0(The interf)122 333.4 Q(ace has no \(*,G\) Join state and no timers running.)-.11 E F1 -.165(Jo)97 350 S(in \(J\)).165 E F0(The interf)122 363 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 376 S(rom this interf)-2.75 E(ace.)-.11 E F1(PruneP)97 392.6 Q(ending \(PP\))-.22 E F0(The router has recei)122 405.6 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 418.6 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 431.6 Q 5.5(.F)-.605 G(or forw)-5.665 E(arding purposes, the PrunePending state functions e)-.11 E(xactly lik)-.165 E 2.75(et)-.11 G(he)-2.75 E(Join state.)122 444.6 Q(In addition the state-machine uses tw)72 461.2 Q 2.75(ot)-.11 G(imers:)-2.75 E F1(ExpiryT)97 477.8 Q(imer \(ET\))-.198 E F0(This timer is restarted when a v)122 490.8 Q(alid Join\(*,G\) is recei)-.275 E -.165(ve)-.275 G 2.75(d. Expiry).165 F(of the ExpiryT)2.75 E(imer)-.385 E(causes the interf)122 503.8 Q(ace state to re)-.11 E -.165(ve)-.275 G(rt to NoInfo for this group.).165 E F1(PruneP)97 520.4 Q(endingT)-.22 E(imer \(PPT\))-.198 E F0(This timer is set when a v)122533.4 Q(alid Prune\(*,G\) is recei)-.275 E -.165(ve)-.275 G 2.75(d. Expiry).165 F(of the)2.75 E(PrunePendingT)122 546.4 Q(imer causes the interf)-.385 E(ace state to re)-.11 E -.165(ve)-.275 G(rt to NoInfo for this group.).165 E(Handle)72 769 Q(y/K)-.165 E(ouv)-.385 E(elas/Speakman/V)-.165 E 154.91(icisano Section)-.66 F 2.75(3.4.1. [P)2.75 F(age 9])-.165 E EP%%Page: 10 10%%BeginPageSetupBP%%EndPageSetup/F0 11/Times-Roman@0 SF(INTERNET)72 49 Q 66.092(-DRAFT Expires:)-1.012 F(December 2002)2.75 E(June 2002)116.406 E 295 365 239 239 -208 208 186.5293 PBEGIN%%BeginDocument: downstream.ps%%Creator: idraw%%DocumentFonts: Helvetica%%Pages: 1%%BoundingBox: 295 365 534 573%%EndComments%%BeginIdrawPrologue/arrowhead {0 begintransform originalCTM itransform/taily exch def/tailx exch deftransform 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 defgsaveoriginalCTM setmatrixtipx tipy translateangle rotatenewpatharrowHeight neg arrowWidth 2 div moveto0 0 linetoarrowHeight neg arrowWidth 2 div neg linetopatternNone not {originalCTM setmatrix/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mularrowWidth div def/padtail brushWidth 2 div deftipx tipy translateangle rotatepadtip 0 translatearrowHeight padtip add padtail add arrowHeight div dup scalearrowheadpathifill} ifbrushNone not {originalCTM setmatrixtipx tipy translateangle rotatearrowheadpathistroke} ifgrestoreend} dup 0 9 dict put def/arrowheadpath {newpatharrowHeight neg arrowWidth 2 div moveto0 0 linetoarrowHeight neg arrowWidth 2 div neg lineto} def/leftarrow {0 beginy exch get /taily exch defx exch get /tailx exch defy exch get /tipy exch defx exch get /tipx exch defbrushLeftArrow { tipx tipy tailx taily arrowhead } ifend} dup 0 4 dict put def/rightarrow {0 beginy exch get /tipy exch defx exch get /tipx exch defy exch get /taily exch defx exch get /tailx exch defbrushRightArrow { tipx tipy tailx taily arrowhead } ifend} dup 0 4 dict put def%%EndIdrawPrologue/arrowHeight 8 def/arrowWidth 4 def/IdrawDict 51 dict defIdrawDict begin/reencodeISO {dup dup findfont dup length dict begin{ 1 index /FID ne { def }{ pop pop } ifelse } forall/Encoding ISOLatin1Encoding defcurrentdict 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 {savenumGraphicParameters dict begin} def/End {endrestore} def/SetB {dup type /nulltype eq {popfalse /brushRightArrow ideffalse /brushLeftArrow ideftrue /brushNone idef} {/brushDashOffset idef/brushDashArray idef0 ne /brushRightArrow idef0 ne /brushLeftArrow idef/brushWidth ideffalse /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} ifelsefalse /patternNone idef} ifelse} def/BSpl {0 beginstorexynnewpathn 1 gt {0 0 0 0 0 0 1 1 true subsplinen 2 gt {0 0 0 0 1 1 2 2 false subspline1 1 n 3 sub {/i exch defi 1 sub dup i dup i 1 add dup i 2 add dup false subspline} forn 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline} ifn 2 sub dup n 1 sub dup 2 copy 2 copy false subsplinepatternNone not brushLeftArrow not brushRightArrow not and and { ifill } ifbrushNone not { istroke } if0 0 1 1 leftarrown 2 sub dup n 1 sub dup rightarrow} ifend} dup 0 4 dict put def/Circ {newpath0 360 arcpatternNone not { ifill } ifbrushNone not { istroke } if} def/CBSpl {0 begindup 2 gt {storexynnewpathn 1 sub dup 0 0 1 1 2 2 true subspline1 1 n 3 sub {/i exch defi 1 sub dup i dup i 1 add dup i 2 add dup false subspline} forn 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subsplinen 2 sub dup n 1 sub dup 0 0 1 1 false subsplinepatternNone not { ifill } ifbrushNone not { istroke } if} {Poly} ifelseend} dup 0 4 dict put def/Elli {0 beginnewpath4 2 rolltranslatescale0 0 1 0 360 arcpatternNone not { ifill } ifbrushNone not { istroke } ifend} dup 0 1 dict put def/Line {0 begin2 storexynnewpathx 0 get y 0 get movetox 1 get y 1 get linetobrushNone not { istroke } if0 0 1 1 leftarrow0 0 1 1 rightarrowend} dup 0 4 dict put def/MLine {0 beginstorexynnewpathn 1 gt {x 0 get y 0 get moveto1 1 n 1 sub {/i exch defx i get y i get lineto} forpatternNone not brushLeftArrow not brushRightArrow not and and { ifill } ifbrushNone not { istroke } if0 0 1 1 leftarrown 2 sub dup n 1 sub dup rightarrow} ifend} dup 0 4 dict put def/Poly {3 1 rollnewpathmoveto-1 add{ lineto } repeatclosepathpatternNone not { ifill } ifbrushNone not { istroke } if} def/Rect {0 begin/t exch def/r exch def/b exch def/l exch defnewpathl b movetol t linetor t linetor b linetoclosepathpatternNone not { ifill } ifbrushNone not { istroke } if
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -