Phần mềm mô phỏng mạng Network Simulator (NS) được phát triển ở
UC Berkeley nhằm mô phỏng các mạng IP. Phần mềm này thực thi các giao thức mạng như là TCP, UDP, hoạt động của những tài nguyên mạng như FPT, Telnet, Web, CBR và VBR, các cơ chế quản lý hàng đợi router như Drop Tail, RED và CBQ, các thuật toán định tuyến như Dijkstra, và nhiều hơn nữa. NS cũng mô phỏng mạng multicasting… Nó là môt phần của dự án VINT phát triển các công cụ để hiển thị kết quả mô phỏng, phân tích và chuyển đổi các topo mạng. Hiện nay, NS version 2 được viết trên C++ và Otcl (ngôn ngữ Tcl hướng đối tượng mở rộng do MIT phát triển)
Hình 6.1Cách nhìn đơn giản về NS
Như đã chỉ ra ở hình 6.1, NS là tập lệnh biên dịch Tcl hướng đối tượng (Otcl) có một lập biểu (scheduler) sự kiện mô phỏng và các thư viện đối tượng thành phần mạng cũng như những thư viện module thiết lập mạng (tuy nhiên các module thiết lập được thực thi như là các hàm thành phần của đối tượng mô phỏng cơ bản). Hay nói cách khác, để sử dụng NS, chúng ta lập trình trên ngôn ngữ tập lệnh OTcl. Để thiết lập và chạy một mạng mô phỏng, người dùng phải viết một tập lệnh Otcl và khởi động một lập biểu sự kiện, thiết lập cấu hình mạng sử dụng các đối tượng mạng và các hàm chức năng trong thư viện, chỉ cho tài nguyên lưu lượng biết khi nào thì bắt đầu và kết thúc việc truyền gói thông qua
Chương 6: Kết quả mô phỏng và thực tế
tượng mạng bằng cách set các lân cận pointer của đối tượng đến địa chỉ của các
đối tượng tương ứng. Khi người dùng muốn tạo một đối tượng mạng mới, họ có thể dễ dàng tạo một đối tượng bằng cách viết tập lệnh hay tạo một đối tượng gộp từ thư viện đối tượng và thiết lập dòng data qua những đối tượng này. Ưu thế của NS chính là ởđiểm này.
Một thành phần chính của NS bên cạnh đối tượng mạng là lập biểu sự
kiện. Một sự kiện trong NS là một ID gói, duy nhất của một gói với thời gian biểu và pointer chỉ đến đối tượng nắm giữ sự kiện. Trong NS, một lập biểu sự
kiện theo dõi thời gian mô phỏng và tính thời gian trong chuỗi các sự kiện được lập biểu bằng cách gọi các thành phần mạng tương ứng. Những thành phần mạng này giao tiếp với nhau thông qua các gói. Tuy nhiên điều này sẽ không tính vào thời gian mô phỏng
NS không chỉ được viết trên OTcl mà còn viết bằng C++. Đó là bởi vì, NS phân biệt việc thực thi đường dẫn dữ liệu với việc thực thi đường dẫn điều khiển. Để giảm thời gian xử lý sự kiện và gói, lập biểu sự kiện và các đối tượng thành phần mạng cơ bản ở đường dẫn dữ liệu được viết và biên dịch trên C++. Những đối tượng đã biên dịch này sẽ sẵn sàng trong biên dịch Otcl thông qua liên kết OTcl. Liên kết Otcl sẽ tạo ra một đối tượng OTcl phù hợp với mỗi đối tượng C++ và tạo hàm điều khiển cùng các biến cấu hình chỉ định bởi hoạt động của đối tượng C++ như là các hàm và các biến thành phần của đối tượng OTcl tương ứng. Bằng cách này, việc điều khiển của đối tượng C++ được ghi nhận
đến OTcl. Cũng có thể cộng các hàm và biến thành phần đến C++ được liên kết
đối tượng OTcl.
Chương 6: Kết quả mô phỏng và thực tế
Đối tượng trong C++ không cần thiết được điều khiển trong một chương trình mô phỏng. Tương tự như thế, một đối tượng (không thuộc đường dẫn dữ liệu) có thể được thực thi hoàn toàn ở OTcl. Hình 6.2 chỉ một hệ đẳng cấp
đối tượng ví dụ trong C++ và OTcl
Hình 6.3Kiến trúc NS
Hình 6.3 thể hiện kiến trúc tổng quát của NS. Trong hình này, vị trí người dùng được hình dung là ở góc dưới bên trái. Tại vị trí này người dùng sẽ thiết kế và chạy mô phỏng ở Tcl sử dụng các đối tượng mô phỏng trong thư viện OTcl. Lập biểu sự kiện và hầu hết các thành phần mạng (được thực thi trong C++ và có sẵn ở OTcl thông qua liên kết OTcl) sẽđược thi hành sử dụng Tcl.
Chúng ta có thể tự hỏi bằng cách nào có thể lưu lại được kết quả mô phỏng. Như đã nói ở Hình 6.1, khi mô phỏng kết thúc, NS sẽ xuất một hay nhiều file text ra, ở đó sẽ chứa các dữ liệu mô phỏng chi tiết nếu chúng ta yêu cầu trong tập lệnh Tcl. Dữ liệu có thể được sử dụng cho phân tích mô phỏng hay xem như là dữ liệu đầu vào cho công cụ hiển thị mô phỏng gọi là Network Animator (NAM). NAM có giao diện người dùng như Hình 6.4. Ở đó ta có thể
dễ dàng điều khiển tốc độ hiển thị, hay xem các gói rơi,…
Lưu ý rằng, NS cũng như NAM đều chỉ chạy trên môi trường UNIX. Tuy nhiên đối với những ai không quen dùng Linux có thể chạy chương trình Cygwin giả lập môi trường UNIX trong Win. Cygwin có thể tương thích với
Chương 6: Kết quả mô phỏng và thực tế
các version Windows như Win 98, Win 2000 hay Windows XP. Tuy nhiên đây là chương trình đang hoàn thiện dần nên cách cài đặt Cygwin cũng như NS, NAM trên chúng rất phức tạp và tùy loại phiên bản Windows sẽ có cách cài đặt và vá những lỗi riêng. Trong luận văn này tôi đã dùng phiên bản NS-allinone-2.32 cài đặt trên Cygwin và đã chạy tốt.
Ngoài ra, để hiển thị các kết quả dạng đồ thị, cần sử dụng một công cụ, thực chất là một chương trình, có tên gọi là Xgraph. Trong các chương trình mô phỏng, sử dụng chương trình Xgraph để vẽ các đồ thị về băng thông theo thời gian. Sau đây là dạng một đồ thị tiêu biểu trong Xgraph.
Hình 6.4Giao diện đồ thị trong Xgraph
Một bổ sung cho NS-2 để mô phỏng mạng MPLS, đó là chương trình mô phỏng mạng MPLS MNS v2.0 (MPLS Network Simulator version 2.0).
MNS có thể mô phỏng việc chuyển tiếp và phân phối nhãn trong MPLS. Ngoài ra, nó còn bổ sung cơ chế phục hồi, tạo một đường đi dự phòng cho đường đi hiện hành.