Programa de Pós-graduação em Engenharia Elétrica e Informática Industrial. Centro Federal de Educação Tecnológica do Paraná.
Av. Sete de Setembro, 3165. Curitiba – PR. Brasil.
http://www.lasd.cefetpr.br
Laboratório de Sistemas Distribuídos
Laboratório de Sistemas Distribuídos
Simulador de Redes NS
Simulador de Redes NS
(Network Simulator)
(Network Simulator)
Prof. Ana
Prof. AnaCristina Cristina Barreiras KochemBarreiras Kochem cristina
cristina@@dainf.cefetprdainf.cefetpr..brbr
2
Agentes em NS
Agentes em NS
Representam endpoints onde pacotes da camada de
rede são construídos ou consumidos;
Funções: Roteamento, transmissão e recepção de
pacotes TCP ou UDP
.
Alguns exemplos de agentes:
TCP
(transmissor) X
TCPSink
(receptor)
UDP
(transmissor) X
Null
(receptor)
LossMonitor:
implementado em um nó receptor para
3
Agentes em NS
Agentes em NS
Criação de um agente TCP em OTcl:
set tcp [new Agent/TCP] # Cria agente transmissor $tcp set fid_ 1 # ID do fluxo dos pacotes IP $tcp set prio_ 1 # Prioridade do fluxo $tcp set window_ 1024 # Tamanho da janela $tcp set packetSize_ 500 # Tamanho do pacote $ns_ attach-agent $n0 $tcp # Anexa transmissor ao nó 0 set sink [new Agent/TCPSink] # Cria agente receptor $ns_ attach-agent $n1 $sink # Anexa receptor ao nó 1 $ns_ connect $tcp $sink # Estabelece a conexão TCP
Links
Links
e Filas
e Filas
Link
unidirecional/bidirecional
entre os nós <n0> e
<n1>:
$ns_ <
simplex-link/duplex-link
> <n0> <n1>
<largura_de_banda> <retardo>
<disciplina_escalonamento_fila>
Exemplos de disciplinas de escalonamento de filas:
Drop-tail ou FIFO (First-In-First-Out);
FQ (Fair Queueing);
SFQ (Stochastic Fair Queueing);
DRR (Deficit Round Robin);
5
Geradores de Tráfego
Geradores de Tráfego
Application/Traffic/Exponential ÆExponential On/Off Application/Traffic/ParetoÆPareto On/Off
packetSize_Tamanho constante dos pacotes gerados burst_time_ Tempo médio “on” para o gerador idle_time_ Tempo médio “off” para o gerador
rate_ Taxa constante de envio de pacotes durante períodos “on”
Application/Traffic/CBR ÆConstant Bit Rate
packetSize_Tamanho constante dos pacotes gerados rate_ Taxa constante de envio de pacotes
interval_ Intervalo entre pacotes (opcional)
Application/Traffic/Trace ÆGera tráfego de acordo com um arquivo
trace. Cada registro contém dois campos de 32 bits contendo:
Tempo de interchegada de pacotes (microssegundos); Tamanho do próximo pacote gerado (bytes)
set tfile [new Tracefile] $tfile filename example-trace
set t1 [new Application/Traffic/Trace] $t1 attach-tracefile $tfile
6
Aplicações Simuladas em NS
Aplicações Simuladas em NS
Application/FTPÆAplicação para transferência de arquivos
Application/Telnet ÆAplicação para acesso remoto Variável interval_
Seinterval_ = 0, os tempos de interchegada entre os
pacotes são escolhidos de acordo com uma distribuição exponencial.
Seinterval_
≠
0, os tempos de interchegada entre ospacotes são escolhidos randomicamente de acordo com uma distribuição tcplib.
Transmissão dos pacotes é controlada pelo algoritmo de controle
7 Nó
Fonte de Tráfego Link
Agente
Cenário de Simulação para
Cenário de Simulação para
uma Rede Fixa
uma Rede Fixa
n0
n2
n3
n1
ftp
tcp
udp
cbr
sink
null
2 Mbps, 10 ms 2 Mbps, 10 ms 1,7 Mbps, 20 msTamanho pacote = 1000 bytes Taxa de transmissão = 1 Mbps
t (s)
1 2 5 7CBR
FTP
ns-simple.tcl
Cenário de Simulação para
Cenário de Simulação para
uma Rede Fixa
uma Rede Fixa
9
Cenário de Simulação para
Cenário de Simulação para
uma Rede Fixa
uma Rede Fixa
Link 0-2
1-2
2-3
10 para nó do nóArquivo trace e AWK para
Arquivo trace e AWK para
análise de simulações
análise de simulações
Arquivo trace
Evento Tempo (s) TipopacoteTamanhoPacote (bytes)flags fid Endereçofonte Endereçodestino Númeroseqüência ID dopacote
Tipos de eventos: r: recebe +: enqueue - : dequeue d: descarta r 1.3556 0 2 tcp 30 --- 1 0.0 3.0 29 19
Arquivo AWK
Resultado AWK
11
Agente Loss Monitor
Agente
Agente
Loss
Loss
_Monitor
_Monitor
Variáveis: nlost_ Número de pacotes perdidos; npkts_ Número de pacotes recebidos; bytes_ Número de bytes recebidos;
lastPktTime_ Tempo no qual o último pacote foi recebido.
Resultados_CBR
Resultados_Exponencial
Agente
Agente
Loss
Loss
_Monitor
_Monitor
Exercício:
Utilizar o cenário do arquivo ns-simple.tcl
Anexar um agente Loss_Monitor ao destino do fluxo
CBR
Número máximo de pacotes na fila: 10
Obter o número de pacotes perdidos pelo fluxo CBR Comparar resultado com o arquivo res.awk
13
Monitoramento de Filas
Monitoramento de Filas
Objeto
Monitor_Queue
set qmon [$ns monitor-queue $n2 $n3 [open qm.tr w] 1]
[$ns link $n2 $n3] queue-sample-timeout
Argumentos:
1.
Link onde a fila está localizada;
2.
Arquivo de saída onde os dados serão armazenados;
3.Freqüência na qual a fila será monitorada (segundos).
Monitora_Fila
14Monitoramento de Filas
Monitoramento de Filas
Objeto
Monitor_Queue
1. Tempo;2. Nós de entrada e saída que definem a fila; 3. Tamanho da fila em bytes (size_);
4. Tamanho da fila em pacotes (pkts_);
5. Total de pacotes de entrada na fila (parrivals_);
6. Total de pacotes que partiram da fila (não descartados)
(pdepartures_);
7. Total de pacotes descartados na fila (pdrops_); 8. Total de bytes contido nos pacotes de entrada
(barrivals_);
9. Total de bytes que partiram da fila (bdepartures_); 10. Total de bytes descartados na fila (bdrops_).
15
Monitoramento de Fluxos
Monitoramento de Fluxos
Flow_Monitor
Similar ao Queue_Monitor, porém obtém dados por fluxo:
arrivals_(pacotes/bytes); departures_(pacotes/bytes); drops_ (pacotes/bytes).
Result_FTP
Result_CBR
Flow_Monitor
simple-wireless.tcl
# Definição dos componentes da rede
set val(chan) Channel/WirelessChannel ; # Tipo do canal
set val(prop) Propagation/TwoRayGround ;# Tipo do modelo de propagação
set val(ant) Antenna/OmniAntenna ; # Tipo da antena
set val(ll) LL ; # Tipo da camada de link
set val(ifq) Queue/DropTail/PriQueue ;# Tipo da disciplina de escalonamento
set val(ifqlen) 50 ;# Número máximo de pacotes na fila
set val(netif) Phy/WirelessPhy ; # Tipo de interface de rede
set val(mac) Mac/802_11 ; # Tipo da Camada MAC
set val(rp) DSDV ;# Protocolo de roteamento ad-hoc usado pelos nós móveis
set val(nn) 2 ; # Número de nós móveis
Cenário de Simulação para
Cenário de Simulação para
Redes Móveis Sem Fio
Redes Móveis Sem Fio
17
simple-wireless.tcl
# Criação da instância do simulador
set ns_ [new Simulator]
# Abre arquivo trace para gravar dados da simulação e chama o procedimento trace-all
set tracefd [open simple.tr w] $ns_ trace-all $tracefd
# Cria área de movimentação dos nós móveis (x=500, y=500)
$topo load_flatgrid 500 500
# Cria o objeto GOD (General Operations Director) Æ armazena informações globais sobre o estado do ambiente, rede ou nós
create-god $val(nn)
Cenário de Simulação para
Cenário de Simulação para
Redes Móveis Sem Fio
Redes Móveis Sem Fio
18
simple-wireless.tcl
# Configuração dos nós da rede antes da criação
$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) - topoInstance $topo - channelType $val(chan) - agentTrace ON - routerTrace ON - macTrace OFF - movementTrace OFF
Cenário de Simulação para
Cenário de Simulação para
Redes Móveis Sem Fio
Redes Móveis Sem Fio
19
simple-wireless.tcl
# Criação dos dois nós móveis
for { set i 0 } { $i < $val(nn) } { incr i } { set node_($i) [ $ns_ node ]
$node_($i) random-motion 0 ;# desabilita movimento randômico }
# Posição inicial dos nós Ælados opostos
$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
Cenário de Simulação para
Cenário de Simulação para
Redes Móveis Sem Fio
Redes Móveis Sem Fio
simple-wireless.tcl
# Movimento dos nós
# No tempo 50s, nó 1 começa a se mover em direção ao nó 0 Æ # destino (x=25, y=20) a uma velocidade de 15m/s.
$ns_ at 50.0 “$node_(1) setdest 25.0 20.0 15.0 $ns_ at 10.0 “$node_(0) setdest 20.0 18.0 1.0
# Nó 1 começa a se afastar do nó 0
$ns_ at 100.0 “$node_(1) setdest 490.0 480.0 15.0
Cenário de Simulação para
Cenário de Simulação para
Redes Móveis Sem Fio
Redes Móveis Sem Fio
21
simple-wireless.tcl
# Configuração do fluxo de tráfego entre os dois nós: # Conexão UDP entre os nós 0 e 1
set udp [ new Agent/UDP ]
$ns_ attach-agent $node_(0) $udp set null [ new Agent/Null ]
$ns_ attach-agent $node_(1) $null $ns_ connect $udp $null
# Cria uma fonte de tráfego CBR
set cbr [ new Application/Traffic/CBR ] $cbr attach-agent $udp $cbr set packetSize_ 500 $cbr set interval_ 0.005 $cbr attach-agent $udp $ns_ at 10 “$cbr start” $ns_ at 149 “$cbr stop”
Cenário de Simulação para
Cenário de Simulação para
Redes Móveis Sem Fio
Redes Móveis Sem Fio
0
null udp cbr1
22 simple-wireless.tcl
# Término simulaçãofor { set i 0 } { $i < $val(nn) } { incr i } $ns_ at 5.0 “$node_($i) reset”; }
$ns_ at 150.01 “stop”
$ns_ at 150.02 “puts \ “NS EXITING ... \” ; $ns_halt” proc stop {} {
global ns_tracefd close $tracefd }
puts “Starting Simulation...”
# Executa Simulação
$ns_ run
Cenário de Simulação para
Cenário de Simulação para
Redes Móveis Sem Fio
Redes Móveis Sem Fio
Simple_wireless.tcl
Trace
23
Cenário de Simulação para
Cenário de Simulação para
Redes
Redes
Wired
Wired
_
_
Wireless
Wireless
wireless_wired.tcl
Domínio Fixo
Domínio Sem Fio
Estação Base
BS(0)
F(0)
F(1)
M(2)
M(1)
M(0)
Atua como um gateway entre os 2 domínios
wireless_wired.tcl
Trace
Referências Bibliográficas
Referências Bibliográficas
The VINT Project. The Network Simulator ns-2: Documentation. UC Berkeley. Disponível em: <http://www.isi.edu/nsnam/ns/ns-documentation.html>. Acesso em: 10 setembro 2001.
Chung, Jae; Claypool, Mark. NS by Example. Disponível em: <http://nile.wpi.edu/NS/>. Acesso em: 20 novembro 2001.