Kaique Mitsuo Silva Yamamoto
Redes isp

BGP, OSPF e MPLS para Provedores de Internet

Roteamento avançado para ISPs: configuração de BGP com múltiplos uplinks, peering em IXPs brasileiros (IX.br), OSPF interno e backbones MPLS para provedores de médio porte.

O roteamento avançado é o coração técnico de qualquer provedor de internet. Um ISP com BGP mal configurado pode perder todos os seus clientes por uma única rota mal anunciada. Com BGP bem configurado e múltiplos uplinks, o provedor garante alta disponibilidade mesmo durante falhas parciais de infraestrutura.

No Brasil, o IX.br (Internet Exchange Brasil) é o maior ponto de troca de tráfego da América Latina, com mais de 950 participantes e pico de tráfego acima de 15 Tbps. Participar do IX.br reduz custos de trânsito e melhora latência para usuários domésticos.


BGP — Border Gateway Protocol

Conceitos fundamentais para ISPs

O BGP é o protocolo de roteamento da internet. Para um provedor, existem dois contextos:

TipoDescriçãoQuando usar
eBGP (externo)Sessão com outro AS (uplink, peer)Sempre que conectar a outro provedor
iBGP (interno)Sessão entre roteadores do mesmo ASQuando há múltiplos roteadores de borda

Obtenção de ASN e bloco IPv4/IPv6

Para anunciar prefixos próprios no BGP, o provedor precisa de:

  1. ASN (Autonomous System Number) — obtido via LACNIC/ANATEL (~R$ 500/ano)
  2. Bloco IPv4 /24 mínimo — mínimo anunciável no internet global routing table
  3. Bloco IPv6 /32 — recomendado para plano de longo prazo

Provedores com menos de 256 IPs públicos normalmente operam com IPs do upstream (IP transit) sem ASN próprio — o que limita a redundância.


Configuração de BGP no MikroTik (RouterOS v7)

Sessão eBGP com upstream provider

# Criar template de conexão
/routing bgp template
add as=65001 disabled=no hold-time=3m keepalive-time=1m \
    multihop=no name=template-ebgp \
    router-id=177.X.X.1

# Adicionar peer (uplink)
/routing bgp connection
add as=65001 disabled=no input.filter=filter-in-uplink \
    local.role=ebgp \
    name=peer-uplink1 output.filter=filter-out-uplink \
    remote.address=177.X.X.2/32 remote.as=1234 \
    templates=template-ebgp

Nunca aceite rotas sem filtro. Um uplink que envia uma rota padrão mal anunciada pode desviar todo o tráfego:

/routing filter rule
add chain=filter-in-uplink disabled=no \
    rule="if (bgp-path-len > 20) { reject }"

add chain=filter-in-uplink disabled=no \
    rule="if (dst in 0.0.0.0/8) { reject }"

add chain=filter-in-uplink disabled=no \
    rule="if (dst in 10.0.0.0/8) { reject }"

add chain=filter-in-uplink disabled=no \
    rule="if (dst in 192.168.0.0/16) { reject }"

add chain=filter-in-uplink disabled=no \
    rule="if (dst in 100.64.0.0/10) { reject }"

# Aceitar apenas rotas mais específicas que /24 (bloquear deaggregation excessivo)
add chain=filter-in-uplink disabled=no \
    rule="if (dst-len > 24) { reject }"

add chain=filter-in-uplink disabled=no rule="accept"

Filtro de saída — o que anunciar

# Anunciar apenas seus próprios prefixos
/routing filter rule
add chain=filter-out-uplink disabled=no \
    rule="if (dst == 177.X.0.0/22) { accept }"

add chain=filter-out-uplink disabled=no rule="reject"
# Uplink primário — local preference alto
/routing bgp connection
add as=65001 input.filter=filter-in-uplink \
    local.role=ebgp \
    name=peer-uplink-primary \
    output.filter-chain=filter-out-primary \
    remote.address=177.A.A.2/32 remote.as=1111

# Uplink secundário — local preference menor (backup)
/routing bgp connection
add as=65001 input.filter=filter-in-uplink-backup \
    local.role=ebgp \
    name=peer-uplink-backup \
    output.filter-chain=filter-out-backup \
    remote.address=177.B.B.2/32 remote.as=2222

Peering no IX.br

O IX.br usa uma LAN de peering (fabric) para conectar todos os participantes. Cada membro anuncia suas rotas diretamente para os demais, eliminando o custo de trânsito para esse tráfego.

Vantagens do peering no IX.br

  • Redução de custo: tráfego trocado no IX não é cobrado como trânsito
  • Latência menor: tráfego local fica local (ex: Netflix Brasil → usuário sem sair do país)
  • Redundância: alternativa de rota quando o uplink de trânsito falha

Conexão típica ao IX.br

# Sessão com Route Server do IX.br São Paulo (AS26162)
/routing bgp connection
add as=65001 disabled=no \
    input.filter=filter-in-ixbr \
    local.role=ebgp \
    name=peer-ixbr-rs1 \
    remote.address=187.16.220.1/32 \
    remote.as=26162 \
    templates=template-ebgp

OSPF — Roteamento Interno

O OSPF é usado dentro do próprio AS do provedor para distribuir rotas entre roteadores de borda, de distribuição e de acesso. É o IGP (Interior Gateway Protocol) mais comum em ISPs.

# Configurar OSPF no MikroTik v7
/routing ospf instance
add disabled=no name=ospf-isp router-id=10.0.0.1

/routing ospf area
add disabled=no instance=ospf-isp name=backbone

/routing ospf interface-template
add area=backbone disabled=no interfaces=ether3-core \
    type=ptp cost=10

Redistribuição de rotas conectadas para OSPF

/routing ospf instance
set ospf-isp redistribute=connected

MPLS — Backbone para ISPs de Médio Porte

O MPLS (Multiprotocol Label Switching) é usado por provedores com múltiplos PoPs (Pontos de Presença) para criar backbones eficientes sem expor a topologia interna via BGP.

Quando considerar MPLS

  • Mais de 2 pontos de presença (cidades, bairros)
  • Necessidade de serviços VPLS para clientes corporativos
  • Separação de tráfego (voz, dados, gestão) em LSPs distintos
# Habilitar MPLS no MikroTik
/mpls
set enabled=yes

/mpls ldp
set enabled=yes lsr-id=10.0.0.1 transport-address=10.0.0.1

/mpls ldp interface
add interface=ether3-core
add interface=ether4-pop2

Monitoramento de sessões BGP

# Ver estado de todas as sessões BGP
/routing bgp connection print stats

# Ver prefixos anunciados por peer específico
/routing bgp advertisements print peer=peer-uplink1

# Ver tabela de roteamento BGP
/routing route print where bgp

# Alertas: sessão BGP que caiu (Zabbix)
# Item: net.if.up[bgp.peer.state]
# Trigger: {HOST:bgp.peer.state.last()}<>1 → PROBLEM

Recursos

Precisa configurar BGP no seu provedor? → Consultoria gratuita

On this page