Você está na página 1de 23

Simuladores de Redes

Aula 2 (Cont.)

Prof.a Andrea Krob


andrea.krob@unilasalle.edu.br

Prof. Luís Alberto Schäffer


luis.schaffer@unilasalle.edu.br
Tópicos

 NS-2
 Instalação
 Validação
 Configuração

 Exemplos
 Rede cabeada
 Rede sem fio (MANET)
 Ferramentas de apoio
NS-2 (Relembrando...)

 Duas linguagens de programação:


 Otcl: linguagem de script interpretada, utilizada para descrever
os cenários de simulação;
 C++: linguagem de programação compilada, utilizada para
desenvolver os módulos.

 Componentes:
 NS-2: Simulador;

 NAM: Network AniMator. Produz animações a partir dos traces;

 XGraph: Plota gráficos a partir dos traces.


Instalação

Opção 1: Windows (com máquina virtual)

 Instale o Virtualbox (http://www.virtualbox.org/wiki/Downloads);

 Crie uma VM com 4GB de disco e 512MB de memória RAM;


 Ligue a VM montando a imagem de CD Linux para instalação;

 Instale os pacotes necessários para o NS-2:

 gcc, libc6, libx11-dev, tk8.4-dev, tcl8.4-dev, libxmu-dev e build-essential;

 Baixe a última versão do simulador em:

 http://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.34/
Instalação

Opção 2: Linux
 Baixe a última versão do simulador em:

 http://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.34/

 Instale os pacotes necessários para o NS-2:

 gcc, libc6, libx11-dev, tk8.4-dev, tcl8.4-dev, libxmu-dev e build-essential;

 sudo apt-get install pacote1 + pacote2... (irá resolver as dependências);


Instalação no Ubuntu

 sudo su (entrar com a senha de root)

 apt-get update (atualizar o sistema)

 apt-get install ns2 (instala o ns2)

 apt-get install nam (instala o nam)

O NS-2 está pronto para uso! :-D


Passos para uma simulação

 Criar o escalonador de eventos;

 Configurar as opções de Trace;

 Criar a topologia da rede;

 Criar os links e definir suas característica;

 Criar e caracterizar os tráfegos;

 Programar os eventos;

 Iniciar a simulação.
Exemplo1: rede cabeada

01 # Criação do Escalonador de Eventos


02 set ns [new Simulator]
03
04 # Configuração dos Arquivos de Trace
05 set tracefile [open out.tr w]
06 $ns trace-all $tracefile
07 set nf [open out.nam w]
08
Exemplo1: rede cabeada

09 # Criação da rotina de finalização


10 proc finaliza {} {
11 global ns tracefile nf
12 close $nf
13 close $tracefile
14 exit 0
15 }
16 # Criação da topologia da rede
17 set n0 [$ns node]
18 set n1 [$ns node]
Exemplo1: rede cabeada
19 # Criação do link e sua característica
20 $ns simplex-link $n0 $n1 1Mb 10ms DropTail
21
22 # Criação e caracterização dos tráfegos
23 set udp0 [new Agent/UDP]
24 $ns attach-agent $n0 $udp0
25 set cbr [new Application/Traffic/CBR]
26 $cbr attach-agent $udp0
27 set null0 [new Agent/Null]
28 $ns attach-agent $n1 $null0
29 $ns connect $udp0 $null0
Exemplo1: rede cabeada

30 # Programação dos eventos


31 $ns at 1.0 "$cbr start"
32 $ns at 3.0 "finaliza"
33
34 # Início da simulação
35 $ns run
Exemplo2: rede MANET
01 # Definição dos parâmetros principais
02 set val(chan) Channel/WirelessChannel (1)
03 set val(prop) Propagation/TwoRayGround (2)
04 set val(ant) Antenna/OmniAntenna
(3)
05 set val(ll) LL (4)
06 set val(ifq) Queue/DropTail/PriQueue
(5)
07 set val(ifqlen) 50
(6)
08 set val(netif) Phy/WirelessPhy
09 set val(mac) Mac/802_11 (7)
10 set val(rp) AODV (8)
11 set val(nn) 2 (9) (1)
(2)
(3)
(4)
(5)
(6)
(8)
(9)
(10)
(7) Protocolo
Modelo
Máximo
Tipo Canal
Qtd.camada
de
Nós
de Propagação
enlace
fila
pacotes
Roteamento
móveis
Antena
MAC
interface na fila
rede
% (10)
Exemplo2: rede MANET

12 # Criação do Escalonador de Eventos


13 set ns_ [new Simulator]
14
15 # Configuração dos Arquivos de Trace
16 set tracefile [open out.tr w]
17 $ns trace-all $tracefile
18 set nf [open out.nam w]
19 $ns namtrace-all $nf
20
Exemplo2: rede MANET

21 # Criação da rotina de finalização


22 proc finaliza {} {
23 for {set i 0} {$i < $val(nn) } {incr i} {
24 $ns_ at 150.0 "$node_($i) reset";
25 }
26 global ns tracefile nf
27 close $nf
28 close $tracefile Avisa aos nós móveis que a
simulação finalizou e volta
a posição original
Exemplo2: rede MANET

34 # Criação da topologia
35 set topo [new Topography]
36 $topo load_flatgrid 500 500
37 create-god $val(nn)

Define as coordenadas da topologia


Controla a quantidade de NM e BS da simulação
Exemplo2: rede MANET
38 # Configuração dos Nó Móvel (NM)
39 $ns_ node-config -adhocRouting $val(rp) \
40 -llType $val(ll) \
41 -macType $val(mac) \
42 -ifqType $val(ifq) \
43 -ifqLen $val(ifqlen) \
44 -antType $val(ant) \
45 -propType $val(prop) \
46 -phyType $val(netif) \
47 -topoInstance $topo \
48 -channelType $val(chan) \
49 -agentTrace ON \
50 -routerTrace ON \
51 -macTrace OFF \
52 -movementTrace OFF
Exemplo2: rede MANET

53 # Configuração dos nós


54 for {set i 0} {$i < $val(nn) } {incr i} {
55 set node_($i) [$ns_ node ] Cria os NMs
56 $node_($i) random-motion 0 Desabilita a mov. randômica

57 }
58
59 # Posicionamento dos nós
60 $node_(0) set X_ 5.0 64 $node_(1) set X_ 390.0
61 $node_(0) set Y_ 2.0 65 $node_(1) set Y_ 385.0
66 $node_(1) set Z_ 0.0
62 $node_(0) set Z_ 0.0
Exemplo2: rede MANET

67 # Movimentação: nó1 até nó0 e afastamento


68 $ns_ at 50.0 "$node_(1) setdest 25.0 20.0 15.0"
69 $ns_ at 10.0 "$node_(0) setdest 20.0 18.0 1.0"
70 $ns_ at 100.0 "$node_(1) setdest 490.0 480.0 15.0"

Coordenada X / Coordenada Y / Velocidade


Exemplo2: rede MANET

72 # Criação dos agentes: transporte e aplicação


73 set tcp [new Agent/TCP]
74 $tcp set class_ 2
75 set sink [new Agent/TCPSink]
76 $ns_ attach-agent $node_(0) $tcp
77 $ns_ attach-agent $node_(1) $sink
78 $ns_ connect $tcp $sink
79 set ftp [new Application/FTP]
80 $ftp attach-agent $tcp
81 $ns_ at 10.0 "$ftp start"
Exemplo2: rede MANET

82 # Finalização da simulação
83 $ns at 150.0001 "finaliza"
84
85 # Inicia a simulação
86 $ns_ run
Ferramentas de Apoio

 Análise dos Traces:


 Scripts AWK;
 TraceGraph: plota gráficos, calcula atraso, RTT, jitter, etc;
 Jtrana: estatísticas, throughput, atraso, etc.

 Geradores de cenário / comunicação:


 Setdest: cria um cenário a partir de informações fornecidas (ex:
dimensões, número de nós, movimento desejado...);
 CBRgen: cria um padrão de comunicação para ser associado aos
nós (ex: quantos nos são emissores/receptores, pacotes
por segundo...);
Traces

Existem diversos formatos de trace:


 Redes cabeadas;
 Redes Wireless:
 Formato antigo e formato novo ($ns use-newtrace);
 Varia conforme o protocolo: (AODV, DSDV, DSR, TORA...;

Verificar detalhes em:


http://nsnam.isi.edu/nsnam/index.php/NS-2_Trace_Formats
Próximos Passos

 Instalar, configurar e validar o NS-2;

 Baixar o script exemplo e:


 Identificar o cenário utilizado;
 Identificar os agentes de transporte e aplicação;
 Executar a simulação e analisar o resultado no NAM;
Abrir o trace e entender a seqüência do escalonador;

 Responder a lista de exercícios e entregar via Moodle


(TP1);

Você também pode gostar