domingo, 23 de janeiro de 2011

Simulação de Redes com Network Simulator - Arquivo TCL

SCRIPT TCL PARA NETWORK SIMULATOR


Para podermos simular redes com o NS-2, necessitamos de programar um arquivo TCL. As sessões abaixo explicam de forma detalhada a estrutura de um arquivo TCL para o uso do NS-2. A estrutura do arquivo foi tirada como base o tutorial de  Marc Greis .

TEMPLATE DA SIMULAÇÃO


Para que o NS-2 interprete a simulação, alguns parâmetros devem ser pré definidos, o primeiro passo é definir um objeto de simulação com o comando abaixo.

#Criando um objeto de simulacao
set ns [new Simulator]

Também deve-se criar um arquivo para a escrita que será utilizado pelo NAM

#Open the nam trace file
set nf [open exemplo.nam w]
$ns namtrace-all $nf

Onde a primeira linha abre o arquivo “exemplo.nam” para a escrita e e o identifica como “nf”. A segunda linha diz ao objeto de simulação que foi criado anteriormente, que todos os dados relevantes para a simulação através do NAM.
O que vem a seguir é um processo que encerra a o arquivo de simulação e dá inicio a animação.

proc finish {} {
global ns nf
$ns flush-trace
close $nf
exec nam exemplo.nam &
exit 0
}   

Após definido o processo de encerrar a simulação, o mesmo será chamado na parte final do arquivo através do comando:

$ns at 20 "finish"

O comando acima encerra a simulação aos 20 segundos. E por fim, com o comando abaixo a simulação é rodada.
$ns run

Com estes comandos o ambiente para a simulação de LAN está preparado, o próximo passo é definir os nós e os elançes.

 NÓS E ENLACES


O exemplo utilizado será para a mais simples simulação, uma rede de dois elementos, dois nós e um link. Para se declarar os nós, utiliza-se os seguintes comandos:
set n1 [$ns node]

Agora deve-se conectar os nós através de um link

$ns duplex-link $n0 $n1 1Mb 10ms DropTail

O link criado é um link duplex com uma taxa de transferência de 1Mb e com o atraso de transmissão de 10ms. Com estes comandos a rede criada terá a seguinte forma visual:

Agora com a estrutura da rede montada basta enviar os dados.

ENVIO DE DADOS


Como exemplo de dados a serem transmitidos, utilizaremos um agente TCP sobre uma aplicação FTP
Nomeamos o agente TCP de “tcp0” e dizemos que o mesmo partirá do nó zero.

set tcp0 [new Agent/TCP]
$ns attach-agent $no0 $tcp0

Criamos um sincronismo entre o nó destino (no1) e o agente TCP, este sincronismo é necessário porque o agente TCP é orientado à conexão, e é através dele que o protocolo pode escolher qual a melhor taxa de transferência para o link.

set sink0 [new Agent/TCPSink]
$ns attach-agent $no1 $sink0

Nomeamos a aplicação FTP de “ftp0”  

set ftp0 [new Application/FTP]

Definimos o tamanho do pacote em bytes e conectamos o TCP ao sincronismo.

$ftp0 set packetSize_ 543
$ftp0 attach-agent $tcp0
$ns connect $tcp0 $sink0

Definimos o instante em que o agente TCP começará a transmissão

$ns at 0.7 "$ftp0 start"

Definimos o instante em que o agente TCP encerrará a transmissão

$ns at 10 "$ns detach-agent $no1 $sink0"

facebook

Postagens populares