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"