- Somos open-sourcing Open/r, una plataforma de enrutamiento de red extensible que permite una rápida innovación en funciones y aplicaciones de red.
- Open / R se utiliza en las redes troncales y de centros de datos de Facebook.
- la plataforma admite diferentes topologías de red (como WAN, data center fabrics y mallas inalámbricas), así como múltiples sistemas de hardware y software subyacentes (Fboss, Arista EOS, Juniper JunOS, enrutamiento de Linux, etc.).,
- Open / R proporciona una plataforma para difundir el estado a través de la red y permite que se construyan nuevas aplicaciones sobre ella. También proporciona interfaces hacia el norte para permitir la integración con controladores externos.
- Open / R admite funciones como la asignación automática de prefijos IP, métricas de costos basadas en RTT, reinicio elegante, convergencia rápida y operaciones de drenaje/desentrenado.,
- hemos estado trabajando con socios y operadores externos para apoyar y usar Open / R, e invitamos a más operadores, ISP, proveedores, integradores de sistemas e investigadores a aprovechar Open/R como una plataforma para implementar nuevas ideas y aplicaciones de enrutamiento de red.
open-sourcing Open / R
a medida que más personas se conectan y consumen contenido más rico, la complejidad de las redes subyacentes al flujo de información también crece., Si bien los protocolos de enrutamiento tradicionales han funcionado bien en los últimos 30 años, puede ser difícil y llevar mucho tiempo insertar rápidamente extensiones o protocolos completamente nuevos en los dispositivos de red. Los nuevos avances en Enrutamiento a menudo requieren extender cuidadosamente un protocolo existente o diseñar nuevas extensiones superpuestas. Además, la mayoría de los protocolos se diseñaron inicialmente sobre la base de supuestos de entorno de hardware y software restringidos de hace décadas. Para seguir ofreciendo experiencias de usuario ricas, en tiempo real y altamente atractivas a través de las redes, es importante acelerar la innovación en el dominio del enrutamiento.,
hoy en día, somos open-sourcing Open/R, una plataforma de enrutamiento que permite una rápida innovación en las funciones de red. Open / R fue construido originalmente para la red de backhaul inalámbrica Terragraph, pero rápidamente vimos su uso potencial para la red troncal de Facebook, donde proporciona un control más eficiente y preciso de una red de fibra global. Ahora, incluso estamos comenzando a implementarlo en nuestros tejidos de centros de datos, ejecutándose dentro de FBOSS y en nuestro hardware de red de proyectos de computación abierta como Wedge 100., Open / R es una plataforma única que abarca una amplia variedad de dominios y diseños de red, y estamos buscando aplicarla en más casos de uso.
Facebook ha adoptado un enfoque centrado en el software para el futuro de nuestra red, y en los últimos años hemos estado compartiendo nuestros aprendizajes con la comunidad de la red. Por ejemplo, hemos compartido Código del sistema de conmutación abierta (open switching system, FBOSS) de Facebook; detalles sobre nuestro diseño de red, Administración y herramientas de monitoreo como Robotron, FCR y fbflow; y diseños de nuestros sistemas inteligentes de control de tráfico como Express Backbone y Edge Fabric., Ahora, al lanzar la plataforma Open/R moderna, fácilmente extensible y bien probada, tenemos la intención de impulsar aún más el estado de la técnica en la comunidad de redes.
en este espíritu, nos complace anunciar que hemos estado trabajando con varios socios externos para llevar Open / R a la producción, tanto dentro de la red de Facebook como externamente. Open / R ahora se ejecuta en plataformas de conmutación Arista, integrándose con el SDK de código abierto EOS, así como en las plataformas de enrutamiento Juniper QFX y PTX utilizando API basadas en gRPC., WiLine Networks, un ISP inalámbrico, ha trabajado con Tieto para implementar Open / R en producción en su red comercial. Invitamos a otros proveedores, operadores, ISP, integradores de sistemas e investigadores a aprovechar Open / R como una plataforma para implementar nuevas ideas de dominio de enrutamiento para hacer que la próxima generación de redes sea más eficiente, más inteligente y más fácil de operar.
aplicabilidad a través de diferentes dominios de red
nos alegró descubrir que Open / R es lo suficientemente flexible y extensible como para manejar muchos tipos de tecnologías y topologías de red., Todo comenzó con Terragraph, que presentó un desafío a los protocolos de red tradicionales: miles de nodos inalámbricos que se comunicaban al aire libre con el clima, el follaje y otros obstáculos que interferían constantemente con la conectividad. Una gran malla de capa 2 no sería tan eficiente y resistente, mientras que los protocolos tradicionales de capa 3, diseñados principalmente para la conectividad básica y la accesibilidad, son poco adecuados para condiciones exteriores altamente variables y dinámicas., «Control it all centrally» parecía una solución de diseño fácil, pero poco práctica dada la falta de gestión fuera de banda y el gran tamaño de la malla inalámbrica. Por lo tanto, diseñamos Open/R para ser la plataforma de red distribuida en la parte superior de la red Terragraph que podría hacer frente a su gran escala y cambios rápidos, y permitir una rápida extensibilidad.
cuando inicialmente compartimos que estábamos desarrollando Open / R, varios miembros de la comunidad de redes se acercaron para aprender más, especialmente en el espacio inalámbrico., Todos los diseñadores de redes inalámbricas se enfrentan al mismo desafío: cómo difundir información sobre la red subyacente de forma rápida y con la suficiente frecuencia, dada la rapidez con la que las redes inalámbricas pueden cambiar. WiLine Networks había comenzado a tratar de modificar los protocolos existentes como base para su plataforma, pero cuando los representantes se enteraron de Open/R, ellos y Tieto se involucraron con Facebook para ver si Open/R podía satisfacer sus necesidades. Su particular diseño de red tenía algunos desafíos nuevos e interesantes para Open / R, pero juntos pudimos extender Open/R para acomodar los nuevos requisitos., Open / R es ahora parte de su red de producción. En una línea similar, otros proveedores de redes de onda milimétrica de próxima generación vieron la aplicabilidad directa de Open / R, y hemos iniciado conversaciones con miembros del proyecto Telecom Infra (TIP).
internamente, vimos que Open / R podría abordar algunos de los desafíos en la red troncal de Facebook. Si bien la red troncal es un dominio completamente diferente de una malla inalámbrica de metro (la red troncal tiene miles de millas de fibra que abarcan continentes, cruzan océanos y rodean el mundo), desde una perspectiva de red se enfrenta a problemas similares., Nuestra nueva red troncal Express requería el control del tráfico y el enrutamiento a través de muchas rutas muy diferentes y una respuesta rápida a los fallos. En lugar de usar un protocolo de enrutamiento tradicional como IS-IS, decidimos introducir Open/R en la columna vertebral de Express como el plano de control distribuido para la red, donde funcionaría junto con un controlador centralizado. Aquí, Open / R proporciona conectividad básica en una red, reacciones rápidas a los eventos de la red y un «bus de información distribuido» para exportar nueva información al controlador y a los agentes en los nodos de la red.,
más recientemente, centramos nuestra atención en las telas del Centro de datos de Facebook, una vez más, un dominio muy diferente de Terragraph y la columna vertebral global. Por diseño, el tejido es altamente uniforme y densamente mallado, con muchos caminos posibles para tener en cuenta y aprovechar. Durante muchos años, Facebook ha estado operando estas telas a gran escala únicamente con el protocolo Border Gateway (BGP). Si bien BGP aporta sus fortalezas, especialmente con respecto a la aplicación y la escala de las políticas, vimos oportunidades para mejorar y simplificar el diseño al tener Open/R y BGP trabajando juntos., Open / R en esta parte de la red se ejecuta sobre FBOSS y sobre nuestro propio hardware de red OCP como Wedge 100.
enrutamiento en un entorno de hardware y software moderno
muchos protocolos de enrutamiento tradicionales fueron diseñados en el pasado, con un fuerte enfoque en la optimización para sistemas embebidos limitados por hardware, como CPU y RAM. Además, los protocolos se diseñaron como soluciones específicas para resolver el problema particular del enrutamiento para la conectividad, en lugar de como una plataforma de software flexible para crear nuevas aplicaciones en la red.,
hoy en día, las limitaciones de CPU y RAM ya no son un cuello de botella importante; al mismo tiempo, los requisitos de aplicación y los casos de uso que las redes necesitan satisfacer están evolucionando rápidamente. Estos cambios han cambiado el enfoque de los ingenieros de red de la optimización de protocolos a la creación de nuevas aplicaciones rápidamente, lo que puede ser difícil de hacer en la parte superior de los protocolos existentes. La plataforma Open / R permite la rápida innovación necesaria para soportar diseños de red modernos al tiempo que reduce la complejidad operativa.
diseñamos Open / R para ejecutarse en múltiples plataformas de hardware., Todas las piezas dependientes del hardware y del sistema se han extraído a través de interfaces RPC (por ejemplo, programación de rutas y descubrimiento de enlaces/direcciones). Esto nos ha permitido ejecutar la misma implementación Open/R en diferentes tipos de dispositivos de hardware, con diferentes ASICs o incluso diferentes familias de CPU. Esta flexibilidad proporciona una capa de homogeneidad en la parte superior de los dispositivos de red heterogéneos, lo que facilita el control y la gestión de la red.,
El diseño para una iteración rápida hizo necesario incluir procedimientos de prueba sólidos que brindaran confianza y claridad en torno a cada cambio de código y nueva versión de funciones. Nos esforzamos por tener una cobertura de código del 100 por ciento para validar cada línea de lógica de código y detectar errores lo antes posible. Sin embargo, es evidente que las pruebas unitarias por sí solas no son suficientes. Para cada cambio en el código, probamos el comportamiento real de Open/R en una gran topología de red emulada de miles de nodos, Ejecutando pruebas de regresión y verificando todo el conjunto de características para garantizar la compatibilidad con versiones anteriores., Para hacer esto, creamos un marco para girar grandes topologías virtuales utilizando contenedores ligeros como nodos en múltiples máquinas físicas. También seremos open-sourcing este marco de emulación junto con la plataforma Open / R.
Open/R design updates
Como hemos descrito anteriormente, Open / R aprovecha las bases de código abierto existentes para dos funciones principales. En primer lugar, la codificación y decodificación de las estructuras de datos del plano de control se realiza utilizando Thrift. En segundo lugar, la lógica para intercambiar datos entre nodos de red se implementa utilizando ZeroMQ., Esta elección de diseño nos ayudó a eliminar una gran cantidad de gastos generales técnicos y desarrollar Open/R rápidamente, concentrándonos en características de nivel superior en lugar de en la plomería de bajo nivel. Además, el uso de tecnologías existentes nos permitió crear herramientas y bibliotecas en lenguajes distintos a c++ para interactuar con Open/R. Un ejemplo es la herramienta Breeze CLI, que está escrita en Python y proporciona formas de interactuar con los diferentes módulos Open/R.
desde nuestro post inicial describiendo la arquitectura de Open/R, se han agregado varias mejoras y nuevas características., Una importante mejora arquitectónica es la introducción del módulo de plataforma. Abstrae las partes dependientes del sistema y expone las API para alimentar información de bajo nivel a otros módulos o para programar el hardware subyacente específico. Para los nodos vanilla Linux con enrutamiento de software, proporciona controladores predeterminados para dirigir la programación de la base de información de reenvío (FIB) y las notificaciones de cambio de estado de la interfaz Para Open/R., Para los sistemas que son capaces de hacer el reenvío de paquetes directamente en hardware (por ejemplo, nuestros nodos Terragraph o enrutadores Express Backbone), el módulo implementa manejadores FIB que interactúan con los SDK de hardware específicos. Por ejemplo, en nuestra plataforma Wedge 100, el agente fboss implementa directamente la interfaz de programación Fib de Open/R.
el siguiente diagrama resume la arquitectura de alto nivel de Open/R:
- KV-STORE: funciona como un almacén de clave-valor replicado que habilita las comunicaciones distribuidas y la replicación de Estados.,
- Spark: realiza el descubrimiento de vecinos en interfaces que utilizan multidifusión local de enlace e informa de las actividades de los vecinos.
- LinkMonitor: supervisa las interfaces del sistema a través de la plataforma, administra las sesiones de Spark en ellas y anuncia los vecinos descubiertos en KV-STORE.
- PrefixManager: realiza la subasignación automática de prefijos para la configuración ad hoc.
- decisión: calcula la información de enrutamiento basada en la información topológica obtenida a través de KV-STORE.
- FIB: sirve como proxy para programar rutas computadas a través de la plataforma, mantiene el estado de reenvío (rutas computadas).,
- Platform: implementa la programación de rutas y la lógica de descubrimiento de interfaces para la plataforma de hardware de destino.
emulación y CLI
Open/R testing se basa en la capacidad de configurar rápidamente grandes redes virtuales sin necesidad de hardware real. Para facilitar esto, construimos una biblioteca de emulación genérica — un envoltorio ligero sobre systemd-nspawn
— y una herramienta de emulación que inicia miles de contenedores Linux y forma una malla de túneles entre ellos con un solo comando., Para emular la pérdida, el retraso o el jitter de paquetes, la herramienta admite la creación de diferentes entornos de red, como redes WAN o inalámbricas, configurando acondicionadores de tráfico. Esto hace que sea fácil probar el comportamiento de Open/R en diferentes escenarios, y ayuda a impulsar a los desarrolladores nuevos en Open / R, Proporcionando una forma segura de experimentar.
la plataforma viene con Breeze CLI, una herramienta de interfaz de línea de comandos para que los ingenieros de red interactúen con la malla de instancias Open / R., Permite la inspección de información de estado en ejecución, como adyacencias, nodos, prefijos, rutas, contadores y estadísticas de convergencia más recientes, así como realizar operaciones de control como drenaje y desentrenamiento de nodos, establecer métricas personalizadas en enlaces y anunciar y retirar prefijos., Por ejemplo, una característica útil es la capacidad de realizar una inspección en tiempo real de la base de datos de Estados replicados de la plataforma (KV-STORE), que permite a los ingenieros inspeccionar cualquier actividad en toda la red (nodos que aparecen, adyacencias que se derrumban o valores de métricas que cambian) simplemente conectándose a un solo nodo.
Open / R y control centralizado
el aspecto distribuido es importante para la fiabilidad de la red. Aun así, las decisiones inteligentes se toman de manera óptima cuando se descargan a un controlador centralizado, por ejemplo, con fines de ingeniería de tráfico., Para ello, Open / R proporciona API que permiten a los agentes remotos conocer el estado del enlace o suscribirse a actualizaciones de la base de datos, como notificaciones de un cambio de capacidad de enlace. Por ejemplo, esto podría usarse para calcular rutas conmutadas por etiquetas y programarlas en la red desde una ubicación central. Esta funcionalidad permite la combinación del manejo de eventos» local » (dentro de la red) con lógica centralizada, como hemos implementado con éxito en nuestro proyecto Express Backbone.,
resumen de características
mientras Open / R implementa muchas características similares a las que se encuentran en protocolos tradicionales como IS-IS y OSPF, también introduce algunas características únicas propias.
Aquí hay un resumen rápido:
- IPv6 primero, aprovechando las direcciones locales de enlace IPv6 para lograr una configuración sin intervención. No se requiere ninguna configuración de red especial.
- Soporte para enrutamiento IPv4 nativo cuando sea necesario.
- asignación ad hoc de prefijos de red y configuración IP para nodos en la red a partir de un prefijo agregado más grande.,
- Un reinicio elegante que permite actualizaciones de software en vivo sin interrumpir el reenvío de tráfico.
- Soporte para drenaje y desentrenamiento de nodos y enlaces.
- métricas RTT de enlace Dinámico calculadas y suavizadas desde sondas activas.
- La capacidad de establecer valores de métrica personalizados, estática o dinámicamente.
- convergencia rápida de la red con temporizadores de retroceso inteligentes para fallos de enlace o nodo.
- comprobación continua del Estado de la red a través del sondeo de accesibilidad en vivo.
- una API para la integración con controladores centralizados.,
- Una biblioteca de Python para interactuar con todos los procesos Open/R principales.
- La capacidad de ampliar la plataforma para difundir todo tipo de información adicional, e incluso para introducir mejoras o variaciones en la lógica de cálculo de rutas.
conclusión
mientras que los protocolos de enrutamiento tradicionales han sido fundamentales para el progreso de la tecnología en las últimas décadas, nos estamos acercando al punto en el que las redes necesitan evolucionar aún más rápido., Open / R es una plataforma abierta que hace que sea fácil probar e implementar rápidamente nuevas ideas a escala, haciendo que nuestras redes sean más eficientes, más rápidas de implementar y más fáciles de administrar.
recomendamos encarecidamente a los operadores de redes, investigadores, proveedores, ingenieros y la comunidad de redes en general que utilicen Open / R para implementar sus ideas y construir redes modernas que sean más abiertas y puedan evolucionar más rápido que nunca.
y, por último, un enorme agradecimiento a los muchos equipos que trabajaron con el grupo de desarrollo central para llevar a Open/R a este importante hito., Esto incluye el equipo de Terragraph, el equipo de Express Backbone, ingeniería de redes de centros de datos, el equipo de FBOSS, el equipo de Asociaciones de infraestructura de Facebook y nuestros socios externos.