← Alle Beiträge

Die Tabelle ist kein Baum

Ich habe drei Regeln für das Zeichnen des AS-Graphen aufgeschrieben, bevor ich eine einzige Tabelle gemessen hatte. Eine echte Full Table hat alle drei widerlegt.

Michel Wijnberg

Die ersten zwölf Beiträge stützten sich auf einen Vorteil: Innerhalb eines autonomen Systems sind die Router das Orakel. Was das Modell auch behauptet, Sie können hingehen und die Box fragen. Selbst die AS-übergreifenden Pfade in Beitrag drei blieben in Netzen, auf die ich mich einloggen konnte. Diese Reihe handelt davon, was passiert, wenn das aufhört, weil das Thema die Netze anderer Leute sind.

Eine BGP-Tabelle ist kein Bild des Internets. Sie ist ein Bild des Internets von dort, wo Sie stehen, und fast alles, was eine Betreiberin daraus schließt, hängt an diesem Blickpunkt, auf eine Weise, die niemand kennzeichnet. Vier Beiträge darüber, wie eine echte Tabelle wirklich aussieht, beginnend mit der elementarsten Frage, die jeder beantworten muss, der eine AS-Sicht baut:

Wie zeichnet man sie?

Ich habe diese Frage in einem Entwurfsdokument beantwortet, bevor ich irgendetwas gemessen hatte. Drei Regeln, mit Überzeugung aufgeschrieben. Alle drei erwiesen sich als falsch, und die Art ihres Scheiterns ist interessanter, als die Regeln es waren.


Die drei Regeln, die ich aufgeschrieben habe

Ospreys AS-Flow-Ansicht stellt Ihr eigenes AS in die Mitte und ordnet alles andere nach Entfernung darum an. Der Entwurf legte drei Eigenschaften fest:

#RegelWas sie annahm
1Der Beobachtungshorizont ist ein RingJenseits einer Entfernung endet der Graph
2Sektorbreite entspricht MassenanteilJedes AS hat einen Vorgänger, also teilt sich die Scheibe sauber auf
3Origins sind Blätter (implizit)Verkehr entsteht am Rand und transitiert in der Mitte

Zuerst ein Wort, denn es entscheidet, wie der Rest zu lesen ist. “Vorgänger” und “Elternknoten” sind meine Darstellungsbegriffe, nichts, was BGP ankündigt. Ein AS_PATH ist eine geordnete Folge; über Hierarchie sagt er nichts. Was ich Vorgänger nenne, ist das AS, das entlang eines tatsächlich empfangenen Pfades einen Schritt näher am Beobachtungspunkt liegt. Diese Beziehung wird vom Betrachter konstruiert, aus der Position des Betrachters heraus, und genau das ist das ganze Argument.

Regel 2 ist die tragende. Wenn jedes AS Sie über genau einen Vorgänger erreicht, ist der Graph ein Baum, und ein Baum lässt sich als verschachtelte Sektoren zeichnen, in denen Breite Volumen bedeutet. Jede hierarchische Darstellung eines BGP-Graphen, die Sie je gesehen haben, ruht auf dieser Annahme, meist ohne sie auszusprechen.

Dann habe ich eine echte gemessen.


Was eine Full Table sagt

Eine volle IPv4-Tabelle: 1.071.538 Best Paths über 79.168 ASe, die irgendwo in einem Pfad auftauchen, ein Blickpunkt mit zwei Upstreams. (Origin-ASe sind weniger, 78.538; die beiden Zahlen sind verschiedene Fragen, und beide kommen in dieser Reihe vor.) Daneben DN42, ein völlig eigenständiges Netz, eine Größenordnung kleiner. Beides gemessen, beides gegen denselben Code.

AnnahmeDN42Full TableUrteil
Ein Vorgänger pro AS258 von 1.138 mit mehreren, max. 2922.371 von 79.168 (28,3 %), max. 202 Vorgängerfalsch
Randmasse kommt über den schwersten Vorgänger18,3 % nicht17,5 % nichtfalsch
Keine Zyklen41–47 Zweierzyklen240 Zweierzyklenfalsch
Origins sind Blätter187 von 192 Transits (97,4 %) originieren auch10.556 von 11.186 (94,4 %)falsch
Pfade sind kurz0,0 % bei fünf Hops oder mehr38,0 %, längster 15konzeptionell falsch

Die beiden Spalten sind nicht dieselbe Art von Zahl, und das ist wichtig. Die Full Table ist eine Momentaufnahme eines Feeds, den ich nicht erneut abfragen kann; DN42 ist ein lebendes Netz, das ich erneut abfragen kann, und die DN42-Spalte ist das, was es am 2026-08-23 gemessen hat. Sechs Tage zuvor sagte dieselbe Abfrage 33,7 % off-tree, 138 Zweierzyklen und 8,7 % der Masse bei fünf Hops oder mehr. Nichts ging kaputt, und kein Code änderte sich: Peers kamen und gingen, und jede Struktureigenschaft des Graphen bewegte sich mit ihnen.

Ein Teil davon bewegt sich viel schneller. Alle fünfundvierzig Sekunden über zwei Stunden abgetastet, wandert die Zahl der Zweierzyklen zwischen 41 und 47, weshalb diese Zelle ein Bereich ist und keine Zahl. Die drei Werte, auf die sich dieser Beitrag tatsächlich stützt, die Zahl der Origins, der Off-Tree-Anteil und der leere äußere Ring, bewegten sich über dieselben Stichproben überhaupt nicht. Das ist das Argument dieser Reihe, das früh und ungebeten eintrifft.

Lesen Sie die zweite Zeile noch einmal, denn sie ist die entscheidende für alles, was als Hierarchie gezeichnet wird. Mehr als ein Viertel der von diesem Blickpunkt sichtbaren ASe hat mehr als einen Vorgänger, und eines davon hat 202. Es gibt keine Sektorgrenze, die diesen Knoten halten kann. Das ist kein Layout-Problem, das sich mit besserer Geometrie lösen ließe; die gezeichnete Form existiert nicht.

Die Abhilfe, die ich für Regel 2 notiert hatte, lautete “Knoten mit mehreren Vorgängern auf die Sektorgrenze setzen”. Bei 202 Vorgängern, verteilt über die ganze Scheibe, hat diese Anweisung keine Bedeutung.


Jedes Scheitern kostet das Bild etwas anderes

Mehrere Vorgänger brechen die Partition. Ein Baum-Layout impliziert, dass das Verfolgen eines Sektors nach innen zeigt, woher dieser Verkehr kam. In einem Graphen, in dem 17,5 % der Randmasse nicht über den schwersten Vorgänger ankommen, erzählt der Sektor von einer relativen Mehrheit, nicht von einer Route. Das ohne Hinweis zu zeichnen macht aus einer Mehrheit eine Tatsache.

Origins-sind-Blätter bricht die Subtraktion. Fast jeder innere Knoten originiert eigene Präfixe. Wenn eine Darstellung das Volumen eines Transit-AS zeigt und Sie den eigenen originierten Raum durch Abziehen dessen erschließen lässt, was seine Kinder beitragen, ist sie für 94 % von ihnen falsch. Eigene Origination muss als eigenes Ding gezeichnet werden, in jedem Slot, niemals impliziert durch das, was übrig bleibt.

Der Ring war nie eine Entfernung. Diese Regel hatte ich konzeptionell falsch, nicht numerisch. Für jeden Pfad, den es liefert, liefert BGP den ganzen AS_PATH: Es gibt keine Entfernung, ab der das Protokoll zu kürzen beginnt. Pfade werden durchaus verkürzt, aber nie dadurch, dass sie weit weg sind. Was Sie nicht sehen können, liegt nicht jenseits eines Horizonts, es fehlt aus einem Grund:

  • es wurde Ihnen nie angekündigt,
  • Ihre eigene Policy hat es abgelehnt,
  • es wurde von einem Aggregator in ein AS_SET gelöscht,
  • oder es sitzt hinter einem transparenten Route Server, der konstruktionsbedingt gar keinen AS_PATH-Hop hinterlässt (RFC 7947).

Keines davon hat einen Radius. Ein Ring mit der Aufschrift “alles jenseits davon” ist eine Behauptung über Geometrie, die das Protokoll nicht stützt. Osprey zeichnet stattdessen Hop-Entfernung über die tatsächlich beobachteten Adjazenzen, und die Legende sagt genau das, statt ein Minimum zu suggerieren.

Die radiale AS-Flow-Linse auf dem DN42-Blickpunkt. Ringe sind Hop-Entfernung, die Legende sagt über beobachtete Adjazenzen und nicht als Minimum pro Route, und die Leiste oben trägt die Form des Feeds: 1.132 Origins, off-tree 18,3 %, nichts bei fünf Hops oder mehr
Die radiale AS-Flow-Linse auf dem DN42-Blickpunkt. Ringe sind Hop-Entfernung, die Legende sagt über beobachtete Adjazenzen und nicht als Minimum pro Route, und die Leiste oben trägt die Form des Feeds: 1.132 Origins, off-tree 18,3 %, nichts bei fünf Hops oder mehr

Das ist die Ansicht, um die es in diesem Beitrag geht, gezeichnet aus dem DN42-Feed. Die Leiste oben ist der Teil, der mir wichtig ist: Sie nennt die Form des Graphen, den sie zeichnet, einschließlich der 18,3 % Masse, die kein Baum halten kann, statt der Leserin zu überlassen anzunehmen, das Bild sei vollständig.


Zwei Graphen, beide “die AS-Topologie” genannt

Stellen Sie die beiden nebeneinander, und das Interessante ist nicht, dass sie sich unterscheiden. Es ist, wo sie es tun:

EigenschaftDN42Full Table
ASe mit mehreren Vorgängern22,7 %28,3 %
Randmasse abseits des schwersten Vorgängers18,3 %17,5 %
Transits, die auch originieren97,4 %94,4 %
Pfade mit fünf Hops oder mehr0,0 %38,0 %

Drei dieser vier Zeilen stimmen eng genug überein, dass ein auf einem der beiden abgestimmtes Modell auf dem anderen gut aussähe. Die vierte ist kein Gradunterschied. Auf DN42 sitzt überhaupt nichts bei fünf Hops oder mehr; in einer echten Tabelle ist es weit über ein Drittel der Masse. Ein am kleinen Netz validiertes Layout wäre für das große nicht leicht verstimmt, es wäre gegen einen Graphen validiert worden, dessen äußerer Ring leer ist, und dann an einen ausgeliefert, in dem der äußere Ring der Ort ist, an dem der Großteil des Internets wohnt.

Das ist schlimmer als die Version dieses Arguments, die ich zu machen erwartet hatte, und es ist dasselbe Argument, das das Labor für IGPs macht, eine Ebene höher: Sie können ein Modell nicht gegen eine Umgebung validieren, die ihm nicht widersprechen kann. Dass drei Zeilen übereinstimmen, macht die vierte gerade gefährlich. Der kleine Feed kündigt nicht an, welche seiner Eigenschaften zufällig verallgemeinern.


Die Verweigerung, mit der diese Reihe beginnt

Eine Konsequenz ist es wert, ausgesprochen zu werden, bevor in dieser Reihe irgendetwas gezeichnet wird.

Eine Kante in einem AS-Graphen ist eine Pfad-Adjazenz, niemals eine Peering-Behauptung. Zwei ASe stehen in einem AS_PATH nebeneinander; das ist die gesamte Beobachtung. Es bedeutet nicht, dass sie eine Session haben, und der transparente Route Server von oben ist genau der Grund: Zwei seiner Clients sind pfad-adjazent ohne jede Beziehung zueinander, weil RFC 7947 sagt, dass der Server keinen Hop hinterlässt.

Also sagt die Karte “eine Adjazenz in Pfaden, keine verifizierte Peering-Session”, und sie sagt es an jeder Kante.

Die Karte für eine Adjazenz. Sie nennt die Zahl der Einträge und den Anteil an der Masse beider Seiten und stellt dann vollständig fest, dass dies eine in empfangenen AS_PATHs beobachtete Adjazenz ist und keine verifizierte Peering-Session
Die Karte für eine Adjazenz. Sie nennt die Zahl der Einträge und den Anteil an der Masse beider Seiten und stellt dann vollständig fest, dass dies eine in empfangenen AS_PATHs beobachtete Adjazenz ist und keine verifizierte Peering-Session

Es gibt genau eine Stelle, an der eine stärkere Aussage verfügbar ist: eine Kante, die Ihr eigenes AS berührt, und auch dann nur, wenn ein unabhängiger Session-Eintrag sie bestätigt. Das ist ein Ring des Bildes, und die Aussage wird von der zweiten Quelle lizenziert, nicht von der Position. Alles weiter außen ist Schlussfolgerung über Pfade, und es anders zu etikettieren hieße, Beziehungen zwischen den Netzen anderer Leute zu erfinden.


Was die Tabelle mir tatsächlich gab

Das ist eine eigene Erwähnung wert, denn jede oben gescheiterte Regel scheiterte auf dieselbe Weise.

Der Feed gab mir drei Dinge: Präfixe mit ihren Best Paths, den AS_PATH zu jedem, und auf welcher Session sie ankamen. Das ist die gesamte Beobachtung.

Alles andere in diesem Beitrag habe ich berechnet. Vorgänger, Hop-Entfernung, Kantenmasse, den Anteil abseits des Baums, ob ein AS auch originiert, den Graphen selbst: alles davon ist Konstruktion, gemacht aus einer Position heraus, und jede Zahl würde sich ändern, wenn sich die Position änderte.

Und drei Dinge stehen überhaupt nicht in einer BGP-Tabelle, in keiner Entfernung:

  • ob zwei ASe eine Session haben,
  • wie viel Verkehr sich hier entlang bewegt,
  • und die Pfade, die meine Upstreams mir nicht geschickt haben, die keine Spur hinterlassen, dass sie zurückgehalten wurden.

Jede der drei Regeln, die ich aufgeschrieben hatte, war eine Behauptung über die zweite Spalte, verkleidet als Behauptung über die erste. “Jedes AS hat einen Vorgänger” klingt wie eine Beobachtung. Es ist eine Eigenschaft einer Darstellung, und die Messung ist das, was den Unterschied sichtbar gemacht hat.


Der Punkt

Ich habe drei Regeln aufgeschrieben, und eine Messung hat alle drei widerlegt. Das ist ein gutes Ergebnis, und es war nur möglich, weil die Regeln konkret genug waren, um falsch sein zu können.

Die weitergehende Aussage, um die es im Rest dieser Reihe geht: Eine BGP-Tabelle ist ein Blickpunkt. Ihre Form, ihre Mitte, ihr Backbone und ihr Horizont sind allesamt Artefakte davon, woher der Feed kommt. Jedes Werkzeug, das eine solche Tabelle zeichnet, als wäre sie Geografie, macht eine Aussage über das Internet, wo es nur Belege über einen Blickpunkt hat.

Die ehrliche Variante zeichnet, was sie beobachtet hat, und sagt, welcher Blickpunkt es hervorgebracht hat.

Bleibt die Frage, um die es im nächsten Beitrag geht. Wenn Sie es aufgegeben haben, die Tabelle als Hierarchie zu zeichnen, müssen Sie immer noch entscheiden, was oben auf der Liste steht, und das ist eine schwierigere Frage, als sie klingt.


Als Nächstes: die Achse, nach der alle sortieren, und warum das größte Netz im Internet nicht existiert. Das größte AS gibt es nicht.