Giới thiệu về phần mềm Network Simulator NS2

Một phần của tài liệu Mô phỏng ảnh hưởng của quá trình đóng khối trong mạng obs (Trang 32 - 36)

Chương III PHẦN MỀM MÔ PHỎNG MẠNG NETWORK SIMULATOR (NS2) VÀ PHẦN MÔ PHỎNG MẠNG OBS

3.1 Giới thiệu về phần mềm Network Simulator NS2

Chương trình mô phỏng NS2 được xây dựng để thực hiện mạng số liệu dựa trên chuyển mạch gói. NS2 có thể mô tả hoạt động của các giao thức mạng.

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. Ngoà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 quá 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 quá 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 3.1.3 Cấu trúc của phần mềm NS2

Hình sau mô tả cấu trúc của phần mềm mô phỏng bao gồm cấu trúc thư mục và chức năng của một số file quan trọng.

Hình 3.1: Cấu trúc phần mềm mô phỏng NS2

Trong số các thư mục con của ns-allinone-2.1b thì ns-2 là nơi chứa các file phục vụ cho mô phỏng (cả viết bằng C++ lẫn OTcl). Trong thư mục này, tất cả OTcl code và những kịch bản thí dụ đều chứa trong thư mục gọi là tcl và hầu hết được viết bằng C.

Thư mục tcl có những thư mục con, trong số đó có thư mục lib chứa mã nguồn OTcl cho những thành phần cơ bản nhất và quan trọng nhất (agent, node, link, packet, address, routing…) và đây cũng là nơi mà user hay developer “ghé thăm” nhiều nhất.

Ns -lib.Tcl: Lớp mô phỏng và đa số các định nghĩa chức năng thành phần của nó ngoại trừ LAN, Web, và Multicast được chứa trong file này.

Ns -default. Tcl: Những giá trị mặc định cho các thông số cấu hình cho các thành phần mạng được chứa ở đây. Bởi vì nhiều thành phần mạng được bổ sung bằng C++, nên những thông số là những biến C++ tạo ra các giá trị cho OTcl qua chức năng liên kết OTcl, bind(C++_variable_name, OTcl_variable_name).

Ns -packet. Tcl: Thành phần khởi tạo những định dạng header của gói được chứa trong file này. Khi tạo ra một gói header thì phải đăng ký header trong file này để tạo ra những xử lý khởi tạo.

3.1.3 Việc sử dụng chương trình

Ở mức độ người sử dụng: Việc mô phỏng bắt đầu bằng việc nắm rõ các câu lệnh tạo đối tượng mô phỏng từ đó xây dựng các kịch bản mô phỏng Tcl. Các câu lệnh tạo đối tượng được nêu rõ trong tài liệu hướng dẫn kèm theo của phần mềm NS2. Sau khi tạo một kịch bản mô phỏng Tcl. Việc chạy chương trình mô phỏng chỉ đơn giản bằng câu lệnh sau tại dấu nhắc lệnh của Terminal trong Linux.

[Root ~]#ns kichban.Tcl [tham số 1] [tham số 2] ….

Với kichban. Tcl là file kịch bản thể hiện các yếu tố mô phỏng mà người sử dụng mong muốn.

[Tham số] là các thông số người sử dụng muốn nhập vào trong lúc bắt đầu thực hiện mô phỏng

Ở mức độ người vừa phát triển vừa sử dụng: Việc phát triển phần mềm bắt đầu từ việc nắm rõ cấu trúc các thư mục chính trong NS2 cùng với một số file quan trọng liên quan đến các đối tượng mới cần thêm vào. Khi người sử dụng tạo ra một chương trình mô phỏng chạy trên nền NS2 cho riêng mình thì cũng có thể tạo ra các câu lệnh tạo đối tượng riêng cho mình, đó cũng là một ưu điểm của phần mềm NS2 mã nguồn mở.

3.1.4 Kết quả xuất ra từ chương trình mô phỏng và cách xử lý chúng

Sau khi chạy kịch bản mô phỏng, NS2 cho phép tạo ra hai file có phần mở rộng là namtr tạm gọi là file nam và file trace. File nam ghi nhận các sự kiện cho việc trình diễn việc truyền nhận và rớt gói một cách trực quan. File trace thì ghi nhận lại các sự kiện xảy ra trong mô phỏng như nhận gói, rớt gói … dùng cho việc tính toán các thông số khác từ các sự kiện của một file trace.

Sử dụng file nam:

Việc sử dụng file nam bằng lệnh sau tại dấu nhắc lệnh của Terminal [Root ~]#nam file.Nam

Hình sau mô tả cửa sổ của chương trình nam mô tả các sự kiện một cách trực quan.

Hình 3.2: Cửa sổ chương trình hiện ra sau khi chạy file nam Xử lý file trace:

Hình sau mô tả cấu trúc của một file trace được tạo ra sau khi mô phỏng kết thúc.

Còn đây là một đoạn trích trong một file trace.

Event: Có bộn ký tự thường xuất hiện là r, +, -, d để chỉ các sự kiện nhận, vào hàng đợi, ra khỏi hàng đợi và rớt

Time: Thời điểm xảy ra sự kiện From node: node đi của gói tin To node: node đến của gói tin Pkt type: loại gói tin

Pkt size: kích thước gói tin (byte)

Fid: số nhận diện cho mỗi luồng dữ liệu

Src Addr: Địa chỉ node nguồn ở dạng node.Port Dst Addr: Địa chỉ node đích ở dạng node.Port

Pkt id: chỉ số nhận diện cho mỗi gói tin. Chỉ số này là duy nhất.

Với việc nắm rõ định dạng của một file trace người dùng có thể dùng các ngôn ngữ như Perl hay Awk để duyệt file theo hàng và theo cột với một giải thuật để tính toán cụ thể. Thí dụ như tính tỉ lệ gói mất, độ delay trung bình của các gói tin.

Một phần của tài liệu Mô phỏng ảnh hưởng của quá trình đóng khối trong mạng obs (Trang 32 - 36)

Tải bản đầy đủ (PDF)

(68 trang)