Sistema firewall baseado em netfilter Trabalho de Natureza Profissional para obtenção do Título de Especialista Pedro Ribeiro Departamento de Sistemas de Informação e Comunicações Instituto Politécnico de Lisboa Área Departamental de Engenharia de Electrónica e Telecomunicações e de Computadores Instituto Superior de Engenharia de Lisboa 1
Motivação Limitações do sistema existente Modelo de filtragem inflexível Abuso no conceito de NAT Capacidade efectiva de 500Mbit/s Dependência do chassis (Cat6509) Suporte minimalista de IPv6 Soluções comerciais conhecidas Modelo de funcionamento similar ao existente Custo elevado Demasiado fechadas 2
netfilter O projecto Subsistema do Linux que suporta as funcionalidades de filtragem e manipulação de tráfego Filtragem de pacotes com ou sem estado para IPv4 e IPv6 Todos os tipos comuns de alteração de endereços e portos Arquitectura flexível e extensível Múltiplas API para extensões de terceiros Manutenção activa por comunidade alargada Descendente dos: ipfw (BSD), ipfwadm e ipchains 3
netfilter Arquitectura Tabelas Correspondem às funcionalidades filter Filtragem de tráfego nat Alterações de endereços, portos e identificadores mangle Alterações genéricas de cabeçalhos raw Alteração do comportamento do netfilter Chains Listas de regras Base: INPUT, OUTPUT, FORWARDING, PREROUTING, POSTROUTING Outras definidas pelos utilizadores 4
netfilter xtables-addons: DNETMAP Módulo adicional de suporte de NAT Reutilização do recurso escasso: IPs públicos Associação inequívoca entre endereços internos e externos Registo das associações para imputação de responsabilidades aos utilizadores 12
Implementação Topologia anterior VLAN5 Chassis Cat6500 VLAN1101 FCCN/Internet C7206 ALADDIN FWSM Cat6500 HULK CORE/Redes IPL IPv6 C7206 GADGET Cat4500 STINGRAY 13
Implementação Topologia transitória VLAN5 VLAN6 Chassis Cat6500 VLAN1101 FCCN/Internet C7206 ALADDIN PC/PentiumD ITCHY FWSM Cat6500 HULK CORE/Redes IPL IPv6 C7206 GADGET Cat4500 STINGRAY 14
Implementação Topologia final (entregue) VLAN5 VLAN6 FCCN/Internet C7206 ALADDIN PC/PentiumD ITCHY Cat6500 HULK CORE/Redes IPL C7206 GADGET PC/PentiumD SCRATCHY Cat4500 STINGRAY 15
Implementação Topologia actual VLAN5 DMZ outs1 outs10 FCCN via ORIENTE 10G outs1b ins10 ins1 ins1fw FCCN/Internet FCCN via UTL 1G HP/XeonQuad ITCHY Cat6500 HULK CORE/Redes IPL outs1 outs10 outs1b ins1fw ins1 ins10 HP/XeonQuad SCRATCHY VLAN6 Cat4900M TERRI 16
Implementação Optimizações hardware Selecção de placas de rede com offloading, suporte de MSI e elevada capacidade de barramento (PCIe Lanes) Libertam os CPUs dos cálculos de checksums dos cabeçalhos de rede e transporte Distribuem o atendimento de interrupts pelos CPUs Garantir afinidades interrupt/core para evitar problemas de coerência de cache Garantir distribuição da carga pelos CPUs Parâmetros do BIOS Versões PCIe, VT-d, ciclos de acesso a RAM, etc. Desactivar retro-compatibilidades desnecessárias 17
Implementação Optimizações software Rever toda a parametrização do kernel do Linux Desactivar controladores de hardware não usado Ligar/desligar funcionalidades que contribuam para o desempenho Alocação de memória, offload de DMA, scheduling de I/O Suporte das funcionalidades essenciais previstas Networking, protocolos, módulos do netfilter Aplicar parametrização de sistema adequada aos débitos e volume de dados a processar Buffers de I/O, dimensionamento de estruturas de dados 18
Implementação Optimizações de consumo energético Contemplar suporte de técnicas aplicáveis no kernel CPU clock dinâmico Dispensar ciclos de relógio CPU hotplug Desactivar CPUs desnecessários SATA bus idle HDD pouco usado num sistema destes Dynticks Gestão dinâmica dos timer ticks Esperar aumento de latência e jitter! 19
Implementação Distribuição de carga e disponibilidade Opção por uma abordagem activo-passivo Simplifica relação com equipamentos envolventes Replicação de estado (conntrack) Contemplada mais ainda fora de uso Nenhum dos equipamentos está parado Em operação diária Um dos equipamentos processa IPv4, outro IPv6 20
Custos OSPFv2 IPv4/OSPFv3 IPv6 Implementação Encaminhamento 2 4 1 3 FCCN/Internet C7206 ALADDIN PC/PentiumD ITCHY Cat6500 HULK CORE/Redes IPL 4 2 3 1 C7206 GADGET PC/PentiumD SCRATCHY BGP, OSPFv2 e OSPFv3 usando Quagga Cat4500 STINGRAY 21
Implementação Gestão das regras Separada por tabelas em scripts BASH Scripts Automatizam sincronização entre os 2 sistemas Evitam repor tabelas que não se alteram Garantem a quase atomicidade das alterações Uso de macros para estruturar dados Estruturação em árvore de decisão Minimiza número de avaliações até decisão Tráfego conhecido é tratado nas primeiras regras 22
23
Implementação Tráfego predominante aceite após 3 regras 1 $IPT -A FORWARD -j base_forw 2 $IPT -A base_forw -m conntrack --ctstate INVALID -j DROP 3 $IPT -A base_forw -m conntrack --ctstate \ RELATED,ESTABLISHED,DNAT -j ACCEPT 24
Monitorização Eventos Software Monitorix Regista estado do sistema ao longo do tempo Temperaturas, estado dos CPUs, memória, etc. NAGIOS/NRPE Monitorização geral de sistemas Registo de eventos Local e remoto via SYSLOG/TCP ~2 milhões/dia (500 MB/dia) Já usado para resposta a pedidos de informação do DIAP NTP garante precisão da hora (via OAL/GPS) LLDPd apoia gestão com anúncio L2, incluindo CDP 25
Monitorização Monitorix ITCHY / IPv4 Manutenção! SCRATCHY / IPv6 26
Monitorização Equilíbrio CPUs 27
Monitorização Interrupts 28
Desempenho Sem parar serviços Usando o sistema mais folgado Ligação directa de referência Validação de características Débitos TCP Atraso introduzido e Jitter Impacto no estabelecimento de ligações TCP/HTTP HP DL180 XeonQuad ITCHY Cisco Cat3560E GALACTUS HP DL180 XeonQuad SCRATCHY Cisco Cat6509 HULK Cisco Cat4900M TERRI BACKUP1 ASUS RS120-E3/PA4 BACKUP2 ASUS RS120-E3/PA4 29
Desempenho Legendas dos percursos de tráfego Directo entre BACKUP1 e BACKUP2 Aparece como 12 HP DL180 XeonQuad ITCHY Cisco Cat6509 HULK BACKUP2->TERRI->SCRATCHY-> GALACTUS->BACKUP1 Aparece como 2TSG1 Cisco Cat3560E GALACTUS HP DL180 XeonQuad SCRATCHY Cisco Cat4900M TERRI BACKUP1 ASUS RS120-E3/PA4 BACKUP2 ASUS RS120-E3/PA4 30
HP DL180 XeonQuad ITCHY Cisco Cat6509 HULK Desempenho Débito TCP (DCTCP/IPv6) Cisco Cat3560E GALACTUS BACKUP1 ASUS RS120-E3/PA4 HP DL180 XeonQuad SCRATCHY Congestão CUBIC instável Uso de DCTCP IPv6 ligeiramente pior que IPv4 Inesperado IPv4 mais optimizado? Cisco Cat4900M TERRI BACKUP2 ASUS RS120-E3/PA4 10 9 8 7 6 5 4 3 2 1 0 Equipamentos percorridos pelo tráfego em teste Testes iperf3 de 120s, ignorando os primeiros 10s, com controlo de congestão DCTCP iperf3 -i 0 -t 120 -Z -O 10 -N -C dctcp -c <IP> IPv4 [Gbit/s] IPv6 [Gbit/s] IPv4 NAT [Gbit/s] 31
HP DL180 XeonQuad ITCHY Cisco Cat6509 HULK Desempenho Débito TCP (HP vs ASUS) Cisco Cat3560E GALACTUS BACKUP1 ASUS RS120-E3/PA4 HP DL180 XeonQuad SCRATCHY Ligações directas Cisco Cat4900M TERRI BACKUP2 ASUS RS120-E3/PA4 Wirespeed entre firewalls Máquinas de teste com pior desempenho em RX Hardware/CPU 10 9 8 7 6 5 4 3 2 1 0 Equipamentos percorridos pelo tráfego em teste Testes iperf3 de 120s, ignorando os primeiros 10s, com controlo de congestão DCTCP iperf3 -i 0 -t 120 -Z -O 10 -N -C dctcp -c <IP> IPv4 [Gbit/s] IPv6 [Gbit/s] IPv4 NAT [Gbit/s] 32
HP DL180 XeonQuad ITCHY Cisco Cat6509 HULK Desempenho Débito TCP (N fluxos) Cisco Cat3560E GALACTUS BACKUP1 ASUS RS120-E3/PA4 HP DL180 XeonQuad SCRATCHY Desempenho semelhante Com múltiplas ligações Escala bem Cisco Cat4900M TERRI BACKUP2 ASUS RS120-E3/PA4 Entre directo e via firewall 10 9 8 7 6 5 4 3 2 1 0 Equipamentos percorridos pelo tráfego em teste Testes iperf3 de 120s, ignorando os primeiros 10s, com controlo de congestão DCTCP iperf3 -i 0 -t 120 -Z -O 10 -N -C dctcp -c <IP> IPv4 [Gbit/s] IPv6 [Gbit/s] IPv4 NAT [Gbit/s] 33
HP DL180 XeonQuad ITCHY Cisco Cat6509 HULK Desempenho Débito TCP (NAT) Cisco Cat3560E GALACTUS BACKUP1 ASUS RS120-E3/PA4 HP DL180 XeonQuad SCRATCHY NAT com baixo impacto Inesperado Cisco Cat4900M TERRI BACKUP2 ASUS RS120-E3/PA4 Apoio do hardware das placas Processamento SPI/NAT idêntico a sem NAT 10 9 8 7 6 5 4 3 2 1 0 Equipamentos percorridos pelo tráfego em teste Testes iperf3 de 120s, ignorando os primeiros 10s, com controlo de congestão DCTCP iperf3 -i 0 -t 120 -Z -O 10 -N -C dctcp -c <IP> IPv4 [Gbit/s] IPv6 [Gbit/s] IPv4 NAT [Gbit/s] 34
ref=8809 req/s HP DL180 XeonQuad ITCHY Cisco Cat6509 HULK Desempenho HTTP Cisco Cat3560E GALACTUS HP DL180 XeonQuad SCRATCHY Cisco Cat4900M TERRI 140 120 Acessos HTTP BACKUP1 ASUS RS120-E3/PA4 BACKUP2 ASUS RS120-E3/PA4 100 Baixo impacto no número de pedidos atendidos Limitação nas máquinas de teste Via firewall +0,2µs/ligação NAT irrelevante +0,5µs/ligação 80 60 40 20 0 IPv4/12 IPv6/12 IPv4/1GST2 IPv6/1GST2 NAT/1GST2 Req/s [%] 100 99 100 98 99 Time/req [µs] 113,5 115,1 113,8 115,3 114,3 50 testes ab2 de 2M ligações com 10 em simultâneo, sem keepalive ab -d -S -n 2000000 -c 10 <URL> 35
RTT [µs] HP DL180 XeonQuad ITCHY Cisco Cat6509 HULK Desempenho Latências ICMP Cisco Cat3560E GALACTUS HP DL180 XeonQuad SCRATCHY Cisco Cat4900M TERRI 300 "PING" de 64/68 bytes (IPv4/IPv6 ETH), durante 24h BACKUP1 ASUS RS120-E3/PA4 Semelhante IPv4/IPv6 Esporadicamente com valores elevados >1ms => 23 ppm BACKUP2 ASUS RS120-E3/PA4 Trajecto do firewall adiciona 25~30µs de atraso Aumento significativo do PDV (~Jitter) 250 200 150 100 50 0 MIN AVG MDEV MAX IPv4/12 42 48 7 182 IPv6/12 46 50 6 131 IPv4/1GST2 95 242 133 37343 IPv6/1GST2 107 258 135 35351 Testes PING de 64 bytes (Ethernet), durante cerca de 24h (86400 pedidos a 1/segundo) ping6 -c 86400 -s 12 <IP> ping -c 86400 -s 32 <IP> 36
Evoluções Melhorar tempo de reacção a falhas BGP Dependente do software de encaminhamento Mudar para BIRD? Afinar coalescence para favorecer débito em pacotes/s Dispensar algum tráfego do SPI Rever chains e tirar partido de módulos especializados recentes Validar estabilidade da sincronização de estados e activar Aplicar políticas de QoS Activar suporte de multicast Versão virtualizada para testes 38
408 TB encaminhados (1 ano) 35 TB/mês 1,1 TB/dia 3:1 Rácio inbound/outbound 3:1 Rácio IPv4/IPv6 979 bytes a dimensão média dos pacotes 1,3% dos pacotes descartados Considerados indesejados INv4 55% Conclusões Estatísticas OUTv6 4% OUTv4 20% INv6 21% 39
Conclusões Cumpre a função atribuída Não é factor limitativo do uso da conectividade Impacto do uso de NAT é negligenciável IPv6 com desempenho semelhante a IPv4 Manutenção facilitada pelo uso de dois equipamentos Custo baixo comparativamente a soluções comerciais Elevada flexibilidade Exige gestão por pessoal especializado 40