← Todos los artículos

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:

#ReglaLo que asumía
1El horizonte de observación es un anilloMás allá de cierta distancia, el grafo termina
2El ancho del sector equivale a la cuota de masaCada AS tiene un predecesor, así que el disco se reparte limpiamente
3Los 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ónDN42Tabla completaVeredicto
Un predecesor por AS258 de 1.138 con varios, máx. 2922.371 de 79.168 (28,3 %), máx. 202 predecesoresfalsa
La masa de borde llega por el padre más pesadoel 18,3 % noel 17,5 % nofalsa
Sin ciclos41–47 ciclos de dos240 ciclos de dosfalsa
Los origins son hojas187 de 192 tránsitos (97,4 %) también originan10.556 de 11.186 (94,4 %)falsa
Los caminos son cortos0,0 % con cinco saltos o más38,0 %, el más largo 15conceptualmente 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.

La lente radial de flujo de AS sobre el punto de observación DN42. Los anillos son distancia en saltos, la leyenda dice sobre adyacencias observadas y no un mínimo por ruta, y la franja superior lleva la forma del feed: 1.132 orígenes, fuera del árbol 18,3 %, nada en absoluto a cinco saltos o más
La lente radial de flujo de AS sobre el punto de observación DN42. Los anillos son distancia en saltos, la leyenda dice sobre adyacencias observadas y no un mínimo por ruta, y la franja superior lleva la forma del feed: 1.132 orígenes, fuera del árbol 18,3 %, nada en absoluto a cinco saltos o más

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:

PropiedadDN42Tabla completa
AS con varios padres22,7 %28,3 %
Masa de borde fuera del padre más pesado18,3 %17,5 %
Tránsitos que también originan97,4 %94,4 %
Caminos con cinco saltos o más0,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.

La ficha de una adyacencia. Da el recuento de entradas y la cuota de la masa de cada lado, y luego afirma por completo que se trata de una adyacencia observada en AS_PATH recibidos y no de una sesión de peering verificada
La ficha de una adyacencia. Da el recuento de entradas y la cuota de la masa de cada lado, y luego afirma por completo que se trata de una adyacencia observada en AS_PATH recibidos y no de una sesión de peering verificada

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.