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.

Documentos relacionados