123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485 |
- ---
- format: DocBook
- title: Anhang: Berechnung des Routingverlaufs einer einfachen IGP-Kopplung zur Veranschaulichung des counting-to-infinity Problems
- ...
- <article>
- <articleinfo>
- <title>Anhang: Berechnung des Routingverlaufs einer einfachen IGP-Kopplung zur Veranschaulichung des counting-to-infinity Problems</title>
- </articleinfo>
- <simpara>Dieses Dokument ist ein Anhang des Dokuments <ulink url="Fussgaengerzonenproblem">Fußgängerzonenproblem</ulink>.
- <simpara>Im Folgenden wird die Dynamik des Routings in einer IGP-Kopplung als eine Folge von Zustandstabellen veranschaulicht. In diesem Beispiel erfolgt eine Partitionierung der Router { S } und { A B C }, was zum Kreislauf einer von S stammenden Route führt. Wie man beim Vergleich der Zustände T=5 und T=8 sieht, entsteht ein counting-to-infinity Kreislauf, der bei jedem Durchgang die Metrik der Route um 3 erhöht.</simpara>
- <table>
- <tgroup cols="2">
- <colspec align="left" />
- <colspec align="left" />
- <thead>
- <row>
- <entry>
- Notation
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- T=0, T=1, ...
- </entry>
- <entry>
- Nr. des Routingzyklus. Ein Routingszyklus umfasst den Transport einer Route durch eine IGP-Instanz und ihre Verarbeitung im Router. Das läuft in allen IGPs und Routern parallel ab, sodass zum "Zeitpunkt" T=n+1 im gesamten Diagramm der Folgezustand von T=n erreicht ist.
- </entry>
- </row>
- <row>
- <entry>
- S
- </entry>
- <entry>
- Quellrouter für den Präfix der betrachteten Route. Der Präfix wird nicht mitnotiert, da er sich nicht ändert.
- </entry>
- </row>
- <row>
- <entry>
- A, B, C
- </entry>
- <entry>
- Grenzrouter der betrachteten IGP-Kopplung.
- </entry>
- </row>
- <row>
- <entry>
- a, b, c, d
- </entry>
- <entry>
- IGP-Instanzen der betrachteten IGP-Kopplung.
- </entry>
- </row>
- <row>
- <entry>
- 1, 2, 3, ...
- </entry>
- <entry>
- Metrikwerte einer einfachen hop count Metrik. Diese Metrik wird global verwendet, d.h. gilt in allen betrachteten IGPs.
- </entry>
- </row>
- <row>
- <entry>
- A(a) <- S:1
- </entry>
- <entry>
- Die Routingtabelle für das IGP a im Router A erhält aus dem IGP a eine Route für den betrachteten Präfix mit next hop S und Metrik 1.
- </entry>
- </row>
- <row>
- <entry>
- —————————<br />
- B = A:2<C:3
- </entry>
- <entry>
- Die zentrale Routingtabelle des Routers B enthält für den betrachteten Präfix eine Route über A mit Metrik 2, sowie eine Route über C mit Metrik 3. Tie-breaker bei gleicher Metrik ist die Router ID. "<" ist das Symbol der so entstehenden totalen Ordnungsrelation auf den Routen der zentralen Tabelle des Routers.
- </entry>
- </row>
- <row>
- <entry>
- => A:1 -> b
- </entry>
- <entry>
- Die Route zum betrachteten Präfix mit der Metrik 1 wird weiterhin vom Router A mit next hop self ins IGP b redistribuiert.
- </entry>
- </row>
- <row>
- <entry>
- => retract A:1 -> b
- </entry>
- <entry>
- Die Route zum betrachteten Präfix mit der Metrik 1 wird vom Router A aus dem IGP b zurückgezogen.
- </entry>
- </row>
- <row>
- <entry>
- => new B:3 -> b
- </entry>
- <entry>
- Die Route zum betrachteten Präfix mit der Metrik 1 wird vom Router B mit next hop self ins IGP b exportiert, wohin sie im vorigen Zyklus noch nicht exportiert wurde.
- </entry>
- </row>
- <row>
- <entry>
- ... *
- </entry>
- <entry>
- Dieser Eintrag wurde im aktuellen Routingzyklus verändert.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <informaltable>
- <tgroup cols="2">
- <colspec align="center" />
- <colspec align="center" />
- <thead>
- <row>
- <entry>
- Ausgangssituation <br />
- (T=0)
- </entry>
- <entry>
- A hat die direkte<br />
- Route von S<br />
- verloren<br />
- (T=1)
- </entry>
- <entry>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- S <br />
- |a <br />
- A <br />
- b / \ c <br />
- B—C <br />
- d
- </entry>
- <entry>
- S<br />
- a <br />
- A <br />
- b / \ c<br />
- B—C<br />
- d<br />
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- <table frame="all">
- <tgroup cols="9", align='left'>
- <thead>
- <row>
- <entry>
- T=0
- </entry>
- <entry>
- T=1
- </entry>
- <entry>
- T=2
- </entry>
- <entry>
- T=3
- </entry>
- <entry>
- T=4
- </entry>
- <entry>
- T=5
- </entry>
- <entry>
- T=6
- </entry>
- <entry>
- T=7
- </entry>
- <entry>
- T=8
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- A(a) <- S:1 <br />
- A(b) <- <br />
- A(c) <- <br />
- ————————— <br />
- A = S:1
- </entry>
- <entry>
- A(a) <- * <br />
- A(b) <- <br />
- A(c) <- <br />
- ————————— <br />
- A= *
- </entry>
- <entry>
- A(a) <- <br />
- A(b) <- <br />
- A(c) <- <br />
- ————————— <br />
- A =
- </entry>
- <entry>
- A(a) <- <br />
- A(b) <- B4 * <br />
- A(c) <- C4 * <br />
- ————————— <br />
- A = B:4<C:4 *
- </entry>
- <entry>
- A(a) <- <br />
- A(b) <- *<br />
- A(c) <- *<br />
- ————————— <br />
- A = *
- </entry>
- <entry>
- A(a) <- <br />
- A(b) <- <br />
- A(c) <- <br />
- ————————— <br />
- A =
- </entry>
- <entry>
- A(a) <- <br />
- A(b) <- B:7 *<br />
- A(c) <- <br />
- ————————— <br />
- A = B:7 *
- </entry>
- <entry>
- A(a) <- <br />
- A(b) <- *<br />
- A(c) <- <br />
- ————————— <br />
- A = *
- </entry>
- <entry>
- A(a) <- <br />
- A(b) <- <br />
- A(c) <- <br />
- ————————— <br />
- A =
- </entry>
- </row>
- <row>
- <entry>
- => A:1 -> b <br />
- => A:1 -> c
- </entry>
- <entry>
- => retract A:1 -> b * <br />
- => retract A:1 -> c *
- </entry>
- <entry>
- </entry>
- <entry>
- => new A:4 -> c *
- </entry>
- <entry>
- => retract A:4 -> c *
- </entry>
- <entry>
- </entry>
- <entry>
- => new A:7 -> c *
- </entry>
- <entry>
- => retract A:7 -> c *
- </entry>
- <entry>
- </entry>
- </row>
- <row>
- <entry>
- </entry>
- </row>
- <row>
- <entry>
- B(b) <- A:2<br />
- B(d) <- C:3<br />
- ————————— <br />
- B = A:2<C:3
- </entry>
- <entry>
- B(b) <- A:2<br />
- B(d) <- C:3<br />
- ————————— <br />
- B = A:2<C:3
- </entry>
- <entry>
- B(b) <- *<br />
- B(d) <- C:3<br />
- ————————— <br />
- B = C:3 *
- </entry>
- <entry>
- B(b) <- <br />
- B(d) <- *<br />
- ————————— <br />
- B =
- </entry>
- <entry>
- B(b) <- <br />
- B(d) <- <br />
- ————————— <br />
- B =
- </entry>
- <entry>
- B(b) <- <br />
- B(d) <- C:6 *<br />
- ————————— <br />
- B = C:6 *
- </entry>
- <entry>
- B(b) <- <br />
- B(d) <- *<br />
- ————————— <br />
- B = *
- </entry>
- <entry>
- B(b) <- <br />
- B(d) <- <br />
- ————————— <br />
- B =
- </entry>
- <entry>
- B(b) <- <br />
- B(d) <- C:9 *<br />
- ————————— <br />
- B = C:9 *
- </entry>
- </row>
-
-
- <row>
- <entry>
- => B:2 -> d
- </entry>
- <entry>
- => B:2 -> d
- </entry>
- <entry>
- => retract B:2 -> d * <br />
- => new B:3 -> b
- </entry>
- <entry>
- => retract B:3 -> b
- </entry>
- <entry>
- </entry>
- <entry>
- => new B:6 -> b
- </entry>
- <entry>
- => retract B:6 -> b *
- </entry>
- <entry>
- </entry>
- <entry>
- => new B:9 -> b *
- </entry>
- </row>
- <row>
- <entry>
- </entry>
- </row>
- <row>
- <entry>
- C(c) <- A:2 <br />
- C(d) <- B:3 <br />
- ————————— <br />
- C = A:2<B:3
- </entry>
- <entry>
- C(c) <- A:2 <br />
- C(d) <- B:3 <br />
- ————————— <br />
- C = A:2<B:3
- </entry>
- <entry>
- C(c) <- * <br />
- C(d) <- B:3 <br />
- ————————— <br />
- C = B:3 *
- </entry>
- <entry>
- C(c) <- <br />
- C(d) <- *<br />
- ————————— <br />
- C =
- </entry>
- <entry>
- C(c) <-A:5 * <br />
- C(d) <- *<br />
- ————————— <br />
- C = A:5
- </entry>
- <entry>
- C(c) <- * <br />
- C(d) <- <br />
- ————————— <br />
- C = *
- </entry>
- <entry>
- C(c) <- <br />
- C(d) <- <br />
- ————————— <br />
- C =
- </entry>
- <entry>
- C(c) <- A:8 *<br />
- C(d) <- <br />
- ————————— <br />
- C = A:8
- </entry>
- <entry>
- C(c) <- *<br />
- C(d) <- <br />
- ————————— <br />
- C = *
- </entry>
- </row>
- <row>
- <entry>
- => C:2 -> d
- </entry>
- <entry>
- => C:2 -> d
- </entry>
- <entry>
- => retract C:2 -> d * <br />
- => new C:3 -> c *
- </entry>
- <entry>
- => retract C:3 -> c
- </entry>
- <entry>
- => new c:5 -> d *
- </entry>
- <entry>
- => retract C:5 -> d *
- </entry>
- <entry>
- </entry>
- <entry>
- => new C:8 -> d *
- </entry>
- <entry>
- => retract C:8 -> d *
- </entry>
- </row>
-
- </tbody>
- </tgroup>
- </informaltable>
- </article>
|