1 / 91

Avaliação de Desempenho Simulação com o ns -2

Avaliação de Desempenho Simulação com o ns -2. Carlos Alberto Kamienski ( cak@ufabc.edu.br ) UFABC. Roteiro. Motivação e objetivos Conceitos básicos Simulação de sistemas Simulando a Internet O simulador de redes ns Exemplos de simulação com o ns Estudo de caso. Network Simulator.

kyrene
Download Presentation

Avaliação de Desempenho Simulação com o ns -2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Avaliação de Desempenho Simulação com o ns-2 Carlos Alberto Kamienski (cak@ufabc.edu.br) UFABC

  2. Roteiro • Motivação e objetivos • Conceitos básicos • Simulação de sistemas • Simulando a Internet • O simulador de redes ns • Exemplos de simulação com o ns • Estudo de caso

  3. Network Simulator • Três versões • Network Simulator 1 (ns-1) • Network Simulator 2 (ns-2): http://nsnam.isi.edu/nsnam • Network Simulator 3 (ns-3): • O ns-2 ainda é a versão estável mais utilizada • O ns-3 está ainda em fase inicial de desenvolvimento, mas já pode ser utilizado

  4. Network Simulator 2 (ns-2) • Versão ns-2.33 é a mais atual (de Março/2008) • Simulator baseado em eventos discretos direcionado para a pesquisa em redes • Desenvolvimento e distribuição • ISI (Information Sciences Institute - www.isi.edu) • Financiamento: DARPA e NSF • Download • www.isi.edu/nsnam/ns/ns-build.html • A distribuição do ns é gratuita, inclusive o código fonte, que pode ser alterado para refletir a pesquisa que está sendo desenvolvida

  5. Network Simulator (ns)(http://www.isi.edu/nsnam/ns/index.html)

  6. Network Simulator (ns)(http://www.isi.edu/nsnam/ns/index.html)

  7. Usando o ns • Aprendendo o ns • Aprendizado é difícil no início • Sem interface gráfica e manual de usuário apropriado • Documentação • Manual do ns • Manual de sistema, explicando código e estruturas de dados • Livro do ns-2 (ainda não lançado) • Plataformas onde roda: • FreeBSD (desenvolvimento), Linux, Solaris e • Windows, com restrições -- não é muito recomendável! • Funcionalidades são oferecidas: • Diretamente na distribuição básica do ns • Contribuições (patchs) que devem ser instaladas à parte

  8. Tutorial de Marc Greishttp://www.isi.edu/nsnam/ns/tutorial/index.html

  9. NS by Examplehttp://nile.wpi.edu/NS/

  10. Funcionalidades do ns • Implementa grande parte da funcionalidade existente na Internet • IP, TCP, UDP, FTP, HTTP, RealPlayer • Protocolos de roteamento • Session, DistanceVector, LinkState, multicast • Implementa abordagens para QoS • IntServ, DiffServ, MPLS, QoS Routing • Vários tipos de filas (roteadores) • DropTail, CBQ, SFQ, WFQ, DRR, RED • Comunicação sem fio • LAN sem fio, comunicação por satélite, GPRS, etc. • Outras...

  11. Modelo de programação do ns • Combinação de C++ e Otcl • C++ • Núcleo do simulador, ou back-end • Maior parte do simulador (mais eficiente) • Trata de eventos e pacotes • Otcl • Interface para criar cenários através de scripts • É interpretada (os scripts de simulação não são compilados) • Provê flexibilidade • Alguns objetos existem nas duas linguagens • As duas linguagens tem interfaces entre si: • Pode-se chamar funções do C++ no Otcl (mais comum) • Pode-se chamar funções do Otcl no C++

  12. Otcl e C++

  13. Entrada e saída do ns

  14. Resultados de simulação • O simulador pode ser configurado para gerar arquivos contendo os dados desejados • Opcionalmente o arquivo de trace pode ser processado para obter esses resultados • Vazão de uma conexão • Atraso e variação de atraso de pacotes • Perda de pacotes • Nas filas: monitor de filas • Nos sistemas finais (fim a fim): agente LossMonitor • Outros

  15. Vantagens do ns • Simulador padrão para a comunidade científica e acadêmica • Simulador gratuito de código aberto • Boa infra-estrutura para desenvolver programas • Grande quantidades de protocolos e tecnologias existentes • Oportunidade para estudar interações de protocolos em ambiente controlado • Lista de discussão (bem freqüentada) para dúvidas e discussões

  16. Limitações do ns • Limitação para tecnologias e protocolos sub-IP: ATM? • Curva de aprendizado: lenta • Falta de documentação adequada • Requer conhecimento de Otcl para criar cenários de simulação simples • Requer conhecimento de C++ para estender o simulador • Não é tão robusto em Windows

  17. Componentes básicos • Nó (node) • Sistema final ou roteador • Máquina com implementação IP • Abstrai características da rede subjacente • Enlace (link) • Interconectam dois nós • O ns só representa a camada IP • Enlaces são abstrações da interface física • Agente (agent) • Entidade de transporte • Agentes TCP/UDP • Aplicação (application) • Não precisa simular a aplicação • Necessário apenas gerar tráfego

  18. Componentes básicos ftp 2Mbps, 10ms tcp 1,5Mbps, 20ms sink n0 n3 n2 n1 null udp 2Mbps, 10ms cbr

  19. O animador de simulação nam • Utilizado para compreender o que ocorreu em uma simulação passada • Quando ativado, apresenta um console, que pode abrir várias animações • Durante a simulação, o ns pode gerar um arquivo de trace para o nam • Observações: • Arquivo de trace pode ficar muito grande (+100MB) • Simulação demora mais gerando o trace

  20. O animador de simulação nam

  21. Editor do nam (limitado)

  22. Uso do ns e nam no ensino

  23. Roteiro • Motivação e objetivos • Conceitos básicos • Simulação de sistemas • Simulando a Internet • O simulador de redes ns • Exemplos de simulação com o ns • Estudo de caso

  24. Anatomia de um script do ns • Criar instância do simulador • Fazer configurações iniciais • Ajustar opções gerais do ns e do nam • Configurar arquivo de trace do nam • Criar função de finalização • Criar topologia • Criar nós • Criar e configurar enlaces

  25. Anatomia de um script do ns • Criar agentes e aplicações • Criar agentes de transporte TCP e UDP • Criar aplicações geradoras de tráfego • Anexar agentes a nós e aplicações a agente • Conectar agentes nos sistemas finais • Escalonar eventos • Iniciar transmissão de dados das aplicações • Finalizar transmissão de dados das aplicações • Executar simulação • Visualizar a animação com o nam • Analisar arquivos de trace

  26. Exemplos de simulações • Exemplo básico • Topologia • Tráfego • Exemplo 1 – CBR e FTP • Exemplo 2 – Fluxos CBR e fila SFQ • Exemplo 3 – Congestionamento TCP • Exemplo 4 - Roteamento dinâmico

  27. Básico - topologia set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail $ns at 5.0 "finaliza"

  28. Básico – topologia proc finaliza {} { global ns nf $ns flush-trace close $nf exec nam out.nam & exit 0 } $ns run

  29. Básico – topologia (animação)

  30. Básico – topologia (trace) V -t * -v 1.0a5 -a 0 A -t * -n 1 -p 0 -o 255 -c 15 -a 1 A -t * -h 1 -m 127 -s 8 n -t * -a 0 -s 0 -S UP -v circle -c black n -t * -a 1 -s 1 -S UP -v circle -c black l -t * -s 0 -d 1 -S UP -r 1000000 -D 0.01 -c black -o

  31. Básico - tráfego • Extensão do exemplo 1 • Componentes • Agente UDP • Agente NULL • Aplicação CBR • Inicia e finaliza as aplicações

  32. Básico - tráfego set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packet_size_ 500 $cbr0 set rate_ 800Kb $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"

  33. Básico – tráfego (animação)

  34. Básico – tráfego (trace) V -t * -v 1.0a5 -a 0 A -t * -n 1 -p 0 -o 255 -c 15 -a 1 A -t * -h 1 -m 127 -s 8 n -t * -a 0 -s 0 -S UP -v circle -c black n -t * -a 1 -s 1 -S UP -v circle -c black l -t * -s 0 -d 1 -S UP -r 1000000 -D 0.01 -c black -o + -t 0.500 -s 0 -d 1 -p cbr -e 500 -c 0 -i 0 -a 0 -x {0.0 1.0 0 ------- null} - -t 0.500 -s 0 -d 1 -p cbr -e 500 -c 0 -i 0 -a 0 -x {0.0 1.0 0 ------- null} h -t 0.500 -s 0 -d 1 -p cbr -e 500 -c 0 -i 0 -a 0 -x {0.0 1.0 -1 ------- null} + -t 0.505 -s 0 -d 1 -p cbr -e 500 -c 0 -i 1 -a 0 -x {0.0 1.0 1 ------- null} - -t 0.505 -s 0 -d 1 -p cbr -e 500 -c 0 -i 1 -a 0 -x {0.0 1.0 1 ------- null} + -t 0.510 -s 0 -d 1 -p cbr -e 500 -c 0 -i 2 -a 0 -x {0.0 1.0 2 ------- null} - -t 0.510 -s 0 -d 1 -p cbr -e 500 -c 0 -i 2 -a 0 -x {0.0 1.0 2 ------- null} h -t 0.510 -s 0 -d 1 -p cbr -e 500 -c 0 -i 2 -a 0 -x {0.0 1.0 -1 ------- null} r -t 0.514 -s 0 -d 1 -p cbr -e 500 -c 0 -i 0 -a 0 -x {0.0 1.0 0 ------- null}

  35. Exemplo 1 – Fluxos CBR e FTP 1 Exemplo-1 - Adaptado de ns/tcl/ex/simple.tcl (exemplo do ns) 2 set ns [new Simulator] 3 4 # arquivos de trace 5 set f [open out.tr w] 6 set nf [open out.nam w] 7 8 $ns trace-all $f 9 $ns namtrace-all $nf 10 11 # criacao de alguns nós 12 set n0 [$ns node] 13 set n1 [$ns node] 14 set n2 [$ns node] 15 set n3 [$ns node] 16 17 # Criacao de alguns agentes 18 set udp0 [new Agent/UDP] 19 set null0 [new Agent/Null] 20 set tcp [new Agent/TCP] 21 set sink [new Agent/TCPSink] 22

  36. Exemplo 1 – Fluxos CBR e FTP 23 # Criacao de algumas aplicacoes 24 set cbr0 [new Application/Traffic/CBR] 25 set ftp [new Application/FTP] 26 27 # Criacao de enlaces 28 $ns duplex-link $n0 $n2 5Mb 2ms DropTail 29 $ns duplex-link $n1 $n2 5Mb 2ms DropTail 30 $ns duplex-link $n2 $n3 1.5Mb 10ms DropTail 31 32 # anexando agentes 33 $cbr0 attach-agent $udp0 34 $ns attach-agent $n0 $udp0 35 $ns attach-agent $n3 $null0 36 $ns connect $udp0 $null0 37 38 $ftp attach-agent $tcp 39 $ns attach-agent $n1 $tcp 40 $ns attach-agent $n3 $sink 41 $ns connect $tcp $sink 42

  37. Exemplo 1 – Fluxos CBR e FTP 43 # Imprimindo algumas variáveis na saída 44 puts [$cbr0 set packetSize_] 45 puts [$cbr0 set interval_] 46 47 # escalonando algumas tarefas 48 $ns at 0.1 "$cbr0 start" 49 $ns at 0.5 "$ftp start" 50 $ns at 1.35 "$ns detach-agent $n1 $tcp ; $ns detach-agent $n3 $sink" 51 $ns at 3.0 "finaliza" 52 53 proc finaliza {} { 54 global ns f nf 55 $ns flush-trace 56 close $f 57 close $nf 58 puts "Executando o nam..." 59 exec nam out.nam & 60 exit 0 61 } 62 # Finalmente, inicia a simulação 63 $ns run

  38. Exemplo 1 – Objetos e conexões

  39. cbr0 udp0 null0 n0 n2 n3 n1 sink tcp ftp

  40. cbr0 udp0 null0 n0 n2 n3 n1 sink tcp ftp

  41. cbr0 udp0 null0 n0 n2 n3 n1 sink tcp ftp

  42. cbr0 udp0 null0 n0 n2 n3 n1 sink tcp ftp

  43. cbr0 udp0 null0 n0 n2 n3 n1 sink tcp ftp

  44. Exemplo 1 – Animação Fonte FTP Inicia Fonte CBR Inicia

  45. Exemplo 1 – Animação Desanexação FTP Descarte de pacotes

  46. Exemplo 2 – Fluxos CBR e SFQ 1 Exemplo-2 - Adaptado de example2.tcl (Tutorial de Marc Greis [15]) 2 set ns [new Simulator] 3 4 # Define cores para os fluxos de dados 5 $ns color 1 Blue ; $ns color 2 Red 6 7 # Abre arquivos de trace para o nam 8 set nf [open out.nam w] 9 $ns namtrace-all $nf 10 11 proc finish {} { 12 global ns nf 13 $ns flush-trace 14 close $nf 15 exec nam out.nam & 16 exit 0 17 } 18 19 # Cria quatro nós 20 set n0 [$ns node]; set n1 [$ns node]; set n2 [$ns node]; set n3 [$ns node] 21

  47. Exemplo 2 – Fluxos CBR e SFQ 22 # Cria enlaces 23 $ns duplex-link $n0 $n2 1Mb 10ms DropTail 24 $ns duplex-link $n1 $n2 1Mb 10ms DropTail 25 $ns duplex-link $n3 $n2 1Mb 10ms SFQ 26 27 $ns duplex-link-op $n0 $n2 orient right-down 28 $ns duplex-link-op $n1 $n2 orient right-up 29 $ns duplex-link-op $n2 $n3 orient right 30 31 # Monitora a fila no enlace n2-n3 32 $ns duplex-link-op $n2 $n3 queuePos 0.45 33 34 # Cria agentes CBR e anexa aos nós 35 set cbr0 [new Application/Traffic/CBR] 36 set cbr1 [new Application/Traffic/CBR] 37 set udp0 [new Agent/UDP] 38 set udp1 [new Agent/UDP] 39 set null0 [new Agent/Null] 40 set null1 [new Agent/Null]

  48. Exemplo 2 – Fluxos CBR e SFQ 41 $cbr0 attach-agent $udp0 42 $cbr1 attach-agent $udp1 43 $ns attach-agent $n0 $udp0 44 $ns attach-agent $n1 $udp1 45 $ns attach-agent $n3 $null0 46 $ns attach-agent $n3 $null1 47 $ns connect $udp0 $null0 48 $ns connect $udp1 $null1 49 50 $cbr0 set packet_size_ 500 51 $cbr0 set rate_ 800Kb 52 $cbr1 set packet_size_ 500 53 $cbr1 set rate_ 800Kb 54 55 $udp0 set fid_ 1 56 $udp1 set fid_ 2 57

  49. Exemplo 2 – Fluxos CBR e SFQ 58 # Escalona eventos para os agents CBR 59 $ns at 0.1 "$cbr0 start“; $ns at 0.5 "$cbr1 start" 60 $ns at 1.0 "$cbr1 stop" ; $ns at 1.5 "$cbr0 stop" 61 $ns at 2.0 "finish" 62 63 # Inicia a simulação 64 $ns run

  50. Exemplo 2 - Animação Pacotes na fila CBR0 e CBR1 iniciam transmissão

More Related