Hoạt động của NS - 2 đ−ợc chia thành hai phần là phần dữ liệu ( đ−ợc xây dựng trong C++ ) và phần điều khiển ( đ−ợc xây dựng trong Otcl ). Để giảm thời gian xử lý gói và sự kiện, thời biểu sự kiện và các đối t−ợng thành phần mạng cơ bản trong phần số liệu đ−ợc viết và biên dịch bằng C++. Các đối t−ợng đ−ợc biên dịch này đ−ợc tạo sẵn và đ−ợc liên kết tới Otcl qua bộ thông dịch Otcl. Mỗi đối t−ợng C++ này đ−ợc điều khiển và đ−ợc thiết lập các tham số thông qua một đối t−ợng điều khiển t−ơng ứng trong Otcl. Các đối t−ợng C++ không cần điều khiển hoặc chỉ hoạt động nội tại trong phần C++ thì không cần liên kết đến Otcl. T−ơng tự, cũng có một số đối t−ợng ( không nằm trong phần dữ liệu ) có thể hoạt động hoàn toàn chỉ trong Otcl. Các đối t−ợng điều khiển trong Otcl đ−ợc ánh xạ 1 - 1 tới các đối t−ợng cần điều khiển trong C++. Nh− vậy, cấu trúc phân cấp các đối t−ợng này trong hai phần C++ và Otcl là t−ơng tự nhau. Quan hệ giữa C++ và Otcl đ−ợc minh họa ở hình d−ới đây.
Hình 4.3 chỉ ra kiến trúc NS - 2. Trong kiến trúc này, ng−ời sử dụng ( không phải ng−ời phát triển NS - 2 ) ở vị trí góc d−ới bên trái. Dữ liệu đầu vào là tập lệnh Otcl đ−ợc phân tích bởi lớp Tcl. Việc thiết lập và chạy mô phỏng trong Tcl sử dụng các đối t−ợng trong th− viện Otcl. Thời biểu các sự kiện và hầu hết các thành phần mạng hoạt động trong C++ và đ−ợc liên kết tới Otcl. Việc này đ−ợc thực hiện bởi lớp tclcl.
Ch−ơng trình NS - 2 có nhiều phiên bản chạy trên các hệ điều hành khác nhau và
với các yêu cầu cài đặt khác nhau. Trong đồ án này, phiên bản ns - allinone - 2.28,
chạy trên Windows trong môi tr−ờng Cygwin /X đ−ợc sử dụng để mô phỏng một số hoạt động báo hiệu trên cơ sở giao thức khởi tạo phiên SIP. Cygwin /X cung cấp một giao diện ch−ơng trình ứng dụng ( API ) giống nh− hệ điều hành UNIX trên khuôn dạng Windows do NS - 2 không chạy trực tiếp trên Windows.
Hình 4.3 Kiến trúc tổng quan của NS - 2