```
// script ns-2 para simular uma LAN Ethernet com n nós.
// A janela de congestionamento do gráfico de tráfego será definida para diferentes
//pares origem-destino.
//Importa os pacotes necessários.
importar ns_lib;
importar tcl_lib;
//Crie uma rede.
definir sim_time 100s; //Tempo de simulação em segundos
definir num_nodes 10; //Número de nós na rede
definir ifq 1000; //Tamanho da fila de interface em pacotes
para {conjunto i 0} {$i <$num_nodes} {incr i} {
# Crie um nó.
set node($i) [nova fonte de agente/TCP];
# Anexe o nó à rede.
$ns agente de anexação $node($i)
# Defina o endereço MAC do nó.
$node($i) definir MAC
# Defina o endereço IP do nó.
$node($i) set addr_
# Define o tamanho da janela de congestionamento do nó.
$node($i) conjunto cwnd_ 20
}
Configurar origens e destinos de tráfego.
para {conjunto i 0} {$i <$num_nodes} {incr i} {
# Defina o tráfego de origem para cada nó.
$node($i) definir tráfego_type CBR
$node($i) definir start_time_ 0s
$node($i) definir cbr_rate_ 100Kbps
$node($i) definir rtt_ 50ms
# Defina o endereço IP de destino para cada fonte.
$node($i) definir pacoteDest_ 10.$i.2.1
# Defina o tráfego do coletor para cada nó.
set sink($i) [novo Agente/Nulo]
$sink($i) definir endereço_ 10.$i.2.1
$ns agente de anexação $sink($i)
}
Crie o switch Ethernet.
definir interruptor [novo CMUcsma]
Anexar switch aos nós.
para {conjunto i 0} {$i <$num_nodes} {incr i} {
$ns conecta $node($i) $switch
}
Execute a simulação.
$ns em 0,1 "$node(0) começa a enviar"
$ns em 1.1 "$node(1) começa a enviar"
$ns em 2.1 "$node(2) começa a enviar"
$ns em 3.1 "$node(3) começa a enviar"
$ns em 4.1 "$node(4) começa a enviar"
$ns em 5.1 "$node(5) começa a enviar"
$ns em 6.1 "$node(6) começa a enviar"
$ns em 7.1 "$node(7) começa a enviar"
$ns em 8.1 "$node(8) começa a enviar"
$ns em 9.1 "$node(9) começa a enviar"
$ns executado
Traçar resultados
definir gráfico [novo Plot/Xgraph -largura 640 -altura 480]
Selecione o estilo de plotagem.
$plot definir barras de estilo
Defina os rótulos dos eixos X e Y.
$plot set xlabel "Tempo(s)"
$plot set ylabel "Tamanho da janela de congestionamento"
Adicione rastreamentos para nós diferentes para traçar a janela de congestionamento.
para {conjunto i 0} {$i <$num_nodes} {incr i} {
$plot adicionar $node($i) cwnd_
}
Defina a legenda do gráfico.
para {conjunto i 0} {$i <$num_nodes} {incr i} {
$plot adicionar legenda $node($i)
}
Defina a escala automática para o gráfico.
$plot ativar escala automática
Salve o gráfico como uma imagem PNG.
$ plot salvar gráfico.png
```