Em mais um artigo sobre container, nosso #cloudspecialist Thiago Marques agora traz um overview sobre FRRouting com Docker. Confere aí!

O pai ta on!!
Depois de abordarmos diversos pontos sobre container, agora vamos analisar as possibilidades que ele nos oferece, além de abordar uma alternativa para emulação de diversos protocolos de redes e de roteamento. Nesse post falaremos um pouco sobre o FRRouting.

O que é FRRouting

FRR é o fork do antigo Quagga (que era um fork do Zebra) que foi descontinuado em 2005. Ambos os softwares são uma suíte de protocolos de roteamento (BGP, OSPF, ISIS e EIGRP), com adição de outros protocolos e soluções de rede (PBR, NHRP, LDP, PIM, MPLS) tudo rodando como daemons de plataformas Linux e Unix.
Essa suíte trabalha de uma forma diferente da arquitetura tradicional de roteamento com RIB e FIB, uma vez que cada protocolo é implementado com seu próprio deamon (bgpd, nhrpd, e etc), e tem um deamon base (zebra) que intermedia a conexões com o dataplane do kernel. Além de ter o vtysh como gerenciador frontend (basicamente o cara que você vai utilizar para dar o ‘conf t’) das daemons.

Fonte: http://docs.frrouting.org/en/latest/overview.html

Topologia

Hoje iremos trabalhar com uma topologia simples com 3 roteadores rodando OSPF entre eles, visto que o foco principal aqui não é o protocolo de roteamento e/ou a topologia em si, e sim rodar esse ambiente em uma instância Linux, sendo que cada roteador vai ser um container docker

Instalação

Subiremos o FRR em uma instancia Amazon-Linux2, assim a primeira coisa que faremos é instalar e iniciar o docker, e fazer o pull da imagem do frr

amazon-linux-extras install docker -y
systemctl enable docker
systemctl start docker
docker pull frrouting/frr

Com o docker instalada e a imagem do FRR baixada, vamos para a configuração dos containers. Primeiro vamos criar os containers expondo a porta 2601 (que utilizaremos para conectar para fazer as configurações):

docker create -it –privileged –name SPO -p 4301:2601 frrouting/frr /bin/bash
docker create -it –privileged –name RJO -p 4302:2601 frrouting/frr /bin/bash
docker create -it –privileged –name POA -p 4303:2601 frrouting/frr /bin/bash

Com os containers criadas vamos criar e conectar as redes de conexão (que vai funcionar como a WAN) entre as unidades

docker network create –driver bridge –subnet 10.1.2.0/24 S2R
docker network create –driver bridge –subnet 10.1.3.0/24 S2P

docker network connect S2R SPO
docker network connect S2R RJO
docker network connect S2P SPO
docker network connect S2P POA

Por fim vamos subir os containers:

docker start SPO
docker start RJO
docker start POA

Configuração do FRR

Chegando até aqui os containers em execução deveram estar similar a essa imagem abaixo:

Agora vamos conectar em cada container e configurar o FRR. Para isso usaremos inicialmente o docker exec. Repita esse passo tanto para o container RJO quanto para o POA.

docker exec -it SPO bash

Dentro do container configuraremos as interfaces de loopback e lan:

Ip link add name loop0 type dummy
Ip link add name lan1 type bridge

Ifconfig loop0 1.1.1.1 netmask 255.255.255.255 up
Ifconfig lan1 192.168.1.1 netmask 255.255.255.0 up

Com as interfaces configuradas, vamos agora (finalmente) para configuração do FRR.
Iremos primeiro habilitar o deamon do OSPF, e alterar a política para conexão no deamon do Zebra (o que nos vai permitir acessar o ‘conf t’ via telnet posteriormente).

Aqui habilitamos o OSPF:
sed -i ‘/ospfd=no/c\ospfd=yes’ /etc/frr/daemons

E aqui alteramos a política:
sed -i ‘/zebra_options=” -A 127.0.0.1 -s 90000000/c\zebra_options=” -A 0.0.0.0 -s 90000000”’ /etc/frr/daemons

É importante ressaltar que o vtysh (que seria como um console para os equipamentos), por padrão vem sem configuração nenhuma, e não é salvo quando você executa um ‘wr’ no equipamento. Para garantir isso iremos criar o arquivo de configuração, e habilitar o sync com o FRR:

cat < /etc/frr/vtysh.conf
service integrated-vtysh-config
EOF

E por fim, vamos reiniciar o FRR:

/etc/inid.frr stop
/usr/lib/frr/watchfrr -d -F traditional zebra ospfd staticd

Testes

Com o FRR configurado vamos para parte fácil, basta usar o vtysh para conectar no equipamento e configurar o OSPF:

bash-5.1# vtysh

Hello, this is FRRouting (version 8.1_git).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

c9cfd60e4302# conf t
c9cfd60e4302(config)# hostname SPO
SPO(config)#

Note que a interface é ‘cisco-like’, o que facilita bastante a interação.
Após a configuração do OSPF, basta validar com os comandos padrões:

SPO# sh ip ospf neighbor

Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
192.168.2.1 1 Full/Backup 30.570s 10.1.2.3 eth1:10.1.2.2 0 0 0
192.168.3.1 1 Full/Backup 32.058s 10.1.3.3 eth0:10.1.3.2 0 0 0

SPO#
SPO# sh ip route ospf
Codes: K – kernel route, C – connected, S – static, R – RIP,
O – OSPF, I – IS-IS, B – BGP, E – EIGRP, N – NHRP,
T – Table, v – VNC, V – VNC-Direct, A – Babel, F – PBR,
f – OpenFabric,
> – selected route, * – FIB route, q – queued, r – rejected, b – backup
t – trapped, o – offload failure

O>* 2.2.2.2/32 [110/20] via 10.1.2.3, eth1, weight 1, 00:02:45
O>* 3.3.3.3/32 [110/20] via 10.1.3.3, eth0, weight 1, 00:02:18
O 10.1.2.0/24 [110/10] is directly connected, eth1, weight 1, 00:03:56
O 10.1.3.0/24 [110/10] is directly connected, eth0, weight 1, 00:03:49
O 172.17.0.0/16 [110/20] via 10.1.2.3, eth1, weight 1, 00:02:18
via 10.1.3.3, eth0, weight 1, 00:02:18
O>* 192.168.2.0/24 [110/20] via 10.1.2.3, eth1, weight 1, 00:02:45
O>* 192.168.3.0/24 [110/20] via 10.1.3.3, eth0, weight 1, 00:02:18
SPO#

O interessante aqui é que além pode poder utilizar em produção (uma vez que um servidor acaba sendo mais barato que um roteador), é possível facilmente utilizar o FRR para estudos e até mesmo para teste de falhas e/ou ambiente de homologação.

That’s all folks! Be Happy!!!

foto-thiago-marques

Thiago Marques
Technical Account Manager
thiago.marques@darede.com.br

Technical Account Manager da Darede, formato em Rede de Computadores, e pós graduado em Segurança da Informação. Possui ampla experiência em Datacenters e Service Providers, além de ser um entusiasta em DevOps e mercado financeiro.

OUTRAS PUBLICAÇÕES

Novidades da Semana – 31 de maio a 04 de junho

Por Cassius Oliveira Todos os dias a AWS lança uma série novidades e atualizações em seus produtos que visam melhorar a vida de seus usuários. Reunimos algumas delas que fazem mais sentido para nosso mercado e que certamente aplicaremos em nosso dia a dia. Confira as novidades das últimas semanas. Segurança e Governança Amazon S3 – Inventory e Batch Operations com suporte de identificação e cópia de objetos para chaves de bucket S3 O Amazon S3 Inventory e o Amazon S3 Batch Operations adicionaram suporte de um recurso que identifica e copia objetos para usar Chaves de bucket do S3, assim reduzindo os custos de criptografia no lado do servidor (SSE) com o AWS Key Management Service (KMS). Amazon Keyspaces – Suporte a SOC O Amazon Keyspaces (para Apache Cassandra), é um serviço de banco de dados compatível com Apache Cassandra, escalável, altamente disponível e totalmente gerenciado. A ferramenta anunciou que agora está no escopo dos relatórios de SOC (System and Organization Controls) da AWS para ajudar você a executar Workloads do Cassandra altamente regulamentados com mais facilidade. AWS Wavelength – Em conformidade com SOC O AWS Wavelength agora está em conformidade com SOC (System and Organization Controls) 1,2 e 3. Compute & DevOps Amazon SNS – Suporte a sandbox SMS O Amazon SNS é um serviço de mensagens totalmente gerenciado que oferece suporte a cargas de trabalho de aplicações para pessoa (A2P), incluindo mensagens de texto móveis (SMS). E a ferramenta anunciou suporte a sandbox SMS, que permite utilizar o Amazon SNS para enviar SMS a partir de um ambiente de teste isolado. AWS Lambda Extensions – Disponibilidade para produção O AWS Lambda Extensions é uma nova maneira de integrar suas ferramentas operacionais favoritas para monitoramento, observabilidade, segurança e governança ao AWS Lambda. E agora está disponível para produção. Amazon EKS – Pods em execução no AWS Fargate com suporte a grupos de segurança O Amazon EKS agora permite especificar grupos de segurança personalizados do Amazon EC2 para pods executados no AWS Fargate, permitindo um controle detalhado sobre o tráfego de rede de entrada e saída. Amazon SQS – Suporte a alta taxa de transferência para filas FIFO O Amazon SQS anunciou a disponibilidade geral do modo de alta taxa de transferência para filas FIFO, permitindo que você processe até 3.000 mensagens por segundo por ação de API. AWS App Runner – Integração com AWS Toolkit for JetBrains IDEs O AWS Toolkit for JetBrains agora fornece aos desenvolvedores a funcionalidade IDE conveniente para criar e gerenciar implantações de seus repositórios de código ou imagem usando AWS AppRunner. Amazon Cloudwatch – Suporte a filtros de métricas O Amazon CloudWatch Logs anunciou suporte a filtros de métricas. Os Filtros de métricas do CloudWatch Logs permitem que você crie padrões para pesquisar e combinar termos, frases ou valores em seus eventos de log e transformá-los em métricas que você pode representar graficamente no CloudWatch Metrics ou usar para criar um alarme do serviço. Amazon Cloudwatch – Adição de métricas de uso de API O Amazon CloudWatch agora permite a visibilidade de insights acionáveis da utilização de APIs de plano de controle em todos os serviços da AWS. Analytics & Operations AWS Transit Gateway – Atualização de contrato de nível de serviço para 99,99% A AWS atualizou seu contrato de nível de serviço (SLA) para o AWS Transit Gateway para 99,99%, antes era 99,95%. Nice DCV – Lançamento de SDK de cliente WEB 1.0.1 A AWS anunciou o lançamento da versão 1.0.1 do kit de desenvolvimento de software (SDK) do cliente Web NICE DCV. AWS Systems Manager – Plugin Session Manager agora é Open-Source O plugin Session Manager do AWS Systems Manager para a AWS Command Line Interface (AWS CLI) agora é Open-Source. Nice DCV – Nova versão 2021.1 A AWS anunciou uma a nova versão 2021.1 para o Nice DCV, ela agora permite a sincronização precisa de áudio e vídeo, além de outras melhorias. Amazon FSx for Lustre – Suporte a compactação de dados O Amazon FSx for Lustre é um serviço que proporciona economia, capacidade de dimensionamento e alta performance de armazenamento de arquivos para cargas de trabalho de computação. A ferramenta agora oferece suporte para compactação de dados, permitindo que você reduza o custo do armazenamento de conjuntos de dados para machine learning, Computação de Alta Performance (HPC) e análise. Amazon Cloudwatch – Lançamento do Resource Health O Amazon CloudWatch Resource Health é um novo recurso que permite descobrir, gerenciar e visualizar automaticamente a integridade e o desempenho dos hosts do Amazon Elastic Compute Cloud (Amazon EC2) em suas aplicações em uma única visualização. Database Amazon DocumentDB – Lançamento do Global Clusters O Amazon DocumentDB agora oferece suporte para Global Clusters um novo recurso que fornece recuperação de desastres de interrupções em toda a região, além de permitir leituras globais de baixa latência, possibilitando leituras do cluster do Amazon DocumentDB mais próximo. Amazon Redshift ML – Disponibilidade para produção A AWS anunciou a disponibilidade para produção do Amazon Redshift ML, uma ferramenta que permite a criação, o treinamento e a implantação de modelos de machine learning (ML) usando comandos habituais de SQL. Amazon Workspaces – Cost Optimizer nova versão v2.3 A AWS atualizou o Amazon WorkSpaces Cost Optimizer para a versão 2.3, trazendodiversas melhorias. Amazon Kendra – disponibilidade de Query Suggestions O Amazon Kendra anunciou a disponibilidade do recurso Query Suggestions que é utilizado para orientar os usuários finais às perguntas mais habituais e poupar o tempo durante as pesquisas. Amazon Location Service – Disponível A AWS anunciou o Amazon Location Service, um serviço totalmente gerenciado que ajuda os desenvolvedores a adicionar mapas, pontos de interesse, geocodificação, roteamento, rastreamento e definição de cercas geográficas a suas aplicações sem comprometer a segurança dos dados, a privacidade do usuário ou os custos. Quer saber as novidades da AWS das últimas semanas? Leia nosso blog! E acompanhe toda sexta-feira em nosso canal do Youtube nossa live sobre as Novidades da Semana.

Nós usamos cookies para garantir e oferecer a melhor experiência de navegação em nosso site! Mais informações