- We are open-sourcing Open / R, an extensible network routing platform that enables rapid innovation in network functions and applications.
- Open / R está sendo usado nas redes de backbone e data center do Facebook.
- a plataforma suporta diferentes topologias de rede (como WANs, data center tecidos, e malhas sem fio), bem como vários sistemas de hardware e software subjacentes (FBOSS, Arista EOS, Juniper JunOS, roteamento Linux, etc.).,
- Open / R fornece uma plataforma para disseminar o estado em toda a rede e permite que novas aplicações sejam construídas em cima dela. Ele também fornece interfaces northbound para permitir a integração com controladores externos.
- Open / R suporta recursos como alocação automática de prefixo IP, métricas de custo baseadas em RTT, reinício gracioso, convergência rápida e operações de drain/undrain.,temos trabalhado com parceiros externos e operadores para apoiar e usar o Open / R, e convidamos mais operadores, ISPs, fornecedores, integradores de sistemas e pesquisadores para alavancar o Open/R como uma plataforma para implementar novas ideias e aplicações de roteamento de rede.
open-sourcing Open/R
À medida que mais pessoas se tornam online e consomem conteúdo mais rico, a complexidade das redes subjacentes ao fluxo de informação também cresce., Embora os protocolos de roteamento tradicionais tenham funcionado bem ao longo dos últimos 30 anos, pode ser desafiador e demorado para rapidamente empurrar extensões ou protocolos inteiramente novos em dispositivos de rede. Novos avanços no roteamento muitas vezes requerem uma extensão cuidadosa de um protocolo existente ou projetar novas extensões sobrepostas. Além disso, a maioria dos protocolos foram inicialmente projetados com base em pressupostos de ambiente de hardware e software restritos de décadas atrás. Para continuar a oferecer experiências de usuários ricas, em tempo real e altamente envolventes através de redes, é importante acelerar a inovação no domínio de roteamento.,
hoje, estamos open-sourcing Open / R, uma plataforma de roteamento que permite a rápida inovação nas funções de rede. O Open / R foi originalmente construído para a rede Terragraph wireless backhaul, mas rapidamente vimos seu potencial uso para a espinha dorsal do Facebook, onde ele fornece um controle mais eficiente e preciso de uma rede de fibra global. Agora, nós estamos mesmo começando a rolá-lo para fora em nossos tecidos de data center, funcionando dentro da FBOSS e em nosso hardware de rede de projeto Open Compute como Wedge 100., Open / R é uma plataforma única que abrange uma grande variedade de domínios e projetos de rede, e estamos olhando para aplicá-lo em casos ainda mais de uso.
Facebook tem tomado uma abordagem centrada no software para o futuro da nossa rede, e ao longo dos últimos anos temos compartilhado nossos aprendizados com a comunidade da rede. Por exemplo, temos compartilhado o código do sistema de comutação aberta (FBOSS) do Facebook; detalhes sobre o nosso design de rede, gerenciamento e ferramentas de monitoramento, como Robotron, FCR e fbflow; e projetos de nossos sistemas inteligentes de controle de tráfego, como a espinha dorsal expressa e tecido de borda., Agora, ao liberar a plataforma aberta/R moderna, facilmente extensível e bem testada, pretendemos impulsionar ainda mais o estado da arte na comunidade de networking.neste espírito, estamos animados em anunciar que temos trabalhado com vários parceiros externos para trazer o Open/R para a produção, tanto dentro da rede do Facebook quanto externamente. O Open / R agora é executado em plataformas de comutação Arista, integrando-se com o código aberto EOS SDK, bem como nas plataformas de roteamento Juniper QFX e PTX usando APIs baseados no gRPC., A WiLine Networks, um ISP sem fio, trabalhou com a Tieto para implantar a Open/R na produção em sua rede comercial. Convidamos outros fornecedores, operadores, ISPs, integradores de sistemas e pesquisadores a alavancar o Open/R como uma plataforma para implementar novas ideias de domínio de roteamento para tornar a próxima geração de redes mais eficiente, mais inteligente e mais fácil de operar.
aplicabilidade em diferentes domínios de rede
ficamos muito felizes em descobrir que o Open/R é flexível e extensível o suficiente para lidar com muitos tipos de tecnologias de rede e topologias., Tudo começou com Terragraph, que apresentou um desafio aos protocolos de rede tradicionais: milhares de nós sem fio se comunicando ao ar livre com o tempo, folhagem e outros obstáculos constantemente interferindo com a conectividade. Uma grande malha de Camada 2 não seria tão eficiente e resiliente, enquanto os protocolos tradicionais de Camada 3, projetados principalmente para conectividade básica e acessibilidade, são pouco adequados para condições exteriores altamente variáveis e dinâmicas., “Controlar tudo centralmente” parecia uma solução de design fácil, mas impraticável dada a falta de gestão fora de banda e grande tamanho da malha sem fio. Assim, projetamos o Open / R para ser a plataforma de rede distribuída no topo da rede Terragraph que poderia lidar com suas mudanças rápidas e de grande escala, e permitir uma rápida extensibilidade.quando inicialmente partilhámos que estávamos a desenvolver o Open / R, vários membros da comunidade de redes tentaram aprender mais, especialmente no espaço sem fios., Designers de redes sem fio estão todos enfrentando o mesmo desafio: como disseminar informações sobre a rede subjacente de forma rápida e com freqüência suficiente, dado o quão rápido as redes sem fio podem mudar. As redes WiLine começaram a tentar modificar os protocolos existentes como base para a sua plataforma, mas quando os representantes souberam sobre o Open/R, eles e a Tieto se envolveram com o Facebook para ver se o Open/R poderia atender às suas necessidades. O seu design específico de rede tinha alguns novos e interessantes desafios para o Open / R, mas juntos fomos capazes de estender o Open/R para acomodar os novos requisitos., A Open / R faz agora parte da sua rede de produção. De forma semelhante, outros fornecedores de redes de Ondas Milimétricas de próxima geração viram a aplicabilidade direta do Open/R, e iniciamos discussões com membros do projeto Telecom Infra (TIP).internamente, vimos que o Open / R poderia abordar alguns dos desafios da rede de backbone do Facebook. Enquanto a espinha dorsal é um domínio totalmente diferente de uma malha sem fio metro (a espinha dorsal tem milhares de milhas de fibra que atravessam continentes, cruzam oceanos e rodeiam o globo), a partir de uma perspectiva de rede que enfrenta problemas semelhantes., A nossa nova espinha dorsal Express exigiu o controlo do tráfego e do encaminhamento através de muitos caminhos muito diferentes e uma resposta rápida a falhas. Em vez de usar um protocolo de roteamento tradicional, como IS-IS, decidimos introduzir o Open/R na espinha dorsal Express como o plano de controle distribuído para a rede, onde ele trabalharia junto com um controlador centralizado. Aqui, Open / R fornece conectividade básica em uma rede, reações rápidas a eventos de rede, e um “barramento de informações distribuídas” para exportar novas informações para o controlador e agentes nos nós de rede.,mais recentemente, viramos a nossa atenção para os tecidos do centro de dados do Facebook — novamente, um domínio muito diferente do Terragraph e da espinha dorsal global. Por design, o tecido é altamente uniforme e densamente entrelaçado, com muitos caminhos possíveis para explicar e alavancar. Por muitos anos, o Facebook vem operando esses tecidos de grande escala apenas com o protocolo de gateway de fronteira (BGP). Enquanto a BGP traz seus pontos fortes, especialmente no que diz respeito à aplicação de políticas e escala, vimos oportunidades para melhorar e simplificar o design, tendo aberto/R e BGP trabalhar em conjunto., O Open / R nesta parte da rede está rodando em cima do FBOSS e em nosso próprio hardware de rede OCP, como o Wedge 100.
roteamento em um ambiente moderno de hardware e software
muitos protocolos de roteamento tradicionais foram projetados no passado, com um forte foco na otimização para sistemas incorporados limitados por hardware, como CPUs e RAM. Além disso, os protocolos foram projetados como soluções construídas para resolver o problema particular de roteamento para conectividade, ao invés de como uma plataforma de software flexível para construir novas aplicações na rede.,
hoje em dia, as limitações de CPU e RAM não são mais um grande gargalo; ao mesmo tempo, os requisitos de aplicação e os casos de uso que as redes precisam satisfazer estão evoluindo rapidamente. Estas mudanças mudaram o foco dos engenheiros de rede de otimizar protocolos para construir novas aplicações rapidamente, o que pode ser um desafio para fazer em cima dos protocolos existentes. A plataforma Open / R permite a rápida inovação necessária para apoiar projetos de rede modernos, reduzindo ao mesmo tempo a complexidade operacional.
Nós projetamos Open / R para executar em múltiplas plataformas de hardware., Todas as peças dependentes de hardware e sistema foram extraídas através de interfaces RPC (por exemplo, programação de rotas e descoberta de link/endereço). Isso nos permitiu executar a mesma implementação aberta / R em diferentes tipos de dispositivos de hardware, com diferentes ASICs ou até mesmo diferentes famílias de CPU. Esta flexibilidade proporciona uma camada de homogeneidade em cima de dispositivos de rede heterogêneos, tornando a rede mais fácil de controlar e gerenciar.,
projetar para iteração rápida tornou necessário incluir procedimentos de teste robustos que proporcionam confiança e clareza em torno de cada mudança de código e lançamento de novos recursos. Nós nos esforçamos para ter 100 por cento de cobertura de código para validar cada linha de lógica de código e erros de captura o mais cedo possível. No entanto, os testes unitários, por si só, não são claramente suficientes. Para cada mudança no código, nós testamos o comportamento real do Open / R em uma topologia de rede emulada grande de milhares de nós, executando testes de regressão e verificando todo o conjunto de recursos para garantir a compatibilidade para trás., Para fazer isso, construímos uma estrutura para rodar grandes topologias virtuais usando contêineres leves como nós em várias máquinas físicas. Estaremos também a abrir este quadro de emulação, juntamente com a plataforma Open/R.
open/R atualizações de projeto
como já descrevemos anteriormente, open / R Alavancas de código aberto existentes para duas funções principais. Em primeiro lugar, a codificação e decodificação de estruturas de dados de plano de controle é feito usando Thrift. Em segundo lugar, a lógica de troca de dados entre nós de rede é implementada usando ZeroMQ., Esta escolha de design ajudou-nos a eliminar um monte de sobrecarga técnica e desenvolver Aberto/R rapidamente, concentrando-se em características de nível mais elevado, em vez de na canalização de baixo nível. Além disso, o uso de tecnologias existentes nos permitiu criar ferramentas e bibliotecas em outras linguagens além de C++ para interagir com o Open/R. um exemplo é a ferramenta Breeze CLI, que é escrita em Python e oferece maneiras de interagir com os diferentes módulos abertos/R.
desde o nosso post inicial descrevendo a arquitetura do Open / R, várias melhorias e novas funcionalidades foram adicionadas., Uma das principais melhorias arquitetônicas é a introdução do módulo de plataforma. Ele abstrai partes dependentes do sistema e expõe APIs para alimentar informações de baixo nível para outros módulos ou para programar o hardware subjacente específico. Para nós de vanilla Linux com roteamento de software, ele fornece handlers padrão para endereçamento de programação base de informação (FIB) e notificações de mudança de Estado de interface para Open / R., Para sistemas que são capazes de fazer encaminhamento de pacotes diretamente em hardware (por exemplo, nossos Nós Terragraph ou roteadores Express Backbone), o módulo implementa tratadores FIB que interagem com os SDKs de hardware específicos. Por exemplo, na nossa plataforma Wedge 100, o agente FBOSS implementa diretamente a interface de programação FIB aberta/R.
O diagrama seguinte resume a arquitectura de alto nível do Open/r:
- KV-STORE: funções como um porta-chaves replicado que permite comunicações distribuídas e replicação de Estado.,Spark: realiza a descoberta de vizinhos em interfaces usando Link-local Multicast, e relata atividades vizinhas.
- LinkMonitor: monitora as interfaces do sistema através da plataforma, gerencia as sessões de faísca neles, e anuncia que descobriu vizinhos no KV-STORE.
- prefixo Manager: executa sub-alocação do prefixo automático para a configuração ad hoc.
- decisão: calcula a informação de roteamento com base na informação topológica aprendida através do KV-STORE.
- FIB: serve como um proxy para programação de rotas computadas via plataforma, mantém o estado de encaminhamento (rotas computadas).,
- plataforma: implementa a programação de rotas e a lógica de descoberta da interface para a plataforma de hardware alvo.
emulação e CLI
teste aberto / R Depende da capacidade de configurar rapidamente grandes redes virtuais sem a necessidade de hardware real. Para facilitar isso, construímos uma biblioteca de emulação genérica — uma embalagem leve sobre systemd-nspawn
— e uma ferramenta de emulação que inicia milhares de recipientes Linux e forma uma malha de túneis entre eles com um único comando., Para imitar a perda de pacotes, atraso ou jitter, a ferramenta suporta a criação de diferentes ambientes de rede, como WAN ou redes sem fio, configurando condicionadores de tráfego. Isso torna mais fácil testar o comportamento do Open / R sob diferentes cenários, e ajuda os desenvolvedores novos a abrir/R, proporcionando uma maneira segura de experimentar.
a plataforma vem com o Breeze CLI, uma ferramenta de interface de linha de comando para engenheiros de rede para interagir com a malha de instâncias abertas/R., Ele permite a inspeção de informações do Estado de execução, tais como adjacências, nós, prefixos, rotas, contadores e últimas estatísticas de convergência, bem como realizar operações de controle, tais como nós drenantes e não drenantes, definir métricas personalizadas em links, e anunciar e retirar prefixos., Por exemplo, uma característica útil é a capacidade de realizar a inspeção em tempo real do banco de dados de Estado replicado da plataforma (o KV-STORE), que permite que os engenheiros inspecionem qualquer atividade em toda a rede (nós subindo, adjacências rasgando, ou valores métricos mudando) apenas conectando-se a um único nó.
open/R e controlo centralizado
o aspecto distribuído é importante para a fiabilidade da rede. Ainda assim, as decisões inteligentes são feitas de forma otimizada quando são descarregadas para um controlador centralizado, como para fins de engenharia de tráfego., Para isso, Open/R fornece APIs que permitem que os agentes remotos aprendam o estado do link ou subscrevam atualizações de banco de dados, tais como notificações de uma mudança de capacidade do link. Por exemplo, isso pode ser usado para computar caminhos trocados por etiquetas e programá-los na rede a partir de um local central. Esta funcionalidade permite a combinação de tratamento de Eventos” locais ” (em rede) com lógica centralizada, como nós implementamos com sucesso em nosso projeto Express Backbone.,
Resumo das características
enquanto o Open / R implementa muitas características semelhantes às encontradas nos protocolos tradicionais como IS-IS e OSPF, ele também introduz algumas características únicas próprias.
Aqui está um resumo rápido:
- IPv6 primeiro, alavancando IPv6 link-endereços locais para alcançar configuração de toque zero. Não é necessária nenhuma configuração de rede especial.Suporte para roteamento nativo do IPv4 quando necessário.
- alocação de prefixos de rede ad hoc e configuração de IP para nós na rede a partir de um prefixo agregado maior.,
- um reinício gracioso que permite atualizações de software ao vivo sem interromper o encaminhamento de tráfego.
- Suporte para drenar e não drenar para nós e ligações.
- métricas de RTT de ligação dinâmica calculadas e suavizadas a partir de sondas activas.
- a capacidade de definir valores métricos personalizados, estática ou dinamicamente.
- convergência rápida da rede com Temporizadores de back-off inteligentes para falhas de ligações ou de nós.verificação contínua da saúde da rede através da verificação da acessibilidade ao vivo.
- uma API para integração com controladores centralizados.,
- uma biblioteca Python para interagir com todos os principais processos abertos / R.
- a capacidade de estender a plataforma para disseminar todos os tipos de Informação adicional, e até mesmo para introduzir melhorias ou variações na lógica de computação do caminho.
conclusão
embora os protocolos de roteamento tradicionais tenham sido fundamentais para o progresso da tecnologia nas últimas décadas, estamos nos aproximando do ponto em que as redes precisam evoluir ainda mais rápido., O Open / R é uma plataforma aberta que facilita o teste rápido e a implantação de novas ideias em escala, tornando as nossas redes mais eficientes, mais rápidas de implantar e mais fáceis de gerenciar.encorajamos fortemente os operadores de rede, pesquisadores, fornecedores, engenheiros e toda a comunidade de redes a usar o Open/R para implementar suas ideias e construir redes modernas que são mais abertas e podem evoluir mais rápido do que nunca.
E, finalmente, um enorme agradecimento vai para as muitas equipes que trabalharam com o grupo de desenvolvimento núcleo, a fim de ficar aberto/R para este marco importante., Isso inclui a equipe Terragraph, a equipe Express Backbone, a engenharia de rede do centro de dados, a equipe FBOSS, a equipe de parcerias de infraestrutura do Facebook e nossos parceiros externos.