Tệp vết là file dạng văn bản (text), mỗi dòng như một bản ghi (record), có cấu trúc như nhau, bao gồm một số trường phân cách nhau bởi ký tự trống (mã ASCII bằng 32). Cấu trúc một dòng của tệp vết thường có dạng:
MAC Address, Source MAC Address, Type (ARP, IP)]. Ý nghĩa của các trường được
giải thích tại bảng 4.
Bảng 3: Cấu trúc tệp vết
Event Type Value Ý Nghĩa
%.9f %d (%6.2f %6.2f) %3s %4s %d %s %d [%x %x %x %x] %.9f _%d_ %3s %4s %d %s %d [%x %x %x %x]
double Time Thời gian
int Node ID Chỉ số của nút
double X Coordinate Tọa độ trục x – Chỉ lưu lại nếu được log lại vị trí
double Y Coordinate Tọa độ trục y – Chỉ lưu lại nếu được log lại vị trí
string Trace Name Tên vết như: RTR, AGT,..
string Reason Lý do tạo ra sự kiện
int Event Identifier Số thứ tự gói tin
string Packet Type Kiểu gói tin: TCP, UDP, ACK
int Packet Size Kích thước gói tin
hexadecimal Time To Send Data Thời gian trông đợi gói tin được gửi xuống kênh truyền
hexadecimal Destination MAC
Address Địa chỉ MAC của nút đích hexadecimal Source MAC
Address Địa chỉ MAC của nút nguồn Wireless Event s: Send r: Receive d: Drop f: Forward
hexadecimal Type (ARP, IP) Kiểu của trường MAC
VD: 800 ETHERTYPE_IP
Phụ thuộc vào kiểu của gói tin mà cấu trúc tệp vết còn có thêm một số trường
Destination Port Number, TTL Value, Next Hop Address, If Any], [Sequence Number, Acknowledgment Number], Number Of Times Packet Was Forwarded, Optimal Number Of Forwards. Ý nghĩa của các trường này được giải thích tại bảng 5 bên dưới.
Bảng 4: Các trường thêm vào trong cấu trúc tệp vết phụ thuộc vào kiểu gói tin
Event Type Value Ý Nghĩa
--- [%d:%d %d:%d %d %d]
int Source IP Address Địa chỉ IP nguồn
int Source Port Number Chỉ số cổng nguồn
int Destination IP Address Địa chỉ IP đích
int Destination Port Number Chỉ số cổng đích
int TTL Value Time To Live: Thời gian tồn tại của gói tin
IP Trace
int Next Hop Address, If Any Địa chỉ của nút kế tiếp gói tin sẽ chuyể tiếp tới.
[%d %d] %d %d
int Sequence Number Số thứ tự
int Acknowledgment Number Số thứ tự của gói biên nhận
int Number Of Times Packet
Was Forwarded Số lần gói tin được chuyển tiếp TCP
Trace
int Optimal Number Of
Forwards Số chuyển tiếp tối ưu [%d] %d %d
int Sequence Number Số thứ tự
int Number Of Times Packet
Was Forwarded Số lần gói tin được chuyển tiếp CBR
4.1.2. Công cụ để phân tích và biểu diễn kết quả mô phỏng
4.1.2.1. Perl
Ban đầu, Perl (Practical Extraction and Report Language) là một ngôn ngữ lập
trình được phát triển cho thao tác văn bản, sau này được phát triển để sử dụng cho một
loạt các ứng dụng khác như: quản trị hệ thống, phát triển web, lập trình mạng, giao
diện phát triển,…Ưu điểm vượt trội của Perl là nhỏ gọn, dễ sử dụng, hỗ trợ cả lập trình
hướng đối tượng (OOP), được xây dựng hỗ trợ xử lý văn bản.
Sử dụng Perl
Để chạy Perl trên Linux, ta dùng lệnh sau: perl progName.pl
Viết Script bằng perl, đặt dòng sau lên trên đầu trong Script
#!/usr/bin/perl
Sau đó chạy lệnh:
/duongdan/script.pl
ví dụ : chmod 755 script.pl
/duongdan/script.pl
Cú pháp cơ bản của Perl:
Một đoạn code Perl script hay một chương trình đều bao gồm nhiều các
statements. Các statements này chỉ đơn giản được viết bằng các kiểu cách đơn giản
trong script. Không nhất thiết phải có main() hoặc tương tự.
perl statements kết bằng dấu “ ; “
Ví dụ: print”Hello, I’m Tu”;
Sử dụng “#” để Comments trong Perl, ví dụ :
# Comment ở đây
4.1.2.2.GNUPLOT
Gnuplot là một công cụ vẽ đồ thị gọn nhẹ và rất hữu dụng trên Linux. Gnuplot tỏ ra khó dùng lúc ban đầu, tuy nhiên, nếu nắm được các cú pháp cơ bản của nó, chúng ta
sẽ thấy đây là một công cụ mạnh mẽ và đầy hiệu quả. Với chức năng tạo script để vẽ,
việc tạo hoặc sửa đổi một đồ thị trở nên rất dễ dàng.
Gnuplot có thể nhận vào tệp văn bản (input file) có nhiều cột, lúc ấy cần chỉ ra hai cột cụ thể để lấy dữ liệu vẽđồ thị. Gnuplot còn có thể nhận vào từ nhiều file và vẽ
trên cùng một đồ thị, điều này rất thuận lợi cho việc so sánh và nghiên cứu.
Ví dụ: File đầu vàolà: Time_of_connection_setup.data
STT DSDV AODV DSR 0 0,0045 0,6204 0,0333 5 1,1788 1,6365 1,4792 10 5,4950 1,4021 3,8303 15 5,0125 2,3528 3,4793 20 6,9357 1,4003 0,5594
Thiết lập định dạng cho bản vẽ và thực hiện vẽ đồ thị:
#plot.script
set title "Thoi gian thiet lap ket noi" set xlabel "Van Toc (m/s)"
set ylabel "Thoi gian (s)" set key right top
set pointsize 1 set xr [0:20] set yr [0:8] set size 0.8,0.8
set terminal postscript eps enhanced mono dashed lw 1
set output "Time_of_connection_setup.eps"
plot "connection_time_RandomWaypoint" using 1:2 title 'DSDV' with linespoints lt 1 pt 6 lw 1, \
"connection_time_RandomWaypoint" using 1:3 title 'AODV' with linespoints lt 2 pt 12 lw 1, \
4.2. Thiết lập mạng mô phỏng MANET
Tôi đã xây dựng chương trình mô phỏng, có sử dụng đoạn mã ví dụ về mô phỏng mạng ad-hoc với giao thức DSDV trong cuốn "NS Simulator for beginners" [1] của tác giả Eitan Altman và Tania Jimenez. Chương trình mô phỏng của tôi có tên là:
MANET_Simulation.tcl, được in trong mục 2.Mô phỏng mạng MANET của phần Phụ
Lục. Chương trình này sau khi chạy sẽ sinh ra các tệp vết là :MANET.nam và
MANET.tr. Chúng sẽ được dùng làm input cho chương trình NAM để trực quan hóa toàn bộ quá trình mô phỏng bằng đồ họa; làm input cho đoạn mã perl do tôi xây dựng
để tính: Tỷ lệ phân phát gói tin thành công, thời gian phản ứng của các giao thức định tuyến, thông lượng; và kết xuất ra các tệp dùng cho gnuplot vẽ đồ thị.
4.2.1. Thiết lập tô-pô mạng
Sau nhiều khảo sát đánh giá, chúng tôi lựa chọn khu vực mô phỏng mạng
MANET theo hình vuông với diện tích là 1500m x 1500m (1,5Km x 1,5Km). Việc mở
rộng diện tích khu vực mô phỏng này sẽ đảm bảo cho các nút mạng di động có đủ
không gian chuyển động với quãng đường đi lớn nhất lên tới 1,5x√2 = 2,12Km . Theo chuẩn 802.11 thì vùng thu phát sóng của nút di động tối đa là 250m nên ta có độ dài
đường đi lớn nhất trong mạng mô phỏng lớn hơn 8 chặng dài nhất có thể có. Điều này rất hữu ích trong trường hợp nghiên cứu quá trình định tuyến giữa các nút ở xa nhau.
Mạng mô phỏng bao gồm 50 nút di động phân bố ngẫu nhiên trong diện tích mô
phỏng với tọa độ các nút là (x, y, z) trong đó z = 0 (Mặt phẳng).
Vị trí ban đầu của các nút được khởi tạo ngẫu nhiên như vậy nhằm làm tăng tính
khách quan trong quá trình mô phỏng.
Tổng quan về mạng mô phỏng với các tham số cấu hình chung, cấu hình di chuyển và cấu hình truyền dữ liệu được thể hiện trong bảng 5.
Bảng 5: Cấu hình mạng mô phỏng Thông số Giá trị Cấu hình chung Khu vực địa lý 1,5Km x 1,5Km Tổng số nút 50 nút Vùng thu phát sóng 250m Cấu hình di chuyển Tốc độ di chuyển nhanh nhất 20 m/s 72 km/h Tốc độ di chuyển chậm nhất 0 m/s Đứng yên
Cấu hình truyền dữ liệu
Dạng truyền thông TCP
Số nguồn phát 10 nguồn, nằm trên 8 nút mạng: 4, 5,
7, 12, 15, 16, 18, 19
Thực thể nhận 8 nút mạng: 5, 6, 8, 13, 16, 17, 19, 20
Kích thước gói tin 512 bytes
Kiểu – Kích thước hàng đợi DropTail - 50
4.2.2. Thiết lập mô hình chuyển động của các nút mạng và thời gian mô phỏng
mạng không dây là mô hình vết (trace-based model) và mô hình tổng hợp (synthetic
model). Mô hình vết cung cấp cho ta thông tin chính xác, đặc biệt là khi nó có liên quan tới nhiều bên tham gia va có thời gian đủ dài. Tuy nhiên, mô hình tổng hợp là phù hợp hơn đối với mạng di động ngày nay. Mô hình tổng hợp cố gắng thể hiện hành vi của các nút di động bằng cách thống kê. Mỗi nút sẽ được gán một giải thuật nhằm
ngẫu nhiên hóa quá trình di chuyển. Hai mô hình tiêu biểu mô phỏng các mạng Ad- hoc là: Random Waypoint và Random Walk.
4.2.2.1. Mô hình Random Waypoint
Tại mô hình này, ban đầu mỗi nút có một vị trí ngẫu nhiên trong khu vực mô
phỏng và ở tại đó một khoảng thời gian tạm dừng. Khi hết quãng thời gian tạm dừng,
nút chọn cho mình một đích ngẫu nhiên trong khu vực mô phỏng và chuyển động với
tốc độ phân bố đồng đều giữa [speedmin, speedmax]. Khi tới vị trí mới nút dừng một
khoảng thời gian trong khoảng [Pmin, Pmax] và sau đó tiếp tục lại quá trình.
Hình 14: Di chuyển một nút theo mô hình Random Waypoint.
Đây là mô hình có tính linh động cao nên được sử dụng phổ biến và rộng rãi nhất. Mô hình Random Waypoint có biến thể khác với một vài thay đổi khác biệt là mô hình Random Walk.
4.2.2.2. Mô hình Random Walk
Mô hình này mô phỏng chuyển động ngẫu nhiên của các thực thể trong cuộc
sống tự nhiên. Nút di động di chuyển từ vị trí hiện tại tới vị trí mới bằng việc chọn
ngẫu nhiên một hướng nằm trong khoảng [0, 180°] và tốc độ nằm trong khoảng
[speedmin, speedmax]. Mỗi chuyển động diễn ra trong khoảng thời gian travel_time (thời
gian di chuyển của nút trước khi thay đổi hướng và tốc độ) hoặc trong một khoảng
cách hằng số và đặc biệt là không có thời gian tạm dừng trước khi nút mạng thay đổi hướng và tốc độ. Hình 15 thể hiện trực quan hóa quá trình di chuyển của tám nút mạng
theo mô hinh Random Walk.
Hình 15: Di chuyển của 8 nút theo mô hình Random Walk
Với mô hình chuyển động này thì tham số về sự thay đổi hướng di chuyển của
nút có tính chất quyết định đến mức độ thay đổi của mạng. Nếu tham số này nhỏ, các
nút di chuyển ngẫu nhiên trong phạm vi nhỏ, lúc này mạng được coi là mạng nửa tĩnh. Ngược lại nếu tham số này lớn, mạng thay đổi trên phạm vi rộng hơn.
4.2.3 Thiết lập các nguồn sinh lưu lượng đưa vào mạng
Chúng tôi lựa chọn 10 cặp truyền thông (sender, receiver) truyền phát dữ liệu.
Chúng được sắp xếp phân bố hợp lý trên khu vực mô phỏng sao cho đảm bảo có đủ
các chặng truyền phát với độ dài khác nhau, từ các cặp truyền thông nằm gần nhau nhất tới các cặp truyền thông nằm xa nhau nhất có thể trong khu vực mô phỏng , các nút mạng còn lại tham gia vào quá trình định tuyến với vai trò là nút trung gian chuyển tiếp gói tin.
Giao thức TCP được chúng tôi lựa chọn để đưa vào mô phỏng bởi trong các ứng dụng trên thực tế hầu hết đều hoạt động dựa trên giao thức này. Các nguồn phát sinh
lưu lượng sử dụng giao thức FTP để truyền.
NS-2 hỗ trợ một số công cụ để tạo ra các file ngữ cảnh một cách tự động và ngẫu
nhiên. Các công cụ này nằm trong thư mục: …/ns-2/indep-utils/cmu-scen-gen/, với các tính năng sau:
• setdest: Là công cụ viết trên nền C++, giúp cho người nghiên cứu tạo ra các
kịch bản bao gồm vị trí ban đầu của nút di động và sự di chuyển của chúng. Trong
công cụ này, chúng ta coi tọa độ z của các nút đều bằng 0 và các nút di chuyển trên cùng một mặt phẳng. Thực hiện setdest bằng cách gõ lệnh như sau:
./setdest -n <num of nodes> -p <pausetime> -s <maxspeed> -t <simtime> -x <maxx> -y <maxy> > <outdir>/<scenario-file>
• cbrgen.tcl: Là công cụ viết bằng ngôn ngữ tcl, sử dụng thông qua bộ thông
dịch ns-2, giúp người nghiên cứu có thể tạo ra các kịch bản truyền thông trên nền giao
thức giao vận TCP. Câu lệnh:
ns cbrgen.tcl [-type cbr|tcp] [-nn nodes] [-seed seed] [-mc connections]
[-rate rate] > <outdir>/<scenario-file>
Sử dụng các công cụ này giúp người nghiên cứu tạo ra các kịch bản truyền thông cũng như di chuyển của mạng với số lượng các nút di động là tương đối lớn. Tuy
nhiên việc tạo ra các kịch bản này là ngẫu nhiên, có thể không theo ý muốn của người
nghiên cứu, nên trong nhiều trường hợp người nghiên cứu phải tự viết ra các kịch bản
4.2.4. Lựa chọn thời gian mô phỏng
Quá trình mô phỏng diễn ra trong thời gian t = 600s = 10 phút. Đây là khoảng
thời gian vừa đủ để chúng ta nghiên cứu các sự kiện xảy ra trong mạng. Thật vậy do các nút mạng di chuyển với vận tốc từ [0m/s – 20m/s] nên ta giả sử nút di chuyển với tốc độ gần như là thấp nhất ứng với người đi bộ là 1m/s thì quãng đường đi được sau