3.1 Giới thiệu về phần mềm Network Simulator NS2
3.1.2 Việc xây dựng NS2
NS2 là một chương trình mơ phỏng hướng đối tượng, được viết bằng C++, cùng với một trình thơng dịch OTcl. Trình mơ phỏng hỗ trợ một lớp phân cấp trong C++ (cịn gọi là trình biên dịch phân cấp) và một lớp phân cấp tương tự trong trình thơng dịch OTcl (cịn gọi là trình thơng dịch phân cấp). Chúng có quan hệ chặt chẽ với nhau.
Nếu nhìn một cách khái quát ta thấy có mối quan hệ 1-1 giữa trình biên dịch và trình thơng dịch phân cấp. Nhưng chủ yếu lại là lớp TclObject. Người dùng tạo ra đối tượng mô phỏng mới thơng qua trình thơng dịch, các đối tượng đó được minh hoạ trong trình thơng dịch và được phản ánh chặt chẽ bởi đối tượng quan hệ bên trong trình biên dịch phân cấp.
Trình thơng dịch phân cấp được thiết lập một cách tự động thông qua các phương thức được định nghĩa trong lớp TclClass. Các đối tượng đã được minh hoạ của người dùng được phản ánh thông qua các phương thức định nghĩa trong lớp TclObject. Ngồi ra cịn có các cấp khác trong mã C++ và các tập lệnh OTcl nhưng các cấp bậc khác này không được phản ánh trong TclObject.
Tại sao lại có hai ngơn ngữ? NS sử dụng hai ngơn ngữ bởi vì trình mơ phỏng có hai
cơng việc cần phải làm.
Thứ nhất, về khía cạnh của q trình mơ phỏng của các giao thức yêu cầu một ngơn ngữ lập trình hệ thống có thể vận dụng hiệu quả byte, các gói header và các thuật toán thực thi trên dữ liệu lớn. Để tốc độ thực thi (run-time speed) của các tác vụ đó chiếm ưu
thế, ngược lại thời gian khứ hồi của các tác vụ đó (thời gian thực thi mơ phỏng, tìm lỗi, sửa lỗi, biên dịch lại) lại kém quan trọng hơn.
Thứ hai, phần lớn những nghiên cứu về mạng là tìm kiếm các thơng số hay cấu hình thay đổi khơng lớn, hay nghiên cứu trên một số địa hình mạng. Trong trường hợp này, thời gian lặp lại (thay đổi mơ hình và thực thi lại) thì quan trọng hơn. Vì quá trình cấu hình chỉ thực hiện một lần (vào lúc bắt đầu của q trình mơ phỏng), nên thời gian thực thi trong tác vụ này ít quan trọng hơn.
NS2 kết hợp các công việc cần thiết đó với hai ngơn ngữ, C++ và OTcl. C++ thực thi nhanh nhưng lại chậm hơn trong quá trình chuyển đổi, do đó nó phù hợp với khía cạnh thực thi giao thức. OTcl thực thi chậm hơn nhưng thời gian chuyển đổi của nó lại rất nhanh, do đó nó lý tưởng với việc thay đổi cấu hình trong quá trình mơ phỏng. NS2
(thơng qua tclcl) giúp liên kết các đối tượng và các biến xuất hiện trong cả hai ngơn ngữ. Tóm lại OTcl dùng để:
- Cho việc cấu hình và thiết lập các thơng số - Lấy các đối tượng có sẵn trong C++
Và C++ dùng để:
- Cho việc xử lý từng gói tin của mỗi luồng
- Cho việc thay đổi cách thể hiện của các đối tượng có sẵn