A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Iniciando o uso do ns Isabela Guimarães Siqueira Curso de ns Ciência da Computação UFMG Julho/Agosto 2003.

Apresentações semelhantes


Apresentação em tema: "Iniciando o uso do ns Isabela Guimarães Siqueira Curso de ns Ciência da Computação UFMG Julho/Agosto 2003."— Transcrição da apresentação:

1 Iniciando o uso do ns Isabela Guimarães Siqueira Curso de ns Ciência da Computação UFMG Julho/Agosto 2003

2 Introdução Lets start at the very beginning, a very nice place to start, when you sing, you begin with A, B, C, when you simulate, you begin with the topology. Rodgers and Hammerstein

3 Um primeiro exemplo cbr udp n1 n0 Link duplex Largura de banda: 1Mbps Atraso de 10ms Fila droptail null 200 pacotes/s Pacote de 500 bytes 0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 t cbr Final da simulação

4 Um primeiro exemplo set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set f [open out.tr w] $ns trace-all $f proc finish {} { global ns nf f $ns flush-trace close $nf close $f exec nam out.nam & exit 0 } set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" $ns at 5.0 "finish" $ns run

5 Um primeiro exemplo set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set f [open out.tr w] $ns trace-all $f proc finish {} { global ns nf f $ns flush-trace close $nf close $f exec nam out.nam & exit 0 } set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" $ns at 5.0 "finish" $ns run

6 Um primeiro exemplo set ns [new Simulator] Gera instância do simulador O construtor de Simulator: Inicializa o formato dos pacotes Cria um escalonador Seleciona o formato de endereçamento A classe Simulator contém métodos que: Criam objetos compostos (como nodos e links) Conectam os componentes criados Configuram os parâmetros dos elementos etc

7 Um primeiro exemplo set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set f [open out.tr w] $ns trace-all $f proc finish {} { global ns nf f $ns flush-trace close $nf close $f exec nam out.nam & exit 0 } set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" $ns at 5.0 "finish" $ns run

8 Um primeiro exemplo set nf [open out.nam w] $ns namtrace-all $nf set f [open out.tr w] $ns trace-all $f Abre o arquivo out.nam para escrita e o associa a nf, que passa a ser o seu tratador Diz ao simulador para escrever todos os dados trace de NAM nesse arquivo Abre o arquivo out.tr para escrita e o associa a nf, que passa a ser o seu tratador Diz ao simulador para escrever todos os dados trace nesse arquivo

9 Um primeiro exemplo set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set f [open out.tr w] $ns trace-all $f proc finish {} { global ns nf f $ns flush-trace close $nf close $f exec nam out.nam & exit 0 } set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" $ns at 5.0 "finish" $ns run

10 Um primeiro exemplo $ns at 5.0 "finish" Escalona procedimento finish para ser executado aos 5s de simulação Genérico: $ns at

11 Um primeiro exemplo proc finish {} { global ns nf f $ns flush-trace close $nf close $f exec nam out.nam & exit 0 } Fecha o arquivo de trace do NAM e inicializa o NAM Fecha o arquivo de trace do simulador

12 Um primeiro exemplo set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set f [open out.tr w] $ns trace-all $f proc finish {} { global ns nf f $ns flush-trace close $nf close $f exec nam out.nam & exit 0 } set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" $ns at 5.0 "finish" $ns run

13 Um primeiro exemplo set n0 [$ns node] set n1 [$ns node] A função node cria os nodos da rede Nessa caso associados aos tratadores n0 e n1

14 Um primeiro exemplo set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set f [open out.tr w] $ns trace-all $f proc finish {} { global ns nf f $ns flush-trace close $nf close $f exec nam out.nam & exit 0 } set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" $ns at 5.0 "finish" $ns run

15 Um primeiro exemplo $ns duplex-link $n0 $n1 1Mb 10ms DropTail Criação do link que conecta n0 e n1 Canal duplex, 1Mbps de largura de banda, 10ms de atraso, fila droptail Comando genérico: $ns -link =

16 Um primeiro exemplo set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set f [open out.tr w] $ns trace-all $f proc finish {} { global ns nf f $ns flush-trace close $nf close $f exec nam out.nam & exit 0 } set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" $ns at 5.0 "finish" $ns run

17 Um primeiro exemplo set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 Cria agente UDP Anexa o agente ao nodo n0 Comando genérico: $ns attach-agent

18 Um primeiro exemplo set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set f [open out.tr w] $ns trace-all $f proc finish {} { global ns nf f $ns flush-trace close $nf close $f exec nam out.nam & exit 0 } set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" $ns at 5.0 "finish" $ns run

19 Um primeiro exemplo set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 Cria gerador de tráfego CBR (Constant Bit Rate) Configura tamanho do pacote e taxa de envio Ver manual para parâmetros relevantes a cada tipo de agente Anexa a aplicação CBR ao agente UDP Comando genérico: attach-agent Utilitário: indep-utils/cbrgen.tcl Outros geradores de tráfego: Exponential, Pareto e Trace

20 Um primeiro exemplo set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set f [open out.tr w] $ns trace-all $f proc finish {} { global ns nf f $ns flush-trace close $nf close $f exec nam out.nam & exit 0 } set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" $ns at 5.0 "finish" $ns run

21 Um primeiro exemplo set null0 [new Agent/Null] $ns attach-agent $n1 $null0 Cria agente Null Atua como sink do tráfego Anexa o agente Null ao nodo n1

22 Um primeiro exemplo set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set f [open out.tr w] $ns trace-all $f proc finish {} { global ns nf f $ns flush-trace close $nf close $f exec nam out.nam & exit 0 } set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" $ns at 5.0 "finish" $ns run

23 Um primeiro exemplo $ns connect $udp0 $null0 Conecta os dois agentes de transporte Comando genérico: $ns connect

24 Um primeiro exemplo set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set f [open out.tr w] $ns trace-all $f proc finish {} { global ns nf f $ns flush-trace close $nf close $f exec nam out.nam & exit 0 } set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" $ns at 5.0 "finish" $ns run

25 Um primeiro exemplo $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" Configura momento do início do envio de pacotes CBR Configura momento do final do envio de pacotes CBR

26 Um primeiro exemplo set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set f [open out.tr w] $ns trace-all $f proc finish {} { global ns nf f $ns flush-trace close $nf close $f exec nam out.nam & exit 0 } set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" $ns at 5.0 "finish" $ns run

27 Um primeiro exemplo $ns run Inicia a simulação

28 Um primeiro exemplo out.nam

29 Um primeiro exemplo + 0.5 0 1 cbr 500 ------- 0 0.0 1.0 0 0 - 0.5 0 1 cbr 500 ------- 0 0.0 1.0 0 0 + 0.505 0 1 cbr 500 ------- 0 0.0 1.0 1 1 - 0.505 0 1 cbr 500 ------- 0 0.0 1.0 1 1 + 0.51 0 1 cbr 500 ------- 0 0.0 1.0 2 2 - 0.51 0 1 cbr 500 ------- 0 0.0 1.0 2 2 r 0.514 0 1 cbr 500 ------- 0 0.0 1.0 0 0 + 0.515 0 1 cbr 500 ------- 0 0.0 1.0 3 3 - 0.515 0 1 cbr 500 ------- 0 0.0 1.0 3 3 r 0.519 0 1 cbr 500 ------- 0 0.0 1.0 1 1 + 0.52 0 1 cbr 500 ------- 0 0.0 1.0 4 4 - 0.52 0 1 cbr 500 ------- 0 0.0 1.0 4 4 r 0.524 0 1 cbr 500 ------- 0 0.0 1.0 2 2 (...) + 4.49 0 1 cbr 500 ------- 0 0.0 1.0 798 798 - 4.49 0 1 cbr 500 ------- 0 0.0 1.0 798 798 r 4.494 0 1 cbr 500 ------- 0 0.0 1.0 796 796 + 4.495 0 1 cbr 500 ------- 0 0.0 1.0 799 799 - 4.495 0 1 cbr 500 ------- 0 0.0 1.0 799 799 r 4.499 0 1 cbr 500 ------- 0 0.0 1.0 797 797 + 4.5 0 1 cbr 500 ------- 0 0.0 1.0 800 800 - 4.5 0 1 cbr 500 ------- 0 0.0 1.0 800 800 r 4.504 0 1 cbr 500 ------- 0 0.0 1.0 798 798 r 4.509 0 1 cbr 500 ------- 0 0.0 1.0 799 799 r 4.514 0 1 cbr 500 ------- 0 0.0 1.0 800 800

30 Um primeiro exemplo + 0.51 0 1 cbr 500 ------- 0 0.0 1.0 2 2 - 0.51 0 1 cbr 500 ------- 0 0.0 1.0 2 2 r 0.524 0 1 cbr 500 ------- 0 0.0 1.0 2 2 Formato: + pacote entrou na fila - pacote saiu da fila r pacote recebido d pacote descartado

31 Um exemplo mais elaborado n1 n0 n2n3

32 Um exemplo mais elaborado set n0 [$ns node] set n1 [$ns node] set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set val(nn) 4 for {set i 0} {$i < $val(nn)} {incr i} { set node_($i) [$ns node] }

33 Um exemplo mais elaborado n1 n0 n2n3 Link duplex Largura de banda: 2Mbps Atraso de 10ms Fila droptail Link duplex Largura de banda: 2Mbps Atraso de 10ms Fila droptail Link duplex Largura de banda: 1,7Mbps Atraso de 20ms Fila droptail

34 Um exemplo mais elaborado $ns duplex-link $n0 $n1 1Mb 10ms DropTail $ns duplex-link $n0 $n2 2Mb 10ms DropTail $ns duplex-link $n1 $n2 2Mb 10ms DropTail $ns duplex-link $n2 $n3 1.7Mb 20ms DropTail $ns queue-limit $n2 $n3 10 $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n2 $n3 orient right $ns duplex-link-op $n2 $n3 queuePos 0.5 NAM

35 Um exemplo mais elaborado 1 Mbps Pacote de 1000 bytes n1 n0 n2n3 ftp tcp cbr udp null sink

36 Um exemplo mais elaborado set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 set udp0 [new Agent/UDP] $udp0 set class_ 1 $ns attach-agent $n1 $udp0 set null0 [new Agent/Null] $ns attach-agent $n3 $null0 $ns connect $udp0 $null0 set cbr0 [new Application/Traffic/CBR] $cbr0 attach-agent $udp0 $cbr0 set packet_size_ 1000 $cbr0 set rate_ 1mb set tcp0 [new Agent/TCP] $tcp0 set class_ 2 $ns attach-agent $n0 $tcp0 set sink0 [new Agent/TCPSink] $ns attach-agent $n3 $sink0 $ns connect $tcp0 $sink0 set ftp [new Application/FTP] $ftp0 attach-agent $tcp0

37 Um exemplo mais elaborado set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 set udp0 [new Agent/UDP] $udp0 set class_ 1 $ns attach-agent $n1 $udp0 set null0 [new Agent/Null] $ns attach-agent $n3 $null0 $ns connect $udp0 $null0 set cbr0 [new Application/Traffic/CBR] $cbr0 attach-agent $udp0 $cbr0 set packetSize_ 1000 $cbr0 set rate_ 1mb set tcp0 [new Agent/TCP] $tcp0 set class_ 2 $ns attach-agent $n0 $tcp0 set sink0 [new Agent/TCPSink] $ns attach-agent $n3 $sink0 $ns connect $tcp0 $sink0 set ftp [new Application/FTP] $ftp0 attach-agent $tcp0

38 Um exemplo mais elaborado $udp0 set class_ 1 $tcp0 set class_ 2 Identifica a classe do fluxo Referente ao parâmetro do trace Comando genérico: set class_

39 Um exemplo mais elaborado set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 set udp0 [new Agent/UDP] $udp0 set class_ 1 $ns attach-agent $n1 $udp0 set null0 [new Agent/Null] $ns attach-agent $n3 $null0 $ns connect $udp0 $null0 set cbr0 [new Application/Traffic/CBR] $cbr0 attach-agent $udp0 $cbr0 set packetSize_ 1000 $cbr0 set rate_ 1mb set tcp0 [new Agent/TCP] $tcp0 set class_ 2 $ns attach-agent $n0 $tcp0 set sink0 [new Agent/TCPSink] $ns attach-agent $n3 $sink0 $ns connect $tcp0 $sink0 set ftp [new Application/FTP] $ftp0 attach-agent $tcp0

40 Um exemplo mais elaborado set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 set udp0 [new Agent/UDP] $udp0 set class_ 1 $ns attach-agent $n1 $udp0 set null0 [new Agent/Null] $ns attach-agent $n3 $null0 $ns connect $udp0 $null0 set cbr0 [new Application/Traffic/CBR] $cbr0 attach-agent $udp0 $cbr0 set packetSize_ 1000 $cbr0 set rate_ 1mb set tcp0 [new Agent/TCP] $tcp0 set class_ 2 $ns attach-agent $n0 $tcp0 set sink0 [new Agent/TCPSink] $ns attach-agent $n3 $sink0 $ns connect $tcp0 $sink0 set ftp [new Application/FTP] $ftp0 attach-agent $tcp0

41 Um exemplo mais elaborado set tcp0 [new Agent/TCP] $ns attach-agent $n0 $tcp0 set sink0 [new Agent/TCPSink] $ns attach-agent $n3 $sink0 $ns connect $tcp0 $sink0 Anexa um agente TCP a n0 Anexa um agente TCPSink a n3 Conecta os dois agentes

42 Um exemplo mais elaborado set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0 set udp0 [new Agent/UDP] $udp0 set class_ 1 $ns attach-agent $n1 $udp0 set null0 [new Agent/Null] $ns attach-agent $n3 $null0 $ns connect $udp0 $null0 set cbr0 [new Application/Traffic/CBR] $cbr0 attach-agent $udp0 $cbr0 set packetSize_ 1000 $cbr0 set rate_ 1mb set tcp0 [new Agent/TCP] $tcp0 set class_ 2 $ns attach-agent $n0 $tcp0 set sink0 [new Agent/TCPSink] $ns attach-agent $n3 $sink0 $ns connect $tcp0 $sink0 set ftp [new Application/FTP] $ftp0 attach-agent $tcp0

43 Um exemplo mais elaborado set ftp [new Application/FTP] $ftp0 attach-agent $tcp0 Cria instância de aplicação FTP Anexa a aplicação FTP à instância do TCP Application/FTP é uma aplicação simulada, assim como Application/Telnet

44 Um exemplo mais elaborado 0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 t cbr Final da simulação ftp $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop $ns at 1.0 "$ftp0 start" $ns at 4.0 "$ftp0 stop

45 Um exemplo mais elaborado E por último... $ns color 1 Blue $ns color 2 Red Define as cores de cada classe de tráfego para visualização no NAM

46 Um exemplo mais elaborado

47

48

49

50 + 0.5 1 2 cbr 1000 ------- 1 1.0 3.0 0 0 - 0.5 1 2 cbr 1000 ------- 1 1.0 3.0 0 0 + 0.508 1 2 cbr 1000 ------- 1 1.0 3.0 1 1 - 0.508 1 2 cbr 1000 ------- 1 1.0 3.0 1 1 r 0.514 1 2 cbr 1000 ------- 1 1.0 3.0 0 0 + 0.514 2 3 cbr 1000 ------- 1 1.0 3.0 0 0 - 0.514 2 3 cbr 1000 ------- 1 1.0 3.0 0 0 + 0.516 1 2 cbr 1000 ------- 1 1.0 3.0 2 2 -0.516 1 2 cbr 1000 ------- 1 1.0 3.0 2 2 (...) + 3.008231 2 3 tcp 1000 ------- 2 0.0 3.1 153 632 r 3.008306 3 2 ack 40 ------- 2 3.1 0.0 141 630 + 3.008306 2 0 ack 40 ------- 2 3.1 0.0 141 630 - 3.008306 2 0 ack 40 ------- 2 3.1 0.0 141 630 r 3.009054 2 0 ack 40 ------- 2 3.1 0.0 141 626 r 3.01 1 2 cbr 1000 ------- 1 1.0 3.0 312 633 + 3.01 2 3 cbr 1000 ------- 1 1.0 3.0 312 633 d 3.01 2 3 cbr 1000 ------- 1 1.0 3.0 312 633 - 3.010471 2 3 tcp 1000 ------- 2 0.0 3.1 148 620

51 Um gostinho de wireless ftp tcp n1 n0 Wireless sink ftp Final da simulação 0 20 40 60 80 100 120 140 160 170 t

52 Um gostinho de wireless Define os componentes do nodo móvel set val(chan) Channel/WirelessChannel ;# tipo do canal set val(prop) Propagation/TwoRayGround ;# modelo de propagação de rádio set val(ant) Antenna/OmniAntenna ;# tipo da antena set val(ll) LL ;# tipo da camada de enlace set val(ifq) Queue/DropTail/PriQueue ;# tipo da fila set val(ifqlen) 50 ;# número máximo de pacotes na fila set val(netif) Phy/WirelessPhy ;# tipo da interface de rede set val(mac) Mac/802_11 ;# Tipo da camada MAC set val(rp) DSDV ;# protocolo de roteamento ad hoc set val(nn) 2 ;# número de nodos móveis

53 Um gostinho de wireless Inicializa variáveis globais set ns_ [new Simulator] set tracefd [open simple.tr w] $ns_ trace-all $tracefd Configura topografia e o canal set topo [new Topography] $topo load_flatgrid 500 500 set chan [new $val(chan)] Cria objeto GOD (General Operations Director) create-god $val(nn)

54 Um gostinho de wireless Configura o nodo móvel $ns_ node-config -adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -channelType $val(chan) \ -topoInstance $topo \ -agentTrace ON \ -routerTrace ON \ -macTrace OFF \ -movementTrace OFF

55 Um gostinho de wireless Cria os nodos for {set i 0} {$i < $val(nn) } {incr i} { set node_($i) [$ns_ node] $node_($i) random-motion 0 } Configura posição inicial $node_(0) set X_ 5.0 $node_(0) set Y_ 2.0 $node_(0) set Z_ 0.0 $node_(1) set X_ 390.0 $node_(1) set Y_ 385.0 $node_(1) set Z_ 0.0

56 Um gostinho de wireless Agenda eventos de movimento Nodo 1 se move em direção ao nodo 0 $ns_ at 10.0 "$node_(0) setdest 20.0 18.0 1.0 $ns_ at 50.0 "$node_(1) setdest 25.0 20.0 15.0" Nodo 1 se distancia do nodo 0 $ns_ at 100.0 "$node_(1) setdest 490.0 480.0 15.0 Cria conexão TCP do nodo 0 ao nodo 1 set tcp [new Agent/TCP] $tcp set class_ 2 set sink [new Agent/TCPSink] $ns_ attach-agent $node_(0) $tcp $ns_ attach-agent $node_(1) $sink $ns_ connect $tcp $sink

57 Um gostinho de wireless Cria fonte de dados set ftp [new Application/FTP] $ftp attach-agent $tcp $ns_ at 20.0 "$ftp start Diz aos nodos o tempo final de simulação for {set i 0} {$i < $val(nn) } {incr i} { $ns_ at 170.0 "$node_($i) reset"; }

58 Um gostinho de wireless Agenda finalização $ns_ at 170.0 "stop" $ns_ at 170.01 "puts \"NS EXITING...\" ; $ns_ halt" proc stop {} { global ns_ tracefd $ns_ flush-trace close $tracefd } Inicia simulação puts "Starting Simulation..." $ns_ run

59 Exercícios 1) Simular os três exemplos mostrados. 2) Elaborar um script e simular uma topologia composta por n nodos, estando cada um conectado diretamente aos outros n-1 (grafo completo) através de um meio fixo duplex com largura de banda de 0,5Mbps, 5ms de atraso e fila do tipo CBQ. O valor de n deve ser facilmente configurável. Criar uma fonte de dados do tipo ftp sobre TCP de cada nodo i até seu vizinho de índice i+1, exceto nodo de índice i=n que deverá enviar dados ao nodo de índice 0. 3) Elaborar um script e simular uma rede ad hoc com três nodos em linha reta, criando uma conexão UDP entre os dois nodos da ponta e gerando um tráfego CBR de um até o outro. Sabendo que o alcance default é de 250m, agendar a movimentação dos nodos de tal forma que até a metade do tempo de simulação os nodos da ponta se comuniquem entre si apenas através do nodo mediano e após eles passem a se comunicar diretamente.


Carregar ppt "Iniciando o uso do ns Isabela Guimarães Siqueira Curso de ns Ciência da Computação UFMG Julho/Agosto 2003."

Apresentações semelhantes


Anúncios Google