• Nenhum resultado encontrado

2 (ns-2))

Esta secção apresenta o simulador de rede 2 [nsR10], e as alterações introduzidas para implementar os algoritmos de engenharia de tráfego propostos nesta tese. O ns-2 é uma ferramenta valiosa para os investigadores testarem protocolos de redes, com ou sem fios. Este simulador dá uma base adequada para modificar ou criar mecanismos em cada camada do modelo OSI [osi10]. O programa é de código aberto, o que permite aos utili- zadores uma grande flexibilidade para o modificar e corrigir alguns das suas falhas. No entanto, a utilização deste software implica um grande conhecimento dos seus mecanis- mos. Nesta secção assume-se que o leitor tem conhecimentos básicos dos mecanismos3

do ns-2.

3

Para uma leitura completa do manual do software ver [nsM10]. Um tutorial rápido está também disponível na página de Marc Greis [nsT10].

Os mecanismos do ns-2 são suportados através do T cl [tcl10], uma linguagem de scripting, e da linguagem de programação C + +. O Tcl é utilizado para a definição dos ficheiros de configuração, mas também como uma interface para executar comandos sobre os objectos de C + + que são mapeados no T cl. Quanto à linguagem C + +, é usada para definir os mecanismos dos protocolos. Como exemplo, um ficheiro em T cl pode executar um comando que dispara um evento para avisar que uma ligação está sobrecarregada. Esse evento pode invocar uma rotina em C + + para advertir a camada da engenharia de trá- fego que uma ligação está sobrecarregada. Como consequência, o algoritmo da engenharia de tráfego irá proceder aos cálculos necessários para inverter a situação da ligação. Para testar um cenário de uma rede, o ns-2 lê um ficheiro de simulação em T cl e realiza uma simulação em tempo discreto. Para cada protocolo, independente da sua camada, um objecto T cl é criado para cada nó. Este objecto é geralmente designado como agente e que serve como parâmetro para os pacotes. A interacção entre as camadas é suportada por um módulo especial, chamado de classificador. Um classificador também é utilizado para outros fins, tais como o encaminhamento de pacotes para outros nós.

Esta tese utiliza o trabalho realizado por Francisco Ganhão na sua tese de mestrado [Gan09], na qual implementou o protocolo de encaminhamento multi-região - DTIA em ns-2.

Os comandos Tcl são usados em cada uma das ligações entre dois SAs, para definir qual o agente de encaminhamento está associado a essa ligação. As próximas linhas apresentam um exemplo de um ficheiro T cl a definir um agente de encaminhamento para uma ligação.

1. $ns duplex-link $n(i) $n(j) largura-banda atraso tipo-lista 2. set link [$ns link $n(i) $n(j)]

3. set rtobj [$n(j) rtObject?]

4. set rtproto [ $rtobj rtProto ? DTIA ] 5. $link add-link-agent rtProto $rtproto(j)

A primeira linha de código cria uma ligação nos dois sentidos entre os nós i e j. A se- gunda linha de código obtém o objecto da ligação do nó i para o nó j. A terceira linha de

código é usada para obter o objecto de encaminhamento de um nó, que contém todos os agentes do protocolo de encaminhamento que o nó está a usar. A quarta linha de código é usada para obter o protocolo de encaminhamento - DTIA. Por fim, a quinta linha de código interliga o objecto da ligação com o agente de encaminhamento do nó final, j, dessa ligação.

Para se simular a detecção do aviso de ligação sobrecarregada, foi usado um comando T cl na lista de espera da ligação para se monitorizar o seu estado. O comando inter- liga a lista de pacotes com o protocolo de encaminhamento, para que este possa remeter o estado da ligação para a camada da engenharia de tráfego. É definido da seguinte forma:

1. $rtproto(j) cmd set-link-status id-vizinho estado-lista

O comando invoca no objecto do protocolo de encaminhamento a função set−link−status com a identificação do vizinho com o qual é estabelecida a ligação e a percentagem da ocupação da ligação.

Outra mudança incluída no ns-2, foi a alteração no número de pacotes a enviar para cada um dos primeiros saltos de um destino. A alteração é efectuada no classificador. A camada da engenharia de tráfego decide qual o novo número de pacotes a atribuir a um primeiro salto e passa essa informação para a camada de encaminhamento, pois é esta camada que conhece o objecto do nó. As próximas linhas apresentam um exemplo de um ficheiro T cl a definir um número de pacotes para um próximo salto.

1. $Obj-Nó setPathWeight $Id-Destino $Id-Prox-Salto $N-Pacotes

2. $Classificador($Id-Destino) cmd setPathWeight $Id-Prox-Salto $N-Pacotes

A primeira linha, executada na camada de encaminhamento, invoca no objecto do nó um procedimento com a seguinte informação: identificação do nó de destino; identificação do próximo salto para esse destino; e o novo número de pacotes que devem ser enviados para o próximo salto. Este passo é necessário pois é na classe Nó que está a interface do objecto do classificador para cada destino. O comando setP athW eight ordena o classi- ficador do destino, $Classif icador($Id − Destino), a executar a alteração do envio de

pacotes para o próximo salto, $Id − P rox − Salto, estabelecendo um novo número de pacotes, $N − P acotes, para esse salto.

Análise de Resultados

5.1

Introdução

Este capítulo apresenta uma análise do desempenho dos algoritmos desenvolvidos. Esta análise baseia-se na comparação do desempenho da arquitectura DTIA, sem engenharia de tráfego e com engenharia de tráfego. Salienta-se também a comparação entre algorit- mos relativamente ao número de mensagens de engenharia de tráfego utilizado.

A secção 5.2 apresenta a topologia testada nas simulações. Esta topologia é baseada em dados da CAIDA [cai]. Depois, a secção 5.3 avalia o desempenho relativamente às seguintes métricas:

• Número de pacotes entregues versus os não entregues;

• Percentagem de utilização das ligações consideradas relevantes; • Número de mensagens de engenharia de tráfego enviadas.

Documentos relacionados