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