La tabla no es un árbol
Escribí tres reglas para dibujar el grafo de AS antes de haber medido ninguno. Una tabla completa real acabó con las tres.
Michel Wijnberg
Los doce primeros artículos se apoyaban en una ventaja: dentro de un sistema autónomo, los routers son el oráculo. Diga lo que diga el modelo, siempre se puede ir a preguntar al equipo. Incluso los caminos entre AS del artículo tres se quedaban dentro de redes en las que yo podía iniciar sesión. Esta serie trata de lo que ocurre cuando eso deja de estar disponible, porque el tema son las redes de otros.
Una tabla BGP no es una imagen de internet. Es una imagen de internet desde donde uno está, y casi todo lo que un operador concluye a partir de ella está condicionado por ese punto de observación de maneras que nadie etiqueta. Cuatro artículos sobre cómo es realmente una tabla de verdad, empezando por la pregunta más básica que tiene que responder cualquiera que construya una vista de AS:
¿Cómo se dibuja?
Yo respondí a esa pregunta en un documento de diseño antes de haber medido nada. Tres reglas, escritas con seguridad. Las tres resultaron falsas, y la forma en que fallaron es más interesante que las reglas mismas.
Las tres reglas que escribí
La vista de flujo de AS de Osprey pone tu propio AS en el centro y coloca todo lo demás alrededor por distancia. El diseño fijaba tres propiedades:
| # | Regla | Lo que asumía |
|---|---|---|
| 1 | El horizonte de observación es un anillo | Más allá de cierta distancia, el grafo termina |
| 2 | El ancho del sector equivale a la cuota de masa | Cada AS tiene un predecesor, así que el disco se reparte limpiamente |
| 3 | Los origins son hojas (implícito) | El tráfico se origina en el borde y transita por el centro |
Antes de nada una palabra, porque decide cómo se lee el resto. “Predecesor” y “padre” son términos míos de representación, no algo que BGP anuncie. Un AS_PATH es una secuencia ordenada; no dice nada sobre jerarquía. Lo que yo llamo predecesor es el AS que está un paso más cerca del punto de observación a lo largo de un camino que realmente recibí. Esa relación la construye quien mira, desde su posición, y ahí está todo el argumento.
La regla 2 es la que soporta el peso. Si cada AS te alcanza a través de exactamente un predecesor, el grafo es un árbol, y un árbol se puede dibujar como sectores anidados donde el ancho significa volumen. Toda representación jerárquica de un grafo BGP que haya visto usted descansa sobre esa suposición, normalmente sin decirlo.
Entonces medí una de verdad.
Lo que dice una tabla completa
Una tabla IPv4 completa: 1.071.538 mejores caminos entre 79.168 AS que aparecen en algún punto de un camino, un punto de observación con dos upstreams. (Los AS de origen son menos, 78.538; los dos recuentos son preguntas distintas y ambos aparecen en esta serie.) Al lado, DN42, una red completamente aparte y un orden de magnitud más pequeña. Ambas medidas, ambas contra el mismo código.
| Suposición | DN42 | Tabla completa | Veredicto |
|---|---|---|---|
| Un predecesor por AS | 258 de 1.138 con varios, máx. 29 | 22.371 de 79.168 (28,3 %), máx. 202 predecesores | falsa |
| La masa de borde llega por el padre más pesado | el 18,3 % no | el 17,5 % no | falsa |
| Sin ciclos | 41–47 ciclos de dos | 240 ciclos de dos | falsa |
| Los origins son hojas | 187 de 192 tránsitos (97,4 %) también originan | 10.556 de 11.186 (94,4 %) | falsa |
| Los caminos son cortos | 0,0 % con cinco saltos o más | 38,0 %, el más largo 15 | conceptualmente errónea |
Las dos columnas no son el mismo tipo de número, y eso importa. La tabla completa es una instantánea de un feed que no puedo volver a ejecutar; DN42 es una red viva que sí puedo volver a consultar, y la columna DN42 es lo que midió el 2026-08-23. Seis días antes la misma consulta decía 33,7 % fuera del árbol, 138 ciclos de dos y 8,7 % de la masa a cinco saltos o más. Nada se rompió y ningún código cambió: entraron y salieron peers, y todas las propiedades estructurales del grafo se movieron con ellos.
Parte de ello se mueve mucho más rápido. Muestreado cada cuarenta y cinco segundos durante dos horas, el recuento de ciclos de dos deambula entre 41 y 47, y por eso esa celda es un rango y no un número. Las tres cifras en las que este artículo se apoya de verdad, el recuento de orígenes, la cuota fuera del árbol y el anillo exterior vacío, no se movieron en absoluto en esas mismas muestras. Ese es el argumento de esta serie llegando pronto y sin que nadie lo invitara.
Lea otra vez la segunda fila, porque es la que importa para cualquier cosa dibujada como jerarquía. Más de una cuarta parte de los AS visibles desde este punto de observación tienen más de un predecesor, y uno de ellos tiene 202. No hay frontera de sector capaz de contener ese nodo. No es un problema de disposición que se resuelva con mejor geometría; la forma que se está dibujando no existe.
La mitigación que yo había apuntado para la regla 2 era “colocar los nodos con varios padres en la frontera del sector”. Con 202 padres repartidos por todo el disco, esa instrucción no significa nada.
Cada fallo le cuesta a la imagen algo distinto
Los múltiples padres rompen la partición. Una disposición en árbol implica que seguir un sector hacia dentro dice de dónde vino ese tráfico. En un grafo donde el 17,5 % de la masa de borde no llega por el padre más pesado, el sector habla de una mayoría relativa, no de una ruta. Dibujarlo sin decirlo convierte una mayoría en un hecho.
“Los origins son hojas” rompe la resta. Casi todos los nodos interiores originan prefijos propios. Si una representación muestra el volumen de un AS de tránsito y deja inferir su espacio originado propio restando lo que aportan sus hijos, se equivoca en el 94 % de los casos. La originación propia hay que dibujarla como algo aparte, en cada posición, nunca implícita en lo que sobra.
El anillo nunca fue una distancia. Esta la tenía mal conceptualmente, no numéricamente. Por cada camino que entrega, BGP entrega el AS_PATH entero: no hay distancia a partir de la cual el protocolo empiece a truncar. Los caminos sí se acortan, pero nunca por estar lejos. Lo que no puede ver no está más allá de un horizonte, está ausente por un motivo:
- nunca se le anunció,
- su propia política lo rechazó,
- un agregador lo borró dentro de un
AS_SET, - o está detrás de un route server transparente que por diseño no deja ningún salto en el AS_PATH (RFC 7947).
Ninguno de esos tiene radio. Un anillo etiquetado “todo lo que hay más allá” es una afirmación geométrica que el protocolo no respalda. Lo que Osprey dibuja en su lugar es distancia en saltos sobre las adyacencias realmente observadas, y la leyenda dice exactamente eso en vez de insinuar un mínimo.
Esa es la vista de la que trata este artículo, dibujada desde el feed de DN42. La franja de arriba es la parte que me importa: enuncia la forma del grafo que está dibujando, incluido el 18,3 % de masa que ningún árbol puede sostener, en vez de dejar que el lector suponga que la imagen está completa.
Dos grafos, ambos llamados “la topología de AS”
Ponga las dos una al lado de la otra y lo interesante no es que difieran. Es dónde lo hacen:
| Propiedad | DN42 | Tabla completa |
|---|---|---|
| AS con varios padres | 22,7 % | 28,3 % |
| Masa de borde fuera del padre más pesado | 18,3 % | 17,5 % |
| Tránsitos que también originan | 97,4 % | 94,4 % |
| Caminos con cinco saltos o más | 0,0 % | 38,0 % |
Tres de esas cuatro filas coinciden lo bastante como para que un modelo ajustado a cualquiera de las dos luciera bien en la otra. La cuarta no es una diferencia de grado. En DN42 no hay absolutamente nada a cinco saltos o más; en una tabla real es bastante más de un tercio de la masa. Una disposición validada contra la red pequeña no estaría levemente mal ajustada para la grande: habría sido validada contra un grafo cuyo anillo exterior está vacío y luego entregada a otro donde el anillo exterior es donde vive la mayor parte de internet.
Eso es peor que la versión de este argumento que esperaba plantear, y es el mismo argumento que el laboratorio plantea para los IGP, un nivel más arriba: no se puede validar un modelo contra un entorno incapaz de contradecirlo. Que tres filas coincidan es justamente lo que hace peligrosa a la cuarta. El feed pequeño no anuncia cuáles de sus propiedades se generalizan por casualidad.
La negativa con la que empieza esta serie
Vale la pena enunciar una consecuencia antes de dibujar nada más en esta serie.
Una arista en un grafo de AS es una adyacencia de camino, nunca una afirmación de peering. Dos AS aparecen uno al lado del otro en un AS_PATH; esa es toda la observación. No significa que tengan una sesión, y el route server transparente de antes es justamente por qué: dos de sus clientes son adyacentes en el camino sin ninguna relación entre ellos, porque el RFC 7947 dice que el servidor no deja salto.
Así que la ficha dice “una adyacencia en caminos, no una sesión de peering verificada”, y lo dice en cada arista.
Hay exactamente un sitio donde cabe una afirmación más fuerte: una arista que toca tu propio AS, y solo cuando un registro de sesión independiente la corrobora. Ese es un anillo de la imagen, y la afirmación la autoriza la segunda fuente, no la posición. Todo lo que hay más allá es inferencia sobre caminos, y etiquetarlo de otro modo sería inventar relaciones entre las redes de otros.
Lo que la tabla me dio realmente
Conviene separarlo, porque todas las reglas que fallaron arriba fallaron igual.
El feed me dio tres cosas: prefijos con sus mejores caminos, el AS_PATH de cada uno, y en qué sesión llegaron. Esa es toda la observación.
Todo lo demás de este artículo lo calculé yo. Predecesor, distancia en saltos, masa de arista, la cuota fuera del árbol, si un AS también origina, el grafo mismo: todo ello es construcción, hecha desde una posición, y cada número cambiaría si cambiara la posición.
Y hay tres cosas que no están en una tabla BGP en absoluto, a ninguna distancia:
- si dos AS tienen una sesión,
- cuánto tráfico circula por nada de esto,
- y los caminos que mis upstreams eligieron no enviarme, que no dejan rastro de haber sido retenidos.
Cada una de las tres reglas que escribí era una afirmación sobre la segunda columna disfrazada de afirmación sobre la primera. “Cada AS tiene un padre” suena a observación. Es una propiedad de una representación, y la medición es lo que hizo visible la diferencia.
La idea
Escribí tres reglas y una medición las refutó todas. Es un buen resultado, y solo estuvo disponible porque las reglas eran lo bastante concretas como para poder estar equivocadas.
La afirmación más amplia, de la que trata el resto de esta serie: una tabla BGP es un punto de vista. Su forma, su centro, su backbone y su horizonte son todos artefactos de dónde viene el feed. Toda herramienta que dibuje una como si fuera geografía está afirmando algo sobre internet cuando solo tiene pruebas sobre un punto de observación.
La versión honesta dibuja lo que observó y dice qué punto de observación lo produjo.
Queda la pregunta de la que trata el siguiente artículo. Una vez que ha renunciado a dibujar la tabla como jerarquía, todavía tiene que decidir qué poner arriba de la lista, y eso resulta ser una pregunta más difícil de lo que parece.
Siguiente: el eje por el que todo el mundo ordena, y por qué la red más grande de internet no existe. El AS más grande no existe.