Linux Traffic Shape
Transcrição
Linux Traffic Shape
Linux Traffic Shape Mirelle Daiara Vieira Freitas1 , Mateus da Silva dos Santos1 , Mateus Alexandre1 1 Curso Superior de Tecnologia em Segurança da Informação Universidade do Vale do Rio dos Sinos (UNISINOS) São Leopoldo – RS – Brazil [email protected], [email protected],[email protected] Abstract. The vast majority of enterprise networks aren’t applying the good pratices related to perfomance, availabity, capacity and security. What makes these corporations have a very high cost or a financial losses because of the constant network failures, which doesn’t have a proper monitoring and management of the important resources for the healthy operation of the network. This paper is presented the LinuxTraffic Control techniques that will assist the network administrator to improve many aspects of the performance, capacity and availabity of the network, which impacts on a better usage of the resources and reducing unnecessary costs. Resumo. Na grande maioria das redes corporativas não são aplicadas as boas praticas relacionadas a performance, disponibilidade, capacidade e segurança. O que faz com que estas corporações possuam um custo muito elevado ou até mesmo tenham perdas financeiras devido a falhas constantes na rede, que não possuem um correto monitoramento e administração de recursos importantes para o funcionamento saudável da rede. Neste trabalho são mostradas técnicas de controle de tráfego que podem auxiliar o administrador de redes a melhorar os aspectos de performance,capacidade e disponibilidade da rede, o que impacta em uma melhor utilização dos recursos e diminuição de custos desnecessários. 1. Introdução A computação não foi criada da mesma forma que conhecemos hoje, tanto em capacidade computacional ou em serviços e sistemas que utilizam a computação. Alguns anos atrás poucas empresas ou quase nenhuma conseguia investir valores absurdos para informatizar toda sua empresa. Nesta época as corporações também não conseguiam enxergar o ganho que este benefício traria para corporação. Um grande passo para evolução da computação foi a possibilidade de interligação destes equipamentos e a possibilidade de trocas de informações rápidas e automatizadas. Com essa possibilidade foram surgindo diversas aplicações que utilizam a rede de dados para prover algum tipo de serviço que beneficiaria o negócio ou a corporação. Com toda essa evolução tecnológica, podemos concluir que nos dias de hoje a rede de dados é essencial para qualquer tipo de negócio ou corporação funcionar de forma produtiva e efetiva, atualmente temos uma infinidade de serviços e aplicações que utilizam os recursos de rede de diversas formas, como exemplos temos as Vídeo conferencias, transferência de arquivos, streaming entre outros. Mas a grande questão é: Esta rede está pronta para suportar todas as aplicações necessárias para o desenvolvimento das atividades Empresariais? Esta rede está usando a banda disponível para funções necessárias no negócio? Muitas empresas aumentam seus recursos de banda ou hardware de rede com o objetivo de garantir ou melhorar a performance de sua rede, porém esta não é a melhor pratica para realizar uma melhoria e garantir que todos os serviços necessários para negócio irão funcionar adequadamente, pelo contrário, o aumento de recursos sem uma análise de trafego de rede será um desperdício de valores para a empresa.[Jean Carlos Machado 2012] Aplicando técnicas de controle de fluxo, é possível obter resultados excelentes e evitar investimentos desnecessários em largura de banda ou até mesmo na compra de novos equipamentos para rede. Também vai ser demonstrado na prática como utilizar o sistema operacional Linux para realizar um controle de fluxo eficiente e sem custos extras. O objetivo deste trabalho é apresentar técnicas de controle de trafego de rede com o objetivo de filtrar e priorizar o trafego da rede e com isso otimizar os recursos para os serviços e aplicações que são vitais para o negócio. O restante deste trabalho segue com a seção Trabalhos Relacionados que apresenta alguns trabalhos relacionados; a seção Definição com as definições necessárias para a aplicação do sistema de monitoramento de tráfego e suas necessidades; a seção Características contendo as principais características do Linux Traffic Shape; a seção Protocolos e Recursos necessários define quais protocolos são utilizados e quais os recursos necessários; a seção Limitações trata das limitações apresentadas pelo monitoramento do tráfego; a seção Vantagens e Desvantagens aborda os pontos positivos e negativos na utilização desta ferramenta. 2. Trabalhos Relacionados Os trabalhos relacionados, mostram a importancia na busca de uma melhor qualidade de serviço quanto ao desempenho das aplicações no ambiente de rede e como o isto impacta nos negócios e na prestação de serviços que requerem a utilização da rede como pode ser visto nos trabalhos que seguem. Já o trabalho de [Braun et al. 2000] aborda os aspectos vantajosos do diffserv como suporte a qualidade de serviço (QOS), mostrando como serviços de telefonia IP ou aplicações de negócios podem ser beneficiadas. [Bless and Wehrle ] Támbem mostrou como os serviços diferenciados podem influenciar na melhora da qualidade dos serviços de aplicações comumente utilizadas o ambiente de trabalho. Os resultados foram que uma garantia de produção, mas apenas quando implementados o controle o policiamento e a modelagem do tráfego de maneira unificadas. [Bannazadeh and Leon-Garcia 2010] apresentaram um trabalho distribuído para o controle de tráfego, utilizando quatro algoritmos diferentes para a distribuição dos DETS, o artigo mostrou através de experimentos a eficácia dos DETS para controle de tráfego de rede. No trabalho de [Goldstein et al. 2008] os autores mostram a mitigação de um ataque DDoS usado contra uma rede com o controle de tráfego Linux Traffic Shape contra nf-hi-shape. Buscando o maior desempenho quanto ao bloqueio dos pacotes e mantimento do rendimento, o nf-hi-shape motrou um rendimento muito superior ao do TC do traffic shape quanto a capacidade de rendimento. [Weinsberg et al. 2011] apresentou um metodo de sondagem ativa que moldava o tráfego utilizando um modelo de conceito-chave , comparando o tempo de chegada dos pacotes, a largura de banda usada e o fluxo de base medidos.O artigo apresentou 3 metodos de estastiticos para detectar o Traffic Shape e inferir os parametros e avaliar e aplicar os metodos. 3. Definição Nos primórdios da conexão TCP/IP, qualquer largura de banda era suficiente para atender as poucas demandas que possuíam, através da evolução da tecnologia e da comunicação de dados foram oferecidos inúmeros serviços que utilizam a rede TCP/IP para troca de dados. Toda a troca de dados entre uma rede depende de equipamentos que forneçam largura de banda e CPU para rotear os pacotes através do seu fluxo padrão. Porém muitas vezes temos tantos sistemas e aplicações que utilizam a rede de dados que não é possível garantir que tudo que trafega pela rede funcionará adequadamente. Para ajudar na otimização da rede foi criado o termo QoS (Quality of Service) que normalmente é utilizado para medir e definir a satisfação do usuário referente a um serviço que lhe é oferecido, QoS não é um termo exclusivo da tecnologia da informação e por isso pode obter diversos significados e utilizações. [FILHO 2006] No ramo de tecnologia da informação e mais especificadamente para redes de computadores, o termo QoS é utilizado como um conjunto de indicadores e mensuráveis que possam ser mantidos dentro dos limites durante o fornecimento de um serviço ao cliente ou usuário. Podemos definir o QoS como as seguintes caracteristicas: • Largura de banda (Vazão): Define a quantidade de equipamentos que serão utilizados em uma rede compartilhada entre eles, e podemos também definir como a capacidade máxima de transferência de dados que pode ser utilizado em uma conexão. • Atraso: É a diferença no tempo em que um determinado pacote é enviado e recebido pelo seu destino. • Confiabilidade / Perda de pacotes: Representa a quantidade de pacotes que foram perdidos no momento que foram enviados para o seu destino. • Jitter: Pode ser definido como a variação dos valores de atraso entre pacotes distintos de uma transmissão. Se uma aplicação possuir todos os recursos de rede disponíveis apenas para ela, raramente vamos obter problemas relacionados aos parâmetros de QoS, porém atualmente sabemos que as redes são compartilhadas com diversas aplicações simultaneamente e que o protocolo TCP/IP não provê mecanismos nativos que forneça recursos de QoS para o seu trafego. Seguindo essa lógica a aplicação do QoS implicará diretamente em modificar as regras de concorrência de uma rede, de forma que alguns pacotes sejam priorizados ou privilegiados através do controle de tráfego. Para determinar o tipo de tratamento destinado aos pacotes de uma rede, vai ser considerada a arquitetura de QoS que será adotada na rede. As utilizações de recursos para controle de banda possuem relação com o termo de QoS pois controlar a distribuição da largura de banda em uma rede, mesmo implicando em atuar sobre um único parâmetro, não deixa de pertencer a uma abordagem de QoS. Sendo possível encontrar diversas semelhanças do Controle de banda com a arquitetura DiffServ do QoS. Segue abaixo a explicação técnica de um roteador sem priorização de tráfego: Processador De Roteamento: Realiza o processo de leitura do endereço de destino que esta o cabeçalho do pacote e determina mediante a consulta á tabela de rotas, qual será o próximo destido do pacote e por qual porta de saída ele será encaminhado. Circuitos de Comutação: Executa o repasse dos pacotes que foram classificados através das regras de encaminhamento determinadas pelo processador de roteamento. Portas de entrada e Saída: Uma porta de entrada trabalha desde a recepção dos dados eletricamente codificados até a entrega de um pacote ao circuito de comutação, enquanto uma porta de saída trabalha de modo inverso, recebendo pacotes que devem ser conduzidos ao meio de transmissão. Na prática, uma mesma porta realiza as duas funções. Figura 1. Estrutura de um roteador com configuração básica (1) Abaixo uma explicação do funcionamento basico de priorização de tráfego: Classificação e Marcação: Objetivo não é oferecer o tratamento único a cada pacote da rede, mas sim identificá-los e agrupá-los para as filas corretas que receberão o devido tratamento. Como esses agrupamentos são normalmente chamados de "classes"essa etapa é conhecida como "classificação" Ponto chave da classificação: Critérios (Mac, End. IP origem e dest. , Portas TCP/UDP) que serão utilizados para encaminhar para classe correta Filas:São regiões de memória alocadas para auxiliarem nas tarefas de classificação e controle da vazão de um fluxo de dados. As filas são essencialmente importantes, uma vez que cada um dos fluxos identificados durante a classificação é direcionado para uma fila em particular, correspondendo à sua classe. Classes podem ramificar em outras classes conhecidas como “Filhas”, quando uma classe é a ultima de sua hierarquia, é chamada de folha. Mecanismos de escalonamento: Peça central na priorização é o escalonador, pois decide que pacote será atendido primeiro em um sistema de filas múltiplas. Atualmente existem duas técnicas de escalonamento: ClassFul e Classless Componente responsável por gerenciar a distribuição dos recursos, a maneira como o escalonador desempenha sua tarefa depende do mecanismo utilizado. Figura 2. Estrutura de um roteador com priorização de trafego (2) O mecanismo PQ trabalha com um esquema rígido de priorização do acesso à interface de saída. Este mecanismo consiste na definição de filas com prioridade diferentes (Alta,média e baixa), as quais são rigidamente servidas pelo escalonador, que só começa a atender uma fila quando todas as outras com prioridade maior que a dela estiverem completamente vazias. Para aplicações de alta prioridade o mecanismo funciona de forma satisfatória, porém as filas de prioridade inferior tende a sofrer diversos problemas com a falta de recurso. (3) Possui como meta garantir que todos os fluxos de dados tenham acesso à largura de banda disponível, numa forma de distribuição "Justa"do recurso. Esta distribuição acontece mediante a identificação dos pacotes provenientes de comunicações distintas, o que no Weighted Fair Queueing - WFQ (Enfileiramento justo ponderado) é feiro dinamicamente com base em dados como end.IP, tipo de protocolo, nº de porta. Figura 3. PQ - Fila de Prioridade Pode ser inviável criar filas individuais para todos os fluxos de pacotes, com isso o algoritmo SFQ - Stochastic Fairness Queueing (Enfileiramento Estocástico Justo) utiliza funções em HASH para distribuir os pacotes entre as filas. Figura 4. FQ - Filas Igualitárias (4) Class Based Queueing - CBQ (Enfileiramento baseado em classes) é uma variante do PQ criada para contemplar priorização de tráfego, mas sem o incoveniente de deixar fluxos de menor prioridade sem acesso aos recursos. Cada fila é servida de um percentual fixo da banda por um escalonador Round-Robin, numa sequencia pré-definida. Foi o primeiro mecanismo a fornecer garantias efetivas de banda, característica que permite sua utilização nos pontos de uma rede mais suscetíveis a situações de congestionamento, numa estratégia de assegurar a entrega de uma porção fixa de banda sem impedir que capacidade remanescente seja utilizada pelas demais filas. A maneira como ele implementa suas funcionalidades também tem sido alvo de várias críticas, principalmente com relação à complexidade e imprecisão dos cálculos utilizados na definição das fatias de banda. Figura 5. CBQ - Filas baseadas em classes (5) 4. Caracteristicas O suporte a serviços diferenciados no Linux baseiam se na utilização dos elementos de controle de tráfego fornecidos pelo sistema, como classes, filtros e escalonadores. O sistema oferece suporte a arquitetura Diffserv sendo que todas as versões anteriores à 2.4 do seu Kernel tem como nativa em seu código a possibilidade da aplicação deste patch, enquanto que o escalonamento HTB foi adicionado após a versão 2.4.20. [Hubert et al. ] O Linux tem um excelente desempenho quanto ao tratamento e encaminhamento de fluxos de dados, isso se deve principalmente ao fato dessas tarefas serem desempenhadas por funções nativas do Kernel do sistema Linux. Os elementos do controle de tráfego são criados ligados uns aos outros, e são individualmente inseridos ao sistema, como mostrado na Figura 6. Figura 6. Identificando os Elementos (6) A ligação lógica só acontece através dos identificadores conhecidos como handle (para os escaloneadores) e classid (nas classes). Todos os componentes criados (com exceção dos escalonadores) devem informar o identificador do elemento "pai"para que as relações de hierarquia sejam recriadas. Os identificadores são compostos por dois números de 16 bits. O pacote iproute foi desenvolvido para que fosse permitido fazer as configurações das funcionalidades ligadas às redes IP, manipulando as estruturas do Kernel. [Brown 2006] A estrutura do controle de tráfego pode ser vista na Figura7, onde nota-se os seguintes elementos: Figura 7. Estrutura do Controle de tráfego (7) • • • • Tc: A ferramenta Elemento: qdisc | class | filter (escalonador, classe, filtro); Opção: add | del | show (adicionar, remover, exibir); Dispositivo: a interface utilizada: eth0, ppp0, etc. 4.1. Escalonadores Os escalonadores são os principais componentes do controle de tráfego no Linux, e são conhecidos como qdisc (Disciplina de enfileiramento), pois ele trata da ordem em que os pacotes em sua entrada devem aparecer em sua saída. Existem dois grupos de escalonadores no Linux, os classificados e os não classificados. Os classificados (classful) são capazes de adicionar diferentes elementos internamente, como filtros, classes e até outros escalonadores. Já os não classificados (classless) não conseguem receber internamente outros elementos. Abaixo seguem os escalonadores queLinux contempla. [Brown 2006] Escalonadores classful: • • • • • • Class Based Queuing (CBQ) Hierarchical Token Bucket (HTB) Hierarchical Fair Service Curve (HFSC) Multi Band Priority Queueing (PRIO) Generic Random Early Detection (GRED) Differentiated Service Marker (DSMARK) Escalonadores classless: • • • • • First In First Out - FIFO (PFIFO e BFIFO) Packet FIFO Fast (PFIFO-FAST) Stochastic Fairness Queuing (SFQ) Random Early Detection (RED) Token Bucket Filter (TBF) 4.2. Classes As classes cumprem a função de cuidar do tratamento diferenciado oferecido ao fluxo de dados. As classes podem se ramificar em outras classes, conhecidas como "filhas". Quando uma classe é a ultima de sua hierarquia ou seja , não possuindo outras filhas ela é chamada de "folha". Os escalonadores tipo FIFO são associados a uma nova classe quando esta é criada, entretanto se uma outra classe for criada desta classe, ou seja uma classe filha, esse escalonador é removido, existindo apenas na nova classe "folha"que será o final da hierarquia desta classe. Embora os escalonadores incialmente associados as novas classes seja do tipo FIFO, eles podem ser substituídos, não importando se é classful ou classless. Isso expande as combinações de estruturas que podem ser implementadas no sistema Linux. [Hubert et al. ] 4.3. Filtros Os filtros fazem a seleção , identificam e direcionam os fluxos de dados para os escalonadores.Eles são compostos de dois elementos, um mecanismo que é responsável pela identificação padrão nos pacotes e uma ação já predefinida que deve ser aplicada a pacotes aos quais foram encontrados os padrões. Cada elemento adicionado ao escalonador principal vai receber uma identificação única, sendo então o filtro vai apenas encaminhar os pacotes identificados pelo padrão para o componente que possui o identificador predefinido. Alguns dos filtros predefinidos para Linux são: • FW: Que baseia suas decisões emmarcações prévias do netfilter, que o torna uma excelente opção para aquele já familiarizados com o iptables. • U32: Ele é considerado o principal filtro do Linux porque ele permite a identificação de padrões em qualquer parte de um pacote IP. • Route: Baseia nas rotas de origem e destino dos pacotes para definir a ação que deve ser aplicada. • TCINDEX: Baseia suas ações a partir da identificação de marcações prévias de um escaloneador DSMARK. Os filtros também podem agir como policiadores do tráfego no linux. E possível definir um valor máximo de tráfego a ser aceito e considerar apenas pacotes que estejam dentro destes padrões de classificação, além de que uma ação pode ser aplicada para os pacotes que não se enquadram nesses padrões e tenham o limite excedido. Para que essa classificação seja feita é necessário um mecanismo para medir a quantidade de tráfego que passa pelo filtro, o que pode ser feito por um calculo estimativo, baseado em medições sucessivas que são feitas pelo Kernel do Linux. Ou adicionando métricas ao tráfego utilizando um escaloneador classless do tipo TBF - Token Bucket Filter que vai controlar a entrega de pacotes com base no mecanismo de balde de fichas. Quando o filtro encontra um valor superior ao máximo volume definido previamente esse estado é conhecido como "overlimit" algumas das mais importantes ações adotadas quando ele entra em overlimit são: • Continue: Que impede que os pacotes excedentes sejam classificados pelo filtro em questão, mas permite que eles sigam para outros filtros que ainda podem classificar este tráfego. • Drop: Esta ação simplemente descarta os pacotes excedentes. • Pass/OK: Essa ação ignora o overlimit estabelecido pelas politicas e continua a classificar o pacote normalmente. • Reclassify: Os pacotes excedentes são direcionados para um tráfego não classificado (default). 5. Vantagens e Desvantagens Qualquer infraestrutura rede é criada para atender as necessidades do negócio com a melhor forma possível e o menor custo para a corporação, pensando neste objetivo o controle de trafego através de priorização é uma ferramenta muito importante para apoiar essa necessidade. Assim como se é sabido a utilização da Rede para várias tarefas diferentes vem aumentando moderadamente nos ultimos anos. [?] Porém apenas aplicar essa tecnologia não será o suficiente para garantir a estabilidade e confiabilidade a um ambiente de rede. Existem pontos fortes e fracos referente a utilização do controle de fluxo em redes TCP/IP, estes serão abordados em seguida. 5.1. Vantagens • Aplicando o recurso de controle de fluxo é possível priorizar o tráfego de rede para aplicações que são críticas para o negócio e com isso aproveitando melhor os recursos disponíveis. • Em alguns casos a utilização de controle de fluxo pode substituir o aumento de um recursos de hardware ou de largura de banda com isso diminuindo o orçamento excessivo. • A aplicação de controle de fluxo pode melhorar a utilização de algumas aplicações, ex: Vídeo Conferencia, Áudio, Voip entre outros. • Em organizações de pequeno porte, é aconselhado a utilização de servidores Linux para realização de controle de fluxo. 5.2. Desvantagens • A aplicação de um controle de banda não aumenta a transmissão de uma rede, apenas consegue utilizar o recurso de forma mais eficiente e distribuído. • Se uma aplicação utilizar a rede sozinha e mesmo assim apresentar problemas de performance, a aplicação de um controle de fluxo não resolverá o problema. • Aplicar limites de banda para certas aplicações pode ocasionar o mal funcionamento da mesma ou até tornar a execução da aplicação inviável. • Em ambientes de grandes corporações se torna inviável a utilização de servidores Linux para realização de controle de banda. 6. Método de validação Após a implementação de uma estrutura de controle de tráfego, existem diversas maneiras para validar que o método aplicado retornou com o resultado esperado. Podemos utilizar ferramentas de monitoramento (PRTG) para mensurar a utilização da banda e com isso verificar se após a aplicação de controle de banda a utilização normalizou ou diminuiu. Também é possível realizar testes de performance nas aplicações que utilizam a rede para obter dados referentes a utilização dos usuários. 7. Análise crítica do grupo Acreditamos que o Kernel do Linux possui todas as caracteristicas necessárias para suportar uma ferramenta de Traffic Shapping robusta e otimizada. Porém recomendamos que não seja utilizado um servidor linux para ambientes de grandes corporações. Encontramos diversos problemas na implementação e na utilização da ferramenta, porém a documentação disponibilizada na comunidade é suficiente para implementar essa solução. 8. Conclusão Em nosso ambiente de testes, concluímos que o Traffic Shape é uma ótima ferramenta gratuita, porém durante a implementação do sistema observamos os seguintes problemas: • Em uma rede Giga, limitamos a banda para 16 KB, porém após a inicialização do Traffic Shaper o Upload/Download ficou oscilando entre 8 KB até 14 KB. Com estas informações podemos concluir que a ativação do Traffic shaper não irá utilizar a banda total limitada pela aplicação. • Tivemos enorme dificuldade na configuração do software, principalmente na etapa de limitação de banda para Upload. Podemos concluir que a ferramenta pode ser utilizada satisfatoriamente em ambientes de pequenas e médias empresas, porém com os testes que realizamos não recomendamos a utilização do software em ambientes de grandes corporações. Referências Bannazadeh, H. and Leon-Garcia, a. (2010). A Distributed Ethernet Traffic Shaping system. 2010 17th IEEE Workshop on Local & Metropolitan Area Networks (LANMAN). Bless, R. and Wehrle, K. Evaluation of Differentiated Services using an Implementation under Linux Implementation under Linux. Braun, T., Einsiedler, H. J., Scheidegger, M., Jonas, K., and Stüttgen, H. J. (2000). A Linux Implementation of a Differentiated Services Router. Brown, M. A. (2006). Traffic control howto. Guide to IP Layer Network. FILHO, J. L. D. O. (2006). Tecnologias diffserv como suporte para a qualidade de serviço (qos) de aplicações multimídia - aspectos de configuração e integração. UNIFACS. Goldstein, M., Reif, M., Stahl, A., and Breuel, T. (2008). High performance traffic shaping for DDoS mitigation. Proceedings of the 2008 ACM CoNEXT Conference on CONEXT 08. Hubert, B., Graf, T., Maxwell, G., Van Mook, R., Van Oosterhout, M., Schroeder, P., Spaans, J., and Larroy, P. Linux advanced routing & traffic control howto, apr. 2004. Jean Carlos Machado, J. M. (2012). Controle de tráfego no linux - aplicação a uma empresa de médio porte. T.I.S. Weinsberg, U., Soule, A., and Massoulie, L. (2011). Inferring traffic shaping and policy parameters using end host measurements. Proceedings - IEEE INFOCOM.