[GTER] Construindo um modelo de Engenharia de Tráfego

Carlos Ribeiro cribeiro at mail.inet.com.br
Wed May 8 07:50:01 -03 2002


[tenho a impressão que essa mensagem não foi enviada corretamente para a 
lista... segue uma segunda cópia. peço desculpas caso chegue em duplicidade]

A todos,

Obrigado pelos comentários, e em especial ao Reinaldo pelas referências 
enviadas. De toda forma, continuo sentindo que ainda falta aprofundar a 
discussão. Temos aqui no grupo representantes da maioria dos backbones 
brasileiros, mas mesmo assim, a discussão ainda não 'esquentou'... Acho que à 
medida que formos colocando as idéias no ar, a discussão deve aumentar, para 
benefício de todos. Assim... vamos ao que interessa, certo?

----
Construindo um modelo de Engenharia de Tráfego 


Um dos principais desafios ao estudar o tema 'Engenharia de Tráfego' é a sua 
extensão e complexidade. Em geral, os modelos apresentados são bastante 
complexos, e partem do princípio de que o leitor já está plenamente 
familiarizado com os problemas típicos de uma rede IP de grande porte, com 
centenas de roteadores (!). Vamos partir de premissas diferentes: um modelo 
simplificado, que nos permitirá exercitar alguns dos conceitos básicos de 
Engenharia de Tráfego IP. À medida que o nosso backbone cresce, vamos ver 
como novas técnicas de medição e planejamento podem ser aplicadas.


1. Caso trivial: o backbone de um só roteador

Vamos imaginar uma operadora de serviços de conectividade IP que possua 
apenas um único roteador, com todos os seus clientes diretamente conectados. 
Para todos os efeitos, o roteador é do tipo ideal: possui capacidade de 
comutação ilimitada, sendo capaz de sustentar o tráfego em taxa máxima, em 
ambos os sentidos, sem perda de pacotes. A única restrição é a taxa das 
interfaces de acesso, com as quais os clientes se ligam à rede. Nosso 
objetivo é garantir a qualidade do acesso dos clientes, de tal forma que 
estes consigam usar a rede para se comunicar sem congestionamento.

Neste cenário ideal, o trabalho de planejamento se restringe ao 
dimensionamento dos acessos, garantindo que cada cliente tenha um 'tubo' com 
capacidade suficiente para o seu tráfego de pico. Este trabalho pode ser 
feito de forma bastante simples, monitorando o perfil de tráfego de cada um 
dos links para determinar a sua necessidade; o MRTG ou o RRDTool atendem 
perfeitamente a esta finalidade. Sempre que o tráfego usual de pico diário 
exceder um certo limite pré-estabelecido, é feita uma expansão do acesso para 
adequação do serviço.


2. Rede em dois estágios: concentração de acesso

Agora, vamos imaginar que o nosso roteador do Exemplo 1 não era assim tão 
perfeito; apesar de infinitamente rápido, ele possui limitações na sua 
capacidade de portas de acesso. Assim, torna-se necessário expandir a rede, 
fazendo a concentração dos acessos em outros equipamentos, tantos quanto 
necessário para interligar todos os clientes. O núcleo da rede, porém, 
continua bastante simples, com o nosso roteador central interligando todos os 
roteadores de acesso.

Considerando ainda que estamos falando de roteadores ideais, vemos que a 
única diferença para o cenário inicial está no dimensionamento dos troncos 
entre os concentradores de acesso e o roteador de núcleo. O tráfego nestes 
troncos depende da combinação do interesse de tráfego existente na rede, que 
pode ser expressa em uma matriz de tráfego simplificada, relacionando o 
volume de tráfego trocado entre dois clientes quaisquer. O estudo da matriz 
de tráfego pode indicar diferentes formas de estruturar e dimensionar os 
troncos da rede.

A capacidade total de cada tronco depende da combinação de clientes em cada 
roteador de acesso. Se modificarmos a forma como os clientes são agrupados, 
teremos um dimensionamento diferente. De forma genérica, seria ideal tentar 
agrupar os clientes que tem maior interesse comum de tráfego em um mesmo 
roteador de acesso. No entanto, isso nem sempre é possível, como veremos mais 
adiante (item 2.1).

Com uma rede mais complexa, utilitários como o MRTG começam a se mostrar 
limitados; afinal, eles apenas indicam se um tronco está sobrecarregado, mas 
não trazem nenhuma informação que possa permitir uma análise da arquitetura 
da rede (por exemplo, para tentar redistribuir os acessos minimizando a troca 
de tráfego entre os roteadores). Para compor a matriz de tráfego, outras 
ferramentas mais sofisticadas se fazem necessárias. As principais 
alternativas são as ferramentas de medição de tráfego baseadas em fluxos 
(flow-based accounting), das quais o NetFlow, criado originalmente pela 
Cisco, é um dos exemplos principais.

A medição do tráfego baseada em fluxos é muito flexível e poderosa, mas a 
quantidade de informações que podem ser coletadas também pode gerar mais 
problemas do que resolve. Para utilizar uma ferramenta como NetFlow, é 
preciso em primeiro lugar estabelecer cuidadosamente os critérios de medição:

- O NetFlow permite caracterizar o tráfego não somente pela sua origem x 
destino, mas por outras informações, como aplicaçao, tamanho dos pacotes, 
número de conexões TCP, etc. Em um primeiro momento, sugerimos que a análise 
seja feita considerando somente os endereços de origem e destino.

- A escolha dos pontos de coleta para a medida dos fluxos é importante, para 
evitar que os dados sejam computados em duplicidade na matriz de tráfego.

- O volume de informações geradas pelo NetFlow pode sobrecarregar não somente 
os roteadores, mas também a própria rede e os servidores que recebem os 
dados. De uma certa forma, o próprio NetFlow se torna uma das aplicações mais 
críticas da rede, afetando o resultado das medidas. 

- À medida que o volume de tráfego cresce, a quantidade de informações 
coletadas com o NetFlow cresce linearmente. No entanto, a quantidade de 
combinações de tráfego cresce geometricamente com o número de acessos. A 
partir de um certo ponto, a tendência é fazer a monitoração estatística dos 
fluxos. [obs: técnicas de coleta e concentração locais da medida podem dar 
mais fôlego ao NetFlow, mas o processo como um todo é matematicamente 
explosivo].


2.1. Concentração local de acessos

No mundo real, a forma de estruturar a rede com a concentração dos acessos 
está limitada por fatores práticos, que podem ser independentes da capacidade 
ou do número de portas dos roteadores. Um desses fatores é o custo do 
transporte entre os roteadores, que torna inviável economicamente a 
otimização da concentração de acordo com os dados da matriz de tráfego.

De uma forma geral, a modelagem da rede com a concentração local dos acessos 
também é feita com as mesmas ferramentas descritas no item (2). A principal 
diferença é reconhecer que nem sempre a melhor estrutura, conforme descrita 
pela matriz de tráfego, é viável, o que impõe mais limites às soluções 
viáveis para a rede.


3. Explodindo o núcleo da rede

Até agora, estamos considerando que a nossa rede está composta como uma 
estrela simples, e que o nosso roteador de núcleo concentra todo o tráfego, 
sem nenhum problema de performance. No entanto, essa topologia ideal também 
está sujeita aos limites do Mundo Real (tm). Os nossos roteadores de núcleo 
estão longe de serem ideais, tanto em desempenho como em confiabilidade. 
Assim, é importante distribuir a atividade do roteamento central em diversos 
equipamentos. Há várias formas distintas de atingir este objetivo.


3.1 Rede sem núcleo

Uma forma simplista de enxergar o problema é retirar completamente o núcleo 
da rede, de tal forma que os roteadores de acesso falam diretamente entre si. 
Neste caso, nossos roteadores de acessos estarão dispostos em uma topologia 
de malha densa, onde cada roteador possui troncos para todos os outros 
roteadores da rede. Esta topologia é bem mais complexa do que a nossa estrela 
simples do exemplo (2), e impõem novos desafios ao desenho da rede.

A principal ferramenta de planejamento de rede, neste caso, continua sendo a 
análise da matriz de tráfego, baseada nos dados do NetFlow ou outra 
ferramenta similar. Porém, o desenho em malha densa apresenta uma nova 
variável: a escolha do melhor caminho, baseada em um algoritmo de roteamento 
dinâmico.

Em uma rede em estrela (como no exemplo 2), não há alternativa de caminho. Na 
borda da rede, só há duas alternativas: comutação para uma interface local, 
ou para o núcleo da rede. A partir do momento que a rede possui uma malha, 
temos múltiplas rotas, e com isso múltiplas alternativas para escolher.

Em princípio, a topologia da rede em seu regime estável é relativamente 
simples. Supondo que todos os roteadores possuem conexão direta, temos apenas 
que dimensionar os troncos para a capacidade estimada de tráfego. No entanto, 
em caso de queda de um enlace qualquer, qual será o comportamento da rede?

Diferentemente de uma rede em estrela - onde a queda de um tronco significa 
uma interrupção de serviço - em uma rede em malha densa, teremos a escolha de 
uma nova rota para redirecionar o tráfego que antes passava pelo tronco que 
foi perdido. A rota de reserva tem que assumir o tráfego total, somando o 
tráfego do tronco que caiu ao seu próprio tráfego. Assim, o dimensionamento 
dos troncos para atuar como rota de reserva é um desafio importante. A 
princípio, qualquer tronco tem uma chance idêntica de falhar. Desta forma, 
temos que analisar todas as combinações possíveis de falha, para dimensionar 
os troncos de forma adequada.

Apesar de parecer óbvio, é importante não subestimar o problema apresentado. 
O dimensionamento incorreto da rota de reserva pode levar a uma situação de 
falha em cascata da rede; o tronco de reserva não consegue lidar com o volume 
total de tráfego, e em consequência começa a sobrecarregar outros pontos da 
rede. O planejamento da capacidade de reserva é uma atividade fundamental 
para evitar este problema.

Em muito casos, não é possível (ou interessante) criar uma estrutura de 
reserva para todas possibilidades de falha. Uma alternativa interessante é 
dotar a rede de um conjunto mínimo de troncos, bem dimensionados, e 
configurados de tal forma que o algoritmo de roteamento sempre escolha uma 
destas rotas para atuar como reserva. Este processo é possível com uma 
escolha adequada dos pesos e métricas do protocolo de roteamento. No entanto, 
para redes de grande porte, este é um trabalho que exige análise  
exaustiva, usando métodos matemáticos ou ferramentas de simulação 
especializadas.

A introdução do roteamento dinâmico é um dos elementos que permite dizer que 
passamos do simples dimensionamento de troncos para uma atividade de 'Traffic 
Engineering' para redes IP, segundo a definição mais aceita do termo. Daqui 
por diante, os outros exemplos apenas irão aprofundar nossa compreensão sobre 
o tema.


3.2 Camada de acesso + núcleo em malha densa

No mundo real, nem sempre é uma boa idéia compor a rede com apenas uma camada 
de roteadores fazendo as duas funções, acesso e núcleo. Várias razões podem 
ser citadas, entre elas:

- À medida que a rede cresce, o número de links da malha completa cresce 
geometricamente. A implantação de um núcleo de rede permite reduzir o tamanho 
da malha central da mesma; em consequência, também reduzimos a complexidade 
das decisões de roteamento.  

- A malha central pode ser otimizada para fazer o melhor uso dos recursos de 
transmissão existente entre os diversos pontos da rede.

- O núcleo e a borda da rede representam aplicações de natureza distinta, e 
que podem tirar vantagem de equipamentos com características diferenciadas. 

- Em termos administrativos, o isolamento do núcleo da rede se traduz em 
maior segurança e estabilidade.

Uma das consequências de um desenho em duas camadas, com um núcleo em malha 
densa, é a perda da ligação direta entre os roteadores de borda. Agora, a 
escolha do caminho entre dois pontos localizados na periferia da rede depende 
da participação dos roteadores de núcleo. Em redes de pequeno porte, este não 
chega a ser um problema sério. Porém, em redes de grande porte, é necessário 
um cuidado especial com a configuração das métricas do protocolo de 
roteamento utilizado no interior da rede, para garantir a convergência da 
rede para um desenho estável, onde os troncos tenham capacidade suficiente 
para o tráfego oferecido.


3.3. MPLS: Garantindo rotas pelo núcleo da rede

Em grandes rede IP, um dos principais desafios é garantir que o fluxo de 
dados siga pelos caminhos que foram previamente determinados pelo engenheiro 
de tráfego, com base nas informações da matriz. Em geral, isso é feito por 
meio do ajuste cuidadoso das métricas de roteamento. Porém, a complexidade 
dos algoritmos de roteamento e variedade imprevisível de situações que pode 
ocorrer torna este processo extremamente difícil de administrar.

Com o MPLS, temos uma ferramenta adequada para associar caminhos 
determinísticos a certos fluxos de dados. Utilizando um protocolo de 
roteamento especialmente adaptados (como o BGP4 ou OSPF), é possível fazer 
com que os roteadores de borda da rede vejam uma topologia em malha densa, 
sem que seja necessário provisionar manualmente cada um dos circuitos. Do 
ponto de vista dos roteadores de borda, a rede fica muito similar à 
apresentada em (3.1), mas aproveitando várias das otimizações apresentadas em 
(3.2).


4. Conclusão

Apresentamos neste artigo uma visão bastante simplificada de vários dos 
problemas que envolvem a atividade de Engenharia de Tráfego IP. Deixamos 
propositalmente de lado temas complexos, como diferenciação de serviços 
(DiffServ) e QoS (garantia de banda, latência, etc.); concentramos nossa 
atenção apenas no problema básico da escolha e dimensionamento das rotas. 
Nosso objetivo, antes de mais nada, é desmistificar o tema, mostrando uma 
visão prática, adequada à realidade brasileira, onde o crescimento das redes 
IP ainda é uma novidade. É importante deixar claro que Engenharia de Tráfego 
não é nenhuma tecnologia mágica, mas sim um conjunto de práticas e 
ferramentas, que só pode ser aplicada corretamente com uma compreensão clara 
do problema.

Esperamos que material seja útil, e que possa servir como base para 
discussões construtivas dentro do GT-ER. 


Carlos Ribeiro
CTBC Telecom




More information about the gter mailing list