Phần mềm NS2(network simulation version 2) là chương trình mô phỏng mã nguồn mở dành cho mục đích nghiên cứu, thực hiện mạng số liệu dựa trên chuyển mạch gói. Không chỉ là công cụ mô phỏng, NS-2 còn là chương trình có nhiều module hỗ trợ và một thư viện rất tiện ích cho việc mô phỏng các sự kiện riêng lẻ. NS2 là chương mô phỏng hướng đối tượng được viết bằng hai ngôn ngữ lập trình C+ + và OTcl, chúng hỗ trợ chặt chẽ cho nhau.
Hình 5.1. Kiến trúc thư mục cài đặt của NS2 và NAM trong môi trường Linux Trong số các thư mục con của ns-allinone-2.28 thì ns-2 là nơi chứa các file phục vụ cho mô phỏng (cả viết bằng C++ lẫn OTcl). Trong thư mục này, tất cả OTcl code và những kịch bản ví dụ đều chứa trong thư mục gọi là tcl và hầu hết được viết bằng C. Thư mục tcl có những thư mục con, trong số đó có thư mục lib chứa mã nguồn OTcl cho những thành phần cơ bản nhất và quan trọng nhất (agent, node, link, packet, address, routing,…).
Ns-lib. Tcl: Lớp mô phỏng và đa số các định nghĩa chức năng thành phần của nó ngoại trừ LAN, Web, và Multicast được chứa trong file này.
Ns-default. Tcl: Những giá trị mặc định cho các thong số cấu hình cho các thành phần mạng được chứa ở đây. Bởi vì nhiều thành phần mạng được bổ sung bằng C++, nên những thông số là những biến C++ tạo ra các giá trị cho OTcl qua chức năng liên kết OTcl.
Ns-packet. Tcl: Thành phần khởi tạo những định dạng header của gói được chứa trong file này. Khi tạo ra một gói header thì phải đăng kí header trong file này để tạo ra những xử lý khởi tạo.
Ở mức độ người sử dụng: Việc mô phỏng bắt đầu bằng việc nắm rõ các câu lệnh tạo đối tượng mô phỏng từ đó xây dựng các kịch bản mô phỏng Tcl. Sau khi tạo một kịch bản mô phỏng Tcl, việc chạy chương trình chỉ bằng lệnh trong terminal trong Linux. TK8.4.5 OT cl tcl cl Tcl8.4.5 ns-2.28 nam-1.19 t c e x te st li b . . Các ví Các kiểm tra Mã C++ Mã ns- allinone-2.2 mca st
Ở mức độ người vừa phát triển vừa sử dụng: Việc phát triển phần mềm bắt đầu từ việc nắm rõ cấu trúc thư mục chính trong NS2 cùng với một số file quan trọng liên quan trọng liên quan đến đối tượng mới cần them vào. Khi người sử dụng tạo ra một chương trình mô phỏng chạy trên nền NS2 cho riêng mình thì cũng có thể tạo đối tượng riêng cho mình, đó cũng là một ưu điểm của phần mềm NS2 mã nguồn mở. Kiến trúc liên kết của NS2:
Một bộ phận chính khác trong NS-2 là link. Phần tử kết hợp này gồm ba phần chính: hàng đợi, delay và drophead-object. Hàng đợi quản lý thông lượng các gói phát trên link. Phần tử delay giả lập trễ khi gói truyền trong link. Và drophead- object quản lý các gói bị rớt từ hàng đợi của link. Cấu trúc của link trong NS-2 được mô tả như hình 5.2
queue_ link_ ttl_
drophead_ head_
LINK Hình 5.2. Kiến trúc liên kết của NS2