Topologia de rede e BNG#
Cenário de referência#
Clientes PPPoE ─► BNG Juniper (100.64.0.0/10) ─ filtro PBR-CGNAT ─► VLAN 710 ─► Portgrid ─► VLAN 230 ─► trânsito/IX
- O BNG entrega o tráfego dos assinantes (rede
100.64.0.0/10) ao CGNAT por policy-based routing. - A VLAN 710 liga BNG → CGNAT; a 230 é a saída/retorno. Os números são exemplos: a política aceita qualquer par de VLANs.
- Para qualquer par de VLANs no mesmo enlace físico
enp1s0, deixeCGNAT_NIC_INTERFACES="enp1s0"e informe as subinterfaces na política. - Em PPPoE informe o endereço local usado como gateway.
Filtro PBR no Juniper (modelo)#
Ordem dos termos de PBR-CGNAT:
BYPASS-PARCEIROS(destinos que não devem passar pelo CGNAT);TO-CGNATcomnext-ipdo Portgrid;ACEITA-RESTO.
Tráfego lateral entre clientes
Com PBR, tráfego de um cliente para outro dentro de 100.64.0.0/10 também vai ao CGNAT e sai NATed. Um CPE infectado pode atacar vizinhos assim. Mitigação: um termo antes do TO-CGNAT que descarta (ou isola) origem e destino ambos em 100.64.0.0/10, e/ou isolamento de clientes (client isolation) na L2. Alternativa no Portgrid: lista de bloqueio do IP infectado e limites max_new_flows_per_second/max_sessions_per_subscriber.
Inundação (flood) no switch#
Se o switch esquece o MAC do Portgrid (aging) o tráfego PBR é inundado em toda a VLAN. O cgnatd mantém um L2 keepalive para renovar o MAC periodicamente. Se mesmo assim ocorrer, confira a tabela MAC do switch e o aging time.
MTU e MSS#
PPPoE usa MTU 1492. Para evitar fragmentação: MSS clamp no BNG, e o dataplane traduz o primeiro fragmento e fragmentos seguintes por cache; ICMP "fragmentation needed" de fora é traduzido (PMTUD funciona).
Roteamento no servidor#
- O prefixo público do pool aparece como
/32na loopback (anunciado ao upstream por BGP no roteador de borda, não pelo Portgrid). - Rotas estáticas:
set routing static-route <prefixo> next-hop <ip>. net.ipv4.ip_forward=1é necessário.- Sem NIC com XDP nativo, o desempenho cai drasticamente.