Un día en la vida: la tabla BGP global
(articles.foletta.org)- A partir de 464,673 BGP UPDATE recibidos durante un día desde un peer con la tabla BGP completa, se observaron variaciones de corto plazo en la tabla de ruteo global, no la tendencia de crecimiento de largo plazo
- Justo después del peering, todas las rutas y los NLRI llegaron en bloque en unos 5 segundos, y la cantidad de rutas asociadas a las paths iniciales fue de 949,483
- Luego, los UPDATE llegaron agrupados en intervalos de 30 segundos de Route Advertisement Interval; se observaron unas 50 actualizaciones de paths cada 30 segundos en IPv4 y unas 47 en IPv6
- En IPv4 apareció una correlación de aproximadamente 40 minutos tanto en la cantidad de paths como en los cambios del espacio de direcciones, pero la causa queda como una pregunta sin responder
- El exceso de AS path prepending, el path attribute 255 reservado y el fuerte flapping de ciertos NLRI muestran a la vez la complejidad y la resiliencia de la operación global de BGP
Observación diaria de la tabla BGP
- El análisis de la tabla BGP global suele enfocarse en tendencias de meses o años, como el crecimiento de la tabla de ruteo o la adopción de IPv6
- Este análisis examina qué variaciones de corto plazo aparecen durante un día, en una situación en la que un router recibe directamente las actualizaciones BGP de una Internet en cambio constante
- El objeto de observación se divide en tres ramas
- El flujo típico de UPDATE durante un día
- path attributes inusuales
- flappy paths que cambian con frecuencia
Recolección de datos y bgpsee
- En lugar de parsear directamente la salida de depuración de un router, se puso en estado funcional un demonio BGP que había quedado a medio hacer en el pasado y se usó bgpsee
- bgpsee es una herramienta multihilo de peering BGP para CLI que, tras hacer peering con otros routers, parsea mensajes BGP y los imprime como JSON
- Procesa mensajes OPEN, KEEPALIVE y UPDATE
- Un UPDATE puede incluir path attributes como NLRI, withdrawn routes, ORIGIN, AS_PATH, NEXT_HOP y AS4_PATH
- El dataset se recolectó entre el 6 de enero de 2024 y el 7 de enero de 2024, y consta de 464,673 BGP UPDATE recibidos desde un peer con la tabla BGP completa
Transferencia completa inicial y cantidad de rutas
- Cuando se levanta por primera vez el peering BGP, todas las rutas de la tabla BGP del router y los NLRI relacionados se envían como un gran lote de UPDATE
- Este lote inicial se recibió en unos 5 segundos desde el inicio del peering
- Después de eso, solo llegan UPDATE sobre rutas modificadas o withdrawn routes que ya no tienen ruta
- El lote inicial y los UPDATE posteriores son estructuralmente iguales; la diferencia está en el momento de recepción y el alcance
- Aquí es importante distinguir entre path y route
- Una path es una unidad de BGP UPDATE con una combinación de path attributes y sus NLRI asociados
- Una path puede tener asociada una o mil routes
- La cantidad de routes asociadas a todas las paths del lote inicial fue de 949,483
Flujo de UPDATE en intervalos de 30 segundos
- Los UPDATE posteriores a la transferencia completa inicial no llegan como un stream en tiempo real, sino que se envían agrupados según el temporizador Route Advertisement Interval
- En este peering, el Route Advertisement Interval fue de 30 segundos
- La cantidad promedio de UPDATE observados fue la siguiente
- IPv4: unas 50 actualizaciones de paths cada 30 segundos
- IPv6: unas 47 actualizaciones de paths cada 30 segundos
- Aunque los promedios fueron parecidos, IPv4 tuvo una mayor amplitud de variación
- Desviación estándar de IPv4: 64.3
- Desviación estándar de IPv6: 43
- En vez de contar simplemente los UPDATE, también se calculó la cantidad total de espacio de direcciones IP que cambiaba cada 30 segundos
- Se sumó la cantidad de direcciones IP incluidas en cada UPDATE y luego se aplicó
log2() - El ejemplo consiste en convertir
/22,/23y/24a cantidad de direcciones, sumarlas y luego tomar el logaritmo
- Se sumó la cantidad de direcciones IP incluidas en cada UPDATE y luego se aplicó
- Tomando como referencia el espacio de direcciones IPv4, en promedio unas 2^16 direcciones, es decir alrededor de un
/16, cambiaban de path en la tabla de ruteo global cada 30 segundos - En el intervalo del 95%, el espacio de direcciones IPv4 que cambió estuvo aproximadamente entre 2^20.75 y 2^13.85
- Esto corresponde aproximadamente a un rango entre
/11y/18
- Esto corresponde aproximadamente a un rango entre
Ciclo de 40 minutos en las actualizaciones IPv4
- Tanto en los cambios de cantidad de paths como en los del espacio de direcciones IP, los UPDATE de IPv4 mostraron un comportamiento cíclico
- Para verificar el período se usó la función de autocorrelación (ACF)
- Los UPDATE se agruparon en intervalos de 1 minuto, y 1 lag significa 1 minuto
- Se calculó la correlación entre la cantidad de paths en el momento actual y la cantidad de paths en cada lag pasado
- En los primeros 7 lags aproximadamente apareció una fuerte correlación
- Esto encaja con el hecho de que un cambio de path puede propagarse por todo el mundo y generar otros cambios de path
- También apareció una fuerte correlación en los lags 40 y 41, lo que confirmó un comportamiento de aproximadamente 40 minutos de período
- La causa de este ciclo de 40 minutos queda como una pregunta sin responder
Casos de AS path prepending excesivo
- Los administradores de red pueden usar varios métodos para ajustar cómo entra el tráfico a su ASN
- Usar prefijos de red más largos no escala bien y tampoco es deseable desde el punto de vista de BGP
- El atributo MED es non-transitive, por lo que tiene límites al hacer peering con varios AS
- En general, se reduce la preferencia de una ruta mediante AS path prepending, agregando varias veces el propio AS delante para un peer específico
- En el dataset, la longitud de AS path IPv4 más larga fue 105
- Es un valor grande si se considera que la ruta más larga sin prepending tenía longitud 14
- Esta ruta IPv4 se originó en AS149381, “Dinas Komunikasi dan Informatika Kabupaten Tulungagung”, de Indonesia
- El NLRI
103.179.250.0/24apareció el 6 de enero de 2024 a las 06:31:18 con una longitud de AS path de 105, y unas 6.84 horas después, a las 13:21:35, se actualizó a longitud 4
- En IPv6, la longitud de AS path más larga llegó a 599
- Un AS path se compone de uno o más AS set o AS sequence
- Como la longitud máxima de cada AS sequence es 255, esta ruta necesitó tres AS sequence
- En la ruta IPv6 más larga, quien hizo prepending no fue el originator, sino AS8772 NetAssist LLC, un ISP de Ucrania
- El destino era una ruta hacia AS203868, Rifqi Arief Pamungkas, de Indonesia
- AS8772 había hecho prepending para que esa ruta fuera menos preferida
- Al observar la cantidad de ASN en todas las posiciones de las 50 rutas más largas, la gran diferencia entre IPv4 e IPv6 se relaciona con el uso repetido de un ASN específico
Valor reservado 255 observado en path attributes
- Cada BGP UPDATE se compone de información de alcanzabilidad de capa de red y path attributes
- Algunos ejemplos son AS_PATH y NEXT_HOP
- La Sección 5 de RFC4271 divide los tipos de atributos BGP de la siguiente manera
- well-known mandatory
- well-known discretionary
- optional transitive
- optional non-transitive
- Al observar la cantidad de atributos en todas las rutas IPv4, los atributos well-known mandatory ORIGIN, NEXT_HOP y AS_PATH aparecen en todos los UPDATE y con la misma cantidad
- También se observaron atributos comunes como AGGREGATOR y atributos menos comunes como AS_PATHLIMIT y ATTR_SET
- Algunos AS adjuntan el attribute 255 a los UPDATE
- Este valor es un atributo reservado para desarrollo
- En ese momento, bgpsee no guardaba el valor de estos path attributes poco comunes
- A través de routeviews.org se pudo confirmar que algunos AS todavía anuncian rutas adjuntando este atributo, y también se observaron valores raw byte
- Se ve attribute 255 en AS265999, AS10429 y AS52564
- Los valores raw byte de los tres ISP tienen una estructura similar entre sí
- No se pudo confirmar qué vendor está usando el atributo reservado para desarrollo ni con qué fin
El NLRI con más flapping
- Entre las routes cuya path cambió o fue retirada completamente durante el día, se contabilizaron los NLRI principales incluidos más veces en UPDATE
- Los 10 NLRI activos principales y la cantidad de veces que aparecieron en UPDATE son los siguientes
140.99.244.0/23: 2,596107.154.97.0/24: 2,58345.172.92.0/22: 2,494151.236.111.0/24: 2,312205.164.85.0/24: 2,18941.209.0.0/18: 2,069143.255.204.0/22: 2,048176.124.58.0/24: 1,584187.1.11.0/24: 1,582187.1.13.0/24: 1,580
140.99.244.0/23fue el caso de mayor variación de ese día, y ese espacio de direcciones pertenece a EpicUp- Hubo 2,879 bloques de 30 segundos en total, y esta route apareció en 2,637 bloques como otra path o como withdrawn route
- Proporción de aparición: {p:93}
- La proporción real es 92.8%
Diversidad de peering mostrada por una ruta con flapping
- Para ver cómo hacía flapping
140.99.244.0/23, se usó un grafo que toma como nodos los ASN de todas las paths hacia esa red y como aristas los pares de AS - Las rutas principales parecen ser rutas centrales que pasan por NTT AS2914 y Lumen/Level3 AS3356
- La ruta se mueve entre estos ISP tier 1 y otros ISP
- Como ejemplos se incluyen Arelion AS1299 y PCCW AS3419
- Con estos datos por sí solos es casi imposible identificar la causa exacta del flapping
- Se mencionan como posibles causas situaciones como un enlace defectuoso, un corte de energía o un crash de router
- Al mismo tiempo, este caso muestra la diversidad de peering de las redes globales modernas y la resiliencia de un protocolo de ruteo de 33 años
Un dataset que deja más preguntas
- Este dataset contiene demasiados temas por explorar, por lo que el análisis se enfocó en algunos casos
- Los UPDATE de la tabla BGP global pueden reflejar eventos del mundo real, como inestabilidad política, fenómenos naturales como terremotos o incendios, o errores de administradores de red
- La economía del peering de Internet y los factores humanos de operadores con distintas capacidades también están contenidos dentro de pequeños BGP UPDATE
- BGP global funciona la mayor parte del tiempo y entrega muchos cambios del mundo real hasta una laptop como un pequeño stream de actualizaciones
1 comentarios
Opiniones en Hacker News
Hace 25 años trabajaba en un ISP pequeño y, como al principio solo teníamos un ISP upstream, me tocó encargarme de la configuración multihome
Aprendí con un tutorial escrito por Avi Freedman y, gracias a eso, pudimos obtener un /20 de ARIN y anunciar rutas a dos peers
Fue muy interesante aprender cómo funcionaba y, mientras más entendía, más me sorprendía que Internet de alguna forma funcione
(1) http://avi.freedman.net/
Avi
Sobre todo en cosas como video/telefonía, y me alegra que el contenido haya sido útil
En avi.net dejé reunidos algunos enlaces a los tutoriales de esa época y a viejos artículos de Boardwatch
La motivación fue simplemente la frustración con el material disponible en ese momento, pero pronto quedó claro que ayudar a la gente con buenos textos también traía recompensas como “¿podemos comprarte un T1?” o “¿quieres operar nuestra gran red global?”
Por eso sigo recomendando escribir sobre temas que resultan confusos y frustrantes
Me pregunto si el comentario quedó cortado o si fue un error de copiar/pegar
También me da curiosidad si otros lo han visto, o si podría ser una señal de comentarios generados o del uso de alguna herramienta específica
Lo he visto principalmente en HN y creo que alguna vez también en Reddit; aparece con más frecuencia de la que esperaría si fuera pura casualidad o un simple error
Buen artículo, pero el flapping del prefijo 140.99.244.0/23 de EpicUp debería haber estado sujeto a route dampening
Normalmente los ISP aplican límites de velocidad por peer o por prefijo para todos sus peers, para evitar que un solo prefijo represente una gran parte de los cambios BGP globales
La correlación entre las actualizaciones que el autor interpreta como un efecto en cadena no es muy convincente
Cambiar tus propios anuncios basándote en rutas hacia prefijos de otros sistemas autónomos, especialmente rutas inestables, es un diseño bastante tosco
Tampoco creo que exista una periodicidad de 40 minutos. Al menos cuando trabajé a fondo con BGP hace 8 años no había algo así, y suena a que el dataset casualmente se veía de ese modo o a una característica de la red desde la que el autor recibía el feed BGP
Si miras en los datos reales qué AS y prefijos cambian, están dispersos por todos lados y casi no hay grandes patrones
En cualquier día hay algunos ISP ruidosos por problemas de enlaces o errores de configuración, prefijos que entran y salen al lanzar servicios nuevos por primera vez, y cambios de rutas por mantenimiento normal de drenaje
Que una retroexcavadora corte una fibra en un ISP pequeño de Kansas y eso se vea en un router de Perth es fascinante y un poco aterrador, y al mismo tiempo, gracias a muchísimas políticas manuales, la frecuencia global de actualizaciones se mantiene por debajo de 10 Hz
Muchas configuraciones estaban muy mal hechas, y los routers ya no están tan extremadamente limitados por CPU como antes
Claro que no desapareció por completo: cuando hice BGP Battleships (https://blog.benjojo.co.uk/post/bgp-battleships), 3356 aplicaba route dampening en ese momento, así que tuve que dejar de jugar por un rato
Si quieres aprender BGP, especialmente la operación cotidiana en escenarios de peering, la serie de videos del Network Startup Resource Center de la University of Oregon es buena
https://learn.nsrc.org/bgp
Por lo que encontré rápidamente, el atributo BGP reservado 0xff probablemente sea una peculiaridad de Huawei
La mayoría de los 0xff que se ven en bgp.tools siguen el mismo formato que aparece en el artículo, y algunas de esas redes parecen usar equipos Huawei
Aprendí bastante sobre BGP en este artículo, especialmente que lo más interesante es lo caótico que es su funcionamiento
Me gustaría leer una continuación que profundice más
Hace tiempo diseñé y configuré una red híbrida satélite-microondas para un gran cliente estadounidense con oficinas de campo en la zona de Borneo
No se me olvida cuando estábamos haciendo la entrega de un circuito arrendado en Jakarta
Como no tenía experiencia en esto, busqué y encontré que BGP era lo que se usaba para conectar nuestra red OSPF/UBNT con la WAN corporativa IGRP/Cisco del cliente
Cuando les pedimos a los de Tata que configuraran BGP en el router, su reacción fue: “¿quiénes se creen, AT&T?”
Hasta que una temporada de tormentas eléctricas acabó con la mayoría de los AirFiber, nosotros también nos sentíamos un poco así
Hice un script en Python que extrae datos del archivo MRT con rutas BGP de [1] y los importa a Neo4j para explorarlos
Ese archivo contenía unos 56 millones de rutas con una cantidad extrema de duplicados, y Neo4j es bueno para manejar estos datos mediante “merge”
[1] https://data.ris.ripe.net/rrc00/
¿Cuál es la forma más fácil para que una persona común acceda directamente a datos BGP? No conozco a nadie en un ISP, pero me gustaría hacer análisis similares
https://www.ripe.net/analyse/internet-measurements/routing-i...
https://lukasz.bromirski.net/post/bgp-w-labie-3/
Si te interesa, mándame un correo y esta semana intento levantarlo
Si con el tiempo aparece algún comportamiento cíclico en las actualizaciones IPv4, tanto en los cambios de rutas como del espacio IP, ¿significa que Internet también tiene algo parecido a las mareas?
Ojalá la iniciativa Memory Safety, que aborda la seguridad y confiabilidad de infraestructura crítica de Internet reimplementándola en Rust, también se encargue de una implementación de servidor BGP
[1] https://www.memorysafety.org/