Estudo QoS em redes IP baseadas em roteadores Cisco Célio Bitencourt da Silva Especialização em Redes e Segurança de Sistemas Pontifícia Universidade Católica do Paraná Curitiba, Março de 2010 Resumo Este trabalho faz uma breve descrição da qualidade de serviço aplicada sobre uma rede com roteadores Cisco. Ao longo do trabalho são abordados os diferentes mecanismos criados pela Cisco e aplicados as diversas finalidades no intuito de diminuir o jitter, o atraso, a perda de pacotes. Aborda a motivação para o uso de VPN de sua comunicação segura e economicamente viável juntamente com o roteamento por rótulos MPLS. 1 Introdução Até pouco tempo atrás as empresas utilizavam comunicação entre matriz e filial do tipo ponto a ponto, o que de certa forma garantia a segurança no caminho dos dados, mas havia um custo muito elevado na contratação destes serviços de comunicação. Algumas tecnologias orientadas a conexão surgiram como o Frame Relay e o ATM. Estas tecnologias permitiram diminuir as linhas dedicadas através da criação de circuitos virtuais dentro da nuvem frame relay ou ATM e conseqüentemente baixar o custo dos aluguéis. Figura 1: link ponto a ponto o encapsulamento pode ser HDLC. Apesar de estas tecnologias maximizarem a utilização dos recursos da rede do provedor de serviço, os custos na formação de rede de clientes ainda pesavam no bolso. Com o tempo os clientes buscavam alternativas para diminuir seus custos e que ao mesmo tempo priorizassem suas aplicações mais importantes como a utilização de VoIP entre suas filiais, trafego de transações de banco de dados, multiconferência, etc. Estas aplicações foram tomando prioridades estrita de qualidade de serviço a medida que se tornavam criticas para o negócio das empresas. Imagine um rede de lojas em que o VoIP funcione de maneira sofrível devido a falta de recursos do provedor de serviço para garantir a qualidade desejada, isto implica em perda de negócios e aumento do custo em ligações telefônicas interurbanas. Os protocolos FR e ATM são de camada 2, o FR não faz nenhum controle de erro e nenhum controle de fluxo o que torna o FR semelhante a uma LAN de área extensa [1]. O ATM prometia resolver todos os problemas de redes [1], mas apesar de ainda hoje ser muito utilizado na planta interna das operadoras [1]. O tamanho do payload do ATM para o IP e falta de garantia na entrega de células no destino [1] fizeram com que naturalmente recaísse sobre o protocolo da Internet de camada 3 o protocolo IP a função de garantir serviços com qualidade devida sua função de comunicação fim a fim. Figura 2: uma rede frame relay, as filiais se comunicam com a matriz ou concentrador através de seu identificador (DLCI). Figura 3: uma rede FR/ATM. A matriz é um frame relay e filiais rodam sobre ATM. Este trabalho esta estruturado da seguinte maneira: · Inicialmente problematizamos a questão das VPNs e sua segurança; · O capitulo 3 aborda a conceitos e a construção de VPN com a utilização do MPLS; · O capitulo 4 descreve as técnicas da Cisco para alcançar a qualidade de serviço; · O capitulo 5 discute questões sobre a realidade do MPLS suas vantagens e desvantagens (se houver) enquanto o capitulo 5 faz um breve resumo de todo o trabalho. 2 Problematização Quando os clientes migram seus serviços para a rede pública, mecanismos adicionais de segurança para o trafego são necessários. As VPNs (Virtual Private Network) por ser um método seguro de comunicação entre dois pontos dentro da rede pública, tornou-se uma tendência mundial. Segundo o IDC, em 2003, 10% das 500 maiores empresas brasileiras utilizavam VPNs, e previsão para o final de 2004 metade das 500 deveriam adotar, na época o crescimento mundial era em torno de 80%. Mas que ameaças uma rede pública pode apresentar para o trafego? As ameaças de fora da rede se manifestam quando existem dentro da própria rede erros que permitam tais ameaças a agir. Configurações mal feitas ou incompletas em firewalls e servidores deixando portas e serviços desnecessários ativos se constituem em vulnerabilidades, a utilização de um portscanner como o nmap pode facilmente detectar estes furos. A captura de pacotes TCP pelo próprio nmap para análise dos flags de cabeçalho para análise e possível utilização de exploits em vulnerabilidades detectadas, se as portas do TCP estiverem abertas devem estar bem protegidas assim como as não utilizadas fechadas. Os compartilhamentos CIFS/SMB se não estiverem bem configurados podem expor dados por completo da organização e ainda permitir acessos indevidos, um simples comando no navegador no formato do Windows: \\IP.DA.MAQUINA.DESCOBERTA pode mostrar todo o compartilhamento se não houver uma senha forte. Outra maneira é pelo sambaclients com o comando smbcliente –L IP.DA.MAQUINA.DESCOBERTA. Rotas não pertencentes a rede existentes nos gateways da rede. Senhas fracas de fácil memorização e quebra por força bruta. Enfim, a utilização de VPN entre os pontos para o tráfego assegura maior segurança aos dados, sendo criptografados na origem e descriptografados no destino evitando que terceiros “escutem” a transmissão pela rede pública. 3 Redes Virtuais Neste capitulo vamos introduzir o conceito de VPN, a tecnologia MPLS e seus mecanismos empregados para a formação de redes privadas existentes atualmente no mundo corporativo. 3.1 VPN – Virtual Private Network As VPNs foram ocupando lugar de destaque na solução para a interligação de redes a medida que clientes (empresas, fornecedores, parceiros, usuários) necessitavam de um modo seguro na troca de informações entre os pontos envolvidos na comunicação pela rede pública Internet, dita como insegura. O fato que pesa a seu favor é o custo final e a segurança. Uma VPN deve permitir fundamentalmente autenticação, integridade e confidencialidade, requisitos exigidos por políticas de segurança em qualquer contexto sobre segurança de redes. As VPNs podem ser estabelecidas dinamicamente ou por configurações estáticas através de túneis IPSec ou MPLS [9]: · Por circuitos virtuais: neste modelo a tecnologia empregada é o Frame Relay ou ATM e a configuração e manutenção são executados pelo provedor. A comunicação dentro do backbone é feita pelo par VP/VC. · Tunelamento: neste modelo são utilizados protocolos de camada 2 (PPTP, L2TP) e camada 3 o IPSec. A comunicação se dá sobre a Internet. · VPN/IP: neste modelo a comunicação é sobre o backbone do provedor utilizando os protocolos de tunelamento ou o MPLS. Em aplicações onde o tempo de transmissão é critico, a utilização de VPN deve ser cuidadosamente analisada devido a problemas de desempenho e atraso [8]. As operadoras utilizam VPN IP com MPLS em links principais e normalmente comercializam junto dependendo é claro da necessidade do cliente links backup (utilizando o mecanismo HSRP ou VRPP) utilizando túnel IPSec na rede pública. 3.2 MPLS – Multiprotocol Label Switching O protocolo MPLS descrito na RFC 3031 é utilizado na criação de caminhos entre roteadores de borda e núcleo, cada enlace de roteadores recebe um rótulo (label) de significado local. Este rótulo é utilizado para acelerar dentro da rede o roteamento. Os rótulos são distribuídos entre roteadores através do protocolo de sinalização LDP (Lable Distribution Protocol), mas a função do LDP não é simplesmente anunciar estas rotas, ele define regras e mensagens para os LSR estabelecerem um LSP. Conceitualmente o MPLS é considerado um protocolo de nível intermediário entre a camada 2 (enlace) e 3 (rede). Este fato se deve aos pacotes IP não suportarem circuitos virtuais (não possui campo no cabeçalho) levando os projetistas a criarem um novo cabeçalho entre o protocolo de nível 2 e o cabeçalho IP [1]. Um roteador ou nó dentro do domínio MPLS é chamado LSR (Label Switching Router) [6], o path ou caminho através de um ou mais LSRs comutados por rótulos em nível de hierarquia seguidos por pacotes de uma FEC são chamados de LSP (Label Switching Path) [6]. Uma FEC é um grupo de fluxos com mesmos requisitos e que terminam normalmente em um mesmo roteador ou LAN [1] sua identificação é feita por meio de rótulo inserido pelo roteador de ingresso (LER). A função do LSR é extrair o label do pacote entrante, verificar em sua tabela qual sua próxima interface e seu novo label, inserir este novo label e encaminhar para a próxima interface. O LSP (Label Switched Path) é o caminho de comutação de labels marcado entre a origem e o destino dentro da nuvem MPLS, muito parecido com os circuitos virtuais do ATM ou Frame Relay [6]. Um LSP nada mais é que uma seqüência de labels. Existem duas famílias de roteadores dentro da nuvem MPLS os LSRs que se conectam entre si dentro da nuvem MPLS e os fazem interface para fora da nuvem chamados de LER (Label Edge Router). O MPLS é o burro de carga dos pacotes IP no processo de encaminhamento entre roteadores de borda (edge) e núcleo (core). O objetivo é permitir um processo de roteamento de pacotes IP mais ágil garantindo a qualidade de serviço. Os pacotes IP quando entram no roteador de borda de origem são marcados (etiquetados) por um rótulo de 20 bits (MPLS Label) e são desmarcados no roteador de borda de saída. Durante seu trajeto na nuvem MPLS o cabeçalho não é mais analisado (o pacote está dentro da FEC) ocorrendo apenas trocas de label ao longo do percurso conforme a tabela de rótulos que indicam qual o próximo hop e rótulo de cada roteador. Figura 4: cabeçalho MPLS. Na figura 4 o campo label é a identificação do pacote com significado local. O campo exp indica a prioridade do pacote (classe). O campo s de stack é utilizado para “empilhar” labels quando existir mais de um label no pacote. E, finalmente o campo ttl de time to live conta os hops, caso seu contador atinja 255 o pacote é descartado. 3.3 MPLS VPN Uma VPN MPLS da Cisco é uma solução escalável implementada em camada 3 e consiste num conjunto de sites clientes (intranet ou extranet) interligados por recursos MPLS de uma rede core de um provedor de serviço [11]. Os roteadores CEs (Customer Edge) instalados nos vários pontos do cliente estão interligados através de vários PEs (Provider Edge) do provedor. Os roteadores PE e P comunicam-se entre si utilizando o protocolo BGP-Multiprotocol (MP-iBGP) para troca de labels e VPN-IPv4 [11]. As trocas de rotas IPV4 entre PE e CE acontecem com um protocolo IGP (RIP ou OSPF) ou MP-eBGP. A figura 5 mostra as fronteiras entre os elementos de uma VPN MPLS. As principais tecnologias empregadas em VPN baseada em MPLS são descritas a seguir [12]: · MP-BGP distribui as informações de roteamento dos CEs através dos PEs. · Encaminhamento de pacotes pelo MPLS entre os PEs. · Um PE possui múltiplas VRFs. · Filtragem da rota através de atributos route target do MP-BGP extended community. Figura 5: fronteiras da VPN MPLS para o roteamento. Características da VPN MPLS [11]: · Quando um pacote é transportado dentro do backbone do provedor, dois labels são utilizados. O primeiro label direciona o pacote para o PE de egresso correto, ou seja, a sua VRF correta, o segundo informa ao PE de egresso como deverá encaminhar este pacote através dos roteadores P. · MP-BGP extesions é utilizado para codificar endereços IPv4 do cliente num único valor IPV4 NLRI (Network Layer Reachability Information). Exemplo 189.74.0.0/16 prefixo = 16 tamanho = 189.74 · NLRI é um endereço de destino dentro do MP-BGP, portanto considerado uma unidade de roteamento. · Os atributos do extended MP-BGP community são utilizados para controlar a distribuição de rotas cliente. 3.4 MP-BGP O multiprotocolo BGP é responsável pela distribuição das informações de roteamento através do MP-BGP extensions e MP-BGP community attribute que definem quem se comunica com quem [11]. O multiprotocolo efetua a troca de atualizações entre os PE e P, estas atualizações contém o endereço VPN-IPv4, labels, PE origem e o próximo hop da rota [12]. Uma rota do CE pode ser aprendida pelo PE das seguintes maneiras: pelo MP-eBGP, por protocolos IGP (RIP, OSPF, etc.) ou por rota estática. Quando aprendida a rota o PE através de extensions MP-BGP codifica o endereço IP mais o conjunto de 8 bytes do RD (route distinguisher) em um endereço VPN-IPv4 [12] e então é anunciado dentro da nuvem, o multiprotocolo deve assegurar que as rotas anunciadas serão aprendidas apenas por membros da própria VPN. A codificação IP + RD é designada como NLRI. Figura 6: um site pode pertencer a mais de uma VPN. O RD define a rota default para todos os membros da VPN através de um prefixo de valor global para a VPN dentro do backbone, acelerando o processo de roteamento entre os sites. No quesito segurança o RD é desconhecido dos usuários, o que torna praticamente impossível alguém entrar na VPN por alguma porta e falsificar os dados [11]. Um RT (route target) tem a função de controlar a distribuição de rotas entre sites, o mecanismo importa e exporta rotas de e para uma tabela VRF, deve ser utilizado em conjunto com o RD. Um site pode estar em múltiplas VPNs, uma VPN pode estar associada a mais de uma VRF (VPN Routing and Forwarding) [11], as VRF são mantidas apenas nos PEs [11]. A VRF consiste de uma tabela de roteamento IP derivada de uma tabela CEF (Cisco Express Forwarding) e o conjunto de interfaces que utilizam esta tabela [12], ou seja, o roteamento entre sites é feito exclusivamente pela tabela da VRF, se dado site não esta contido na tabela VRF este não pertence a VPN e não será acessível . O roteador mantém uma tabela CEF separada para cada VRF, isto previne que as informações sejam distribuídas fora da VPN permitindo que uma mesma sub rede possa ser utilizada em várias VPNs sem conflito [11]. A tabela CEF consiste de dois elementos principais: O primeiro elemento é a FIB (Forward Information Base), uma tabela que mantém informações de roteamento IP [14]. Alterações de roteamento e atualizações ocorridas na rede refletem na FIB [14]. O segundo elemento é a tabela de adjacência utilizada para obter informações de comutação da camada 2. A configuração abaixo mostra a aplicação dos conceitos acima criando a VRF site_teste: Criar a VRF: ip vrf site_teste rd 100:1 route-target export 100:1 route-target import 100:1 Aplicar o MP-BGP router bgp 100 address-family ipv4 vrf site_teste redistribute connected redistribute static no auto-summary no synchronization exit-address-family 4 Técnicas Para Alcançar a Qualidade de Serviço Neste capitulo vamos estudar como a Cisco implementa em seus roteadores mecanismos para auxiliar na qualidade de serviço. O controle de congestionamento, controle de filas, exigências para um link de comunicação de dados, a moldagem e policiamento do trafego. 4.1 Qualidade de Serviço Uma sequencia de pacotes desde sua origem até seu destino é chamado fluxo [1]. Em redes orientadas a conexão, todos os pacotes que pertencem a um fluxo seguem a mesma rota; em contraste uma rede sem conexões, eles (pacotes) podem seguir rotas diferentes. As necessidades de cada fluxo podem ser caracterizadas por quatro parâmetros principais: confiabilidade, o retardo, a flutuação e largura de banda. Juntos esses parâmetros definem a qualidade de serviço que o serviço exige [1]. A Cisco define qualidade de serviço como a habilidade em fornecer um serviço com garantias a determinados fluxos. Define também uma arquitetura própria para permitir garantias de serviço, esta implementação ocorre em três etapas fundamentais [2]: · Identificação e marcação dos pacotes; · Mecanismos únicos nos elementos de rede (filas, escalonamento e traffic shaping); · Funções de política, gerenciamento e contabilidade para administração do tráfego fim a fim dentro da rede. A classificação ou a priorização é feita pelas tarefas de identificação e marcação dos pacotes. Quando um roteador recebe pacotes ele identifica o tráfego a ser priorizado e qual o pacote a ser marcado. Se o pacote é identificado e não é marcado, a classificação ocorre apenas no roteador de origem não sendo repassado aos roteadores ao longo do caminho [2]. Nesta situação, apenas estamos evitando congestionamento para o pacote informando aos roteadores do caminho a prioridade em relação a pacotes normais, neste tipo de abordagem é utilizado a precedencia IP do campo TOS pertencente ao cabeçalho IP em conjunto com ACLs (Access Lists) e filas do tipo PQ (Priority Queueing) e CQ (Custom Queueing) [2]. Outra abordagem é utilizar o campo TOS modificado para campo DS (Differentiated Services) usando a reserva de classes através dos bits DSCP. Para o provimento de QoS pelos elementos de rede os mesmos devem possuir elementos de gerência de congestionamento, gerência de filas, um link eficiente para suportar o tráfego e moldagem e policiamento do tráfego possíveis de serem aplicados em interfaces LAN ou WAN [2]. 4.2 O Protocolo IP O elemento que mantém a Internet unida é o protocolo da camada de rede, o IP (Internet Protocol) [1]. Desenvolvido para possibilitar interconexão de redes, estabelecendo regras e formatos para endereços e para roteamento de pacotes [9]. O funcionamento da comunicação na Internet inicia com a camada de transporte recebendo um fluxo de dados que são divididos em datagramas. Teoricamente um datagrama possui de 64kbytes até 1500 bytes. Cada datagrama é transmitido na Internet muito provavelmente fragmentado em unidades menores pelo caminho. Quando chegam (todos) ao destino são remontados pela camada de rede no datagrama original e repassados a camada de transporte [1]. O cabeçalho IP (figura 7) possui uma parte fixa 20 bytes e uma opcional de tamanho variável [1]. Analisaremos a seguir apenas um campo do cabeçalho IP, o campo TOS (type of service), este é o campo que provê as facilidades para a qualidade de serviço. O campo TOS do cabeçalho IP teve sua função alterada. Inicialmente determinava certa prioridade ao pacote ao longo de seu caminho. Dividido em dois blocos; a precedência IP (IP precedence) contendo 3 bits mais significativos e o valor TOS contendo os bits 1 a 4, o bit 0 não é utilizado [7]. A precedência IP garantia prioridade ao pacote na escala de 0 a 5, sendo 5 a maior prioridade. O valor TOS permitia teoricamente que a aplicação cliente definisse o que era mais importante; retardo, throughput ou confiabilidade, na prática os roteadores atuais ignoram o campo TOS [1]. O IETF alterou o campo type of service para campo DS (Differentiated Services) alterando por inteiro seu significado (figura 8). O campo DS foi dividido em 2 campos; o DSCP com 6 bits (Differentiated Services Code Point) e ECN (Explicit Congestion Notification) de uso experimental com 2 bits. O DSCP define 6 classes de serviço, estas classes mostradas na figura 9 são manipuladas pelos roteadores core através de regras (policy), este tratamento é conhecido por PHB (Per Hop Behavior) [10]. Figura 7: no cabeçalho IP o campo TOS foi alterado para DS. Uma classe DF (Default Forwarding) não utiliza nenhum mecanismo de QoS e será encaminhado a fila default. As classes AF1...4 (Assured Forwarding) necessitam de mecanismos que garantam seu trafego fim a fim com pouco descarte e garantias de delay e jitter especificas para cada tipo de aplicação, a classe AF4 possui prioridade sobre as outras. Por fim, a classe EF (Expedited Forward) é a classe utilizada para o trafego de voz e deve ser tratada prioritariamente sobre todas as outras classes. Figura 8: divisão do byte no campo DS. 4.3 Controle de Congestionamento A gestão de congestionamento é responsável por questões sobre tratamento dado ao tráfego como o em rajadas para que não exceda a capacidade de transmissão, os instrumentos para se chegar a este objetivo são os diferentes tipos de filas priority queue (PQ) custom queue (CQ) weighted fair queue (WFQ) e class-based weighted fair queue (CBWFQ). Cada fila foi desenvolvida com propósitos diferentes na solução de problemas de uma rede, se uma rede não possui congestionamento ao longo do tempo de utilização não há motivos para se utilizar filas, vamos analisar as principais. A fila FIFO (first in first out) é a default em redes IP. Encaminha pacotes por ordem de chegada, determinando a largura de banda e não efetuando nenhuma decisão sobre pacotes prioritários, trafego de aplicações mal comportadas. Quando a rede esta congestionada armazena os pacotes e descarta quando esta cheia. Encaminha os pacotes por ordem de chegada no esquema store-and-forward. Para o trafego em rajadas não é uma boa estratégia a utilização de filas FIFO [2]. Figura 9: as PHBs. Outro tipo de fila é a priority queue mostrada na figura 10, os pacotes entrantes são classificados em quatro níveis de fila: médio, alto, normal e baixo respectivamente médium, high, normal e low, o padrão para pacotes não marcados é normal. Neste tipo de fila o tráfego de maior prioridade é tratado antes de qualquer outro pacote com prioridade mais baixa. O ponto forte deste tipo de fila é a utilização de configuração estática sendo útil em tráfego de missão critica. O exemplo abaixo define uma fila PQ onde primeiramente habilitamos a priority list e em seguida aplicamos na interface: Router(config)#access list 101 permit ip any any dscp ef Router(config)#priority-list 1 protocol ip high list 101 Router(config)#interface Ethernet0 Router(config-if)#priority-group 1 A fila custom queue (figura 11) compartilha o tráfego entre várias aplicações definidas na configuração, na figura 11 temos uma fila CQ, nela podemos ter até 16 filas numeradas de 1 a 16 que são servidas através do algoritmo de escalonamento round robin [2], a fila 0 é utilizada é utilizada pelo roteador para sinalização, mensagens de keepalive, etc., cada tráfego pode ter sua própria fila, vale lembrar que quanto mais filas, menor é a banda para cada fila o que é um ponto negativo, pois mesmo que uma fila não esteja em uso a banda é dividida igualmente entre as filas. Por padrão cada fila pode manter 20 pacotes de 1500 bytes o que pode ser mudado na configuração. Para habilitar uma fila CQ no roteador são necessários dois passos: definição do tráfego a ser manipulado pela fila e aplicar em uma interface, no exemplo abaixo foi definido que o tráfego crítico será manipulado pela fila 3. Router(config)#access list 103 permit ip any any precedence 5 Router(config)#queue-list 1 protocol ip 3 list 103 Router(config)#interface Ethernet0 Router(config-if)#custom-queue-list 1 Figura 10: fila PQ. A fila WFQ é de fato o principal método de filas da Cisco [2] (figura 12), sua utilização é recomendada em links abaixo de 2Mbps (2048Kbps), seu algoritmo é o de enfileiramento justo onde os vários tipos de tráfego são tratados igualmente. Por exemplo: a fila 1 possui pacotes com tamanho de 100 bytes e a fila 2 possui pacotes com tamanho de 50 bytes, o algoritmo WFQ irá transmitir 2 pacotes da fila 2 para cada 1 pacote da fila 1, estabelecendo a justiça entre as filas e reduzindo o tempo de resposta para trafego interativo. Por padrão WFQ é habilitado no roteador, mas pode-se habilitá-lo durante a configuração dentro da interface, para isso basta digitar: Router(config)#interface Serial0/0 Router(config-if)#fair-queue Uma fila do tipo CBWFQ permite que o tráfego seja moldado em classes com quantidade de largura de banda mínima [2]. CBWFQ difere do WFQ na forma como trata o tráfego, enquanto WFQ cria filas e seleciona por fluxo CBWFQ cria classes e seu tráfego é baseado nestas [2]. Para habilitar CBWFQ no roteador são necessários três passos: criar um ou mais class-map que descreve o tipo de tráfego, criar o policy-map que diz ao roteador o que fazer com este tráfego e por fim aplicar o policy na interface de um ou mais roteadores. Segue um exemplo: Criar o policy-map policy-map p1 class DADOS_URG bandwidth percent 50 policy-map p2 class class-default service-policy p1 Criar a class-map map-class class1 service-policy output p2 Aplicar na interface Interface serial0/1 no fair-queue class class1 Figura 11: fila CQ. 4.4 Gerencia de Filas A definição de critérios de descarte de pacotes e assegurar que a fila sempre possua espaço para os pacotes prioritários são tarefa da gestão de filas implementada pelo mecanismo de weighted random early detect (WRED), este mecanismo combina o algoritmo RED com a precedência IP [2]. O mecanismo RED opera prevendo onde ocorrerá o congestionamento congestion avoidance em diferentes pontos da rede através de funções de controle do TCP, normalmente opera em roteadores de backbone (core) [2]. Suas principais ações são selecionar quais pacotes descartar e solicitar à fonte que diminua a taxa de transmissão. Para determinar quando começar a descartar pacotes, os roteadores mantêm uma média atualizada dos comprimentos de suas filas. Quando o comprimento médio da fila em alguma linha excede o limiar, considera-se que a linha está congestionada [2]. O WRED não prioriza trafego sensível ao atraso, mas oferece tratamento preferencial a estes em situações de congestionamento. Figura 12: fila WFQ. 4.5 Links Eficientes A eficiência do link é crítica, vários tipos de aplicações atravessam o link, todas competindo por alguma largura de banda e necessitando de algum tratamento diferenciado. Quando temos um link de baixa velocidade é necessário que os pacotes sensíveis ao atraso (voz, FTP, etc.) sejam fragmentados. A fragmentação é necessária, pois nem todas as redes possuem pacotes do mesmo tamanho, ou seja, um pacote grande demais para uma rede que admite pacotes menores (interworking IP/ATM, FR/ATM, e assim por diante.). A LFI (Link Fragmentation and Interleaving) foi desenvolvida para evitar que em links de baixa velocidade (figura 13), normalmente links com bandwith abaixo de 768Kbps ocorram perdas devido a diferença do tamanho dos pacotes de diferentes aplicações. Caso a fragmentação não ocorra irá ocasionar aumento na média do atraso e a variação do jitter, esta técnica deve ser aplicada em conjunto com o multilink do protocolo PPP (MLPPP), para o Frame Relay o FRF.12 (Frame Relay Fragmentation 12) do Frame Relay Fórum deve ser utilizado [2]. A implementação FRF.12 especifica a fragmentação e intercalação de dados de tempo real com dados comuns em um mesmo link, antes de surgir esta especificação a única maneira de reduzir o tamanho do pacote era alterando o MTU [10]. A aplicação da configuração MLPPP sobre o ATM com uma velocidade de 256Kbps em uma interface virtual-template deve seguir este modelo: Criando a interface virtual template: interface Virtual-Templatenumero_da_interface bandwidth 256 load-interval 30 ppp multilink ppp multilink fragment-delay 10 ppp multilink interleave service-policy output nome_da_policy Anexando na interface WAN: interface interface.subinterface point-to-point bandwidth 256 protocol ppp Virtual-Templatenumero_da_interface Figura 13: Fragmentação de pacotes é utilizada em links abaixo de 768Kbps. A cisco recomenda [3] a formula abaixo para calcular o tamanho do fragmento do pacote em um MLPPP, na configuração acima temos um fragmento de 320 bytes, veja: fragment_size = bandwith * fragment_delay / 8 256 * 10 / 8 = 320 bytes 4.5.1 Multilink PPP Multilink PPP é utilizado para reduzir a latência e o jitter em links WAN de baixa velocidade e que transportam tráfego sensível ao atraso [13]. Fornece intercalação, fragmentação e resequenciamento de pacotes através de múltiplos links lógicos [13]. Consideramos link de baixa velocidade um link com bandwith >= 768Kbps. O multilink é utilizado em conjunto com as filas WFQ e CBWFQ [13]. A intercalação é o processo de transmitir em um mesmo link WAN dados com vários níveis de prioridade como, por exemplo; trafego interativo (telnet), tempo real (voz) e dados comuns tratados como processos ou separados. A intercalação é baseada em duas outras atividades do multilink [13]: · Fragmentação de pacotes · Multiplexação de pelo menos dois fluxos. A fragmentação é o processo de quebrar pacotes grandes em fragmentos na transmissão. Durante o processo de fragmentação de um pacote grande o multilink adiciona seu cabeçalho ao fragmento e o transmite individualmente. O resequenciamento é o processo inverso na recepção, monta o pacote a partir do cabeçalho multilink do fragmento. Antes de transmitir qualquer fragmento o multilink verifica na fila se há pacotes sensíveis ao atraso, caso exista, estes pacotes são priorizados e intercalados entre os pacotes fragmentados (os pacotes de voz não devem ser fragmentados), tornando o percurso pela rede muito mais rápido. O tamanho do fragmento determina a velocidade do processo de fragmentação, a configuração do tamanho do fragmento é feita através do comando ppp multilink fragment delay já discutidos no capitulo Eficiência do Link. Figura 14: processo de fragmentação e intercalação do multilink. Antes de configurar o multilink deve ser criada a policy com os parâmetros específicos para alcançar a qualidade de serviço e em seguida aplicar ao multilink. Criar o multilink //define um nome para o grupo multilink interface multilink M1 ip address 10.10.10.1 255.255.255.252 //ip da interface de saida service-policy output OUT //policy para o trafego sainte service-policy input IN //policy para o trafego entrante ppp multilink fragment delay 10 //define em unidade de tempo o tamanho do fragmento ppp multilink interleave // habilita o entrelaçamento de pacotes grandes fragmentados Aplicar o multilink na interface interface serial 4/0/1:0 no fair-queue // desabilita WFQ encapsulation ppp ppp multilink // ativa o multilink ppp multilink group M1 // restringe o multilink a interface fisica 4.6 Moldagem e Policiamento do Trafego Traffic Shaping ou moldagem do tráfego é utilizada para controlar o tráfego sainte utilizando o algoritmo de token bucket, muito útil para preservar o trafego prioritário do trafego guloso por banda como o em rajada. Traffic shaping (figura 15) ou genéric traffic shaping é utilizado em redes Frame Relay, ATM, SMDS e Ethernet para controlar o trafego sainte limitado a uma taxa, qualquer fluxo acima do limite configurado é enfileirado ou bufferizado. Utiliza o algoritmo token bucket como filtro para atingir o objetivo. Para utilização do traffic shaping o mesmo deve ser ativado na interface em conjunto com listas de acesso. Por exemplo: Router(config)#access list 101 permit tcp any eq www any Router(config)#access list 101 permit tcp any any eq www Router(config)#access list 102 permit tcp any eq ftp any Router(config)#access list 102 permit tcp any any eq ftp Router(config)#interface FastEthernet0/0 Router(config-if)#traffic-shape group 101 100000 Router(config-if)#traffic-shape group 102 200000 Figura 15 No script do exemplo acima restringimos o trafego de pacotes tcp WWW e FTP para uma taxa de 100k e 200k respectivamente na interface fast, o restante do trafego utiliza a fila default. O policiador Committed Access Rate (CAR) utiliza as mesmas técnicas da moldagem de tráfego, mas é aplicado em ambos os sentidos, sou seja, no trafego entrante e sainte. A principal diferença entre o CAR e o traffic shaping é que o policy descarta pacotes ao contrário da moldagem que bufferiza [2]. O CAR tem duas funções para a qualidade de serviço, a função de classificar os pacotes pela precedência IP ou por classes pelo DSCP e controlar o trafego entrante e sainte de uma interface, neste último caso, pacotes que excedam a taxa limite serão descartados ou reclassificados para retransmissão com outra prioridade. O CAR não pode ser utilizado em interfaces que não suportam CEF (Cisco Express Forwarding) [4]. Utiliza um token buket ligeiramente diferente do original [4]. O tamanho do balde é igual taxa da rajada (burst size) e configurável pelo usuário, a taxa para preencher o balde com tokens é o mesmo configurado para o link (CIR). Para transmitir pacotes deve haver o número suficiente de tokens no balde, neste caso o trafego é chamado de pacotes conforme (normal burst), caso o balde já esteja cheio, o trafego é conhecido como pacotes em excesso (extended burst) e podem ser descartados. Como em certas situações há a possibilidade de retransmitir pacotes que excedem a taxa em outra prioridade, a Cisco recomenda alguns cálculos para este tipo de tráfego [5]. normal_burst = CIR * (1/8)*1,5 CIR = taxa configurada na interface extended_burst = normal_burst * 2 Suponha que temos um link de 128kbps e queremos priorizar todo trafego de aplicações http, a saída do trafego http é restringida em 50kbps, neste ponto todos os pacotes são transmitidos, quando o trafego filtrado exceder este limite o roteador continuará transmitindo (observe no script abaixo que instruímos o roteador com o comando continue) até a média extrapolar o limite de 100kbps os pacotes com precedência 3 e descartará todos os pacotes de outro trafego marcados com prioridade 0 (action drop), note que a rajada é configurada estritamente para 4,5KB/s e configurada uma rajada variável nos limites entre 4,5KB/s até um máximo de 9KB/s no trafego excedente, ultrapassando este limite há descartes. Podemos configurar o CAR da seguinte maneira: Router(config)#access list 101 permit tcp any eq www any Router(config)#access list 101 permit tcp any any eq www Router(config)#access list 103 permit ip any any Router(config)#interface HSSI0/0 Router(config-if)#rate-limit output 50000 4500 4500 conform-action transmit exceed-action continue Router(config-if)#rate-limit output access-group 101 100000 4500 9000 conform-action set-prec-transmit 3 exceed-action continue Router(config-if)#rate-limit output access-group 103 100000 4500 9000 conform-action set-prec-transmit 0 exceed-action drop Frame Relay Traffic Shaping (FRTS) é utilizado em redes Frame Relay controlando largura de banda em um PVC ou SVC, isto é, esta facilidade não controla o fluxo por aplicação, foi desenvolvida para controlar o CIR contratado. Para cada PVC criado na WAN terá seu próprio CIR. O FRTS utiliza os campos FECN (Forward Explicit Congestion Notification), BECN (Backward Explicit Congestion Notification) e DE (Discard Eligibility Indicator) do cabeçalho de controle do Frame Relay para moldar o trafego. · FECN (setado em 1) informa ao receptor para iniciar seu processo de redução do trafego para eliminar o congestionamento, ou seja, existe congestionamento a frente do equipamento que notificou o evento (veja a figura 6). · BECN (setado em 1) informa ao transmissor para iniciar processo de redução do tráfego para evitar congestionamento, ou seja, existe congestionamento para traz do equipamento notificador do evento (veja a figura 6). · DE (setado em 1) indica se o frame pode ser descartado em situação de congestionamento. Na configuração abaixo assumimos uma taxa mínima de 10kbps, isto é pode ser necessário, pois em situações em que o congestionamento, quando o roteador recebe o bit BECN setado a tendência é reduzir a taxa de transmissão até zero. Router(config)#interface HSSI0/0 Router(config-if)#encapsulation frame-relay Router(config-if)#exit Router(config)#interface HSSI0/0.1 point-to-point Router(config-subif)#traffic-shape adaptive 10000 Router(config-subif)#frame-relay interface-dlci 31 Router(config-subif)#end Figura 16: controle de congestionamento do frame relay FECN e BECN informam o sentido do congestionmento o bit DE descartará o frame. 5 Uma Palavra sobre VPN MPLS O MPLS surgiu para suprir a deficiência do roteamento IP na engenharia de tráfego. O MPLS tem a seu favor a interoperabilidade com outros protocolos, utilizando um novo paradigma de roteamento, permitiu a criação de redes escaláveis. Permitiu que os provedores de serviços utilizassem suas redes já existentes (FR/ATM) e roteadores instalados na planta interna (consequentemente baixando os preços dos acessos) e nos clientes e convergissem estas tecnologias para rodar em cima do MPLS, ou seja, o MPLS permitiu aos provedores de serviço readequar seu parque tecnológico para tal. Um fator negativo é que nem todos os CPEs suportam configurações avançadas para permitir QoS, seja por determinação do hardware ou IOS não suportam tal facilidade. Outras marcas de CPE recentes suportam QoS, mas ainda estão em um nível abaixo aos da Cisco de qualidade e confiabilidade e gerência. Como a Cisco é modelo em termos de redes dificilmente deixara tão cedo o pedestal. As configurações tanto nos roteadores Cisco como de outros fabricantes são complexas exigindo do pessoal técnico conhecimento, daí surge a necessidade crescente no mercado de bons profissionais nesta área. Apesar da Cisco soprar aos quatro cantos a segurança das VPNs, vale lembrar que as senhas de acesso aos CPEs, PÉS e P são autenticadas pelo TACACs ou algum outro servidor. Isto quer dizer que se um atacante conseguir acesso (seja por engenharia social) poderá facilmente ter acesso a todas as VPNs digitando em uma conexão SSH com um PE por exemplo telnet ip_da_vitima /vrf nome_da_vrf_da_vitima. 6 Conclusão A qualidade de serviço provida por uma rede VPN MPLS com roteadores de borda e clientes configurados adequadamente conferem um alto grau de confiabilidade no serviço, garantindo o atendimento do SLA contratado. Embora hoje o MPLS supra as deficiências de toda e qualquer tecnologia de comunicação na entrega de serviços diferenciados (voz, vídeo, etc.) como a tecnologia anda de trem bala e não a cavalo, logo poderá perder força e não mais suprir as necessidades do mercado de forma eficiente, surgindo uma nova tecnologia tão boa quanto é o MPLS. Bibliografia [1] Tanenbaum, Andrew S., Redes de Computadores, Rio de Janeiro: Elsevier, 2003 [2] http://www.cisco.com/en/US/docs/internetworking/technology/handbook/QoS.html [5] http://www.cisco.com/en/US/docs/ios/12_2/qos/configuration/guide/qcfpolsh.html [4] http://www.cisco.com/en/US/docs/ios/11_1/feature/guide/CAR.html [3] http://www.cisco.com/en/US/docs/ios/12_2/qos/configuration/guide/qcflfifr.html [6] http://www.rfc-editor.org/rfc/rfc3031.txt [7] Kevin Dooley & Ian J. Brown – Cisco Cookbook – O’reilly – 2003 [8] http://www.rnp.br/newsgen/9811/vpn.html [9] http://www.teleco.com.br/tutoriais/tutorialvpn/Default.asp [10] http://www.broadband-forum.org/technical/download/FRF.12/frf12.pdf [11] http://www.cisco.com/en/US/docs/net_mgmt/vpn_solutions_center/1.1/user/guide/ VPN_UG1.html [12]http://www.cisco.com/en/US/tech/tk436/tk428/ technologies_configuration_example09186a00800a6c11.shtml [13] http://www.cisco.com/en/US/docs/ios/ios_xe/qos/configuration/guide/ reducing_latency_xe.html [14] http://www.cisco.com/en/US/docs/ios/12_1/switch/configuration/guide/xcdcef.html