sexta-feira, 21 de fevereiro de 2014

Associação Local de Hostnames no Cisco/IOS

Olá Pessoal.

Acho que essa postagem não pode ser considerada um artigo, no máximo cabe a ela o status de "dica" para aqueles que estão iniciando na configuração do Cisco/IOS. É muito comum a atribuição de endereços estáticos em dispositivos da infraestrutura (roteadores, switches, etc) para fins de gerenciamento e acesso remoto a esses equipamentos.

Com endereços estáticos é conveniente criar uma associação local nos dispositivos para mapear um nome (fácil de memorizar) com seu respectivo endereço IP. Em ambientes onde existem vários equipamentos e uma convenção para nomeá-los de forma coerente, essa dica pode ser bem útil.

A figura traz o cenário mais simples possível em que existem apenas dois roteadores diretamente conectados entre si, já que o objetivo é apenas exemplificar as linhas de comando necessárias para configurar localmente a associação entre nomes e endereços IP. Neste cenário os roteadores estão conectados através da rede 192.168.0.0/30, sendo que os endereços do Router1 e Router2 são, respectivamente, 192.168.0.1 e 192.168.0.2.


Através dos comandos apresentados abaixo é possível criar um cache local que fica armazenado no arquivo de configuração do equipamento para manter as associações entre hostnames e endereços IP. A vangagem de fazê-lo é que torna-se possível referenciar os dispositivos através do hostname nas mais diversas ferramentas de manutenção e diagnóstico, a exemplo do ping, traceroute, telnet, etc.

Router1(config)# ip host Router1 192.168.0.1
Router1(config)# ip host Router2 192.168.0.2

O comando para visualizar as associações locais é:

Router1# show hosts

Reparem que os comandos têm que ser realizados individualmente em cada equipamento porque trata-se apenas de uma associação local que não tem vínculo nenhum com a rede em si. É possível registrar as associações de todos os dispositivos da infraestrutura em um arquivo simples (txt) para depois "colar" o bloco todo no modo de configuração global do IOS. Uma última observação é que, obviamente, esse método não substitui um bom servidor local de DNS! ;-)

Por sinal cabe mencionar que para configurar referência a um servidor DNS qualquer no IOS, seja ele local (na rede) ou externo, basta digitar o seguinte comando em modo de configuração global:

Router1(config)# ip name-server 208.67.222.222

Apesar dessa dica ser banal para alguns, ela certamente pode ajudar muita gente a gerenciar seus equipamentos, seja em ambientes reais ou mesmo em seus laboratórios virtuais que possuem diversos dispositivos. 

Abraço.

Samuel.

sexta-feira, 14 de fevereiro de 2014

Bloqueio de Sites e Nomes FQDN via ACL/NBAR

Olá Pessoal.

Esse artigo apresenta a solução para um problema comum nas empresas que é o bloqueio de determinados sites na Internet. A maioria das empresas utiliza um proxy para esse fim, o que é recomendado e torna as coisas bem mais fáceis. No entanto, nem sempre esse equipamento está disponível e pode ser interessante utilizar o próprio roteador de borda, responsável por prover acesso à Internet, para realizar esse serviço de filtragem, afinal todo roteador de borda é um firewall natural. 

A princípio a escrita de ACLs no roteador de borda para bloquear um determinado site através do seu endereço IP de destino é realmente bastante simples, mas acontece que muitas vezes é necessário escrever regras dessa natureza informando como destino os nomes de domínio FQDN (fully qualified domain name), por exemplo www.labcisco.com.br.

Até então o problema parece continuar bastante simples, afinal basta substituir o endereço de destino pelo nome FQDN e tudo deve funcionar, não é? Não, nem sempre é simples assim... Os sites de serviços providos por grandes empresas, a exemplo da Google e Facebook (e vários outros) não possuem apenas um único endereço de destino, sendo acessíveis através de vários endereços para assegurar a disponibilidade em caso de falha.

Ao utilizar nomes de domínio na escrita de uma ACL, será realizado o processo de resolução de nomes apenas para o primeiro endereço válido e não para todos os endereços possíveis. Ou seja, caso o administrador queira bloquear o YouTube por completo, então seria necessário bloquear todos os endereços vinculados com o domínio youtube.com. 

Uma solução para fazer isso seria levantar previamente todos os endereços IP correspondentes ao site que deve ser bloqueado e, posteriormente, escrever regras para cada um desses destinos. O problema dessa solução é que esses endereços não são estáticos e por isso é comum eles mudarem ao longo do tempo, o que torna o trabalho de bloqueio a sites bastante complicado.

Para resolver esse problema esse artigo apresentará um recurso denominado NBAR (Network Based Application Recognition) que será utilizado em conjunto com as ACLs tradicionais. O NBAR é uma ferramenta para implementar QoS que é suportada em todos os equipamentos mais recentes, viabilizando a classificação do tráfego da rede em categorias baseadas nos protocolos e outros parâmetros. O cenário desse laboratório é ilustrado na figura abaixo.


Implementar QoS requer a configuração de (1) classes de tráfego via class-map, (2) de políticas a serem aplicadas nessas classes via policy-map e (3) a inserção das políticas nas interfaces de rede via service-policy. Então utilizaremos class-mappolicy-map e service-policy para classificar/marcar todo o tráfego destinado para youtube.com e, na sequência, utilizaremos ACLs para bloquear esse tráfego previamente marcado com a codificação DSCP (Differentiated Services Code Point) comumente utilizada para fins de QoS. Nosso objetivo nesse artigo não é aprofundar a discussão sobre QoS e nem entrar em detalhes da codificação DSCP.

Os comandos necessários para classificar o tráfego e bloqueá-lo são:

!---- Parte 1: Class-Map p/ Identificar o Site
01. Router(config)# class-map match-any Classe-YouTube
02. Router(config-cmap)# match protocol http url "*youtube.com*"
03. Router(config-cmap)# exit

!---- Parte 2: Policy-Map p/ Marcar a Classe de Tráfego
04. Router(config)# policy-map Politica-YouTube
05. Router(config-pmap)# class Classe-YouTube
06. Router(config-pmap-p)# set ip dscp 1
07. Router(config-pmap-p)# exit
08. Router(config-pmap)# exit

!---- Parte 3: Service-Policy p/ Aplicar a Marcação na Rede Local
09. Router(config)# interface f0/0
10. Router(config-if)# description "Rede Local"
11. Router(config-if)# service-policy input Politica-YouTube
12. Router(config-if)# exit

!--- Parte 4: ACL p/ Bloquear o Tráfego Marcado
13. Router(config)# ip access-list extended NegaYouTube
14. Router(config-acl-ext)# deny ip any any dscp 1
15. Router(config-acl-ext)# permit ip any any
16. Router(config-acl-ext)# exit

!--- Parte 5: Aplicação da ACL na Saída p/ Internet
17. Router(config)# interface f0/1
18. Router(config-if)# description "Internet"
19. Router(config-if)# ip access-group NegaYouTube out
20. Router(config-if)# exit

Observem na primeira parte que foi criada uma class-map para classificar todo tráfego HTTP com a URL desejada, processo realizado através da inspeção dos pacotes. Na segunda parte escrevemos uma policy-map que aplica o código DSCP=1 para todo perfil de tráfego identificado na class-map anterior. A codificação DSCP tem alguns códigos padronizados, então optamos pelo código 1 porque provavelmente esse código não estará associado com nenhuma aplicação. Na terceira parte aplicamos a política de marcação dos pacotes em todo tráfego entrante na interface do roteador que está conectada na rede interna (gateway da rede interna). Por fim é configurada uma ACL que nega acesso a todo pacote que tenha o campo DSCP=1, cabendo destacar que essa regra deve ser aplicada no sentido sainte da interface conectada à Internet.

Uma observação importante é que essa solução funciona muito bem para tráfego HTTP (80) porque o NBAR consegue fazer a inspeção do cabeçalho dos pacotes, no entanto é impossível fazer a leitura de conteúdo cifrado via HTTPS (443). Por isso o NBAR não irá funcionar para serviços que somente operam através do HTTPS. Nesse caso o jeito é fazer uso das vantagens de um proxy...

Abraço.

Samuel.

segunda-feira, 10 de fevereiro de 2014

Switch Catalyst 2960 Fabricado no Brasil

Olá Pessoal.

Hoje recebi comunicado dos parceiros da Cisco do Brasil informando que agora o Switch Catalyst 2960 é fabricado e está à venda no Brasil, o que representa uma grande vantagem para o segmento das pequenas/médias empresas no mercado nacional, afinal há redução no preço dos switches em até 30% e menores prazos para entrega dos equipamentos no território nacional.


Por enquanto os modelos fabricados no Brasil são:

  • SF100D–Switch Não Gerenciado Série100 – 8 portas FAST 
  • SF200-24 Switch Inteligente Série 200 – 24 portas FAST 
  • Cisco Catalyst 2960-24TC-BR

Esses equipamentos são fabricados pensando na demanda das pequenas e médias empresas, por isso é importante ter em mente que eles atendem apenas a camada de acesso quando pensamos no projeto de redes, ou seja, aquela camada que está diretamente conectada nos dispositivos terminais. Os projetos hierárquicos que envolvem camadas de distribuição/core contemplam equipamentos com outro perfil e, portanto, continuam necessitando da importação dos produtos. 

Ainda assim é muito comum as empresas utilizarem a família de switches Catalyst 2960 em grandes quantidades porque esse equipamento de acesso é responsável pela conexão direta (first hop) dos dispositivos terminais presentes na rede. Isso quer dizer que a diminuição no preço e nos prazos de entrega serão atrativos no planejamento e execução dos novos projetos.

Os interessados podem obter mais informações na página da Cisco:

Abraço.

Samuel.

sexta-feira, 7 de fevereiro de 2014

Tecnologia Cisco® CEF no Encaminhamento de Pacotes

Olá Pessoal.

CEF (Cisco Express Forwarding) é o nome dado à avançada tecnologia de encaminhamento layer-3 empregada na maioria dos equipamentos da Cisco. Uma definição comumente adotada pela Cisco destaca que "a tecnologia CEF otimiza o desempenho e a escalabilidade para redes com grande volumes e diferentes padrões de tráfego, como ocorre em ambientes de produção que possuem muitas aplicações web baseadas nos padrões da Internet."

Técnicamente essa é uma definição correta da tecnologia CEF, mas o que realmente isso quer dizer e como essa tecnologia implica em excelente desempenho no processo de comutação/encaminhamento de pacotes? É essa resposta o objeto de discussão desse artigo...

Antes de entrar na discussão da tecnologia CEF propriamente dita é conveniente apresentar um breve histórico da evolução das tecnologias de comutação adotadas pela Cisco, a saber:

  • Process Switching
  • Fast Switching
  • CEF

A mais antiga e simples das técnicas de encaminhamento é denominada Process-Switching e consiste basicamente na necessidade de ação direta do processador principal na decisão de encaminhamento de cada pacote individual. Essa técnica possui desempenho ruim, ou seja, é lenta, porque cada pacote entrante em uma interface de rede passa, minimamente, pelas seguintes etapas:

  1. Leitura e Retirada do Cabeçalho de Camada 2
  2. Cópia do Pacote de Camada 3 na Memória da CPU (Plano de Controle)
  3. Lookup no Plano de Controle e Decisão de Encaminhamento
  4. Realização de Processos Complementares
  5. Recálculo da Função CRC p/ Geração de Novo Cabeçalho Layer-2
  6. Reencapsulamento Layer-2 do Pacote Layer-3
  7. Encaminhamento do Quadro na Interface de Saída 

Acontece que todo esse processo é bastante oneroso no consumo de processamento, principalmente no que diz respeito ao lookup no plano de controle (destaque em vermelho) que envolve outros protocolos como o ARP (IPv4) ou NDP (IPv6) para descobrir o endereço físico associado ao IP do vizinho. Essa é a forma tradicional de encaminhamento adotada na maioria dos roteadores residenciais e de pequeno porte (SOHO), inclusive em vários Sistemas Operacionais terminais, o que explica esses sistemas/dispositivos não terem o mesmo desempenho de um roteador profissional. 

Uma alternativa a esse processamento individual ocorre quando uma interface de um roteador gera uma interrupção no processador principal ao receber um pacote para que a decisão de encaminhamento seja tomada com base em tabelas auxiliares (estruturas de dados) previamente armazenadas. Por enquanto essa é uma descrição bastante generalista, mas é válido associar essa segunda abordagem com as técnicas Fast-Switching e CEF.

A diferença entre as técnicas Fast-Switching e CEF consiste na forma pela qual cada uma dessas técnicas irá construir/armazenar essas estruturas de dados que serão posteriormente utilizadas no processo de decisão para agilizar o encaminhamento dos pacotes.

Através da técnica Fast-Switching o processo anterior ocorre apenas para o primeiro pacote de um mesmo fluxo. O primeiro pacote de um fluxo é copiado na memória da CPU (plano de controle) para que seja realizado o procedimento de busca (lookup) e reencapsulamento em um novo frame, afinal a cada salto mudam as informações dos vizinhos (origem/destino). A diferença é que o processamento desse primeiro pacote implica na construção de uma estrutura de dados chamada "fastswitching cache" que será consultada no processo de encaminhamento dos demais pacotes que pertençam ao mesmo fluxo (direcionados para o mesmo destino), dispensando, assim, todo o processamento anteriormente mencionado para cada pacote individual. Nessa tabela ficam armazenadas informações sobre os endereços IP e MAC do destino e sua respectiva interface de saída.

Podemos dizer que Fast-Switching também utiliza a CPU (plano de controle), no entanto o resultado da tomada de decisão de encaminhamento de um pacote implica no armazenamento em cache (plano de dados) de como alcançar um dado destino. Todos os demais pacotes direcionados para o mesmo destino são encaminhados mais rapidamente através da consulta desse cache, dispensando o processo de lookup tradicional por pacote individual. O ponto negativo é que cada novo fluxo irá requerer a intervenção do processador principal, uma vez que cada pacote encaminhado para um destino desconhecido nas tabelas de cache será marcado como "punted" e direcionado para a CPU do plano de controle, aumentando a latência de encaminhamento.

A tecnologia CEF representa uma evolução do processo de encaminhamento adotado nos roteadores para que esses dispositivos sejam capazes de encaminhar pacotes mais rapidamente com melhor desempenho. No CEF existem duas estruturas de dados principais:

  • Tabela de Adjacência: Tomando como referência a tecnologia Ethernet, essa(s) tabela(s) é/são construída(s) a partir da Tabela ARP para mapear endereços IP em MAC com o objetivo de otimizar o desempenho com menos ação dos protocolos ARP/NDP. Ela também é construída para armazenar informações de endereços físicos de outras tecnologias, a exemplo de Frame-Relay, ATM, PPP, etc.

  • FIB (Forwarding Information Base): É uma tabela bastante enxuta que fica armazenada no plano de dados e que é construída a partir da tabela de roteamento que, por sua vez, é construída a partir da RIB (Routing Information Base) armazenada no plano de controle do roteador. Essa tabela é construída a partir de tecnologia proprietária da Cisco e possui excelente desempenho no processo de busca a informações sobre os prefixos de rede, próximo salto e interface de saída.

Fonte: CCNP Practical Studies: Switching (Justin Menga)

Com a adoção da tecnologia CEF o tratamento dos pacotes passa pelas seguintes etapas:

  1. Leitura e Retirada do Cabeçalho de Camada 2
  2. Lookup na Tabela FIB (Plano de Dados)
  3. Leitura na Tabela de Adjacência
  4. Reencapsulamento Layer-2 do Pacote Layer-3
  5. Encaminhamento na Interface de Saída

Reparem na figura que o lookup é feito no próprio plano de dados através da FIB, sem necessidade de resolução nenhuma no plano de controle. Um roteador com CEF ativo (padrão) não precisa marcar pacotes como "punted" (exceto aqueles destinados a interfaces diretamente conectadas) porque se um dado destino não estiver na FIB, então ele não existe!

Em síntese, o segredo do desempenho otimizado da tecnologia CEF é resultado direto do método proprietário adotado pela Cisco para construir a FIB no plano de dados a partir da RIB no plano de controle. Uma vez que essa estrutura fica no plano de dados, não há necessidade de consumo da CPU do plano de controle. Por fim, trago alguns comandos de visualização que devem ajudar o leitor a enxergar melhor a implementação prática desses conceitos nos dispositivos roteadores:

!--- Visualização da Tabela de Adjacência do CEF
Router# show adjacency
Router# show adjacency summary
Router# show adjacency detail
Router# show adjacency internal

!--- Visualização da Tabela FIB do CEF
Router# show ip cef

!--- Visualização do Cache do FastSwitching
Router# show ip cache [opções]

Abraço.

Samuel.

sábado, 1 de fevereiro de 2014

VSS no Agrupamento Lógico de Switches de Agregação

Olá Pessoal.

No desenho/projeto de redes é muito comum a interligação por pares de equipamentos redundantes para fins de disponibilidade, principalmente nas camadas mais importantes (núcleo e distribuição) que fazem a agregação das camadas mais baixas que são responsáveis pela interligação dos equipamentos terminais do usuário (camada de acesso), prática ilustrada na figura abaixo.


Apesar de essa ser uma "boa prática" de projeto extremamente importante de ser levada em consideração, ela traz consigo maior complexididade ao desenho e operação da rede, afinal são dois equipamentos redudantes e mais cabos para interligar as camadas, conforme pode ser observado no lado esquerdo (a) da figura abaixo.

O VSS (Virtual Switching System) é uma tecnologia desenvolvida especificamente para equipamentos das camadas de agregação (núcleo e distribuição) que permite combinar pares de switches físicos redundantes, criando a abstração de uma única entidade lógica do ponto de vista de gestão e operação, conforme pode ser observado no lado direito (b) da figura abaixo.


A consequência da abstração lógica do VSS é que há uma simplificação relevante na quantidade de switches físicos e também em suas ligações através de cabos. Em topologias com interligação layer-3 entre o par de switches há simplificação nas vizinhanças de roteamento e em topologias com interligação layer-2 entre os switches há garantia de inibição de loops (loop-free). As ligações entre o par VSS são feitas através de links especiais denominados Virtual Switch Link (VSL) que operam em 10Gbps ou 40Gbps, sendo comum a agregação de dois links de 10Gbps (total de 20Gbps).

O interessante dessa tecnologia é que os switches de acesso passam a enxergar o par de switches de agregação como uma única entidade lógica, independente da interligação física dos cabos. Dessa forma o switche de acesso é interligado fisicamente a ambos os switches de agregação, mas é configurado através de uma porta lógica agregada (port-channel). Do ponto de vista do par de switches de agregação, é utilizado o recurso MEC (Multichassis Ether-Channel) para associar portas físicas em diferentes switches a um único canal lógico (link agregado) e cabe à tecnologia VSS fazer o geranciamento do balanceamento de carga e da disponibilidade entre essas ligações físicas.


Ao criar um "par" VSS os switches físicos negociam seus papéis no agrupamento lógico, de forma que um assume o status de master e outro o de standby. A partir daí, do ponto de vista de gerenciamento de operação deixam de existir os dois switches físicos e passa a existir apenas uma única entidade lógica, de forma que o switch master controla o "par" VSS. Embora as funções de encaminhamento (plano de dados) continuem independentes em cada switch, o tráfego de controle que chega no switch standby é repassado para o switch master - o responsável pelo plano de controle.

Aqueles que tiverem interesse em obter mais detalhes técnicos da solução VSS podem recorrer ao Guia Oficial de Configuração da Cisco (clique no link e você será redirecionado). Esse link traz exemplos de como configurar o par de switches físicos par ativar o VSS.

Abraço.

Samuel.