1 |
Help for Cisco router simulator (dynamips-0.2.8) |
2 |
================================================ |
3 |
Authors of this document: Fabien Devaux, Christophe Fillot, MtvE |
4 |
|
5 |
Emulated hardware |
6 |
***************** |
7 |
|
8 |
The emulator currently supports the following platforms: |
9 |
- Cisco 7200 (NPE-100 to NPE-400) |
10 |
- Cisco 3600 (3620, 3640 and 3660) |
11 |
- Cisco 2691 |
12 |
- Cisco 3725 |
13 |
- Cisco 3745 |
14 |
- Cisco 2600 (2610 to 2650XM) |
15 |
- Cisco 1700 (1710 to 1760) |
16 |
|
17 |
By default, a Cisco 7206VXR with NPE-200 (256 Mb of DRAM) is emulated. |
18 |
|
19 |
To emulate another platform, use the "-P" command line option (for example, |
20 |
"-P 3725" or "-P 3600"). |
21 |
|
22 |
For the 7200, you can change the NPE type with the "-t" option. |
23 |
It is possible to select "npe-100", "npe-150", "npe-175", "npe-200", |
24 |
"npe-225", "npe-300" and "npe-400". The "npe-g1" is not working. |
25 |
|
26 |
For the 3600, a 3640 with 128 Mb is emulated by default. You can change this |
27 |
with the "-t" option and by specifying "3620" or "3660". |
28 |
Don't forget to set the chassis type depending on your IOS image, |
29 |
a c3660 image will not run on c3640 hardware and vice-versa. |
30 |
|
31 |
Remark: PCMCIA card emulation is not supported yet with Cisco 3600. |
32 |
|
33 |
|
34 |
Command Line Options overview |
35 |
***************************** |
36 |
|
37 |
-l <log_file> : Set logging file (default is dynamips_log.txt) |
38 |
-j : Disable the JIT compiler, very slow |
39 |
--exec-area <size> : Set the exec area size (default: 64 Mb) |
40 |
--idle-pc <pc> : Set the idle PC (default: disabled) |
41 |
--timer-itv <val> : Timer IRQ interval check (default: 1000) |
42 |
|
43 |
-i <instance> : Set instance ID |
44 |
-r <ram_size> : Set the virtual RAM size |
45 |
-o <rom_size> : Set the virtual ROM size |
46 |
-n <nvram_size> : Set the NVRAM size |
47 |
-c <conf_reg> : Set the configuration register |
48 |
-m <mac_addr> : Set the MAC address of the chassis |
49 |
(default: automatically generated) |
50 |
-C <cfg_file> : Import an IOS configuration file into NVRAM |
51 |
-X : Do not use a file to simulate RAM (faster) |
52 |
-R <rom_file> : Load an alternate ROM (default: embedded) |
53 |
-k <clock_div> : Set the clock divisor (default: 4) |
54 |
|
55 |
-T <port> : Console is on TCP <port> |
56 |
-U <si_desc> : Console in on serial interface <si_desc> |
57 |
(default is on the terminal) |
58 |
|
59 |
-A <port> : AUX is on TCP <port> |
60 |
-B <si_desc> : AUX is on serial interface <si_desc> |
61 |
(default is no AUX port) |
62 |
|
63 |
--disk0 <size> : Set PCMCIA ATA disk0: size |
64 |
--disk1 <size> : Set PCMCIA ATA disk1: size |
65 |
|
66 |
-a <cfg_file> : Virtual ATM switch configuration file |
67 |
-f <cfg_file> : Virtual Frame-Relay switch configuration file |
68 |
-E <cfg_file> : Virtual Ethernet switch configuration file |
69 |
-b <cfg_file> : Virtual bridge configuration file |
70 |
-e : Show network device list of the host machine |
71 |
|
72 |
Options specific to the Cisco 7200 series: |
73 |
|
74 |
-t <npe_type> : Select NPE type (default: "npe-200") |
75 |
-M <midplane> : Select Midplane ("std" or "vxr") |
76 |
-p <pa_desc> : Define a Port Adapter |
77 |
-s <pa_nio> : Bind a Network IO interface to a Port Adapter |
78 |
|
79 |
Options specific to the Cisco 3600 series ("dynamips -P 3600 --help"): |
80 |
|
81 |
-t <chassis_type> : Select Chassis type (default: "3640") |
82 |
--iomem-size <val> : IO memory (in percents, default: 5) |
83 |
-p <nm_desc> : Define a Network Module |
84 |
-s <nm_nio> : Bind a Network IO interface to a Network Module |
85 |
|
86 |
Options specific to the Cisco 2691 series ("dynamips -P 2691 --help"): |
87 |
|
88 |
--iomem-size <val> : IO memory (in percents, default: 5) |
89 |
-p <nm_desc> : Define a Network Module |
90 |
-s <nm_nio> : Bind a Network IO interface to a Network Module |
91 |
|
92 |
Options specific to the Cisco 3725 series ("dynamips -P 3725 --help"): |
93 |
|
94 |
--iomem-size <val> : IO memory (in percents, default: 5) |
95 |
-p <nm_desc> : Define a Network Module |
96 |
-s <nm_nio> : Bind a Network IO interface to a Network Module |
97 |
|
98 |
Options specific to the Cisco 3745 series ("dynamips -P 3745 --help"): |
99 |
|
100 |
--iomem-size <val> : IO memory (in percents, default: 5) |
101 |
-p <nm_desc> : Define a Network Module |
102 |
-s <nm_nio> : Bind a Network IO interface to a Network Module |
103 |
|
104 |
|
105 |
|
106 |
Command Line Options details |
107 |
**************************** |
108 |
|
109 |
-k <clock_div> : |
110 |
|
111 |
Specify the clock divider (integer) based on the host clock. |
112 |
Alter the value to match the CISCO clock with the real time. |
113 |
The command "show clock" at the IOS' CLI will help you set this value. |
114 |
|
115 |
--idle-pc <pc> : |
116 |
|
117 |
The "idle PC" feature allows you to run a router instance without having |
118 |
a 100% CPU load. This implies that you can run a larger number of instances |
119 |
per real machine. |
120 |
|
121 |
To determine the "idle PC", start normally the emulator with your Cisco IOS |
122 |
image, and a totally IOS empty configuration (although not mandatory, this |
123 |
will give better results). When the image is fully booted, wait for the |
124 |
"Press RETURN to get started!" message prompt, but do not press Enter key. |
125 |
Wait about 5 seconds, then press "Ctrl-] + i". Some statistics will be |
126 |
gathered during 10 seconds. At the end, the emulator will display a list of |
127 |
possible values to pass to the "--idle-pc" option. You may have to try some |
128 |
values before finding the good one. To check if the idle PC value is good, |
129 |
just boot the Cisco IOS image, and check your CPU load when the console |
130 |
prompt is available. If it is low, you have found a good value, keep it |
131 |
preciously. |
132 |
|
133 |
Important remarks: |
134 |
================== |
135 |
|
136 |
* An "idle PC" value is *specific* to a Cisco IOS image. You cannot |
137 |
boot a different IOS image without proceeding as described above. |
138 |
|
139 |
* Do not run the process while having the "autoconfiguration" prompt. |
140 |
|
141 |
|
142 |
--exec_area <size> : |
143 |
|
144 |
The exec area is a pool of host memory used to store pages translated by |
145 |
the JIT (they contain the native code corresponding to MIPS code pages). |
146 |
|
147 |
|
148 |
|
149 |
Cisco 7200 Port Adapter Description "<pa_desc>": |
150 |
------------------------------------------------ |
151 |
Format: slot:pa_driver |
152 |
|
153 |
slot: the number of the physical slot (starts from 0) |
154 |
|
155 |
pa_driver: the name of a Port Adapter driver in: |
156 |
- C7200-IO-FE (FastEthernet, slot 0 only) |
157 |
- PA-FE-TX (FastEthernet, slots 1 to 6) |
158 |
- PA-4E (Ethernet, 4 ports) |
159 |
- PA-8E (Ethernet, 8 ports) |
160 |
- PA-4T+ (Serial, 4 ports) |
161 |
- PA-8T (Serial, 8 ports) |
162 |
- PA-A1 (ATM) |
163 |
|
164 |
|
165 |
Cisco 3600 Network Module Description "<nm_desc>": |
166 |
-------------------------------------------------- |
167 |
Format: slot:nm_driver |
168 |
|
169 |
slot: the number of the physical slot (starts from 0) |
170 |
|
171 |
nm_driver: the name of a Network Module driver in: |
172 |
- NM-1E (Ethernet, 1 port) |
173 |
- NM-4E (Ethernet, 4 ports) |
174 |
- NM-1FE-TX (FastEthernet, 1 port) |
175 |
- NM-4T (Serial, 4 ports) |
176 |
- NM-16ESW (Ethernet switch module, 16 ports) |
177 |
- Leopard-2FE (Cisco 3660 FastEthernet in slot 0, automatically used) |
178 |
|
179 |
|
180 |
Cisco 2691/3725/3745 Network Module Description "<nm_desc>": |
181 |
------------------------------------------------------------ |
182 |
Format: slot:nm_driver |
183 |
|
184 |
slot: the number of the physical slot (starts from 0) |
185 |
|
186 |
nm_driver: the name of a Network Module driver in: |
187 |
- NM-1FE-TX (FastEthernet, 1 port) |
188 |
- NM-4T (Serial, 4 ports) |
189 |
- NM-16ESW (Ethernet switch module, 16 ports) |
190 |
- GT96100-FE (2 integrated ports, automatically used) |
191 |
|
192 |
|
193 |
NIO binding to Port Adapter "<pa_nio>" and Network Modules "<nm_nio>": |
194 |
---------------------------------------------------------------------- |
195 |
|
196 |
Format: slot:port:netio_type[:netio_parameters] |
197 |
|
198 |
slot : the number of the physical slot (starts from 0) |
199 |
port : the port in the specified slot (starts from 0) |
200 |
|
201 |
netio_type : host interface for communication |
202 |
|
203 |
unix:<local_sock>:<remote_sock> |
204 |
Use unix sockets for local communication. |
205 |
<local_sock> is created and represents the local NIC. |
206 |
<remote_sock> is the file used by the other interface. |
207 |
(ex. "/tmp/local:/tmp/remote") |
208 |
|
209 |
vde:<control_sock>:<local_sock> |
210 |
For use with UML (User-Mode-Linux) or VDE switches. |
211 |
VDE stands for "Virtual Distributed Ethernet". |
212 |
Please refer to : http://sourceforge.net/projects/vde/ |
213 |
|
214 |
tap:<tap_name> |
215 |
Use a virtual ethernet device for communication. |
216 |
<tap_name> is the name of the tap device (ex. "tap0") |
217 |
|
218 |
gen_eth:<dev_name> |
219 |
Use a real ethernet device for communication, using libpcap 0.9 |
220 |
or WinPcap. Works on Windows and Unix systems. |
221 |
|
222 |
<dev_name> is the name of the Ethernet device (ex. "eth0") |
223 |
|
224 |
The device list can be found using the "-e" option. |
225 |
|
226 |
linux_eth:<dev_name> |
227 |
Use a real ethernet device for communication (Linux specific). |
228 |
<dev_name> is the name of the Ethernet device (ex. "eth0") |
229 |
|
230 |
udp:<local_port>:<remote_host>:<remote_port> |
231 |
Use an UDP socket for connection between remote instances. |
232 |
<local_port> is the port we listen to. |
233 |
<remote_host> is the host listening the port you want to connect to. |
234 |
<remote_port> is the port you want to connect to. |
235 |
(ex. "1000:somehost:2000" and "2000:otherhost:1000" on the other |
236 |
side) |
237 |
|
238 |
tcp_cli:<host>:<port> |
239 |
Client side of a tcp connection. |
240 |
<host> is the ip address of the server. |
241 |
<port> is the port to connect to. |
242 |
|
243 |
tcp_ser:<port> |
244 |
Server side of a tcp connection. |
245 |
<port> is the port to listen to. |
246 |
|
247 |
null |
248 |
Dummy netio (used for testing/debugging), no parameters needed. |
249 |
|
250 |
|
251 |
|
252 |
VTTY binding to real serial port device "<si_desc>": |
253 |
---------------------------------------------------- |
254 |
|
255 |
Format: <device>{:baudrate{:databits{:parity{:stopbits{:hwflow}}}}}} |
256 |
|
257 |
device: character device name, e.g. /dev/ttyS0 |
258 |
baudrate: baudrate |
259 |
databits: number of databits. |
260 |
parity: data parity: N=none, O=odd, E=even, |
261 |
stopbits: number of stop bits |
262 |
hwflow: hardware flow control (0=disable, 1=enable) |
263 |
|
264 |
Note that the device field is mandatory, however other fields are optional. |
265 |
(dynamips will default to 9600, 8, N, 1, no hardware flow control) |
266 |
|
267 |
Note that access to the escape commands (described below) through a serial |
268 |
port are deliberately prevented, as the escape commands interfere with |
269 |
serial encapsulation protocols. |
270 |
|
271 |
|
272 |
Escape commands |
273 |
*************** |
274 |
|
275 |
You can press ^] (Ctrl + ]) at any time, followed by one of these characters: |
276 |
|
277 |
o : Show the VM object list |
278 |
d : Show the device list |
279 |
r : Dump MIPS CPU registers |
280 |
t : Dump MIPS TLB entries |
281 |
m : Dump the latest memory accesses |
282 |
s : Suspend CPU emulation |
283 |
u : Resume CPU emulation |
284 |
q : Quit the emulator |
285 |
b : Dump the instruction block tree |
286 |
h : JIT hash table statistics |
287 |
l : MTS64 cache statistics |
288 |
c : Write IOS configuration to disk (ios_cfg.txt) |
289 |
j : Non-JIT mode statistics |
290 |
i : Determine an idling pointer counter |
291 |
x : Experimentations (can crash the box!) |
292 |
^]: Send ^] |
293 |
|
294 |
If you press an unrecognized key, help will be shown. |
295 |
|
296 |
Note: on Windows, it may be the "Ctrl + $" sequence. |
297 |
|
298 |
|
299 |
Virtual Bridge |
300 |
************** |
301 |
|
302 |
The virtual bridge is used to emulate a shared network between emulator |
303 |
instances. |
304 |
|
305 |
Any emulator instance can act as a virtual bridge. |
306 |
|
307 |
The configuration file (specified by the "-b" option) contains a list of |
308 |
NetIO descriptors, with the following syntax: |
309 |
|
310 |
interface_name:netio_type[:netio_parameters] |
311 |
|
312 |
Example: |
313 |
|
314 |
# Connection to instance "I0" |
315 |
I0:udp:10000:127.0.0.1:10001 |
316 |
|
317 |
# Connection to instance "I1" |
318 |
I1:udp:10002:127.0.0.1:10003 |
319 |
|
320 |
# Connection to instance "I2" |
321 |
I2:udp:10004:127.0.0.1:10005 |
322 |
|
323 |
The "I0" instance would be launched with the following parameters: |
324 |
|
325 |
dynamips ios.bin -p 1:PA-FE-TX -s 1:0:udp:10001:127.0.0.1:10000 |
326 |
|
327 |
|
328 |
Virtual Ethernet switch |
329 |
*********************** |
330 |
|
331 |
The virtual ethernet switch is used to emulate an Ethernet network between |
332 |
emulator instances. This switch supports access and trunk ports (802.1Q). |
333 |
ISL will be available in a future release. |
334 |
|
335 |
Any emulator instance can act as a virtual ethernet switch. |
336 |
|
337 |
The configuration file (specified by the "-E" option) contains a list of |
338 |
NetIO descriptors (representing interfaces) and a list of interface properties |
339 |
(access/trunk port, VLAN info...) |
340 |
|
341 |
The interface definition is similar to Port Adapters: |
342 |
|
343 |
IF:interface_name:netio_type[:netio_parameters] |
344 |
|
345 |
1) Configuring an Access Port |
346 |
|
347 |
syntax: ACCESS:interface_name:vlan_id |
348 |
|
349 |
2) Configuration a 802.1Q Trunk Port |
350 |
|
351 |
syntax: DOT1Q:interface_name:native_vlan |
352 |
|
353 |
The native VLAN is not tagged. On Cisco devices, by default the native VLAN |
354 |
is VLAN 1. |
355 |
|
356 |
Example of configuration file: |
357 |
|
358 |
IF:E0:udp:10000:127.0.0.1:10001 |
359 |
IF:E1:udp:10002:127.0.0.1:10003 |
360 |
IF:E2:gen_eth:eth0 |
361 |
|
362 |
DOT1Q:E0:1 |
363 |
ACCESS:E1:4 |
364 |
DOT1Q:E2:1 |
365 |
|
366 |
|
367 |
Virtual ATM switch |
368 |
****************** |
369 |
|
370 |
The virtual ATM switch fabric is used to emulate an ATM backbone between |
371 |
emulator instances. The use of this virtual switch is not mandatory, you |
372 |
can directly connect emulator instances for point-to-point ATM connections. |
373 |
Please note that only basic VP/VC switching is supported, there is no |
374 |
support for ILMI/QSAAL/... or other specific ATM protocols. |
375 |
|
376 |
Any emulator instance can act as a virtual ATM switch. |
377 |
|
378 |
Example of configuration file (specified by the "-a" option): |
379 |
|
380 |
# Virtual Interface List |
381 |
IF:A0:udp:10001:127.0.0.1:10000 |
382 |
IF:A1:udp:10002:127.0.0.1:10003 |
383 |
IF:A2:udp:10004:127.0.0.1:10005 |
384 |
|
385 |
# VP connection between I0 and I1 |
386 |
VP:A0:10:A1:20 |
387 |
VP:A1:20:A0:10 |
388 |
|
389 |
# VP connection between I0 and I2 |
390 |
VP:A0:11:A2:30 |
391 |
VP:A2:30:A0:11 |
392 |
|
393 |
# VC connection between I1 and I2 |
394 |
VC:A1:5:2:A2:7:3 |
395 |
VC:A2:7:3:A1:5:2 |
396 |
|
397 |
In this example, we have 3 virtual interfaces, A0, A1 and A2. The syntax |
398 |
for interface definition is similar to Port Adapters: |
399 |
|
400 |
IF:interface_name:netio_type[:netio_parameters] |
401 |
|
402 |
You can do VP switching or VC switching: |
403 |
|
404 |
1) VP switching |
405 |
|
406 |
syntax: VP:input_if:input_vpi:output_if:output_vpi |
407 |
|
408 |
2) VC switching |
409 |
|
410 |
syntax: VC:input_if:input_vpi:input_vci:output_if:output_vpi:output_vci |
411 |
|
412 |
|
413 |
Testing the Virtual ATM switch with one dynamips instance |
414 |
********************************************************* |
415 |
(Contribution of Mtv Europe) |
416 |
|
417 |
Virtual ATM switch configuration file ("atm.cfg"): |
418 |
|
419 |
IF:A0:udp:10003:127.0.0.1:10001 |
420 |
IF:A1:udp:10004:127.0.0.1:10002 |
421 |
# a0/vpi=1/vci=100 connects to a1/vpi=2/vci=200 |
422 |
VC:A0:1:100:A1:2:200 |
423 |
VC:A1:2:200:A0:1:100 |
424 |
|
425 |
Invoking dynamips: |
426 |
|
427 |
./dynamips -p 1:PA-A1 -s 1:0:udp:10001:127.0.0.1:10003 \ |
428 |
-p 2:PA-A1 -s 2:0:udp:10002:127.0.0.1:10004 \ |
429 |
-a atm.cfg IOS.BIN |
430 |
|
431 |
(note input ports of IOS interfaces are output ports of ATM switch |
432 |
interfaces, and vice versa). |
433 |
|
434 |
IOS configuration: |
435 |
|
436 |
ip cef |
437 |
ip vrf test |
438 |
rd 1:1 |
439 |
route-target both 1:1 |
440 |
int a1/0 |
441 |
no shut |
442 |
int a1/0.2 p |
443 |
ip addr 1.1.1.1 255.255.255.0 |
444 |
pvc 1/100 |
445 |
interface a2/0 |
446 |
no shut |
447 |
interface a2/0.2 p |
448 |
ip vrf forwarding test |
449 |
ip addr 1.1.1.2 255.255.255.0 |
450 |
pvc 2/200 |
451 |
! |
452 |
|
453 |
# ping 1.1.1.2 |
454 |
!!!!! |
455 |
|
456 |
|
457 |
Virtual Frame-Relay switch |
458 |
************************** |
459 |
|
460 |
The virtual Frame-Relay switch fabric is used to emulate a Frame-Relay |
461 |
backbone between emulator instances. The use of this virtual switch is not |
462 |
mandatory, you can directly connect emulator instances with appropriate IOS |
463 |
configuration. |
464 |
|
465 |
Any emulator instance can act as a virtual Frame-Relay switch. |
466 |
|
467 |
There is only a basic implementation of the LMI protocol (ANSI Annex D), which |
468 |
is probably not conforming but works with Cisco IOS. Fortunately, Cisco IOS |
469 |
is able to detect automatically the LMI protocol. |
470 |
|
471 |
Example of configuration file (specified by the "-f" option): |
472 |
|
473 |
# Virtual Interface List |
474 |
IF:S0:udp:10001:127.0.0.1:10000 |
475 |
IF:S1:udp:10002:127.0.0.1:10003 |
476 |
|
477 |
# DLCI switching between S0 and S1 |
478 |
VC:S0:200:S1:100 |
479 |
VC:S1:100:S0:200 |
480 |
|
481 |
In this example, we have 2 virtual interfaces, S0 and S1. The syntax |
482 |
for interface definition is similar to Port Adapters: |
483 |
|
484 |
IF:interface_name:netio_type[:netio_parameters] |
485 |
|
486 |
DLCI switching syntax: |
487 |
|
488 |
VC:input_if:input_dlci:output_if:output_dlci |
489 |
|
490 |
In the example above, the switch is configured to switch packets |
491 |
received on interface S0 with DLCI 200 to interface S1 with DLCI 100, |
492 |
and vice-versa. |
493 |
|
494 |
== EOF == |
495 |
|