-
Notifications
You must be signed in to change notification settings - Fork 0
/
entrada.txt
112 lines (93 loc) · 4.41 KB
/
entrada.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# Criacao de 4 computadores
set h0 [$simulator host]
set h1 [$simulator host]
set h2 [$simulator host]
set h3 [$simulator host]
# Criacao de 2 roteadores com 3 interfaces cada
set r0 [$simulator router 3]
set r1 [$simulator router 3]
# Criacao dos enlaces ligando os computadores e os roteadores
# para criar a simulacao abaixo:
#
# h0 h2
# \ /
# r0 ----------- r1
# / \
# h1 h3
#
# O ’duplex-link’ diz que cada enlace tem capacidades em cada sentido
# independentes. Ou seja, se configuro o enlace com 2Mbps, significa que
# posso ter ao mesmo tempo 2Mbps fluindo num sentido e 2Mbps fluindo
# no outro sentido. O atraso configurado e igual nos dois sentidos. Ou
# seja, se configuro o link com 10ms significa que o atraso em um
# sentido e 10ms e o atraso no outro sentido e 10ms (Esse e o atraso
# sem contar com o enfileiramento nos roteadores e sem contar com o
# tempo para transmitir os bits em funcao da capacidade do enlace!)
# Obs.: roteadores tem varias portas, por isso e necessario colocar o
# .0, .1, .2 para o simulador saber em qual porta o enlace esta
# conectado
$simulator duplex-link $h0 $r0.0 10Mbps 10ms
$simulator duplex-link $h1 $r0.1 5Mbps 2ms
$simulator duplex-link $r0.2 $r1.0 2Mbps 20ms
$simulator duplex-link $r1.1 $h2 10Mbps 5ms
$simulator duplex-link $r1.2 $h3 5Mbps 2ms
# Configuracao dos hosts: endereço IP do computador, endereço IP do
# roteador padrao e endereço IP do servidor DNS
# Obs.: Considere que todas as redes sempre serao classe C, ou seja,
# mascara = 255.255.255.0
$simulator $h0 10.0.0.1 10.0.0.2 192.168.1.1
$simulator $h1 10.1.1.1 10.1.1.2 192.168.1.1
$simulator $h2 192.168.2.2 192.168.2.3 192.168.1.1
# Obs.: o endereço 1.1.1.1 representa um servidor DNS raiz que todos
# os servidores DNS da simulacao precisam ter configurados como o
# servidor DNS deles (nao vai ser usado para nada mas sempre tem que
# ter essa configuracao)
$simulator $h3 192.168.1.1 192.168.1.2 1.1.1.1
# Configuracao dos roteadores: porta, endereço IP [[porta, endereco
# IP] ...]
$simulator $r0 0 10.0.0.2 1 10.1.1.2 2 192.168.3.3
$simulator $r1 0 192.168.3.4 1 192.168.2.3 2 192.168.1.2
# Configuracao dos roteadores: rotas (obs.: nos roteadores todas as
# rotas devem ser explicitas apontando para outro roteador ou para a
# porta. Nao ha roteador padrao no roteador. Nao se preocupe com o
# caso de comunicacoes com enderecos inexistentes na
# rede)
$simulator $r0 route 10.0.0.0 0 10.1.1.0 1 192.168.3.0 2 192.168.2.0 192.168.3.4 192.168.1.0 192.168.3.4
$simulator $r1 route 192.168.3.0 0 192.168.2.0 1 192.168.1.0 2 10.0.0.0 192.168.3.3 10.1.1.0 192.168.3.3
# Configuracao dos roteadores: tempo para processar 1 pacote, porta,
# tamanho da fila da porta em quantidade de pacotes, [[porta, tamanho
# ...] ...]
$simulator $r0 performance 100us 0 1000 1 1000 2 1000
$simulator $r1 performance 20us 0 1000 1 1000 2 1000
# Configuracao dos agentes da camada de aplicacao. h0 e h1 vao rodar
# clientes HTTP. h2 vai ser um servidor HTTP e h3 vai ser o servidor DNS
# Obs.: nao ha necessidade de explicitar um cliente DNS. Todos os
# hosts ja tem um cliente DNS embutido
set httpc0 [new Agent/HTTPClient]
set httpc1 [new Agent/HTTPClient]
set https2 [new Agent/HTTPServer]
set dns3 [new Agent/DNSServer]
$simulator attach-agent $httpc0 $h0
$simulator attach-agent $httpc1 $h1
$simulator attach-agent $https2 $h2
$simulator attach-agent $dns3 $h3
# Configuracao dos sniffers. Onde vou monitorar a rede. A saida tem que
# aparecer na saida padrao e nos arquivos configurados abaixo:
set sniffer1 [new Agent/Sniffer]
set sniffer2 [new Agent/Sniffer]
$simulator attach-agent $sniffer1 $r0.2 $r1.0 "sniffer1"
$simulator attach-agent $sniffer2 $h1 $r0.1 "sniffer2"
# Configuracao das comunicacoes entre os agentes. Defino o instante de
# tempo em segundos quando o acesso deve ocorrer e o tipo de acesso a
# ser feito entre o cliente e o servidor. Note que 3 GETs do HTTP
# foram feitos com o nome da maquina, o que vai exigir um acessos DNS
# para (considere que as maquinas nao possuem cache. Ou seja, elas
# sempre vao consultar um servidor DNS). Um dos acessos entretanto,
# esta sendo feito direto pelo endereço IP, ou seja, nesse caso uma
# consulta DNS nao devera ser realizada
$simulator at 0.5 "httpc0 traceroute h2"
$simulator at 0.5 "httpc0 GET h2"
$simulator at 0.6 "httpc1 GET 192.168.2.2"
$simulator at 0.6 "httpc1 GET h0"
$simulator at 0.7 "httpc0 GET h2"
$simulator at 4.0 "finish"