Akvorado escala su RIB de BMP mediante particionamiento (sharding)

Fuentes: Scaling Akvorado BMP RIB with sharding

Akvorado, la herramienta de monitorización de redes que enriquece flujos con información de encaminamiento BGP mediante el protocolo BMP, necesitaba escalar su base de datos de rutas (RIB) para soportar decenas de millones de entradas, dado que la tabla de encaminamiento de Internet supera el millón de rutas. El autor, Vincent Bernat, detalla en un artículo técnico cómo resolvió el cuello de botella provocado por un cerrojo global de lectura/escritura que serializaba todos los accesos al RIB. La solución se basa en el particionamiento (sharding) del RIB en varios fragmentos, cada uno con su propio cerrojo, sus mapas de rutas y sus piscinas de internamiento para NLRIs, siguientes saltos y atributos. El árbol de prefijos, implementado con la biblioteca bart (adaptación del algoritmo ART de Donald Knuth), permanece global pero protegido únicamente para escrituras, mientras que las lecturas se realizan sin cerrojo gracias a las primitivas copy-on-write de bart. Los índices de prefijo se dividen en 8 bits para el identificador de fragmento y 24 bits para el índice local, y se combinan con un número de generación para evitar reutilizaciones problemáticas. Bernat compara el rendimiento de la implementación previa y la nueva mediante pruebas concurrentes con medio millón de rutas sintéticas, observando mejoras notables en latencia tanto de lectura como de escritura. El cambio fue validado en producción con la ayuda del colaborador Gerhard Bogner, confirmando que el receptor BMP procesa las actualizaciones de forma estable.