06 - BGP em Datacenter (RFC 7938)
video: https://youtu.be/... no frontmatter da nota.BGP em Datacenter (RFC 7938)
A RFC 7938, publicada em agosto de 2016 por Edgerschwieger et al., intitulada "Use of BGP for Routing in Large-Scale Data Centers", descreve o uso do protocolo BGP (Border Gateway Protocol) como protocolo de roteamento interno em datacenters de grande escala. Esta abordagem tornou-se o padrão de facto na indústria, adotada por provedores de hiperescala (Google, Microsoft Azure, Facebook/Meta, Amazon AWS) e por soluções comerciais como Cisco Nexus, Arista EOS, Juniper QFX e Cumulus Linux.
Abaixo, detalho o modelo proposto pela RFC 7938, suas motivações, topologia, ASN privados e comparativo com alternativas tradicionais como OSPF.
1. Contexto e Motivação
Datacenters modernos abrigam dezenas a centenas de milhares de servidores. Os protocolos tradicionais de IGP (OSPF, IS-IS) foram projetados para redes enterprise com algumas centenas de roteadores, e apresentam limitações críticas em escala de datacenter:
- OSPF / IS-IS: exigem flooding de LSAs/LSPs em toda a área; em redes com >1000 switches, a convergência degrada drasticamente.
- ECMP limitado: OSPF suporta ECMP por padrão, mas o balanceamento entre múltiplos caminhos de mesmo custo não é uniforme em topologias Clos com 16+ vias.
- Acoplamento L2: muitos designs usam STP/MSTP, que bloqueia links redundantes e cria domínios de broadcast gigantescos.
- Propagação de hosts: a publicação de /32 de servidores em IGP incharia a LSDB.
O BGP resolve esses problemas por ser um protocolo distance-vector com path-vector, altamente escalável (a DFZ global tem ~950 mil rotas) e suportando ECMP nativo para múltiplas rotas de igual custo.
2. Topologia Spine-Leaf (Clos)
A topologia de referência da RFC 7938 é a rede Clos bidimensional (também chamada de spine-leaf), que substitui o modelo tradicional de 3 camadas (core-aggregation-access):
Spine 1 Spine 2 Spine 3 Spine 4
| | | |
+------+----+ +-----+----+ +-----+----+ +-----+----+
| | | | | | | |
Leaf1 Leaf2 Leaf3 Leaf4 LeafN
(ToR) (ToR) (ToR) (ToR) (ToR)
| | | | |
[Servidores] [Servidores] [Servidores] [Servidores] [Servidores]
Características da Topologia Clos
- Cada Leaf (ToR - Top of Rack) conecta-se a todos os Spines.
- Cada Spine conecta-se a todos os Leafs.
- Não há conexão entre Spines ou entre Leafs (sem east-west por trânsito L3).
- Caminhos de qualquer Leaf a qualquer outro: igual a N (número de Spines) — ECMP perfeito.
Cálculo de Portas e Escala
| Spines (N) | Leafs (M) | Portas/Spine | Portas/Leaf (uplinks) | Servidores |
|---|---|---|---|---|
| 4 | 16 | 16 | 4 | 16 × 48 = 768 |
| 6 | 24 | 24 | 6 | 24 × 48 = 1.152 |
| 12 | 48 | 48 | 12 | 48 × 48 = 2.304 |
| 16 | 64 | 64 | 16 | 64 × 48 = 3.072 |
3. BGP como IGP
A RFC 7938 propõe usar BGP (RFC 4271, atualizado pela RFC 4274) como protocolo de roteamento interno, em vez de OSPF/IS-IS. Para isso, usa-se eBGP (external BGP) entre todos os pares Spine-Leaf, mesmo estando dentro do mesmo datacenter administrativo.
Por que eBGP e não iBGP?
- eBGP usa
next-hop-selfimplícito e propaga rotas aprendidas para outros vizinhos sem necessidade de Route Reflector. - iBGP exige full-mesh (N² sessões) ou Route Reflector, adicionando complexidade.
- eBGP permite controle fino por AS-Path e políticas de comunidade (RFC 1997).
- eBGP multipath: habilitado por
maximum-pathsno Cisco/Juniper, oubgp bestpath as-path multipath-relax.
Numeração de ASN por Spine-Leaf
A topologia emprega ASN privados (RFC 6996, faixa 64512-65534 para 16 bits e 4200000000-4294967294 para 32 bits). Existem dois modelos:
- ASN por Spine: cada Spine tem um ASN único; todos os Leafs compartilham um único ASN (modelo spine-leaf clássico). Exige
bgp bestpath as-path multipath-relax. - ASN por Leaf: cada Leaf tem um ASN único (também chamado de modelo ASN-per-node ou 5-stage Clos). Mais escalável, mas consome mais ASN privados.
4. Configuração Típica (Cumulus Linux / FRR)
! Spine 1 (ASN 65001)
router bgp 65001
bgp router-id 10.0.0.1
bgp bestpath as-path multipath-relax
bgp bestpath compare-routerid
neighbor LEAF peer-group
neighbor LEAF remote-as external
neighbor swp1 interface peer-group LEAF
neighbor swp2 interface peer-group LEAF
neighbor swp3 interface peer-group LEAF
neighbor swp4 interface peer-group LEAF
!
address-family ipv4 unicast
network 10.0.0.1/32
neighbor LEAF activate
exit-address-family
!
! Leaf 1 (ASN 65101)
router bgp 65101
bgp router-id 10.0.1.1
bgp bestpath as-path multipath-relax
neighbor SPINE peer-group
neighbor SPINE remote-as external
neighbor swp1 interface peer-group SPINE
neighbor swp2 interface peer-group SPINE
neighbor swp3 interface peer-group SPINE
neighbor swp4 interface peer-group SPINE
!
address-family ipv4 unicast
network 10.0.1.1/32 ! loopback
network 10.10.10.0/24 ! subnet de servidores (VRF ou SVI)
neighbor SPINE activate
exit-address-family
!
5. Comparativo: BGP vs OSPF em Datacenter
| Característica | OSPF / IS-IS | BGP (RFC 7938) |
|---|---|---|
| Tipo | Link-state | Path-vector |
| Convergência | Rápida (<1s com tuning) | Rápida (~1-5s com BFD/timers) |
| Escala (nós) | ~1000 switches | >10.000 switches |
| ECMP | Suporta, mas limitado | Multipath nativo, escala melhor |
| Propagação de /32 de hosts | Incha LSDB | Simples via network statement |
| Políticas | Limitadas (filter-list) | Ricas (route-map, communities) |
| Acoplamento L3/L2 | Conflito com VLANs | Nativo L3-only |
| Tunelamento overlay | Sem suporte nativo | VXLAN EVPN (RFC 8365) |
| Curva de aprendizado | Simples | Maior complexidade |
6. Detecção de Falhas Rápidas
Para alcançar convergência abaixo de 1 segundo, a RFC 7938 recomenda:
- BFD (Bidirectional Forwarding Detection, RFC 5880): detecta falhas de link em <300ms.
- BGP timers reduzidos:
timers bgp 1 3(Keepalive 1s, Holdtime 3s). - BGP Graceful Restart (RFC 4724): mantém forwarding durante reconvergência.
- BGP Add-Path (RFC 7911): propaga múltiplos caminhos, melhorando ECMP.
- Link Failover via carrier-delay / event dampening: proteção contra flaps.
7. Sem Route Reflector
A RFC 7938 não recomenda Route Reflector dentro do underlay de datacenter, pois:
- O design spine-leaf cria full-mesh natural via eBGP — cada Leaf fala diretamente com todos os Spines e vice-versa.
- Route Reflector adicionaria ponto único de falha (a menos que clusterizado) e atraso na propagação.
- Para overlay EVPN (RFC 8365), Route Reflectors são comuns, mas isso é control plane do overlay, não do underlay.
8. Extensão para Super-Spine (5-Stage Clos)
Em datacenters maiores, a topologia expande para 5 estágios (Clos Recursivo), adicionando uma camada de Super-Spines entre Pods:
[Super-Spines]
/ | | \
Pod1 Pod2 Pod3 Pod4
(Spines -> Leafs -> Servidores em cada Pod)
Cada Pod é uma rede Clos 2-stage independente. Os Super-Spines conectam os Spines de cada Pod via eBGP, com ASNs distintos por Pod.
9. Integração com VXLAN EVPN
A RFC 7938 foca no underlay L3. Para prover mobilidade de VMs, multi-tenancy e segmentação L2 sobre IP, usa-se o overlay VXLAN com BGP EVPN (RFC 8365 / RFC 7432):
- VXLAN (RFC 7348): encapsula quadros Ethernet em UDP/4789, permitindo L2 sobre L3.
- BGP EVPN (RFC 7432): família de endereços
l2vpn evpn, propaga MACs e IPs via BGP MP-BGP. - VTEP (VXLAN Tunnel EndPoint): residem nos Leafs, anunciam MACs e IPs aprendidos localmente.
10. Conclusão
A RFC 7938 consolidou uma prática já adotada pela indústria de hiperescala: usar BGP como protocolo de roteamento interno em datacenters com topologia spine-leaf. As vantagens são significativas — escala para dezenas de milhares de nós, ECMP nativo e eficiente, políticas ricas, integração natural com EVPN para overlay L2/L3 — e o custo é uma maior complexidade operacional em comparação a OSPF/IS-IS. Em ambientes modernos de nuvem, BGP tornou-se o underlay universal, complementado por VXLAN EVPN como overlay, formando a base do que se convencionou chamar de IP Fabric ou Datacenter Clos Network.