1 Network Simulator (ns) (http://www.isi.edu/nsnam/ns) Versão 2 (ns ns-2.30 2.30 é a mais atual) Simulador 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 A distribuição do ns ns é gratuita, inclusive o código fonte, que pode ser alterado para refletir a pesquisa que está sendo desenvolvida Network Simulator (ns) (http://www.isi.edu/nsnam/ns/index.html) Usando o ns ns Aprendendo o ns ns Aprendizado é difícil no início Sem interface gráfica e manual de usuário apropriado Manual do ns ns Manual de sistema, explicando código e estruturas de dados Plataformas onde roda: FreeBSD (desenvolvimento) , Linux, Solaris e Windows (com restrições, não não é muito recomend muito recomendável! vel!) Funcionalidades são oferecidas: Diretamente na distribuição básica do ns ns Contribuições (patchs) que devem ser instaladas à parte Tutorial de Marc Greis http://www.isi.edu/nsnam/ns/tutorial/index.html NS by Example http://nile.wpi.edu/NS/ Funcionalidades do ns ns Implementa grande parte da funcionalidade existente na Internet IP, TCP, UDP, FTP, HTTP, RealPlayer Protocolos de roteamento Session, DV, LS, 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...
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Aprendendo o nsns� Aprendizado é difícil no início� Sem interface gráfica e manual de usuário apropriado
Manual do nsns� Manual de sistema, explicando código e estruturas de dados
Plataformas onde roda:� FreeBSD (desenvolvimento) , Linux, Solaris e Windows (com restrições, não não éé muito recomendmuito recomendáável!vel!)
Funcionalidades são oferecidas:� Diretamente na distribuição básica do nsns� Contribuições (patchs) que devem ser instaladas à parte
Tutorial de Marc Greishttp://www.isi.edu/nsnam/ns/tutorial/index.html
NS by Examplehttp://nile.wpi.edu/NS/ Funcionalidades do nsns
Implementa grande parte da funcionalidade existente na Internet� IP, TCP, UDP, FTP, HTTP, RealPlayer
Protocolos de roteamento� Session, DV, LS, 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...
2
Modelo de programação do ns
Combinação de C++ e OtclC++� 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)
Alguns objetos existem nas duas linguagensAs 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++
Otcl e C++
C++ OTcl
Pure C++objects
Pure OTclobjects
C++/OTcl split objects
ns
Entrada e saída do ns 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
Vantagens do ns
Simulador padrão para a comunidade científica e acadêmica Simulador gratuito de código abertoBoa infra-estrutura para desenvolver programasGrande quantidades de protocolos e tecnologias existentesOportunidade para estudar interações de protocolos em ambiente controlado
Lista de discussão (bem freqüentada) para dúvidas e discussões
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
3
Componentes básicos O animador de simulação nam
Utilizado para compreender o que ocorreu em uma simulação passadapassada
Quando ativado, apresenta um console, que pode abrir várias animaçõesDurante a simulação, o ns pode gerar um arquivo de trace para o namObservações:� Arquivo de trace pode ficar muito grande (+100MB)� Simulação demora mais gerando o trace
O animador de simulação nam
Redesenha
Pára a animação
Executa no sentido contrário
Executa a animação
Tempo atual de animação
Avança rapidamente (25 * “passo” segundos)
Retrocede rapidamente
Retorna desenho
original
Passo do avanço dos quadros de
animação
Altera o
passoZoom in
Zoom out
Edita posição dos nós
Aumenta tamanho do nó
Diminui tamanho do nó
Move animação para um momento
específico no tempo
Informações para redesenho
Área de
animação
Área de
anotações
Anatomia de um script do ns
1. Criar instância do simulador
2. Fazer configurações iniciaisa) Ajustar opções gerais do ns e do namb) Configurar arquivo de trace do namc) Criar função de finalização
3. Criar topologiaa) Criar nósb) Criar e configurar enlaces
Anatomia de um script do ns
4. Criar agentes e aplicaçõesa) Criar agentes de transporte TCP e UDPb) Criar aplicações geradoras de tráfegoc) Anexar agentes a nós e aplicações a agented) Conectar agentes nos sistemas finais
5. Escalonar eventosa) Iniciar transmissão de dados das aplicaçõesb) Finalizar transmissão de dados das aplicações
6. Executar simulação7. Visualizar a animação com o nam8. Analisar arquivos de trace
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"
4
Básico – topologia
proc finaliza {} {
global ns nf
$ns flush-trace
close $nf
exec nam out.nam &
exit 0
}
$ns run
Básico – topologia (animação)
Básico - tráfego
Extensão do exemplo 1
Componentes� Agente UDP
� Agente NULL
� Aplicação CBR (Constant Bit Rate)
Inicia e finaliza as aplicações
Básico - tráfegoset 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"
Básico – tráfego (animação) Exemplo 1 – Fluxos CBR e FTP1 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
5
Exemplo 1 – Fluxos CBR e FTP23 # 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
Exemplo 1 – Fluxos CBR e FTP43 # Imprimindo algumas variáveis na saída