FBOSS es la pila de software de Facebook para controlar y gestionar conmutadores de red.
FBOSS consta de una serie de aplicaciones, bibliotecas y utilidades de espacio de usuario.
La versión inicial de código abierto de FBOSS consiste principalmente en el demonio agente, pero también estamos trabajando para lanzar piezas y funcionalidades adicionales.
Una de las piezas centrales de FBOSS es el demonio agente, que se ejecuta en cada conmutador y controla el ASIC de reenvío de hardware. El demonio agente envía información de reenvío al hardware e implementa algunos protocolos del plano de control, como ARP y NDP. El agente proporciona API económicas para administrar rutas, para permitir que los procesos de control de enrutamiento externos programen su información de enrutamiento en las tablas de reenvío de hardware.
El código del agente se puede encontrar en fboss/agent
El agente requiere un archivo de configuración JSON para especificar su puerto y configuración de VLAN. Algunos archivos de configuración de muestra se pueden encontrar en fboss/agent/configs. Estos archivos no están realmente destinados al consumo humano; en Facebook tenemos herramientas que generan estos archivos por nosotros.
El agente FBOSS gestiona las tablas de reenvío en el ASIC de hardware, pero necesita estar informado de las rutas actuales a través de API de ahorro.
Nuestra versión inicial de código abierto aún no contiene un demonio de protocolo de enrutamiento capaz de comunicarse con el agente. El demonio de protocolo de enrutamiento que utilizamos en Facebook es bastante específico de nuestro entorno y probablemente no será tan útil para la comunidad de código abierto. Para un uso más general fuera de Facebook, debería ser posible modificar las herramientas de enrutamiento de código abierto existentes para comunicarse con el agente FBOSS, pero aún no lo hemos implementado. Mientras tanto, hemos incluido un pequeño script de Python de muestra en fboss/agent/tools que puede agregar y eliminar rutas manualmente.
Obviamente se requieren herramientas y utilidades adicionales para interactuar con el agente FBOSS, informar su estado, generar archivos de configuración y depurar problemas.
Por el momento no tenemos muchas de nuestras herramientas listas para su lanzamiento de código abierto, pero esperamos que haya más disponibles en las próximas semanas. Mientras tanto, el compilador de ahorro puede generar automáticamente un script remoto en Python para permitir la invocación manual de las diversas interfaces de ahorro del agente.
Consulte el documento BUILD.md para obtener instrucciones sobre cómo construir FBOSS.
FBOSS ha sido diseñado específicamente para manejar las necesidades de las redes del centro de datos de Facebook, pero esperamos que también pueda ser útil para la comunidad en general. Sin embargo, tenga en cuenta que esta versión inicial de FBOSS probablemente requerirá modificaciones y desarrollo adicional para admitir otras configuraciones de red más allá de las funciones utilizadas por Facebook. Hasta que madure más, FBOSS probablemente será de interés principalmente para los desarrolladores de software de red, más que para los administradores de red que esperan utilizarlo como una solución llave en mano.
Esperamos recibir comentarios de la comunidad y esperamos que FBOSS pueda servir como punto de partida para otros usuarios que deseen programar conmutadores de red.
El desarrollo de FBOSS continúa en Facebook y planeamos continuar lanzando más componentes, funciones adicionales y mejoras a las herramientas existentes.
Ver LICENCIA.