3.1.1. Giới thiệu
NS là bộ mô phỏng mạng theo sự kiện rời rạc được phát triển ở trường đại học Berkely bang California đầu tiên bắt nguồn từ dự án VINT được bộ quốc phòng Mỹ cấp kinh phí phát riển. NS được phát triển từ bộ mô phỏng REAL của S. Keshav từ năm 1989, còn REAL thì bắt nguồn từ bộ mô phỏng NEST. Các phiên bản NS version 2 ra đời sau năm 1997 và từ đó người ta thường gọi bộ mô phỏng là NS-2. NS-2 được viết trên hai ngôn ngữ hướng đối tượng là C++ và OTcl. C++ được sử dụng để xây dựng phần nhân của bộ mô phỏng để đảm bảo tốc độ thực hiện cao và thay đổi. OTcl được sử dụng để xây dựng phần giao tiếp với người sử dụng (shell), giúp người sử dụng dễ dàng thiết lập cấu hình mạng, lựa chọn giao thức truyền thông, thiết lập các nguồn sinh lưu lượng, các mô hình sinh lỗi v.v.
NS-2 là kịch bản hướng đối tượng, bộ thông dịch nó chứa bộ lập lịch các sự kiện(Event Scheduler) và thư viện đối tượng các thành phần mô phỏng mạng (Network Component Object), thư viện module thiết lập mạng. Nói cách khác, người dùng NS lập trình bằng ngôn ngữ kịch bản OTcl lập lịch các sự kiện trên một đồ hình mạng cụ thể sau đó chạy mô phỏng mạng, thông qua trình thông dịch trong NS-2 để đưa kết quả ra 2 loại tệp chính: đó là tệp vết (trace file), có tên mở rộng là *.tr, ghi lại tất cả các sự kiện mạng (người sử dụng có thể lọc bớt các sự kiện bằng OTcl). Loại tệp thứ hai có tên mở rộng là *.nam, có khuôn dạng tương tự tệp vết, được sử dụng làm đầu vào cho chương trình hiển thị kết quả mô phỏng dưới dạng đồ họa, chương trình NAM.
NS được cải tiến và mở rộng không ngừng, trung bình cứ 6 tháng người ta lại đưa ra một phiên bản mới, trong đó đã sửa chữa các khiếm khuyết được cộng đồng sử dụng phát hiện và bổ sung thêm một số khả năng mô phỏng mới. Phiên bản đầu
tiên được giới thiệu và sử dụng rộng rãi là NS-2.1b2, phiên bản mới nhất, tính đến giữa năm 2008 là NS-2.34.
Ngày nay, cộng đồng sử dụng NS-2 gồm hàng nghìn trường đại học, viện nghiên cứu, công ty… và hàng vạn người trên thế giới. Các kết quả nghiên cứu bằng NS-2 là đáng tin cậy và được cộng đồng nghiên cứu về mạng thừa nhận.
3.1.2. Mô hình kiến trúc NS2
NS là một phần mềm hướng đối tượng sử dụng hai ngôn ngữ C++ và OTcl.Phần dữ liệu và phần điều khiển được tách biệt.
+ C++ cho phần dữ liệu :Xử lý mỗi gói tin ,thực thi nhanh chóng ,chi tiết hóa ,bổ sung đầy đủ cho việc điều khiển ,các thuật toán đối với bộ dữ liệu lớn + OTcl cho phần điều khiển :
-Thực thi nhanh chóng ,dễ dàng cấu hình lại -Thao tác với các đối tượng C++ hiện tại -Viết mã nhanh chóng và thay đổi dễ dàng
Hình 3.1. Đơn giản hoá cách nhìn của ngƣời sử dụng
NS không những được viết bởi OTcl mà còn được viết bởi C++. Vì lý do hiệu quả NS phân ra sự thực thi đường dẫn dữ liệu từ những sự thực thi đường dẫn điều khiển. Để giảm bớt thời gian xử lý gói và sự kiện (không phải là thời gian mô
phỏng )lịch biểu sự kiện và các đối tượng thành phần cơ bản của mạng trong phần dữ liệu được viết và biên dịch sử dụng C++.Những đối tượng đã được biên dịch này được làm sẵn cho trình biên dịch OTcl qua một lien kết Otcl để tạo ra một đối tượng OTcl thích hợp với mỗi đối tượng C++ và thực hiện các chức năng điều khiển ,các biến cấu hình được cung cấp bởi đối tượng C++ hoạt động như các hàm thành viên và các biến thành viên của đối tượng OTcl tương ứng.
Hình 3.2. Tính đối ngẫu của C++ và OTcl
Hình 3.2 cho thấy một ví dụ phân cấp đối tượng trong C++ và OTcl. Một điều cần lưu ý trong hình là các đối tượng C++ cho phép một sự kết nối Otcl hình thành một sự phân cấp. Sự phân cấp đối tượng OTcl rất giống với sự phân cấp đối tượng C++
Trong hình này một người dung chung (không phải là người phát triển NS) có thể đứng ở góc đáy trái thiết kế và thực thi những sự mô phỏng trong Tcl sử dụng các đối tượng mô phỏng trong thư viện OTcl. Các lịch biểu sự kiện và hầu hết các thành phần của mạng được thực hiện trong C++ và đưa đến OTcl qua một lien kết OTcl được thực hiện bởi sự sử dụng Tclcl. Toàn bộ những cái tạo nên NS là trình biên dịch Tcl hướng đối tượng mở rộng và các thư viện mô phỏng mạng.
3.1.3. Các đặc điểm chính của NS2
Bộ mô phỏng NS2 có thể hỗ trợ người nghiên cứu mạng các đặc điểm nổi bật sau:
- Khả năng trừu tượng hóa: giúp nghiên cứu các giao thức mạng ở nhiều mức khác nhau, từ hành vi đơn lẻ của một giao thức đến kết hợp của nhiều luồng dữ liệu và tương tác của nhiều giao thức. Điều này giúp người nghiên cứu có thể dễ dàng so sánh và phân tích các kết quả chi tiết với trừu tượng.
- Khả năng tương tác với mạng thực: Cho phép chương trình mô phỏng đang chạy tương tác với các nút mạng thực đang hoạt đông thông qua việc thiết lập lưu lượng cho các liên kết mạng.
- Khả năng tạo ngữ cảnh: Người nghiên cứu có thể tạo các hiện trạng mạng phức tạp và các sự kiện động như lỗi liên kết một cách dễ dàng. Điều này giúp cho việc nghiên cứu, kiểm chứng các giao thức mạng trong các mô hình mạng khác nhau được đúng đắn hơn.
- Khả năng hiển thị hóa: Thông qua công cụ hiển thị NAM, người nghiên cứu có thể quan sát trực quan hoạt động của các nút mạng, lưu lượng, tỷ lệ lỗi để từ đó dễ dàng hiểu được các hành vi phức tạp của đồ hình mạng mô phỏng.
- Khả năng mở rộng được: NS2 cho phép mở rộng các chức năng mới một cách dễ dàng như thay đổi các tham số, xây dựng lên một giao thức mới, thử nghiệm các kịch bản khác nhau...
Với bộ mô phỏng NS2, người dùng có thể mô phỏng nhiều giao thức khác nhau tại nhiều tầng khác nhau như: tại tầng ứng dụng, FTP, HTTP; tại tầng giao vận như: UDP, TCP (reno, tahoe, vegas, sack…), tại tầng MAC như: MAC 802.3, MAC 802.11, MAC 802.15, ...trong các mô hình mạng có dây, mô hình mạng không dây và mô hình mạng hỗn hợp. Ngoài ra NS-2 còn có thể mô phỏng các thuật toán định tuyến trong mạng không dây, đặc biệt là mạng Ad-hoc: DSDV, DSR, AODV, TORA,… các vấn đề về định tuyến Unicast/Multicast, liên mạng sử dụng vệ tinh (Satellite network) và nhiều các vấn đề khác cụ thể như:
Đối với mạng có dây:
- Các đường truyền điểm - điểm đơn công, song công, mạng cục bộ LAN. - Các chính sách phục vụ hàng đợi.
- Các mô hình sinh lỗi.
- Vấn đề định tuyến Unicast/Multicast (Unicast/Multicast routing).
- Các giao thức tầng Giao vận: TCP/Tahoe/Reno/New-Reno/Sack/Vegas, UDP, điều khiển lưu lượng và điều khiển tắc nghẽn.
- Các giao thức tầng Ứng dụng, Web caching, truyền luồng dữ liệu đa phương tiện.
Đối với mạng không dây: - Kênh truyền.
- Sự di chuyển của các nút mạng trong không gian hai chiều. - Mạng LAN không dây (WLAN) 802.11.
- Mobile IP.
- Các thuật toán định tuyến trong mạng không dây đặc biệt (Ad Hoc networks): DSDV, DSR, AODV, TORA...
Trong lĩnh vực mạng hỗn hợp có dây và không dây:
- Trạm cơ sở (Base station) đóng vai trò gateway giữa mạng có dây và mạng không dây.
- Snoop TCP.