FBOSS é a pilha de software do Facebook para controlar e gerenciar switches de rede.
O FBOSS consiste em vários aplicativos, bibliotecas e utilitários de espaço de usuário.
A versão inicial de código aberto do FBOSS consiste principalmente no daemon do agente, mas também estamos trabalhando no lançamento de peças e funcionalidades adicionais.
Uma das peças centrais do FBOSS é o daemon do agente, que é executado em cada switch e controla o ASIC de encaminhamento de hardware. O daemon do agente envia informações de encaminhamento ao hardware e implementa alguns protocolos de plano de controle, como ARP e NDP. O agente fornece APIs de economia para gerenciar rotas, para permitir que processos de controle de roteamento externo tenham suas informações de roteamento programadas nas tabelas de encaminhamento de hardware.
O código do agente pode ser encontrado em fboss/agent
O agente requer um arquivo de configuração JSON para especificar sua porta e configuração de VLAN. Alguns exemplos de arquivos de configuração podem ser encontrados em fboss/agent/configs. Esses arquivos não são realmente destinados ao consumo humano – no Facebook temos ferramentas que geram esses arquivos para nós.
O agente FBOSS gerencia as tabelas de encaminhamento no hardware ASIC, mas precisa ser informado das rotas atuais por meio de APIs de economia.
Nossa versão inicial de código aberto ainda não contém um daemon de protocolo de roteamento capaz de se comunicar com o agente. O daemon de protocolo de roteamento que usamos no Facebook é bastante específico para o nosso ambiente e provavelmente não será tão útil para a comunidade de código aberto. Para uso mais geral fora do Facebook, deveria ser possível modificar as ferramentas de roteamento de código aberto existentes para conversar com o agente FBOSS, mas ainda não implementamos isso. Enquanto isso, incluímos um pequeno exemplo de script python em fboss/agent/tools que pode adicionar e remover rotas manualmente.
Obviamente, ferramentas e utilitários adicionais são necessários para interagir com o agente FBOSS, relatando seu status, gerando arquivos de configuração e depurando problemas.
No momento não temos muitas de nossas ferramentas prontas para lançamento em código aberto, mas esperamos disponibilizar mais delas nas próximas semanas. Enquanto isso, o compilador thrift pode gerar automaticamente um script python-remote para permitir a invocação manual das várias interfaces thrift do agente.
Consulte o documento BUILD.md para obter instruções sobre como construir o FBOSS.
O FBOSS foi projetado especificamente para atender às necessidades das redes de data centers do Facebook, mas esperamos que também possa ser útil para a comunidade em geral. No entanto, observe que esta versão inicial do FBOSS provavelmente exigirá modificações e desenvolvimento adicional para suportar outras configurações de rede além dos recursos usados pelo Facebook. Até que esteja mais maduro, o FBOSS provavelmente será de interesse principalmente para desenvolvedores de software de rede, e não para administradores de rede que esperam usá-lo como uma solução pronta para uso.
Estamos ansiosos para receber feedback da comunidade e esperamos que o FBOSS possa servir como ponto de partida para outros usuários que desejam programar switches de rede.
O desenvolvimento do FBOSS está em andamento no Facebook e planejamos continuar lançando mais componentes, recursos adicionais e melhorias nas ferramentas existentes.
Consulte LICENÇA.