Hiện nay, cộng đồng sử dụng NS có trên 1000 trường đại học, viện nghiên cứu, công ty... với hơn 10 nghìn người sử dụng trên toàn thế giới. Cộng đồng sử dụng NS có một diễn đàn chung để trao đổi các vấn đề có liên quan.
Ba chủ đề chính thường được nghiên cứu bằng NS là: lựa chọn một trong một số cơ chế, nghiên cứu tỉ mỉ các hành vi phức tạp và điều tra các tương tác còn chưa biết giữa các giao thức.
Các đặc điểm nổi bật chính bộ mô phỏng NS là:
Khả năng trừu tượng hoá: có thể thay đổi độ mịn của mô phỏng cho phù hợp
với cả các mô phỏng chi tiết lẫn các mô phỏng mức cao.
Khả năng phát sinh ra kịch bản: NS có khả năng tạo ra một cách tự động các
mẫu lưu lượng, các hình trạng mạng, các sự kiện thay đổi động và phức tạp, kể cả việc mô phỏng các nút mạng và đường truyền bị hỏng.
Khả năng mô phỏng tương tác với mạng thực: NS có một giao diện đặc biệt,
cho phép lưu lượng thực đi qua nút mạng tương tác với bộ mô phỏng chạy trên nút mạng đó.
Khả năng hiển thị trực quan: Công cụ hiển thị NAM giúp chúng ta thấy được
hình ảnh hoạt động của mạng bằng trực giác và trợ giúp cho việc gỡ rối giao thức cần nghiên cứu.
Khả năng mở rộng được: Bộ mô phỏng NS có khả năng mở rộng được dễ dàng
khi người nghiên cứu muốn bổ sung các chức năng mới, thử nghiệm các kịch bản khác nhau và nghiên cứu các giao thức mới.
Các thành phần của bộ chương trình mô phỏng NS
Trong bộ chương trình mô phỏng mạng NS, hai thành phần quan trọng nhất là chương trình mô phỏng NS và các công cụ hiển thị trực quan. Khi sử dụng chương trình mô phỏng NS, ta có thể lập trình cho nó để định ra hình trạng (tô-pô) mạng là tĩnh hoặc động, cũng như tạo ra các luồng lưu lượng theo một số phân bố đã được định nghĩa trước. Mặt khác, ta có thể lựa chọn chính sách quản lý hàng đợi tại các nút mạng, cũng như có thể đưa các mô hình sinh lỗi vào các đường truyền.
Thành phần thứ hai là các công cụ hiển thị trực quan NAM và XGRAPH. NAM là công cụ hiển thị, cho phép người nghiên cứu nhìn thấy bằng đồ hoạ hình trạng mạng, gồm các nút mạng, các đường truyền nối các nút ở dạng tĩnh và động; NAM cũng có thể hiển thị hành vi động của hàng đợi tại các nút, cũng như sự chuyển động của các gói số liệu trên mạng. Đối với mạng di động không dây, các phiên bản mới của NAM có thể hiển thị hình trạng động của mạng, tức là sự chuyển động của các nút mạng trong không gian hai chiều.
Hiện nay, ta có thể sử dụng công cụ iNSpect để thay thế NAM trong hiển thị hình ảnh động của các mạng di động không dây. Công cụ mới này được phát triển bởi nhóm Toilers Research Group gồm những thành viên thuộc trường Colorado School of Mines và khoa Công nghệ an ninh – trường Fraunhofer Institute.
XGRAPH là một chương trình ứng dụng chạy trong X-Windows. Những tệp vết dạng text do chương trình mô phỏng sinh ra được XGRAPH sử dụng làm dữ liệu đầu vào để vẽ đồ thị trong không gian hai chiều. Các dạng đồ thị mà XGRAPH có thể vẽ là đồ thị dạng đường (Line graph), đồ thị điểm (Scatter plots) và đồ thị cột (Bar charts). Các đồ thị này có thể được sao lưu dưới dạng các file ảnh thông dụng và sử dụng cho các chương trình ứng dụng khác nhau.
4.1.2.1. Các chức năng mô phỏng chính của NS Đối với mạng có dây: Đố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 (Adhoc networks): DSDV, DSR, AODV, TORA...
Liên mạng sử dụng vệ tinh (Satellite Networking).
Trong lĩnh vực mạng hỗn hợp có dây và không dây:
Trạm cơ sở (BS) đóng vai trò gateway giữa mạng có dây và mạng không dây.
4.1.2.2 Cấu trúc phần mềm của NS Lập trình tách biệt Lập trình tách biệt
Người ta đã xây dựng NS theo tư tưởng tạo cho nó khả năng mở rộng được dễ dàng khi người nghiên cứu muốn bổ sung các chức năng mới, thử nghiệm các kịch bản khác nhau và nghiên cứu các giao thức mới. Để đạt được mục tiêu trên, NS sử dụng một mô hình lập trình phân tách làm hai phần; ngôn ngữ C++ được sử dụng để triển khai thực hiện hạt nhân của bộ mô phỏng, gồm các chức năng căn bản nhất của mô phỏng cần chạy ở tốc độ cao. Phần thứ hai của NS sử dụng ngôn ngữ Tcl, thực hiện các nhiệm vụ định nghĩa, định cấu hình và điều khiển mô phỏng.
Lập trình hướng đối tượng
Việc phân chia NS làm hai phần được lập trình bằng các ngôn ngữ khác nhau cũng thường thay đổi trong quá trình nghiên cứu các giao thức. Vì vậy, việc tái sử dụng các môđun chương trình có ý nghĩa hết sức quan trọng, điều này dẫn đến sự lựa chọn lập trình hướng đối tượng. Tuy nhiên, ban đầu khi người ta thiết kế NS, ngôn ngữ Tcl không hỗ trợ việc lập trình hướng đối tượng, vì thế dự án VINT đã chấp nhận sử dụng các mở rộng hướng đối tượng của ngôn ngữ Tcl, được phát triển tại Viện Công nghệ Massachuset (MIT), ngôn ngữ này được gọi là OTcl. Ngoài ra, VINT cũng chấp nhận một sự mở rộng đơn giản của Tcl, đó là các lớp (TclCL). Nhờ đó có thể dễ dàng tạo ra một đối tượng được xây dựng bằng cả hai ngôn ngữ C++ và OTcl.
4.1.2.3. Lập trình mô phỏng bằng NS
Dưới đây chúng tôi liệt kê các thao tác cơ bản trong việc lập trình mô phỏng bằng NS, mỗi thao tác này nói chung được biểu diễn bằng một dòng lệnh trong chương trình mô phỏng, sử dụng “ngôn ngữ” của NS. Các hướng dẫn chi tiết hơn có thể tra cứu trong tài liệu ns-Manual.
1. Các thao tác đối với bộ lập lịch các sự kiện. 2. Tạo ra mạng.
3. Chọn thuật toán định tuyến. 4. Tạo ra kết nối và lưu lượng.
5. Đưa mô-đun sinh lỗi vào đường truyền của mạng mô phỏng. 6. Ghi lại vết của mô phỏng (Tracing) để xử lý và phân tích sau.
7. Ghi lại vết của các sự kiện để hiển thị trực quan bằng chương trình NAM.
4.1.3 Công cụ hỗ trợ phân tích kết quả mô phỏng
4.1.3.1 Cấu trúc tệp vết chứa kết quả mô phỏng mạng không dây
Tệp vết có tên mở rộng là .tr: mỗi dòng ghi lại một sự kiện trong mạng và các thông tin liên quan đến sự kiện. Trong NS-2, có hai kiểu cấu trúc tệp vết chứa kết quả mô phỏng mạng không dây là:
Kiễu cũ:
r 160.093884945 _6_ RTR --- 5 tcp 1492 [a2 4 6 800] --- [655 36:0 16777984:0 31 16777984] [1 0] 2 0
Kiểu mới:
s -t 0.267662078 -Hs 0 -Hd -1 -Ni 0 -Nx 5.00 -Ny 2.00 -Nz 0.00 -Ne -1.000000 -Nl RTR -Nw --- -Ma 0 -Md 0 -Ms 0 -Mt 0 -Is 0.255 -Id -1.255 -It message -Il 32 -If 0 -Ii 0 -Iv 32
Ngoài 2 loại tệp vết có cấu trúc như trên, người lập trình mô phỏng (bằng Otcl) có thể thay đổi (thí dụ bỏ bớt...) một số trường (field) trong tệp vết, nhằm giảm kích thước của tệp vết và các thông tin không cần quan tâm.
4.1.3.2 Một số công cụ hỗ trợ việc phân tích và hiển thị kết quả mô phỏng
Với tệp vết ghi lại các sự kiện trong mạng có cấu trúc được định nghĩa rõ ràng, người phân tích có thể xử lý và kết xuất thông tin bằng mọi công cụ có thể, thí dụ các ngôn ngữ lập trình hoặc các phần mềm chuyên dụng. Dưới đây là các phần mềm và ngôn ngữ thường được sử dụng, trong đó phần lớn là các sản phẩm thuộc dự án GNU.
Grep
Grep là thuật ngữ viết tắt của cụm từ Global Regular Expression Parser, nó là một lệnh trong Unix|Linux. Grep là một bộ lọc, nó tìm và hiển thị (hoặc kết xuất kiểu pipling) các dòng trong input có chứa mẫu ký tự mà người sử dụng chỉ ra.
Awk
AWK là một ngôn ngữ lập trình được sáng tạo bởi 3 người là Alfred Aho, Peter Weinberger và Brian Kernighan. Chương trình gawk được tích hợp trong Linux là ứng dụng GNU của ngôn ngữ lập trình awk.
Ngôn ngữ awk không chỉ là một ngôn ngữ lập trình, nó còn là một công cụ hầu như không thể thiếu được đối với nhiều người quản trị hệ thống và người lập trình UNIX. Ngôn ngữ này dễ học, dễ nắm vững và mềm dẻo một cách đáng kinh ngạc.
Perl
Perl là thuật ngữ viết tắt của Practical Extraction and Report Language, và là một ngôn ngữ lập trình được phát triển bởi Larry Wall. Perl đi kèm với các phiên bản của Linux và chính perl cũng được hoàn thiện qua nhiều version.
Perl là một chương trình ứng dụng rất mạnh, kết hợp các đặc điểm của awk, grep, sed và C. Chương trình viết cho perl thực hiện cũng tương tự shell script và cũng được gọi là script. Phần mềm soạn thảo GNU Emacs có “perl mode” để soạn thảo perl script.
GNUPLOT
Gnuplot có thể chạy trên Windows và trên Unix|Linux. Gnuplot có thể nhận input là file văn bản có nhiều cột, khi đó cần chỉ ra 2 cột để lấy số liệu vẽ đồ thị. Gnuplot còn có thể nhận input từ nhiều file và vẽ trên một đồ thị, điều này rất thuận lợi cho việc so sánh các kết quả cần nghiên cứu.
Trace graph
Tác giả của Trace graph là Jaroslaw Malek (Copyright (c) 2001-2003 by Wroclaw University of Technology, Poland). Đây là một phần mềm mã nguồn mở tự do (đã thương mại hoá các phiên bản ra đời từ khoảng năm 2004), có khả năng phân tích và hiển thị các kết quả mô phỏng khá tốt (input là tệp vết).
4.1.4. Công cụ hiển thị trực quan mạng MANET trong quá trình hoạt động iNSPECT iNSPECT
iNSpect (The interactive NS-2 protocol and environment confirmation tool) là một công cụ trực quan dựa trên C++ và OpenGL cho phép hiển thị hình ảnh động của các mạng không dây được mô phỏng trong NS-2. Chương trình đọc các file di chuyển trong NS-2 và trả về các kết quả mô phỏng. iNSpect đưa ra một màn hình hiển thị hình ảnh của các nút trong một kịch bản không dây dựa trên hệ tọa độ Đề-các (x, y). Chương trình có một eventbuilder (bộ xây dựng sự kiện) để đọc trực tiếp một tập tin di chuyển và lập lịch chuyển động và tạm dừng của từng nút riêng rẻ. Chức năng event builder cho phép iNSpect sử dụng trực tiếp các tập tin di chuyển được tạo ra bởi các mô hình động bên ngoài. Mặt khác, iNSpect không yêu cầu tạo ra một tập tin vết riêng cho nó từ bộ mô phỏng NS-2, do đó tiết kiệm không gian ổ cứng.
Khi một tệt vết được tạo ra, iNSpect sử dụng cùng một event builder để đọc tệt vết và lập lịch các phiên truyền gói tin với các di chuyển của nút. Khác với NAM,
iNSpect hiển thị các tuyến đường không dây cũng như sự thành công hay thất bại của một phiên truyền gói tin. Các phiên truyền được hiển thị bằng các đường thẳng và các nút mã hoá màu sắc. Khi một nút truyền đến một nút khác, một đường thẳng được vẽ giữa hai nút. Đường thẳng đó đại diện cho sự cố gắng để truyền tải giữa hai nút, tương tự như các đối tượng liên kết trong các kịch bản NAM có dây. Nút trung gian trong một phiên truyền trở về màu xanh để cho biết nó đang gửi đi. Các nút nhận chuyển sang màu đỏ cho đến khi gói tin được nhận thành công, sau đó nó chuyển về màu xanh lá cây hoặc màu xanh. Nếu nút nhận là đích đến của gói tin, nó chuyển sang màu xanh lá cây. Nếu nút nhận không phải là đích đến cuối cùng, nó đổi sang màu xanh để hiển thị sự cố gắng truyền chuyển tiếp, và các đường thẳng biểu diễn tuyến đường được mở rộng để hiển thị sự chuyển tiếp gói tin. Hình 16 minh họa ba giai đoạn của một phiên truyền gói tin từ nút nguồn 1 đến các nút 20, 27, 21, và 18, tới nút đích 48. Việc tồn tại các đường và trạng thái nút cho phép phân tích tuyến đường riêng rẽ.
(a) Đường truyền từ nút 1 đến nút 20
(b) Đường truyền từ nút 1 đến nút 18 (c) Đường truyền từ nút 1 đến nút 48