Application Notes: Proteção da CPU e Gerência do DmSwitch Uso das proteções para evitar alto consumo de CPU e memória, bem como acessos à gerência Application Notes: Proteção da CPU e Gerência do DmSwitch Uso das proteções para evitar alto consumo de CPU e memória, bem como acessos à gerência Documento de Uso Público. Compilado em 07/05/2010, Revisão 1.2 Parecer Introdução Protegendo o sistema Pacotes por segundo, unicast Pacotes broadcast e multicast Pacotes com IP Options e DLF Consumo de memória Restrições de acesso à gerência Management Client LOGs de acesso Filtros para bloquear gerência Filtros para bloquear ICMP Comunidades SNMPv2 e Autenticação SNMPv3 Uso de filtros e relação com protocolos de roteamento Configurações recomendadas Equipamentos DmSwitch 3000 Switches em camada L2 Switch-Routers operando em camada 2/3 Equipamentos DM4000 Switches em camada L2 Switch-Routers operando em camada 2/3 Interação entre os modos de proteção Prioridades no encaminhamento pacotes para a CPU Troubleshooting Consumo de CPU e pacotes atingindo o kernel Contadores de filtros Considerações Finais Parecer As recomendações deste documento servem a todos os clientes de DmSwitch, e devem ser aplicadas como forma de mitigar eventuais problemas. Caso os valores apresentados não estejam de acordo com a realidade do cliente, deve-se contatar o Suporte DATACOM para que sejam estudados eventuais ajustes específicos. DATACOM 1 Documento de Uso Público Neste documento, após a apresentação sobre proteções a eventuais problemas no nível Ethernet, serão introduzidos tópicos de controle ao acesso de gerência. Ao término do documento estão disponíveis configurações-padrão planejadas para DmSwitches em diferentes funções da rede. Introdução A natureza das redes de computadores traz a importância da proteção dos elementos que a compõe, de forma a manter o bom funcionamento dela como um todo. Neste documento será introduzido o funcionamento das proteções contra ataques, loops e/ou má configurações em pontos da rede que possam vir a afetar a CPU controladora do DmSwitch. Não serão abordados aspectos de proteção dos hosts conectados ao switch, pois o comutador de pacotes não será afetado mesmo com tráfego wire speed. Dentre as proteções existentes pode-se citar aquelas para mitigar o poder destrutivo do excesso dos seguintes tipos: pacotes direcionados à CPU, por exemplo ICMP PING direcionados a um IP configurado no equipamento; pacotes broadcast em VLANs e portas, tais como ARP REQUEST; pacotes multicast; loops na rede, como pacotes Ethernet repetidos; acessos indevidos à CPU do equipamento, através dos serviços de gerência. Caso tais configurações de proteção não sejam realizadas, o equipamento funcionará normalmente. Todavia, em situações com problemas mais sérios como um loop na rede ou mesmo algum outro evento não desejado, podem ocorrer instabilidades. Entre tais instabilidades, são reconhecidas: queda de serviços; desconexão lógica de placas do chassis; perda de tráfego por reprogramação de interfaces. Portanto é recomendado a utilização dos valores indicados pela DATACOM na configuração dos parâmetros explicados ao longo deste documento. Serão abordados os seguintes comandos: cpu-dos-protection; meter e filter para tráfego broadcast; meter e filter para tráfego multicast; terminal timeout; filtros de hardware. Este documento está voltado para a linha DmSwitch, mais especificamente nos seguintes modelos: Dm3000 3224F1; 3224F2; 3224F3; 3324F1; DATACOM 2 Documento de Uso Público 3324F2; 3324F3; DM4000 (Dm4001, Dm4004, Dm4008) Gerencia: MPU192; Placas de interface: ETH12GX; ETH24GX; ETH12GX+1x10GX; ETH2x10GX; ETH24GT; ETH48GT. Protegendo o sistema O mecanismo de proteção é bastante sofisticado, porém pode ser explicado com a seguinte simplificação: o comutador encaminhará os pacotes para a CPU assim que estes chegam, porém até um determinado limiar; após, esses serão descartados a fim de evitar que o tempo de processamento seja tomado pelos eventos externos. Por existir uma significativa parcela de pacotes importantes para o switch dentre o grande fluxo sendo recebido, os valores configurados não devem estar abaixo de um valor indicado. Caso estejam, comportamentos indesejados podem ocorrer. Pacotes por segundo, unicast O parâmetro que controla o número de pacotes por segundo que será encaminhado à CPU ativa do equipamento é o cpu-dos-protection rate-limit e aceita como entrada valores entre 1, para apenas 1 pacote por segundo, até 2 bilhões de pacotes por segundo. Valores considerados ideais seguem pela tabela a seguir. Equipamento Valor para cpu-dos-protection DmSwitch 3000 L2 150 DmSwitch 3000 L3 180 DmSwitch 4001 (L2/L3) 350 DmSwitch 4004 com MPU 192 (L2/L3) 750 DATACOM 3 Documento de Uso Público Pacotes broadcast e multicast Os pacotes broadcast naturalmente são encaminhados a todos os elementos pertencentes à VLAN que foram enviados, inclusive a CPU do switch quando este contiver algum endereço IP nesta VLAN. Mesmo os switches Layer 2, que não fazem roteamento IP, recebem estes pacotes pois é como aprendem os respectivos endereços MAC que estão comunicando. Para evitar que um número abusivo de pacotes broadcast possa influenciar o comportamento, são criadas regras para limitar a ação destes. Primeiramente, um meter é criado. Nele é configurado um limite em razão de kilo bits por segundo, e um limite de rajada para os momentos que muitos pacotes chegam simultaneamente. meter new remark Broadcast_CPU rate-limit **LIMITE ORDINÁRIO** burst **LIMITE POR RAJADA** Será criado um contador especial. A CLI informará um número, por exemplo: Meter 1 created. Com este número será criado o filtro para bloquear o tráfego broadcast. Para o DmSwitch 3000, a sintaxe é: filter new action permit out-action deny match destination-mac host FF-FF-FF-FF-FF-FF match vlan **VLAN DESEJADA** meter 1 No DM4000, a sintaxe possui pequenas diferenças: filter new action red-deny match destination-mac host FF-FF-FF-FF-FF-FF match vlan **VLAN DESEJADA** meter 1 O novo filtro criado fará o comutador descartar quando o tráfego com destino ao MAC especial FF-FF-FF-FF-FF-FF, destino único dos pacotes broadcast, ultrapassar os limites estipulados pelo meter. Recomenda-se utilizar em todas as portas das VLANs que tenham um IP, inclusive em port-channels. Mesmo para o caso onde existam muitas VLANs com IP, recomenda-se colocar a opção match vlan para cada uma das VLANs, evitando que o comutador aja em VLANs em que seja necessário alto tráfego broadcast, como numa VLAN de algum cliente que tenha esta necessidade. Em especial, recomenda-se o uso de filtros nas VLANs com endereços IP. NOTA IMPORTANTE: caso exista alguma VLAN (com IP) não protegida por estes filtros, não será possível garantir que o elemento esteja protegido. É muito importante configurar estas proteções em todas as VLANs criadas e com IP atribuído. Pode-se também utilizar a opção de range de VLANs num mesmo filtro. No caso de redes que utilizem multicast, é importante o controle destes protocolo que podem afetar a CPU, se houver algum excesso. O procedimento é basicamente o mesmo realizado para o broadcast, apenas com alterações no endereço MAC a ser conferido pelo filtro. DATACOM 4 Documento de Uso Público meter new remark Multicast_CPU rate-limit **LIMITE ORDINÁRIO** burst **LIMITE POR RAJADA** Será criado um contador especial. A CLI informará um número, por exemplo: Meter 2 created. Com este número será criado o filtro para bloquear o tráfego multicast. Sintaxe para o DmSwitch3000: filter new action permit out-action deny match destination-mac 01-00-00-00-00-00 01-00-00-00-00-00 match vlan **VLAN DESEJADA** meter 2 priority 7 Sintaxe para o DM4000: filter new action red-deny match destination-mac 01-00-00-00-00-00 01-00-00-00-00-00 match vlan **VLAN DESEJADA** meter 2 priority 7 Uma diferença importante no comando do multicast em relação ao do broadcast é o uso de máscara no destination-mac: todos endereços MAC que começando com 01 são de multicast, por isso o uso da máscara 01-00-00-00-00-00. Maiores informações sobre os endereços MAC de uso especial está disponível na RFC 5342. Os limites acima citados dependem da capacidade de cada equipamento. Abaixo é apresentada uma tabela com indicações destes valores, conforme testes internos na DATACOM. Equipamento Limite ordinário Limite por rajada DmSwitch 3000 L2 128 128 DmSwitch 3000 L3 128 128 DmSwitch 4001 128 128 DmSwitch 4004 com MPU 192 128 128 IMPORTANTE: não é necessário criar outro meter para cada nova VLAN a ser protegida contra excessos de Broadcast/Multicast. É importante que exista apenas um meter para cada tipo de tráfego, e que os filtros estejam devidamente configurados. A criação de mais meters fará com que a CPU possa receber mais pacotes do que o desejado para estes tipos de tráfego. Ou seja, deve-se usar o mesmo meter como parâmetro em todos os filtros com mesmo intuito. Pacotes com IP Options e DLF Na arquitetura de comutação utilizada nas famílias DmSwitch 3000 e DM4000 é previsto que certos tipos de pacotes sejam sempre encaminhados para análise na CPU, para que possam ser tratados de formas diferenciadas. Algumas RFCs, inclusive, trazem este aspecto como algo desejável (vide RFC 2113 - IP Router Alert Option e RFC 2711 - IPv6 Router Alert Option). DATACOM 5 Documento de Uso Público Porém nem todas as topologias possuem os mesmos requisitos, sejam por questões de desempenho ou de segurança. Alguns documentos propostos (vide draft-rahman-rtg-router-alert-dangerous-00) chegam a recomendar que estas RFC citadas acima sejam desconsideradas e obsoletadas. Dentro da gama de opções da família DmSwitch, a partir do release 7.8.2, é possível configurar se o switch deve ou não receber pacotes que requisitarem análise no chamado slow path, ou seja, a CPU. Tais opções estão disponíveis apenas quando o equipamento não será utilizado para Roteamento IP, pois ao habilitar a opção ip routing é necessário o recebimento dos pacotes para uma série de verificações. São disponibilizadas duas opções: cpu-dos-protection block l3-hdr-err : bloqueia os pacotes que seriam encaminhados à CPU por questões de cabeçalho IP (l3 header), bem como pacotes IP com erro (p. ex. TTL expirado); cpu-dos-protection block dlf : bloqueia o recebimento de DLF na CPU, quando pacotes unicast que não possuem um MAC destino conhecido são replicados para todas as portas. O DLF continua sendo encaminhado para as portas, não substitui o storm-control unicast. Abaixo a lista não-extensiva dos pacotes bloqueados quando a opção de l3-hdr-err está ativa. Sem habilitar esta opção no equipamento, eles podem ser encaminhados mesmo sem a VLAN possuir IP configurado. IP Options habilitadas, tais como IP Router Alert; destino IP e/ou MAC multicast com qualquer opção no cabeçalho IP; IP TTL expirado; HSRP (Hot Standby Router Protocol, RFC 2281); IGMP; Quando o pacote possuir como destino o IP e/ou MAC da CPU, ele continuará sendo encaminhado normalmente. Desta forma a gerência e demais usos possíveis continuam sendo viáveis. Pacotes broadcast e multicast também são encaminhados se a VLAN possuir IP. Consumo de memória Não é propriamente uma questão referente a pacotes externos, como as apresentadas anteriormente, o consumo elevado de memória também pode levar a instabilidades. Para evitar este problema a recomendação é habilitar a desconexão por tempo sem resposta nos terminais de configuração. terminal timeout TEMPO_EM_SEGUNDOS Com este parâmetro de configuração, após o usuário que estiver conectado à interface de gerência do switch ficar vários segundos sem nenhuma nova ação, ele será desconectado. Isso é muito importante quando, por exemplo, um usuário conectado via telnet deixa sua sessão aberta por tempo indefinido. Dado o número de usuários conectados via telnet, SSH, WEB, ou mesmo o uso do DmView, há um certo consumo de memória. O terminal timeout traz a confiança de que este consumo não seja aumentado por clientes inativos. DATACOM 6 Documento de Uso Público Este recurso está habilitado por padrão desde a versão 5.6 no DmSwitch 3000 e em todas as versões de firmware do DmSwitch 4000, este comando já vem habilitado. O valor default usado é de 360 segundos e isto pode ser verificado com o comando abaixo: show terminal Restrições de acesso à gerência Outra preocupação importante para equipamentos de rede está relacionada a restrições de acesso à gerência. É necessário limitar quem pode gerenciar o equipamento para minimizar as chances de um não-autorizado conectar-se e alterar propriedades da rede. Abaixo estão apresentadas algumas das proteções existentes no DmSwitch e o uso destas. Management Client Para isso, o DmSwitch implementa as listas de management, onde são informados quais IPs (tanto hosts ou redes) possuem acesso a cada um dos serviços de gerência existentes. DmSwitch#config DmSwitch(config)#management all-client Add IP addresses http-client Add IP addresses snmp-client Add IP addresses ssh-client Add IP addresses telnet-client Add IP addresses to to to to to SNMP, SSH, HTTP and Telnet groups the HTTP group the SNMP group the SSH group the Telnet group DmSwitch(config)# O controle dos usuários gerenciadores é realizado através deste comando. A lista é inicialmente vazia, significando que os acessos são permitidos de quaisquer endereços IP. Ao adicionar uma entrada na lista, automaticamente bloqueiam-se todos os acessos de outros endereços. Logo, a primeira entrada a ser adicionada é aquela de onde se está gerenciando no momento. Por exemplo, caso esteja gerenciando via SSH a partir do IP 192.168.0.2, a primeira liberação deve ser para este IP ou rede (assumindo uma rede /24): DmSwitch(config)#management ssh-client 192.168.0.2/24 DmSwitch(config)#show management ssh-client Management IP filter: SSH client: 192.168.0.2/24 Os acessos para outros serviços não foram bloqueados neste caso, pois foi alterado apenas o que diz respeito aos acessos SSH. Para alterar o acesso de todos os serviços com uma única entrada, utiliza-se a opção all-client. DATACOM 7 Documento de Uso Público Caso não tenha certeza de qual IP está utilizando para acessar o equipamento, o comando show managers mostra os usuários conectados. DmSwitch(config)#show managers User on CLI admin Uptime 00:23:03 Process ID 9639 Origin 192.168.0.2 Uma sugestão para casos onde não se tem certeza de que o acesso será liberado corretamente é programar um reboot e então cancelar caso o acesso esteja correto após o comando. Para programar um reboot em 3 minutos DmSwitch#reboot in minutes 3 Reboot scheduled for 14:37:00 (hh:mm:ss) Visualizando quanto tempo falta para o reboot DmSwitch#show reboot 14:33:06: Rebooting in 3m54s (scheduled for 14:37:00) Cancelando DmSwitch#reboot cancel Scheduled reboot canceled! DmSwitch#show reboot 14:35:04: No reboots scheduled Para remover uma entrada de lista de gerenciadores, o comando está dentro da lógica de configuração do DmSwitch: basta configurar um no. DmSwitch#configure DmSwitch(config)#no management ssh-client 10.3.3.1/32 DmSwitch(config)# Lembrando sempre que se não houver nenhuma entrada configurada, o acesso é liberado para qualquer tentativa. Caso exista ao menos uma entrada, somente as listadas são permitidas. A liberação e/ou bloqueio de acesso é realizado antes mesmo do aparecimento do banner de conexão. No entanto, é fortemente recomendada a utilização de servidores TACACS+ ou RADIUS para autenticação. Por estarem fora do escopo deste documento as configurações destes serviços não serão apresentados. LOGs de acesso Independentemente das configurações de controle à gerência, os logs permitem a realização de uma pré-auditoria nos acessos ao equipamento. DmSwitch#show log ram | include \(Session\)\|\(User\) Jul 25 14:00:55 DmSwitch : <5> User admin authenticated by tacacs Jul 25 14:00:56 DmSwitch : <5> Session opened from 192.168.0.2, user admin2, Process ID 9639 DmSwitch# DATACOM 8 Documento de Uso Público Nestas linhas verifica-se o horário do evento, conforme o relógio interno do sistema (Jul 25 14:00:56), o usuário conectado (admin2), o serviço autenticador (tacacs), o IP de origem (192.168.0.2), e o Process ID que o login criou no Sistema Operacional do switch. Filtros para bloquear gerência O bloqueio anteriormente citado, chamado management client, é realizado já no nível do Sistema Operacional rodando na CPU do switch. Em casos como equipamentos ligados com IP de Internet, isso pode não ser tão eficaz quanto necessário. Quando falado em eficácia de bloqueio, refere-se não ao sentido de segurança, pois os acessos serão bloqueados, mas sim de desempenho. Por ser tratado via software na CPU, cria-se um vetor de DoS (Denial Of Service), ao passo que um atacante que consiga gerar muitos acessos inválidos em pouco tempo (milhares em poucos segundos) pode levar a uma elevação no consumo do processador. Para proteger os equipamentos diretamente na Internet, recomendamos a utilização de filtros controlados por hardware. Estes filtros agirão em conjunto com o management client, porém em um nível anterior que é o hardware. No entanto estes filtros não devem ser vistos como substituição completa à proteção do management client que pode ser importante numa rede de gerência, liberando acesso apenas a alguns equipamentos. A idéia deste filtro é bloquear acessos ao IP do switch quando esses são originados de locais desconhecidos ao administrador. Como no exemplo abaixo para DmSwitch 3000, serão bloqueados quaisquer acessos que não sejam originados da rede 192.168.0.0/16. filter new action permit match source-ip 192.168.0.0 255.255.0.0 match destination-ip host 192.168.0.1 priority 10 filter new action deny match destination-ip host 192.168.0.1 priority 9 Caso seja necessário liberar o acesso de outra rede, basta adicionar a entrada de permit. A entrada de deny necessita ser adicionada somente uma vez, para efetivamente bloquear. Reparar que a prioridade do filtro permit foi configurada como maior do que a do deny. Esta é a forma de demonstrar ao hardware qual a intenção (liberar os listados, descartar os demais). Adicionando acesso da rede 10.3.3.0/24 para o switch. filter new action permit match source-ip 10.3.3.0 255.255.255.0 match destination-ip host 192.168.0.1 priority 10 Se for necessário bloquear algum outro IP pertencente à alguma VLAN, insira outra regra de deny. Por exemplo, se o switch também possuir o IP 200.200.200.1. filter new action deny match destination-ip host 200.200.200.1 priority 9 OBSERVAÇÃO: estas regras evitam o acesso à qualquer serviço ou protocolo do switch. Tarefas como ping (ICMP), traceroute (ICMP, UDP) ou mesmo protocolos de roteamento como BGP poderão deixar de funcionar se estas regras não estiverem devidamente configuradas. DATACOM 9 Documento de Uso Público Caso necessite liberar o acesso de um roteador BGP, basta configurar o filtro corretamente. Considerando um peer com IP 200.200.200.2 comunicando com o switch no IP 200.200.200.1. filter new action permit match source-ip host 200.200.200.2 match destination-ip host 200.200.200.1 priority 11 Importante observar também que as prioridades, por serem configuradas diretamente no hardware, possuem uma limitação quanto aos match realizados. Não é possível ter dois filtros com match que analisem bits diferentes em uma mesma prioridade. Os exemplos assim podem ser representados na tabela abaixo: Prioridade Bits analisados (conforme os exemplos anteriores) 9 Destination IP, todos os bits do host 10 Primeiros 24 bits do Source IP, e todos bits do Destination IP 11 Todos bits do Source IP, todos bits do Destination IP Por isso não será possível "compartilhar" uma prioridade com filtros que analisem outros bits. Caso seja necessária uma regra nova, ela deve ser colocada em outra posição dos filtros. Lembrando sempre que a prioridade mais alta é sempre a mais importante, e que todos os matches devem ser respeitados para a regra agir (via um AND lógico). Para questões de economia e simplicidade, regras que analisem os mesmos bits devem ser colocadas na mesma prioridade. Não importa se alguma regra de mesma prioridade seja deny e outra seja permit, por exemplo. Filtros para bloquear ICMP Mesmo não sendo recomendado filtrar os pacotes ICMP, por ser uma peça importante para troubleshooting e manutenção de redes bem como utilizado para descobrimento de MTU fim-a-fim (Discover Path MTU), alguns administradores necessitam bloqueá-lo. O modo correto é configurar um filtro e limitar o envio de ICMP, como abaixo. filter new action deny match protocol icmp Caso deseje-se bloquear apenas para uma determinada rede, a sintaxe é ligeiramente diferente. Como, por exemplo, bloquear ICMP com destino à rede 192.168.0.0/16. filter new action deny match protocol icmp match destination-ip 192.168.0.0 255.255.0.0 DATACOM 10 Documento de Uso Público Comunidades SNMPv2 e Autenticação SNMPv3 SNMP, Simple Network Managament Protocol, é muito mais do que o nome sugere. Além das famosas MIB de visualização de informações, é possível inclusive realizar operações através de OID específicos. Ações tão poderosas tais como reiniciar o equipamento desejado. A configuração padrão do switch vem com as comunidades public para leitura e private para leitura-escrita. Recomenda-se que estas sejam alteradas para nomes únicos, tais como uma senha. DmSwitch#configure DmSwitch(config)#ip snmp-server community naoPublic ro DmSwitch(config)#ip snmp-server community naoPrivate rw Também é recomendado o uso, quando possível, do SNMP v3. Por ser uma revisão muito segura, ela é considerada por alguns como "pesada". A configuração requer um usuário, suas permissões, uma algoritmo e uma senha de autenticação, e um algoritmo e uma senha de privacidade. Por exemplo, criando um usuário somente-leitura chamado usuario com autenticação MD5 senhaAuth e privacidade AES com senha senhaPrivacy, ficaria da seguinte forma. ip snmp-server user usuario ro md5 senhaAuth aes senhaPrivacy O acesso de um cliente como Net-SNMP para estas informações seria como o abaixo. snmpwalk -l authPriv -v 3 -u usuario -a MD5 -A"senhaAuth" -x AES -X"senhaPrivacy" 192.168.0.1 Uso de filtros e relação com protocolos de roteamento Conforme relatado na seção Filtros para bloquear gerência, os filtros são implementados no hardware e por isso podem afetar o funcionamento de protocolos. Os filtros referenciados neste documento não devem afetar os protocolos de Camada 2 (pois estes trabalham em uma faixa de MACs específicos), porém podem influenciar nos protocolos de roteamento (Camada 3, IP). Nessa mesma seção referenciada foi apresentado que o BGP deve ser explicitamente liberado caso se limite o acesso à gerência via filtros. O BGP trabalha estabelecendo uma sessão TCP entre os roteadores, logo se o filtro bloquear a comunicação IP entre os dois elementos, o protocolo nunca sairá do estado "Idle/Active". A correção foi mencionada anteriormente. Protocolos como RIP e OSPF, por sua vez, agem por meio de pacotes multicast. Um dos primeiros filtros apresentados neste documento é exatamente para controle destes pacotes. Através de testes específicos realizados pela DATACOM, verificamos que o aprendizado das rotas não é prejudicado com os limites informados neste documento. DATACOM 11 Documento de Uso Público Exemplo de teste Tempo de aprendizado e encaminhamento de tráfego (menor; média; máximo em para 10 execuções) Configuração mínima, sem filtros nem CPU-DoS-Protection 1054.273; 2203.625; 3088.574 Configuração mínima, sem filtros, com CPU-DoS-Protection 180 1818.018; 1911.882; 2033.518 Configuração com 2 meters para 4 filtros (2 filtros por VLAN), sem CPU-DoS-Protection 1835.32; 2647.131; 3180.46 Configuração com 2 meters para 4 filtros (2 filtros por VLAN) e CPU-DoS-Protection 180 1841.206; 2354.475; 3062.217 Na tabela acima é verificado que sem proteções obtêm-se os melhores tempos. No entanto, ativando proteções o tempo ainda continua aceitável. Em todos os testes foi comprovado que a rede OSPF convergia completamente, sempre sem problemas. Logo, o trade-off da solução traz tranquilidade na sua implementação, pois não ocorrem prejuízos na utilização de filtros de hardware. Configurações recomendadas Ao longo deste documento são apresentadas diversas configurações e suas explicações. Um resumo mais direto para alguns casos comuns de utilização do DmSwitch estão apresentados a seguir. Cada modelo de equipamento está listado em uma subseção. Ilustra-se a topologia explicando a diferença entre as camadas L2 e L3 na figura abaixo. Um roteador encaminha pacotes de uma rede para a outra, enquanto o comutador (switch) apenas encaminha pacotes dentro da mesma rede. DATACOM 12 Documento de Uso Público Equipamentos DmSwitch 3000 Exemplos para DmSwitch 3000 seguem a seguir. Switches em camada L2 Um equipamento L2 deve limitar seus acessos à gerência, e controlar os fluxos de possíveis loops em suas VLANs com IP. Limitar o tempo do terminal também é uma boa prática. configure ! cpu-dos-protection rate-limit 150 cpu-dos-protection block dlf cpu-dos-protection block l3-hdr-err ! management all-client **IP REDE GERENCIADORES** ! meter new remark Broadcast_CPU rate-limit 128 burst 128 meter new remark Multicast_CPU rate-limit 128 burst 128 ! DATACOM 13 Documento de Uso Público filter new action permit out-action deny match destination-mac host FF-FF-FF-FF-FF-FF vlan **VLAN DESEJADA** meter 1 filter new action permit out-action deny match destination-mac 01-00-00-00-00-00 01-00-00-00-00-00 vlan **VLAN DESEJADA** meter 2 ! terminal timeout 600 ! end Switch-Routers operando em camada 2/3 Roteadores L3 estão, em muitos casos, acessíveis na Internet. Devem então estar filtrando em hardware acessos à sua gerência, bem como utilizar o CPU-DoS-Protection para mitigar problemas de CPU quando muitos pacotes são destinados à ela. Equipamentos mistos necessitam atenção especial, por apresentarem os requisitos dos dois modelos. configure ! cpu-dos-protection rate-limit 180 ! meter new remark Broadcast_CPU rate-limit 128 burst 128 meter new remark Multicast_CPU rate-limit 128 burst 128 ! filter new action permit out-action deny match destination-mac host FF-FF-FF-FF-FF-FF vlan **VLAN DESEJADA** meter 1 filter new action permit out-action deny match destination-mac 01-00-00-00-00-00 01-00-00-00-00-00 vlan **VLAN DESEJADA** meter 2 ! management all-client **IP REDE GERENCIADORES** ! ! ! Filtro abaixo, para cada rede gerenciadora e para cada IP que se desejar ! permitir gerência da caixa. ! filter new action permit match source-ip **IP REDE GERENCIADORES** **MÁSCARA DA REDE DOS GERENCIADORES, EM NOTAÇÃO DECIMAL COM PONTOS (255.255.255.)** match destination-ip host **IP GERÊNCIA** priority 8 ! ! Filtro abaixo, para quantos IPs existirem. ! filter new action deny match destination-ip host **IP GERÊNCIA** priority 7 ! ip snmp-server community **COMUNIDADE SOMENTE-LEITURA** ro ip snmp-server community **COMUNIDADE ESCRITA-LEITURA** rw ! terminal timeout 600 ! end DATACOM 14 Documento de Uso Público Caso existam várias VLANS com endereços IP, é importante que todos estes IPs estejam cadastrados nos filtros. Cada filtro que estiver olhando os mesmos BITS pode compartilhar a mesma PRIORIDADE. Vide tabela na seção Filtros para bloquear gerência, onde também encontram-se exemplos mais detalhados. Equipamentos DM4000 A família DM4000 possui pequenas diferenças nos seus filtros, que são demonstrados abaixo. Switches em camada L2 Um equipamento L2 deve limitar seus acessos à gerência, e controlar os fluxos de possíveis loops em suas VLANs com IP. Limitar o tempo do terminal também é uma boa prática. configure ! cpu-dos-protection block dlf cpu-dos-protection block l3-hdr-err ! DM4001: cpu-dos-protection rate-limit 350 ! DM4004: cpu-dos-protection rate-limit 750 ! management all-client **IP REDE GERENCIADORES** ! meter new remark Broadcast_CPU rate-limit 128 burst 128 meter new remark Multicast_CPU rate-limit 128 burst 128 ! filter new action red-deny match destination-mac host FF-FF-FF-FF-FF-FF match vlan **VLAN DESEJADA** meter 1 filter new action permit out-action deny match destination-mac 01-00-00-00-00-00 01-00-00-00-00-00 vlan **VLAN DESEJADA** meter 2 ! terminal timeout 600 ! end Switch-Routers operando em camada 2/3 Roteadores L3 estão, em muitos casos, acessíveis na Internet. Devem então estar filtrando em hardware acessos à sua gerência, bem como utilizar o CPU-DoS-Protection para mitigar problemas de CPU quando muitos pacotes são destinados à ela. Equipamentos mistos necessitam atenção especial, por apresentarem os requisitos dos dois modelos. configure ! ! DM4001: cpu-dos-protection rate-limit 350 ! DM4004: cpu-dos-protection rate-limit 750 ! management all-client **IP REDE GERENCIADORES** DATACOM 15 Documento de Uso Público ! meter new remark Broadcast_CPU rate-limit 128 burst 128 meter new remark Multicast_CPU rate-limit 128 burst 128 ! filter new action red-deny match destination-mac host FF-FF-FF-FF-FF-FF match vlan **VLAN DESEJADA** meter 1 filter new action permit out-action deny match destination-mac 01-00-00-00-00-00 01-00-00-00-00-00 vlan **VLAN DESEJADA** meter 2 ! management all-client **IP REDE GERENCIADORES** ! ! ! Filtro abaixo, para cada rede gerenciadora e para cada IP que se desejar ! permitir gerência da caixa. ! filter new action permit match source-ip **IP REDE GERENCIADORES** **MÁSCARA DA REDE DOS GERENCIADORES, EM NOTAÇÃO DECIMAL COM PONTOS (255.255.255.)** match destination-ip host **IP GERÊNCIA** priority 8 ! ! Filtro abaixo, para quantos IPs existirem. ! filter new action red-deny match destination-ip host **IP GERÊNCIA** priority 7 ! ip snmp-server community **COMUNIDADE SOMENTE-LEITURA** ro ip snmp-server community **COMUNIDADE ESCRITA-LEITURA** rw ! terminal timeout 600 ! end Caso existam várias VLANS com endereços IP, é importante que todos estes IPs estejam cadastrados nos filtros. Cada filtro que estiver olhando os mesmos BITS pode compartilhar a mesma PRIORIDADE. Vide tabela na seção Filtros para bloquear gerência, onde também encontram-se exemplos mais detalhados. Interação entre os modos de proteção Algumas notas são necessárias sobre a interação entre os modos de proteção disponíveis na família DmSwitch. Em especial, sobre o uso de filtros e cpu-dos-protection. Ao longo do documento foram demonstrados usos destas duas ferramentas, porém um leitor poderia perguntar-se, por quê não utilizar somente uma das proteções? Por quê um método não é eficaz sem o apoio do outro? Ambos métodos são eficazes individualmente, porém o uso em conjunto trata cobre uma gama maior de eventos. Enquanto a cpu-dos-protection evita que muitos pacotes cheguem à CPU, sobrecarregando os processos de tratamento de mensagens, os filtros de broadcast e multicast evitam que mensagens importantes de controle (exemplo são protocolos L2, STP, EAPS) sejam enfileiradas concorrendo com tratamentos secundários (ARP para hosts desconhecidos, por exemplo). DATACOM 16 Documento de Uso Público Existem outros controladores, não relacionados com a gerência, como por exemplo o storm-control nas interfaces. O storm-control limita os seguintes tráfegos: broadcast; multicast; unicast para MACs destino desconhecidos. Ressaltamos que este controle é por interface, independente de VLAN e para todos os dados que estiverem trafegando por este meio. Logo, valores muito baixos para o controle afetarão diretamente o funcionamento das VLANs ali comunicando. Por padrão, o storm-control vem habilitado e com um limite de 500 pacotes por segundo. Para alterar, deve-se entrar na interface e ajustar individualmente cada um dos limitadores. O bloqueio de pacotes l3 header error e DLF para equipamentos L2 é ativado opcionalmente, não vindo por padrão para manter compatibilidade com o comportamento anterior à versão 7.8.2. Cada topologia requer uma análise do impacto para ativar esta configuração, devendo ser realizada com o devido cuidado para evitar interrupções no serviço disponibilizado. Prioridades no encaminhamento pacotes para a CPU Redes com controle de QoS, e ajustes nas filas disponibilizadas para cada tipo de tráfego, são beneficiadas por uma técnica de controle na prioridade dos pacotes do comutador para a CPU. Esta técnica, cpu protocol priority, é suportada em toda família DmSwitch. DmSwitch#show cpu protocol priority CPU Protocols Priorities: L2-protocol: Unknown: Tunnel: Default: 7 7 5 7 Os pacotes são divididos em quatro grupos, acima listados. Eles significam, respectivamente, pacotes de: controle L2 (i.e., STP, EAPS); origem/destino desconhecido (i.e., Destination Lookup Failure, L3 para host não na hosts-table); tunelamento/tunelados; tráfego padrão. O número ao lado do grupo representa qual fila 802.1P que será atribuida no campo CoS do pacote quando este for enviado para a CPU. Caso esta informação de CoS tenha sido modificada na topologia geral da rede, em casos onde filas específicas estão configuradas para certos serviços, a alteração é através do menu de configuração. DATACOM 17 Documento de Uso Público DmSwitch(config)#cpu protocol priority l2-protocol Configure priority to l2 protocols packets unknown Configure priority to unknown source/destination packets tunnel Configure priority to tunneled packets default Configure the default packet priority Pacotes IP da gerência são considerados tráfego default nesta tabela. Esta informação não altera o comportamento de pacotes que não tenham como origem ou destino a CPU. Troubleshooting Eventualmente pode-se fazer necessário o uso de técnicas para Troubleshooting, de forma a compreender melhor o comportamento da rede. Dentre as técnicas disponíveis, estão as visualizações do consumo de CPU e dos logs. Outras visualizações, como os contadores dos pacotes alcançando a CPU ou mesmo contadores individuais por filtro, também estão disponíveis. Primeiramente, é proposto um hipotético cenário onde o equipamento está sob um ataque de flood originado na Internet. Isso pode ser inicialmente verificado caso encontre-se lentidão na gerência do mesmo ou através de sistemas de monitoramento. Consumo de CPU e pacotes atingindo o kernel Verificando o comando show cpu usage, vemos o consumo da CPU. DmSwitch#show cpu usage (STATUS: S=sleeping R=running W=waiting) CPU TOTAL USAGE: PID 200 215 195 232 216 193 228 208 196 201 197 ... PROCESS rx_pkt TX l2_shadow.0 io_status RX interrupt cpu_monitor l3_arp counter.0 linkscan.0 tx_pkt STATUS R S S S S S R S S S S 5Sec 92.88 %CPU 1Min 99.41 5Min 40.23 49.06 14.98 6.18 5.99 4.49 3.56 3.56 1.69 1.50 1.31 0.56 57.81 17.29 4.57 0.96 5.19 4.57 3.21 1.21 1.88 1.36 0.56 16.70 4.85 5.03 1.02 1.53 1.41 3.20 1.01 1.86 1.22 0.35 O consumo está elevado, maior do que o limear de 90\%. Através dos logs, investiga-se se este evento é recente e intermitente. DATACOM 18 Documento de Uso Público DmSwitch#show log ram tail Jul 30 11:54:21 DmSwitch : Jul 30 11:54:21 DmSwitch : Jul 30 11:54:39 DmSwitch : Jul 30 11:54:42 DmSwitch : Jul 30 12:01:52 DmSwitch : Jul 30 12:02:39 DmSwitch : Jul 30 12:03:14 DmSwitch : Jul 30 12:03:22 DmSwitch : Jul 30 12:03:31 DmSwitch : Jul 30 12:04:35 DmSwitch : DmSwitch# <5> <5> <5> <5> <5> <5> <2> <5> <5> <2> Interface Interface Interface Interface Interface Interface CPU usage Interface Interface CPU usage Ethernet Ethernet Ethernet Ethernet Ethernet Ethernet > 90.00% Ethernet Ethernet < 90.00% 1/22 changed state to up 1/22 changed state to down 1/1 changed state to up 1/22 changed state to up 1/1 changed state to down 1/22 changed state to down (rx_pkt 59.96%; TX 16.39%; RX 6.33%) 1/1 changed state to up 1/22 changed state to up No log constam vários eventos, que podem ser importantes para o caso ou não. Os eventos nas portas 1/1 e 1/22 não importam para o consumo de CPU pelo processo rx_pkt, que durou cerca de 81 segundos (entre 12:03:14 e 12:04:34). O processo rx_pkt, como o nome já explica, trata do recebimento de pacotes pelo kernel do DmSwitch. Como este é um processo genérico, há um comando que permite a visualização dos totais de pacotes recebidos. Esta é a função do show cpu packets. DmSwitch#show cpu packets CPU Received Packets: -------------------------------------------802.1X: 0 ARP: 26944 EAPS: 0 GVRP: 0 IGMP: 0 IPv4: 30115 ICMP: 13839 SSH: 0 Telnet: 341 TACACS: 0 RADIUS: 0 TFTP: 0 SNMP: 5451 SNTP: 0 HTTP: 0 DHCP: 0 DNS: 0 PIM: 0 RIP: 0 OSPF: 8779 BGP: 0 L2 Protocol Tunnelling: 0 L2 Unknown Source: 0 L3 Unknown Destination: 13756 L3 Unknown Gateway: 268 LACP: 0 LLDP: 1812 Loopback Detection: 46955 OAM: 0 PVST: 0 DATACOM 19 Documento de Uso Público Slow Protocols: STP: VTP: DmSwitch# 0 21411 185 Existem dezenas de pacotes diferentes listados, o que facilita a interpretação dos mais diferentes cenários. Por serem contadores incrementais ao longo do tempo, existe um comando para zerar os contadores. É uma boa forma de saber quantos pacotes foram recebidos entre um clear e outro, possibilitando a realização do cálculo de delta. O comando é clear cpu packets. Contadores de filtros Cada filtro pode, individualmente, ter contadores para demonstrar quantos pacotes ou bytes foram tratados pelos match ali configurados. O DmSwitch3000 permite apenas que sejam contabilizados os pacotes, enquanto a família DM4000 permite ambas análises. No DmSwitch3000, a criação e alteração de um filtro é simples. Considerando os filtros já criados neste documento, pode-se atrelar um contador a um filtro em específico. DmSwitch(config)#counter new Counter 1 created. DmSwitch(config)#filter 1 action counter 1 DmSwitch(config)# Na família DM4000 a criação do counter, do meter e do filtro ficam ligeiramente diferentes. O contador possuirá, na verdade, dois contadores (upper e lower). Ou seja, se o filtro permitiu o pacote marcará no contador green, caso tenha negado será no contador red. Estes parâmetros são configuráveis. DM4000(config)#counter new mode upper green lower red type packets Counter 1 created. DM4000(config)#meter new mode flow burst 64 rate-limit 64 Meter 1 created. DM4000(config)#filter new meter 1 action counter 1 action permit action red-deny match source-ip host 10.3.3.1 Filter 1 created. DM4000(config)#show filter Filter 1: enabled, priority 8 Actions: permit red-deny counter 1 Matches: source-ip host 10.3.3.1 Meter: 1 Ingress: Eth2/1 to Eth4/24 DM4000(config)#show counter values id 1 ID Filter Upper Counter Value ---- ------------------------------1 1 23 DM4000(config)# DATACOM 20 Lower Counter Value -------------------------0 Documento de Uso Público Considerações Finais Com as informações apresentadas neste documento é possível ajustar a quantidade de pacotes por segundo que chegarão na CPU do equipamento. Este número, que poderá influenciar em redes muito movimentadas, não altera o comportamento do comutador de pacotes, apenas a proteção da CPU de controle. Ou seja, valores fora dos limiares indicados poderão influenciar a gerência do equipamento ou causar instabilidades, porém, caso contrário, não devem ser causadores de retardo na comunicação intra-nodos. Foram também demonstradas as capacidades de controle ao acesso à gerência do equipamento, muito importante para evitar que terceiros não-autorizados façam alterações de configuração. Ao final do documento são informadas algumas políticas recomendadas para equipamentos DmSwitch em diferentes funções de uma rede. DATACOM 21 Documento de Uso Público