Pular para o conteúdo

BGP e OSPF

O roteador fala BGP e OSPF por meio do BIRD 2, que o instalador configura com o roteamento desligado. Você nunca edita a configuração do BIRD: você configura o BGP e o OSPF com dtvsol bgp … / dtvsol ospf …, a API ou a aba Routing (roteamento) do monitor, e o roteador escreve /etc/bird/bird.conf para você, verifica-o com o BIRD antes de carregá-lo e o mantém em sintonia com as suas configurações.

O que ele faz por um provedor:

  • Anuncia os seus próprios blocos de endereços (IPv4 e IPv6 públicos) a uma ou mais operadoras.
  • Recebe rotas de cada operadora: só uma rota padrão, ou a tabela completa da Internet.
  • Faz failover sozinho: uma operadora principal e uma de backup; quando a principal cai, o tráfego passa para a de backup.
  • Coloca em blackhole um endereço sob ataque DDoS: as operadoras são solicitadas a descartar todo o tráfego destinado a ele.
  • iBGP entre vários Super Routers do mesmo AS, e OSPF com os outros roteadores da sua rede.
  • Só os seus prefixos saem. Um peer recebe apenas os prefixos que você lista com dtvsol bgp announce add (e os endereços em blackhole, para as operadoras que têm uma community de blackhole). Nada mais pode vazar, seja o que for que o BIRD aprenda.
  • Só entram rotas sensatas. De uma operadora: uma rota padrão, ou a tabela completa sem redes privadas e reservadas e sem nada mais longo que /24 (IPv4) ou /48 (IPv6). Toda sessão tem um limite de prefixos.
  • Toda alteração pode ser desfeita. Uma alteração que poderia deixar o roteador isolado (sessões, prefixos, OSPF) é carregada com um temporizador de 120 segundos: verifique se as sessões voltam e então execute dtvsol bgp confirm. Sem a confirmação, o BIRD volta sozinho à configuração anterior, e as configurações do roteador acompanham. dtvsol bgp undo faz isso na hora. Enquanto uma alteração aguarda, nenhuma outra é aceita.
  • Só blocos públicos podem ser anunciados: IPv4 de /8 a /24, IPv6 de /16 a /48.
  1. O seu número de AS e um router id (um endereço IPv4 deste roteador):

    Janela do terminal
    dtvsol bgp set asn 65010
    dtvsol bgp set router-id XXX.XXX.XXX.2
  2. Os seus blocos de endereços:

    Janela do terminal
    dtvsol bgp announce add XXX.XXX.XXX.0/22
    dtvsol bgp announce add XXXX:XXXX::/32
  3. As suas operadoras (o endereço e o AS delas; a senha só se elas lhe deram uma):

    Janela do terminal
    dtvsol bgp peer add isp-a XXX.XXX.XXX.1 64500 upstream default primary blackhole 64500:666
    dtvsol bgp peer add isp-b XXX.XXX.XXX.5 64501 upstream default backup password 'secret'
    dtvsol bgp peer add isp-a6 XXXX:XXXX::1 64500 upstream default primary
  4. Ligue o BGP, olhe as sessões e mantenha a alteração:

    Janela do terminal
    dtvsol bgp set on
    dtvsol bgp # the sessions should reach Established
    dtvsol bgp confirm # within 120 s, or it is undone

Enquanto o BGP está desligado, as configurações são salvas na hora, sem temporizador: ainda não há nada para cortar.

routes O que a operadora envia a você Memória
default Só a rota padrão dela. Simples, e o failover funciona do mesmo jeito. Nada perceptível
full A tabela completa da Internet (cerca de 1 milhão de rotas IPv4 e 200.000 IPv6): cada destino sai pela melhor operadora. Cerca de 2 GB a mais por sessão com tabela completa

Uma operadora principal (primary) é preferida para o tráfego de saída (local preference 200). Uma operadora de backup recebe local preference 50, e os seus prefixos são enviados a ela com o seu AS repetido três vezes, para que a Internet prefira a principal também para o tráfego de entrada. Quando a sessão da principal cai, as duas direções passam sozinhas para a de backup.

As rotas do BGP entram no kernel com métrica 32. Uma rota padrão estática com métrica maior fica atrás delas como alternativa. As rotas estáticas IPv6 costumam ter métrica 1024, então ali o BGP vem primeiro. Uma rota padrão estática IPv4 sem métrica (0) fica na frente do BGP: dê a ela uma métrica acima de 32 (Settings → Interfaces no monitor, ou dtvsol netcfg) para que o BGP seja o caminho principal.

Sem BFD, o BGP só percebe uma operadora caída quando o hold timer expira: de 90 a 240 segundos, a menos que o próprio link caia. Com BFD em um peer, o roteador e o peer se verificam a cada 300 ms, e um peer que fica em silêncio é declarado caído em menos de um segundo (0,9 s no nosso laboratório); as rotas dele saem na hora e o tráfego passa para a outra operadora.

Janela do terminal
dtvsol bgp peer add isp-a XXX.XXX.XXX.1 64500 bfd # nobfd desliga

A operadora também precisa ativar o BFD do lado dela — peça a ela. dtvsol bgp mostra o estado do BFD embaixo de cada peer.

Com a tabela completa, uma rota errada ou sequestrada (alguém anunciando o seu bloco ou o de uma grande rede) seria aceita. O RPKI confere a origem de cada rota com as autorizações de origem que os donos dos endereços assinaram no seu registro (LACNIC, ARIN, RIPE, APNIC, AFRINIC):

Janela do terminal
dtvsol bgp set rpki on
  • As rotas cuja origem é comprovadamente falsa (invalid) são descartadas das operadoras com tabela completa. As rotas sem autorização (unknown) são mantidas, como hoje em toda a Internet.
  • Os dados validados vêm do rpki-client, que o instalador prepara com os cinco registros e que roda a cada hora, só com a CPU que o roteador não usa, enquanto o RPKI está ligado (cada vez leva uns dez minutos). O roteador recarrega os dados sozinho quando eles mudam.
  • Um aviso é gerado quando os dados faltam ou têm mais de duas horas.

Quando um dos seus endereços está sob ataque:

Janela do terminal
dtvsol bgp blackhole add XXX.XXX.XXX.66

O endereço é enviado como rota de host (/32 ou /128) a toda operadora que tem uma community de blackhole (blackhole <as:n> no peer: peça a sua operadora a dela; 65535:666 é a comum), e o roteador também descarta o tráfego destinado a ele. O assinante por trás dele fica sem serviço até você removê-lo:

Janela do terminal
dtvsol bgp blackhole del XXX.XXX.XXX.66

Um blackhole é carregado na hora, sem o temporizador de 120 segundos. Só endereços públicos podem ser colocados em blackhole.

Vários Super Routers do mesmo AS (um por grupo de OLTs, por exemplo) podem compartilhar as suas rotas:

Janela do terminal
dtvsol bgp peer add sr-2 10.0.0.2 65010 ibgp

Cada um envia ao outro os seus próprios prefixos e as rotas que aprendeu das suas operadoras, com ele mesmo como próximo salto. Um peer em um link compartilhado não precisa de mais nada. Para um peer que não está diretamente conectado, adicione multihop <n> e garanta que o endereço dele seja alcançável (o OSPF faz isso).

O OSPF aprende e informa as rotas da sua própria rede com os seus outros roteadores (IPv4 com OSPFv2, IPv6 com OSPFv3, em uma área):

Janela do terminal
dtvsol ospf iface add vlan20 cost 10 # talk OSPF with the routers on vlan20
dtvsol ospf iface add vlan100 passive # tell vlan100's network, talk to no one there
dtvsol ospf default on # tell the OSPF routers our (BGP) default route
dtvsol ospf on
dtvsol ospf # neighbours should reach Full
dtvsol bgp confirm
  • passive: a rede da interface é anunciada, mas nenhum vizinho é procurado nela (as VLANs dos assinantes, por exemplo).
  • ospf default on: a rota padrão que este roteador tem do BGP é anunciada no OSPF, para que os roteadores por trás dele enviem para cá o seu tráfego de Internet.
  • ospf accept-default on: aceita uma rota padrão do OSPF. Deixe desligado no roteador de borda.
  • ospf area <id>: a área, 0.0.0.0 por padrão.

O OSPF precisa do router id (dtvsol bgp set router-id …), mas não do BGP.

  • Sessão BGP caída: crítico para uma operadora principal, um aviso para as outras. Permanece até a sessão estar Established de novo.
  • OSPF: nenhum vizinho em uma interface: um aviso para cada interface OSPF ativa (não passiva) sem um vizinho Full.
  • bird.service parado é crítico enquanto o BGP ou o OSPF está ligado.

Esses alarmes ficam na área Network. A tela 24/7 mostra um bloco Routing (sessões ativas, rotas recebidas, vizinhos OSPF, blackholes) enquanto o BGP ou o OSPF está ligado.

  • Aba Routing: o mesmo, pelo navegador.
  • API de roteamento: GET /bgp, POST /bgp/<op>.
  • dtvsol bgp config imprime a configuração que o BIRD executa, com as senhas ocultas.

Este site foi escrito com a ajuda de IA e revisado pela nossa equipe.