SIMULATOR
Guia Bsico para Iniciantes
Por
Mauro Margalho Coutinho
Doutor em Engenharia Eltrica UFPa
2007
Network Simulator.
Guia Bsico para Iniciantes
Introduo ................................................................... 3
A Ferramenta NS ........................................................ 6
2.1
2.2
2.3
2.4
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.4.6
Planejando a Simulao............................................................... 11
Definindo os Ns ........................................................................... 14
Definindo os Enlaces .................................................................... 15
Definindo o Trfego ..................................................................... 16
Visualizando a Simulao com o NAM ...................................... 19
Analisando o trace e gerando os grficos .................................. 19
Informaes Genricas....................................................... 6
Fazendo o Download ......................................................... 7
Procedimentos de Instalao e Configurao .................... 7
Entendendo o Princpio de Funcionamento do NS .......... 11
ANEXO IV....................................................................... 50
Introduo
2
2.1
A Ferramenta NS
Informaes Genricas
2.2
Fazendo o Download
Ao final da instalao ser mostrado um caminho que deve ser copiado da interface
textual e adicionado ao seu arquivo de inicializao, como mostra a Figura 2.
PATH="$PATH:/usr/bin/X11:/usr/games:/usr/local/bin"
PATH="$PATH:/home/ns-allinone-2.26/bin:/home/ns-allinone2.26/tcl8.3.2/unix:/home/ns-allinone-2.26/tk8.3.2/unix"
MANPATH="$MANPATH:/usr/local/man"
10
Planejar a simulao
Definir os ns
Analisar os resultados
Para se escrever a simulao qualquer editor de textos pode ser utilizado, desde os
baseados em texto como o emacs, vi ou o mcedit at os editores grficos como o
kedit ou o kate que j vm com a interface grfica kde. Os arquivos devem ser
gravados com a extenso .tcl. Para se executar a simulao basta que se digite
[ns]$ ns <nome-do-arquivo>.tcl
Ex.: [ns]$ ns exemplo1.tcl
2.4.1
Planejando a Simulao
12
13
2.4.2
Definindo os Ns
Para uma grande quantidade de Ns um lao pode ser utilizado como mostrado no
cdigo abaixo:
set NumerodeNos
60; # Nmero de Ns
14
2.4.3
Definindo os Enlaces
15
2.4.4
Definindo o Trfego
Construo de procedures
2.4.5
A ferramenta NAM (Network Animator) muito importante para se ter uma idia
grfica, baseada em animaes, do andamento da simulao. Com o NAM pode-se
observar a transmisso dos fluxos, a formao de filas, o descarte de pacotes, etc.
(ver exemplo Figura 6). A execuo do NAM requer a instalao de uma interface
grfica no ambiente linux.
2.4.6
Concluda a simulao, inicia-se uma das fases mais importantes: a anlise dos
resultados. Afinal, estes sero utilizados na elaborao de grficos que serviro de
suporte a trabalhos a serem submetidos a eventos cientficos. fundamental que se
busque consistncia e coerncia nesses resultados antes de apresent-los. O NS
19
20
Figura 8 Vazo
21
Para obter os arquivos out1.tr, out2.tr e out3.tr observados no grfico, trs arquivos
de trace foram criados no inicio do script de simulao, um para cada fluxo.
set f0 [open out0.tr w]
set f1 [open out1.tr w]
set f2 [open out2.tr w]
em determinado instante
set bw0 [$sink0 set bytes_]
set bw1 [$sink1 set bytes_]
set bw2 [$sink2 set bytes_]
#Obtm o tempo corrente
set now [$ns now]
#Calcula a largura de banda (em MBit/s) e as
proc finish {} {
global f0 f1 f2
#Close the output files
close $f0
close $f1
close $f2
#Call xgraph to display the results
exec xgraph out0.tr out1.tr out2.tr -geometry 800x400[1] &
exit 0
}
[1] resoluo de vdeo onde o grfico ser exibido. Ex. 640X480
H casos, porm, que nenhum desses recursos resolve. Nesses casos das duas uma:
ou o usurio escreve um programa para ler o trace e proceder os clculos
necessrios ou ele importa o trace para um banco de dados, como o MS-Access
por exemplo, e aplica instrues SQL que facilmente podem filtrar o contedo do
trace.
a) Warm-Up
b) Intervalo de Confiana
24
eventualmente, algum dos fluxos obteve vazo de 4Mbps ou 0,512 Kbps estes
valores devem ser desconsiderados na apresentao dos resultados.
Para efeitos didticos o procedimento de clculo do intervalo de confiana ser
mostrado considerando-se que os dados obtidos foram importados para o MSExcel, onde certamente os grficos podero ser construdos com uma gama bem
variada de opes.
25
26
b) MPLS (Multi Protocol Label Switing): A proposta de prover QoS com MPLS
est ligada particularmente engenharia de trfego. Basicamente o uso de MPLS
implica na escolha do caminho a ser percorrido na transmisso de dados. Muitas
vezes o critrio padro para a escolha da rota se baseia no nmero de saltos entre
roteadores localizados entre o transmissor e o receptor. provvel que, em
algumas situaes, h mais vantagem em se enviar o dado por uma caminho mais
longo, mas com largura de banda maior, por exemplo. Nessas situaes MPLS
pode configurar um proposta interessante. Aos interessados, sugerimos uma
28
definir o comportamento do pacote por salto ou PHB (Per Hop Behavior) que
analisado em cada roteador no despacho do pacote. Os outros dois bits foram
preservados para uso em futuras propostas, so os chamados CU (Current
Unused).
29
importante que cada domnio s deixe entrar a quantidade de trfego que ele
consiga gerenciar para que o sistema no entre em colapso generalizado. Para isso
toda a complexidade da tcnica de DiffServ foi transferida para os ns de borda.
Estes precisam implementar as chamadas polticas de admisso que podero limitar
as taxas de entrada de acordo com configuraes preestabelecidas. Um fluxo que
exceda a taxa acordada pode, por exemplo, ter o excedente descartado ou
remarcado para uma prioridade menor ou mesmo autorizado a entrar sendo que o
custo adicional ser cobrado com os juros equivalentes.
A analogia para se explicar o mecanismo de servios diferenciados
pode ser feita com um banco. Dentro do banco existem diversas filas.
Clientes VIP tm acesso a filas menores com caixas mais experientes e
que, por conseguinte, fluem mais rapidamente. De acordo com uma
marcao, o carto do banco, o cliente se dirige a uma fila mais ou
menos rpida. Cabe ao banco, entretanto, adotar polticas para que as
admisses de clientes no sejam excessivas, o que poderia congestionar
todas as filas.
31
A proposta aqui transmitir fluxos, com QoS, do n Transmissor com destino aos
ns Receptores. Sero aplicadas polticas de admisso nas bordas, especialmente
na de entrada, e trfego de fundo ser injetado na rede para torn-la congestionada.
Ao final o trfego marcado deve ter prioridade sobre os demais, mesmo em
situaes de congestionamento.
32
Como a simulao tambm envolve trfego baseado no protocolo TCP, que emite
um sinal de reconhecimento ACK ao receber um pacote, haver necessidade de se
configurar uma poltica de admisso em ambas as bordas, tanto na de entrada como
na de sada.
[1] nome do n
Cdigo 5 Criao de Ns
33
indica quais as filas a serem monitoradas graficamente pelo NAM para que se
possa constatar a priorizao do trfego que recebeu a marcao.
As polticas de admisso sero sempre aplicadas em uma das filas definidas nos
ns de borda do domnio DiffServ. J as polticas de encaminhamento (priorizao)
sero sempre aplicadas em uma fila do n de ncleo do domnio DiffServ. Em
ambos os casos a criao da fila requerida (ver exemplo do Cdigo 9).
No exemplo mostrado no Cdigo 10, foram criadas duas filas fsicas e uma fila
virtual dentro de cada uma delas. Uma das filas fsicas acondicionar o trfego a
ser priorizado e a outra receber o trfego de melhor esforo.
$qBinN1 addPHBEntry
0.02[15]
2)
3)
4)
5)
$qN1Bout1 addQueueWeights
0[2]
8[3]
38
Aps a execuo do script de simulao, o trace file deve ser importado para o MSAccess e as seguintes consultas SQL devem ser criadas:
Subtrai o tempo dos pacotes recebidos do tempo dos pacotes enviados para
obteno do atraso
SELECT S.fid, S.tempo, R.tempo, R.tempo-S.tempo AS atraso INTO atraso
FROM tb_sendfid1 AS S, tb_receivefid1 AS R
WHERE S.idpacote = R.idpacote
ORDER BY R.tempo;
40
Padro
Freqncia
Velocidade
802.11
914 MHz
5 Mbps
802.11a
5 GHz
54 Mbps
802.11b
2.4 GHz
11 Mbps
802.11g
2.4 GHz
54 Mbps
Unidade
db
W
W
Mbps
W
GHz
m
-
um
observador
onipresente,
mas
no
de
um
componente
43
de
controle
do
prprio
Na
o
definio
nmero
de
do
ns
objeto
mveis,
GOD,
que
no
deve-se
exemplo
abaixo igual a 2.
create-god [expr 2]
44
45
46
noah/noah.{h,cc}
tcl/mobility/noah.tcl
tcl/lib/ns-lib.tcl.h
47
simulao com redes sem fio: o trace clssico e o novo trace. O novo trace
(adotado nos exemplos deste livro) invocado apenas com o acrscimo do
comando: $ns_ use-newtrace .
s -t 1.382517059 -Hs 3 -Hd -2 -Ni 3 -Nx 1.00 -Ny 1.00 -Nz 0.00 -Ne 1.000000 -Nl AGT -Nw --- -Ma 0 -Md 0 -Ms 0 -Mt 0 -Is 4196353.0 -Id
0.0 -It pareto -Il 210 -If 1 -Ii 284 -Iv 32 -Pn cbr -Pi 0 -Pf 0 -Po 0
item
s/r/+/-/d
-t
-Hs
-Hd
-Ni
-Nx
-Ny
-Nz
-Ne
-Nl
-Nw
-Ma
-Md
-Ms
-Mt
-Is
-Id
-It
-Il
-If
-Ii
-Iv
-Pn
-Pi
-Pf
-Po
Significado
Evento ocorrido com o pacote {envio, recebimento, enfileriramento,
desenfileiramento, descarte, etc}
Tempo de simulao na ocorrncia do evento
Identificao do n onde ocorreu o evento
Identificao do prximo n a ser percorrido pelo pacote
Identificao do N
Coordenada X do N
Coordenada Y do N
Coordenada Z do N
Nvel de energia do N
Nvel do Trace (AGT, RTR, MAC) {Agente, Roteamento, MAC}
Razo do evento: {END: Descarte no Fim da Simulao; COL:
Descarte por coliso MAC; TTL: Tempo de vida alcanou 0, etc.
Durao do pacote no nvel MAC
Endereo ethernet de destino
Endereo ethernet de envio
Tipo ethernet
Endereo (IP) fonte. Porta Fonte
Endereo (IP) destino. Porta destino
Tipo do Pacote (CBR, Pareto, Exponencial, etc)
Tamanho do Pacote
Identificao do fluxo ao qual o pacote pertence
Identificao nica do pacote
Valor do TTL
Dependendo do tipo de pacote (CBR, ARP, DSR, TCP) estes campos
podem assumir significados diferentes.
48
49
ANEXO IV
Guia de referncia bsica TCL/TK
Definio de variveis
set nome_da_varivel valor_inicial
Ex.: set wvetfid ""
set x 0
set i 1
foreach value {1 3 5 7 11 13 17 19 23} {
comandos
}
Estruturas de deciso
switch $x {
a {incr t1}
b {incr t2}
c {incr t3}
}
if (strcmp(argv[1], argv[2]) == 0) {
interp->result = "1";
} else {
interp->result = "0";
}
Sub Rotinas
$ns at 10.0 "encerra"
proc encerra {} {
global variveis globais
comandos
}
50
Expresses Matemticas
Expr 7.2 / 3
=> 2.4
51