3.1.1. Giới thiệu ngôn ngữ lập trình mô phỏng NS2
NS2 là chữ viết tắt của cụm từ Network Simulation phiên bản 2, có khả năng mở rộng dễ dàng phù hợp cho việc nghiên cứu và phát triển chƣơng trình để bổ sung các chức năng mới, nó cho phép xây dựng các mô hình gần với thực tế để thực hiện các thử nghiệm với 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, cấu hình và điều khiển mô phỏng.
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.
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.
3.1.2. Công cụ hỗ trợ phân tích kết quả mô phỏng
Đánh giá hiệu năng của giao thức mạng là đi phân tích kết quả mô phỏng có thể đánh giá bằng kết quả trực quan hiển thị bằng công cụ NAM, nhƣng việc đánh giá chính là thực hiện phân tích file trace (.tr). Hiện nay cấu trúc tệp vết chứa kết quả mô phỏng mạng 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.
* 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).
3.2. Khắc phục một số lỗi trong quá trình cài đặt mô phỏng
- Trong quá trình thực hiện mô phỏng của luận văn một gặp một số vấn đề về định dạng file trace (.tr), đó là kết quả xuất ra file trace ban đầu theo định dạng mới, nên chƣa có code phù hợp, việc đọc, lọc và tính toán đƣợc các thông
số cần thiết dựa vào việc phân tích file trace và các tham số trong file. Tuy số liệu 2 định dạng đều có thể đƣa ra đầy đủ thông tin nhƣng việc xử lý phức tạp hơn rất nhiều so với định dạng cũ đã có code hỗ trợ. Nên việc đƣa về định dạng cũ của file trace là cần thiết.
- Trong quá trình cài đặt mô phỏng cần tạo mới luồng sinh lƣu lƣợng, và các file khởi tạo vị trí nút và thiết lập thời gian hoạt động ban đầu của các nút trong mô hình mạng để tại hình trạng mạng động, các nút di chuyển theo mô hình Random Waypoint.
+ Để tạo các file di chuyển cho nút di động thì sử dụng công cụ setdest trong thƣ mục ~ns/indep-utils/cmu-scen-gen/setdest nằm trong bộ mô phỏng NS-2. Chạy setdest với các tham số sau để tạo hình trạng mạng với tốc độ di chuyển của các nút khác nhau:
./setdest –v <version> -n <num_of_nodes> -p <pausetime> -M <maxspeed> -t <simtime> -x <maxx> -y <maxy> > <scenario-file>
./setdest –v 1 –n 50 –p 0 –M 20 -t 900 –x 300 –y 300 > scen-n50-s20-t400- x300.mv
./setdest –v 1 –n 50 –p 0 –M 15 -t 300 –x 300 –y 300 > scen-n50-s15-t400- x300.mv
./setdest –v 1 –n 50 –p 0 –M 10 -t 300 –x 300 –y 300 > scen-n50-s10-t400- x300.mv
./setdest –v 1 –n 50 –p 0 –M 5 -t 300 –x 300 –y 300 > scen-n50-s5-t400- x300.mv
./setdest –v 1 –n 50 –p 0 –M 1 -t 300 –x 300 –y 300 > scen-n50-s1-t400- x300.mv
+ Để tạo mẫu lƣu lƣợng CBR, sử dụng bộ tạo lƣu lƣợng nằm trong thƣ mục ~ns/indep-utils/cmu-scen-gen của bộ mô phỏng NS-2 có tên là cbrgen.tcl:
ns cbrgen.tcl [-type cbr|tcp] [-nn nodes] [-seed seed] [-mc connections] [- rate rate]
ns cbrgen.tcl –type cbr –nn 50 –seed 1.0 –mc 1 –rate 4.0 > cbr10.con
3.3. Giới thiệu hƣớng nghiên cứu mới: Dự đoán trạng thái liên kết
Trong mạng động, hình trạng mạng thay đổi liên tục, nên hai nút mạng có thể di chuyển ra khỏi vùng phủ sóng của nhau, dẫn tới liên kết bị đứt gãy. Hiện nay, có nhiều hƣớng nghiên cứu đƣa ra để cải thiện độ tin cậy của tuyến đƣờng trong đó có hƣớng là đo sự di động của các nút mạng hoặc đi xác định vị trí của các nút để dự đoán các liên kết có khả năng bị đứt và một con đƣờng mới có thể đƣợc xây dựng trƣớc nếu cần thiết.
Phƣơng pháp thực hiện
Mô hình liên kết có khả năng dự đoán trong hình 3.2 giả sử rằng nếu khoảng cách giữa hai nút A và B nhỏ hơn bán kính của phạm vi truyền dẫn của chúng, chúng có thể trao đổi trực tiếp với nhau; nếu không, chúng không trao đổi trực tiếp với nhau đƣợc. Giả sử tốc độ của 2 nút A và B tƣơng ứng là vA và vB và có hƣớng (θ, l và m) của hai nút đƣợc cho trƣớc và không đổi.