danghoangkhanh
18-09-2007, 10:16 AM
Tác giả: Lệ Quyền
4.1. Mô hinh hoạt động của dynamips/dynagen
4.1.1. Mô hình tổng quan:
(Mô hình này được thực hiện trên hệ thống windows)
http://usera.imagecave.com/vnpro1/dynagen_25.jpg
Hình 4. 1 Mô hình tổng quan dynamips/dynagen
Đầu tiên là nền phần cứng của PC (máy tính): Dynamips sẽ lấy phần cứng này để giả lập phần cứng của một router.
Tiếp theo là winpcap: Winpcap tương tác trực tiếp với card mạng NIC ở lớp phần dưới và tương tác với dynamips ở phần trên để hổ trợ dynamips gởi và nhận các frame Ethernet và một số chức năng khác.
Dynamips là thành phần trung tâm thực hiện tất cả các chức năng để có thể tạo, chạy một router, ATM và framrelay.
Cuối cùng là dynagen: dynagen giao tiếp với dynamips cung cấp một giao diện dòng lệnh để có thể điều chỉnh hoạt dộng của các router. Dynagen hoạt động dựa trên flle.NET (là file để tạo các sơ đồ mạng).
4.1.2. Mô hình chi tiết
http://usera.imagecave.com/vnpro1/dynagen_26.jpg
http://usera.imagecave.com/vnpro1/dynagen_27.jpg
http://usera.imagecave.com/vnpro1/dynagen_28.jpg
Hình 4. 2 Mô hình hoạt động chi tiết của dynamips/dynagen
4.2. Phân tích các khối chức năng chính của Dynamips
Toàn bộ mã nguồn của Dynamips được viết bằng ngôn ngữ C. Các phần khai báo sẽ được đặt trong file.h và các hàm thực hiện được đặt trong file.c. Để sử dụng chức năng của các file ta chỉ cần khai báo file.h của nó bằng từ khóa include ”file.h”.
Ta có thể chia các chức năng chính mà dynamips thực hiện theo cách như sau:
4.2.1. Giả lập phần cứng router và chạy IOS thật
Dynamips định nghĩa một thể hiện vm_instance (vm: virtual machine, bộ máy ảo): thể hiện này mô tả những chức năng chung nhất cần có của một router. Phần khai báo các thành phần của thể hiện vm_instance này nằm tròng file “vm.h”. và các hàm thực hiện nằm trong file “vm.c”.
Ví dụ một số các chức năng mà một bộ máy ảo VM có thể thực hiện:
Gán IOS để sự dụng
Gán một file cấu hình IOS để sử dụng
Khởi tạo RAM
Lấy cấu hình IOS từ NVRAM và ghi nó vào một file.
Đọc một cấu hình IOS từ một file và đặt nó vô NVRAM
Giải phóng tài nguyên cấp cho VM (cpu, Ram…)
Tạo vùng nhớ chunk.
Dynamip đầu tiên sẽ tạo bộ máy ảo này, sau đó nó kết hợp với hần cứng riêng của từng loại router để tạo một phần cứng hoàn chỉnh cho một router ảo. Mỗi một loại router thì được mô tả trong một file riêng biệt. (“device_c7200.c”, “device_c2600.c”,” device_c2691.c”,“device_c3600.c”,“device_c 3640.c”,”device_c3745.c”,” device_c3725.c”).
Ví dụ: dòng router 7200 sẽ được mô tả trong file “device_c7200.c” và “device_c7200.c”. và nó thực hiện mô phỏng phần cứng của dòng router 7200 ví dụ như một số các thành phần sau:
Port adapter: là những card giao tiếp được gắn vào các slot của router, hổ trợ gắn thêm cổng cho router.
Midplane : Cấu trúc bus dữ liệu, dynamips mô tả hai loại cấu trúc này của dòng router 7200 đó là midplane VXR và midplane chuẩn.
NPE: làm chức năng CPU của router (tât cả các tính năng của CPU mips) nhưng có thể thay đổi được. Hiện tại thì dynamips hổ trợ NPE-100 to NPE-400, mặc định là NPE-200.
IOS: việc load (tải) IOS được thực hiện ở đây.
Dynamips thực hiện mô phỏng CPU mips64. Mã nguồn:file “cpu.c”, “mips64.c”
Việc lấy và gán các giá trị idle-pc được thực hiện tại bởi file “mips64.c”
File “device.c” sẽ thực hiện: tạo các thiết bị phần cứng: RAM, memory alias, sparse (bộ phân tích), NVRAM, flash, SRAM, PCMCIA ... và sẽ được kết hợp với bộ máy ảo VM.
File pci_dev.c: thực hiện chức năng của các buss dữ liệu PCI.
Dynamips sử dụng các loại (Netio_type) giao tiếp giữa các host như sau:
Dynamips hổ trở những loại Netio_type sau:
unix:<local_sock>:<remote_sock>
Sử dụng sockets trên hệ thống unix để truyền thống nội bộ
<local_sock> : được tạo và mô tả một NIC
<remote_sock>: là một file được sử dụng bởi một interface khác
(vi dụ: "/tmp/local:/tmp/remote")
vde:<control_sock>:<local_sock>
Sử dụng với UML (user-mode-linux) hoặc chuyển mạch VDE
chuẩn VDE cho “Virtual Distributed Ethernet”
Tham khảo : http://sourceforge.net/projects/vde/
tap:<tap_name>
Sử dụng thiết bị ethernet ảo để truyền thông
<tap_name> : tên của thiết bị (ví dụ. "tap0")
gen_eth:<dev_name>
Sử dụng một thiết bị ethernet thật để truyền thông, sử dụng libcap 0.9 hoặc winpcap. Hoạt động trên linux hoặc windows
<dev_name> : tên của thiết bị ethernet (ví dụ. "eth0")
linux_eth:<dev_name>
sử dụng một thiết bị ethernet thật để truyền thông (dùng trên linux)
<dev_name> : tên của thiết bị ethernet (ví dụ. "eth0")
udp:<local_port>:<remote_host>:<remote_port>
sử dụng UDP sockets để kết nối các thể hiện của router
<local_port>: là port mà chúng ta lắng nghe.
<remote_host>: là host mà đang lắng nghe cái port mà bạn muốn kết nối tới.
<remote_port> port mà bạn muốn kế nối tới.
(ví dụ: "1000:somehost:2000" and "2000:otherhost:1000")
tcp_cli:<host>:<port>
ở tại client
<host> địa chỉ ip của server
<port> port để kết nối
tcp_ser:<port>
ở server.
<port> port để lắng nghe
Chuyển mạch ATM, framrelay và cầu nối ảo (virtual brigde) sử dụng Netio_type là UDP, tạo nên một môi trường mạng chia sẻ giữa các router ảo.
Ví dụ: tạo ba router R1 R2 R3.
Ví dụ ta có topo mạng như sau:
http://usera.imagecave.com/vnpro1/dynagen_29.jpg
Hình 4.3 Ví dụ
Cú pháp thực hiện trong dynamips như sau:
Tạo R1: với localport là 10000 (cổng serial 0/0): lắng nghe router 2 trên port 10000 (cổng serial 0/0)
dynamips -r 128 -t npe-400 -p 0:C7200-IO-FE -s 0:0:udp:10000:127.0.0.1:10002 image.bin
Tạo R2: localport 10002 (serial 0/0): lắng nghe router 1 trên port 10002 và localport 10003 (cổng s0/1): để lắng nghe trên router 3
dynamips -r 128 -t npe-400 -p 0:C7200-IO-FE -s 0:0:udp:10002:127.0.0.1:10000 -p 1:PA-FE-TX -s 1:0:udp:10003:127.0.0.1:10001 image.bin (đây là tên cái OS nhá,OS 7200 sẻies)
Tạo R3: localport: 10001 (serial s0/0): lắng nghe router trên port 10001(serial s0/0).
dynamips -r 128 -t npe-400 -p 0:C7200-IO-FE -s 0:0:udp:10001:127.0.0.1:10003 image.bin
Để sử dụng chức năng này ta sử dụng 3 file: “udp_send.c”, “Net.c”, và “until.c”
4.2.2. Switch Ethernet
Để các thể hiện hoạt động như một swicth ethernet ảo, switch này hổ trợ access và trunk port (802.1q). Để thực hiện điều này thì dynamips dùng netio_type là: gen_eth. File gen_eth trực tiếp tương tác với winpcap thông qua thư viện “pcap.h”. nó sử dụng thiết bị NPF được tạo bởi winpcap để truyền và nhận các gói Ethernet.
Cú pháp như sau: IF:interface_name:netio_type[:netio_parameters]
Ví dụ:
IF:E0:udp:10000:127.0.0.1:10001
IF:E1:udp:10002:127.0.0.1:10003
IF:E2:gen_eth:eth0
DOT1Q:E0:1
ACCESS:E1:4
DOT1Q:E2:1
Để sử dụng chức năng này ta sử dụng các file sau:
“eth_switch.c”: dùng để tạo thể hiện switch (cung cấp các chức năng của một swicth)
“gen_eth.c”: tương tác trực tiếp với winpcap cung cấp chức năng gởi và nhận gói ethernet
4.2.3. Giả lập mạng ATM
Dùng để giả lập một backbone ATM giữa các thể hiện. Và chỉ hổ trợ chuyển mạch vp/vc cơ bản. Mã nguồn: “atm.c”
4.2.4. Giả lập mạng Framrelay
Dùng để giả lập một backbone framrelay giữa các thể hiện. Và chỉ thực hiện phần cơ bản của giao thức LMI. Mã nguồn: “framrelay.c”
4.2.5. Chế độ hypervisor
Dynamips sử dụng chế độ hypervisior để tạo nhiều router ảo chạy đồng thời, giả lập mạng frame relay và ATM. Mã nguồn: “hypervisor.c”
4.1. Mô hinh hoạt động của dynamips/dynagen
4.1.1. Mô hình tổng quan:
(Mô hình này được thực hiện trên hệ thống windows)
http://usera.imagecave.com/vnpro1/dynagen_25.jpg
Hình 4. 1 Mô hình tổng quan dynamips/dynagen
Đầu tiên là nền phần cứng của PC (máy tính): Dynamips sẽ lấy phần cứng này để giả lập phần cứng của một router.
Tiếp theo là winpcap: Winpcap tương tác trực tiếp với card mạng NIC ở lớp phần dưới và tương tác với dynamips ở phần trên để hổ trợ dynamips gởi và nhận các frame Ethernet và một số chức năng khác.
Dynamips là thành phần trung tâm thực hiện tất cả các chức năng để có thể tạo, chạy một router, ATM và framrelay.
Cuối cùng là dynagen: dynagen giao tiếp với dynamips cung cấp một giao diện dòng lệnh để có thể điều chỉnh hoạt dộng của các router. Dynagen hoạt động dựa trên flle.NET (là file để tạo các sơ đồ mạng).
4.1.2. Mô hình chi tiết
http://usera.imagecave.com/vnpro1/dynagen_26.jpg
http://usera.imagecave.com/vnpro1/dynagen_27.jpg
http://usera.imagecave.com/vnpro1/dynagen_28.jpg
Hình 4. 2 Mô hình hoạt động chi tiết của dynamips/dynagen
4.2. Phân tích các khối chức năng chính của Dynamips
Toàn bộ mã nguồn của Dynamips được viết bằng ngôn ngữ C. Các phần khai báo sẽ được đặt trong file.h và các hàm thực hiện được đặt trong file.c. Để sử dụng chức năng của các file ta chỉ cần khai báo file.h của nó bằng từ khóa include ”file.h”.
Ta có thể chia các chức năng chính mà dynamips thực hiện theo cách như sau:
4.2.1. Giả lập phần cứng router và chạy IOS thật
Dynamips định nghĩa một thể hiện vm_instance (vm: virtual machine, bộ máy ảo): thể hiện này mô tả những chức năng chung nhất cần có của một router. Phần khai báo các thành phần của thể hiện vm_instance này nằm tròng file “vm.h”. và các hàm thực hiện nằm trong file “vm.c”.
Ví dụ một số các chức năng mà một bộ máy ảo VM có thể thực hiện:
Gán IOS để sự dụng
Gán một file cấu hình IOS để sử dụng
Khởi tạo RAM
Lấy cấu hình IOS từ NVRAM và ghi nó vào một file.
Đọc một cấu hình IOS từ một file và đặt nó vô NVRAM
Giải phóng tài nguyên cấp cho VM (cpu, Ram…)
Tạo vùng nhớ chunk.
Dynamip đầu tiên sẽ tạo bộ máy ảo này, sau đó nó kết hợp với hần cứng riêng của từng loại router để tạo một phần cứng hoàn chỉnh cho một router ảo. Mỗi một loại router thì được mô tả trong một file riêng biệt. (“device_c7200.c”, “device_c2600.c”,” device_c2691.c”,“device_c3600.c”,“device_c 3640.c”,”device_c3745.c”,” device_c3725.c”).
Ví dụ: dòng router 7200 sẽ được mô tả trong file “device_c7200.c” và “device_c7200.c”. và nó thực hiện mô phỏng phần cứng của dòng router 7200 ví dụ như một số các thành phần sau:
Port adapter: là những card giao tiếp được gắn vào các slot của router, hổ trợ gắn thêm cổng cho router.
Midplane : Cấu trúc bus dữ liệu, dynamips mô tả hai loại cấu trúc này của dòng router 7200 đó là midplane VXR và midplane chuẩn.
NPE: làm chức năng CPU của router (tât cả các tính năng của CPU mips) nhưng có thể thay đổi được. Hiện tại thì dynamips hổ trợ NPE-100 to NPE-400, mặc định là NPE-200.
IOS: việc load (tải) IOS được thực hiện ở đây.
Dynamips thực hiện mô phỏng CPU mips64. Mã nguồn:file “cpu.c”, “mips64.c”
Việc lấy và gán các giá trị idle-pc được thực hiện tại bởi file “mips64.c”
File “device.c” sẽ thực hiện: tạo các thiết bị phần cứng: RAM, memory alias, sparse (bộ phân tích), NVRAM, flash, SRAM, PCMCIA ... và sẽ được kết hợp với bộ máy ảo VM.
File pci_dev.c: thực hiện chức năng của các buss dữ liệu PCI.
Dynamips sử dụng các loại (Netio_type) giao tiếp giữa các host như sau:
Dynamips hổ trở những loại Netio_type sau:
unix:<local_sock>:<remote_sock>
Sử dụng sockets trên hệ thống unix để truyền thống nội bộ
<local_sock> : được tạo và mô tả một NIC
<remote_sock>: là một file được sử dụng bởi một interface khác
(vi dụ: "/tmp/local:/tmp/remote")
vde:<control_sock>:<local_sock>
Sử dụng với UML (user-mode-linux) hoặc chuyển mạch VDE
chuẩn VDE cho “Virtual Distributed Ethernet”
Tham khảo : http://sourceforge.net/projects/vde/
tap:<tap_name>
Sử dụng thiết bị ethernet ảo để truyền thông
<tap_name> : tên của thiết bị (ví dụ. "tap0")
gen_eth:<dev_name>
Sử dụng một thiết bị ethernet thật để truyền thông, sử dụng libcap 0.9 hoặc winpcap. Hoạt động trên linux hoặc windows
<dev_name> : tên của thiết bị ethernet (ví dụ. "eth0")
linux_eth:<dev_name>
sử dụng một thiết bị ethernet thật để truyền thông (dùng trên linux)
<dev_name> : tên của thiết bị ethernet (ví dụ. "eth0")
udp:<local_port>:<remote_host>:<remote_port>
sử dụng UDP sockets để kết nối các thể hiện của router
<local_port>: là port mà chúng ta lắng nghe.
<remote_host>: là host mà đang lắng nghe cái port mà bạn muốn kết nối tới.
<remote_port> port mà bạn muốn kế nối tới.
(ví dụ: "1000:somehost:2000" and "2000:otherhost:1000")
tcp_cli:<host>:<port>
ở tại client
<host> địa chỉ ip của server
<port> port để kết nối
tcp_ser:<port>
ở server.
<port> port để lắng nghe
Chuyển mạch ATM, framrelay và cầu nối ảo (virtual brigde) sử dụng Netio_type là UDP, tạo nên một môi trường mạng chia sẻ giữa các router ảo.
Ví dụ: tạo ba router R1 R2 R3.
Ví dụ ta có topo mạng như sau:
http://usera.imagecave.com/vnpro1/dynagen_29.jpg
Hình 4.3 Ví dụ
Cú pháp thực hiện trong dynamips như sau:
Tạo R1: với localport là 10000 (cổng serial 0/0): lắng nghe router 2 trên port 10000 (cổng serial 0/0)
dynamips -r 128 -t npe-400 -p 0:C7200-IO-FE -s 0:0:udp:10000:127.0.0.1:10002 image.bin
Tạo R2: localport 10002 (serial 0/0): lắng nghe router 1 trên port 10002 và localport 10003 (cổng s0/1): để lắng nghe trên router 3
dynamips -r 128 -t npe-400 -p 0:C7200-IO-FE -s 0:0:udp:10002:127.0.0.1:10000 -p 1:PA-FE-TX -s 1:0:udp:10003:127.0.0.1:10001 image.bin (đây là tên cái OS nhá,OS 7200 sẻies)
Tạo R3: localport: 10001 (serial s0/0): lắng nghe router trên port 10001(serial s0/0).
dynamips -r 128 -t npe-400 -p 0:C7200-IO-FE -s 0:0:udp:10001:127.0.0.1:10003 image.bin
Để sử dụng chức năng này ta sử dụng 3 file: “udp_send.c”, “Net.c”, và “until.c”
4.2.2. Switch Ethernet
Để các thể hiện hoạt động như một swicth ethernet ảo, switch này hổ trợ access và trunk port (802.1q). Để thực hiện điều này thì dynamips dùng netio_type là: gen_eth. File gen_eth trực tiếp tương tác với winpcap thông qua thư viện “pcap.h”. nó sử dụng thiết bị NPF được tạo bởi winpcap để truyền và nhận các gói Ethernet.
Cú pháp như sau: IF:interface_name:netio_type[:netio_parameters]
Ví dụ:
IF:E0:udp:10000:127.0.0.1:10001
IF:E1:udp:10002:127.0.0.1:10003
IF:E2:gen_eth:eth0
DOT1Q:E0:1
ACCESS:E1:4
DOT1Q:E2:1
Để sử dụng chức năng này ta sử dụng các file sau:
“eth_switch.c”: dùng để tạo thể hiện switch (cung cấp các chức năng của một swicth)
“gen_eth.c”: tương tác trực tiếp với winpcap cung cấp chức năng gởi và nhận gói ethernet
4.2.3. Giả lập mạng ATM
Dùng để giả lập một backbone ATM giữa các thể hiện. Và chỉ hổ trợ chuyển mạch vp/vc cơ bản. Mã nguồn: “atm.c”
4.2.4. Giả lập mạng Framrelay
Dùng để giả lập một backbone framrelay giữa các thể hiện. Và chỉ thực hiện phần cơ bản của giao thức LMI. Mã nguồn: “framrelay.c”
4.2.5. Chế độ hypervisor
Dynamips sử dụng chế độ hypervisior để tạo nhiều router ảo chạy đồng thời, giả lập mạng frame relay và ATM. Mã nguồn: “hypervisor.c”