Mục đích chính của mô hình là giảm thiểu tỷ lệ mất gói trong mạng Ad hoc để năng cao chất lượng truyền tin. Vì vậy, biến quan trọng nhất trong hàm ra quyết định là tỷ lệ mất gói. Bên cạnh đó, khả năng hoạt động của các thuật toán còn được thể hiện qua một số các điều kiện của môi trường như: số cặp nút mạng nguồn/đích, tốc độ di chuyển trung bình…
Hàm ra quyết định có công thức chung như sau:
H(thuật toán định tuyến) = f(tỷ lệ mất gói, số cặp nguồn đích, tốc độ di chuyển) Hàm ra quyết định phải đảm bảo việc lựa chọn linh hoạt, phù hợp với điều kiện hiện tại của môi trường, bảo đảm tỷ lệ mất gói là thấp nhất.
Báo cáo Đồ án Tốt nghiệp Chương V: Thực hiện mô phỏng
CHƯƠNG V: THỰC HIỆN MÔ PHỎNG
Như đã giới thiệu ở trên, chương V sẽ thực hiện phần mô phỏng đưa ra kết quả để xây dựng hàm ra quyết định và thực hiện mô phỏng mô hình áp dụng cho giao thông ứng với từng giao thức định tuyến. Tất cả các mô phỏng đều được thực hiện bằng bộ công cụ mô phỏng NSZ2.
5.1. Phần mềm NS„2
5.1.1. Giới thiệu phần mềm NS^2
NS là chữ viết tắt của Network Simulator, là một biến thể của Real network simulator và có lịch sử phát triển khá dài và trong rất nhiều những dự án khác nhau (dự án VINTZVirtual Internet Testbed... ) [14]. Đây là phần mềm mã nguồn mở được phát triển trên nền tảng của hệ điều hành Unix xây dựng nhằm mô phỏng mạng với mục đích nghiên cứu, giảng dạy, học tập... Chính vì vậy NSZ2 khả dụng cho nhiều đối tượng: người nghiên cứu, người phát triển và học viên. NSZ2 là một phiên bản hướng đối tượng dùng trong mô phỏng mạng với nhiều tính năng và đặc biệt có những thư viện lớn sẵn có bao gồm các giao thức mạng như TCP, UDP... giao thức nguồn lưu lượng như FTP, Tenet Web, CBR, VBR, cơ cấu Droptail, Red ...
NSZ2 là phiên bản thứ 2 của NS, nó được viết bằng ngôn ngữ lập trình C++, và sử dụng bộ ngôn ngữ Tcl/tk làm trình biên tập, khởi tạo kịch bản và đồng thời cũng làm giao diện cho người sử dụng.
Trong suốt quá trình lịch sử hình thành và phát triển bộ mô phỏng mạng này đã có nhiều phiên bản được sử dụng chỉnh sửa và hoàn thiện dần để trở lên khả dụng và ứng dụng rộng rãi trên nền nhiều hệ điều hành khác nhau và cũng đưa nó vượt ra khỏi phạm vi phòng thí nghiệm. Phần mềm NS đã trở thành một chuẩn công nghiệp ở trên 50 quốc gia và gần 600 viện nghiên cứu (trong đó bộ ngôn ngữ Tcl/tk là một trình khởi tạo và biên dịch kịch bản một cách mạnh mẽ). Từ những phiên bản đầu tiên NS đã khẳng định tính ưu việt của mình so với nhiều phần mềm mô phỏng mạng khác và là nền tảng cho sự phát triển một số công cụ mô phỏng đơn lẻ.
So với các phần mềm mô phỏng mạng khác, NSZ2 có những ưu thế sau: NSZ2 có mã nguồn mở miễn phí.
NSZ2 có kiến trúc mở, tạo điều kiện thuận lợi cho việc mở rộng.
NSZ2 được phát triển từ các phần mềm nổi tiếng trên thế giới như REAL, NEST nên nó có những điểm mạnh và đã khắc phục được những yếu điểm của các phần mềm này.
NSZ2 hỗ trợ các tính năng cơ bản của mạng IP, từ đó có thể phát triển thêm các phần tử mạng.
NSZ2 có cấu trúc Modul, rất thuận tiện cho việc nghiên cứu tìm hiểu và phát triển.
Nhìn từ phía người sử dụng, NSZ2 là chương trình biên dịch mã Otcl được liên kết tới thư viện C++. Các đối tượng cơ sở như TCP, CBR... được xây dựng trong C++. Hình 5.1 cho thấy cấu trúc của một chương trình mô phỏng NSZ2.
Hình 5.1: Cấu trúc chương trình mô phỏng NSe2
Đầu vào NSZ2 là tập mã lệnh Otcl, đầu ra là các tập tin mô phỏng tiến trình theo yêu cầu được thể hiện trong tập lệnh Otcl. Kết quả mô phỏng có thể quan sát bằng hình ảnh mô tả trực quan với ứng dụng NAM (the Network Animator), bằng đồ thị (sử dụng Xgraph) hoặc có thể được xử lí bằng các tập lệnh tuỳ chọn. Với cấu trúc này, việc sử dụng NSZ2 trở lên đơn giản hơn nhiều so với sử dụng trực tiếp C++ nhưng vẫn có được những tính năng của C++.
Và cũng vì đây là phần mềm phát triển trên nền hệ điều hành Unix nên có rất nhiều điểm khác biệt so với các phần mềm chạy trên Windows. Mặc dù từ những phiên bản đầu của version 2 đã thêm các công cụ cần thiết cho việc cài đặt NSZ2 trên Windows nhưng nói chung nếu so với quá trình chạy NSZ2 trên Linux thì mức độ làm việc và độ ổn định vẫn chưa cao.
Tuy nhiên, NSZ2 vẫn là công cụ mô phỏng mạng mạnh mẽ có nhiều tính năng và khả năng phát triển và mở rộng cao và trong tương lai nó còn được tiếp tục phát triển.
5.1.2. Hỗ trợ hoạt động của NS^2
Chương trình NSZ2 có nhiều phiên bản chạy trên các hệ điều hành khác nhau và với các yêu cầu cài đặt khác nhau. Trong nội dung đồ án, phiên bản nseallinonee2.27, chạy trên Windows trong môi trường Cygwin/X được sử dụng để hỗ trợ mô phỏng các giao thức trong mạng Wireless Mobile AdZhoc (hướng dẫn chi tiết cài đặt ở Phụ lục). Cygwin/X cung cấp một giao diện chương trình ứng dụng (API Z Applications
TËp lÖnh Otcl ( m nguån ) Ch−¬ng tr×nh biªn dÞch Otcl KÕt qu¶ m« pháng C¸c th− viÖn C++ NSZ2
Báo cáo Đồ án Tốt nghiệp Chương V: Thực hiện mô phỏng
Programming Interface) giống như hệ điều hành UNIX trên khuôn dạng Windows do NSZ2 không chạy trực tiếp trên Windows.
Môi trường mạng di động trong NSZ2 cung cấp sự hỗ trợ lẫn nhau giữa các giao thức như hình 5.2
Hình 5.2: NSe2 hỗ trợ mô phỏng ở các tầng của mô hình OSI 5.2. Phương pháp mô phỏng
NSZ2 hỗ trợ hai phương pháp thực hiện mô phỏng: tạo riêng các kịch bản hoạt động và sử dụng lệnh trực tiếp trong chương trình chính.
Trong mô phỏng để xây dựng hàm ra quyết định, chọn sử dụng phương pháp tạo các kịch bản di động và lưu lượng riêng biệt để dễ dàng trong việc thực thi và so sánh.
Trong mô phỏng mô hình ứng dụng cho giao thông, chọn cách tạo trực tiếp để đơn giản. Kịch bản di động Kịch bản lưu lượng Các file kịch bản NS File trace Lưu tr Bóc tách dữ liệu Excell Tính toán
Hình 5.3. Phương pháp thực hiện mô phỏng
Để chạy chương trình mô phỏng với đầu vào là một file kịch bản mô tả chính xác sự di chuyển của mỗi nút mạng và thứ tự chính xác của các gói khởi tạo tại mỗi nút mạng cùng với thời gian chính xác mà khi đó sự thay đổi trong sự di chuyển hoặc trong khởi tạo gói xảy ra. Sau khi thực hiện chạy trong NSZ2, file Trace sẽ được tạo ra và
được lưu trữ trong ổ đĩa. Đồng thời cũng được phân tích bằng một số lệnh để bóc tách ra các trường cần thiết như là số gói nhận được, độ dài các bước qua mạng, thời gian trễ... thực hiện tính toán và cuối cùng số liệu sẽ được phân tích trong Excell đưa ra dưới dạng đồ thị.
5.3. Thực hiện mô phỏng xây dựng hàm ra quyết định
5.3.1. Mô tả kịch bản mô phỏng
Mục đích của phần mô phỏng này là khảo sát khả năng hoạt động của ba giao thức định tuyến AODV, DSR, DSDV ứng với các điều kiện thay đổi khác nhau (số kết nối, tốc độ di chuyển lớn nhất) thông qua tỷ lệ mất gói. So sánh tỷ lệ mất gói giữa các giao thức để đưa ra quyết định chọn thuật toán định tuyến tốt nhất có thể.
Mô phỏng được triển khai trong một diện tích hình chữ nhật giả định 1500mx300m để đảm bảo sự di chuyển dài của các nút mạng. Tổng số nút mạng là 50. Vị trí ban đầu, tốc độ di chuyển, hướng di chuyển và truyền thông của các nút mạng được tạo một cách ngẫu nhiên trong mô hình di động và mô hình lưu lượng. Mỗi giao thức định tuyến đều cùng thực hiện các kịch bản giống nhau.
Thời gian mô phỏng là 900s.
5.3.2. Thiết lập mô hình lưu lượng
Mô hình lưu lượng là phần rất quan trọng trong việc kiểm thử và mô phỏng một hệ thống mạng. Bởi vì nếu không có một dạng lưu lượng gần giống với lưu lượng thực thì việc mô phỏng bị hạn chế rất nhiều về tính thực tế khả dụng của nó.
NSZ2 hỗ trợ nhiều loại hình lưu lượng khác nhau như là FTP, Telnet, CBR, Multimedia… Nhưng mục đích của mô phỏng này so sánh hiệu năng của các giao thức định tuyến trên cơ sở tỷ lệ mất gói ứng với các điều kiện khác nhau về môi trường. Vì vậy, mô hình mô phỏng sẽ sử dụng nguồn lưu lượng tốc độ bit không đổi (CBR – Constant Bit Rate). Trong nút mạng, mô hình lưu lượng được đưa vào lớp ứng dụng và được gắn kết với thực thể lớp giao vận như TCP hoặc UDP. Giao tiếp giữa hai lớp thông qua một giao diện chương trình ứng dụng API.
Các tham số cấu hình của lưu lượng CBR trong mô phỏng này được thiết lập như sau:
PacketSize_ : Kích thước gói tin là 512 bytes.
Rate_ : Tốc độ phát lưu lượng trong thời gian phát 4 hoặc 0.25 kbps Interval_ : Khoảng cách thời gian giữa các gói tin là 4.
Random_ : Lựa chọn có nên đưa nhiễu ngẫu nhiên vào trong thời gian khởi phát gói tin hay không.
Báo cáo Đồ án Tốt nghiệp Chương V: Thực hiện mô phỏng
Sự kết nối lưu lượng ngẫu nhiên của CBR và TCP có thể được thiết lập giữa các nút mạng di động sử dụng mã khởi tạo kịch bản lưu lượng. Có thể tìm thấy mã khởi tạo lưu lượng này có sẵn trong trong thư mục cài đặt bộ công cụ NS (~ns/indepZutils/cmuZscenZ gen). Nó được sử dụng để tạo ra lưu lượng CBR và TCP kết nối giữa các nút mạng di động vô tuyến. Lệnh khởi tạo có dạng như sau:
ns cbrgen.tcl [ type cbr | tcp] [ nn nodes] [ seed seed] [ mc connections] [ rate rate]
Mô phỏng sử dụng các kịch bản di động sau: Z cbrZ50Z10Z4Z512
Z cbrZ50Z20Z4Z512 5.3.3. Thiết lập mô hình di động
Có hai cách tạo mô hình di động trong mạng Ad hoc: di động ngẫu nhiên và tạo kịch bản di động trước. Việc để cho các nút mạng di động một cách ngẫu nhiên sẽ rất khó đưa ra kết quả so sánh, vì vậy trong mô hình mô phỏng này chúng ta sẽ tạo ra các kịch bản di động và các giao thức sẽ thực hiện trên cùng các kịch bản này.
Một vài mô hình di động đã được đề xuất cho các giao thức định tuyến mạng Ad hoc [21] để cố gắng biểu diễn một cách thực tế những hành vi của các nút di động. Có thể kể đến các mô hình như: Mô hình di động có đường đi ngẫu nhiên; Mô hình di động điểm ngẫu nhiên; Mô hình di động có hướng ngẫu nhiên, Mô hình di động vùng mô phỏng không có đường bao; Mô hình di động GaussZMarkov… Trong đó, sự di chuyển Random_Waypoint là đơn giản cho tính toán và thể hiện.
Mô hình này đưa ra sự vận động khá “tự nhiên”.Theo Random_Waypoint, mọi sự chuyển động của nút mạng là không liên quan với nhau và các nút mạng có khả năng chuyển qua khoảng cách dài trước khi dừng giống như khoảng cách ngắn. Nó cũng thích hợp với sự đa dạng về khoảng cách của mỗi hành trình nút mạng.Vì vậy trong mô hình mô phỏng này chúng ta lựa chọn mô hình Random Waypoint Kịch bản Random Waypoint được biểu thị bằng giá trị thời gian dừng ảnh hưởng đến các nút mạng di chuyển như thế nào theo kịch bản. Kịch bản được tạo ra bằng cách trước hết chọn giá trị cho thời gian dừng và sau đó theo thuật toán sau:
Mỗi nút mạng bắt đầu quá trình mô phỏng bằng một vị trí ngẫu nhiên. Sau khi quá trình mô phỏng bắt đầu, nút mạng vẫn đứng yên một chỗ trong những giây thời gian dừng. Sau đó, nó lựa chọn một đích đến trong trạng thái mô phỏng và di chuyển tới nút mạng đó với tốc độ phân phối từ 0 đến tốc độ cực đại. Sau khi tới đích, nút mạng lại dừng, lựa chọn đích khác và tiến trình diễn ra như mô tả ở trên, lặp lại hoạt động này trong suốt quá trình mô phỏng.
Mô hình di động được tạo ra với phần mã lệnh được cho trong ~ns/indepeutils/cmue scenegen/setdest, bao gồm setdest{.cc,.h} và Makefile. Lệnh khởi tạo có dạng như sau: ./setdest [ n num_of_node] [ p pausetime] [ s maxspeed] [ t simtime] \ [ x maxx] [ y maxy] > [outdir/movement file]
Mô phỏng được thực hiện trong diện tích 1500mx300m với 50 nút, các thời gian dừng là: 0s, 30s, 60s, 120s, 300s, 600s, 900s. Các nút di động sẽ di chuyển với tốc độ ngẫu nhiên trong khoảng 0Z1m/s hoặc 0Z20m/s. Tổng thời gian mô phỏng là 900s. Do đó, tổng số kịch bản di động được tạo là: 14. Mỗi giao thức sẽ thực hiện 14 kịch bản này. Một số kịch bản di động được sử dụng là: Z scenZ1500x300Z50Z0Z20Z1 Z scenZ1500x300Z50Z30Z20Z1 Z scenZ1500x300Z50Z60Z20Z1 Z scenZ1500x300Z50Z120Z20Z1 Z scenZ1500x300Z50Z300Z20Z1 Z scenZ1500x300Z50Z600Z20Z1 Z scenZ1500x300Z50Z900Z20Z1 … 5.3.4. Thông số để đánh giá
Mục đích của mô hình là để giảm thiểu tỷ lệ mất gói, vì vậy thông số chính để đánh giá là tỷ lệ mất gói. Tỷ lệ mất gói tính toán dựa trên gói dữ liệu được truyền phát tới đích được phát sinh bởi các nguồn CBR. Công thức tính tỷ lệ mất gói:
Tỷ lệ mất gói= 1e (số gói nhận/số gói gửi)
Kết hợp tỷ lệ mất gói với số lượng kết nối và tốc độ di chuyển của các nút trong hệ thống để đánh giá và đưa ra lựa chọn
5.3.5. Thực hiện mô phỏng
5.3.5.1. Mã lệnh tạo nút mạng di động
Một nút mạng di động về cơ bản bao gồm: một lớp liên kết (LL), một modul ARP kết nối với LL, một hàng đợi giao diện ưu tiên (IFq), một lớp MAC, một giao diện mạng (NetIF), tất cả được kết nối với kênh. Các phần tử này được tạo ra cùng nhau trong Otcl. NS hỗ trợ việc thiết lập các phần tử trên có sẵn trong ~ns/tcl/lib/nsZ mobilenode.tcl (xem chi tiết phần phụ lục)
Báo cáo Đồ án Tốt nghiệp Chương V: Thực hiện mô phỏng
5.3.5.2. Mã lệnh thiết lập tham số trong chương trình chính
# Thi"t l#p các tham s% trong chương trình
set opt(chan) Channel/WirelessChannel # Mô hình kênh v#t lý
set opt(prop) Propagation/TwoRayGround # Mô hình truy6n phát
set opt(netif) Phy/WirelessPhy # Giao di7n m8ng vô tuy"n
set opt(mac) Mac/802_11 # L>p Mac
set opt(ifq) Queue/DropTail/PriQueue # Hàng ñEi giao di7n m8ng
set opt(ll) LL # L>p liên k"t
set opt(ant) Antenna/OmniAntenna # Mô hình anten
set opt(x) 1500 # TIa ñJ X cLa tôpô
set opt(y) 300 # TIa ñJ Y cLa tôpô
set opt(ifqlen) 50 # ðJ dài hàng ñEi gdi7n
set opt(tr) out.tr # File trace ñQu ra
set opt(nam) final.nam # File nam ñQu ra
set opt(adhocRouting) DSDV # Giao thTc ñUnh tuy"n
set opt(nn) 50 # S% nút m8ng
set opt(cp) "cbr 50 20 4 512" # Mô hình lưu lưEng
set opt(sc) "scen 1500x300 50 900 20 1" # Mô hình di ñJng
set opt(stop) 900.0 # ThZi gian mô ph[ng
5.3.6. Kết quả mô phỏng
5.3.6.1. Hình ảnh minh họa mô phỏng
Hình ảnh mô phỏng được tạo ra dưới dạng file Nam. Sau đây là một vài hình ảnh truyền phát tín hiệu và dữ liệu của mô hình sử dụng giao thức DSR với mô hình lưu lượng cbrZ50Z10Z4Z512 và mô hình di động scenZ1500x300Z50Z0Z20Z1. Với mỗi mô phỏng tương ứng với các giao thức khác ta cũng thu được kết quả tương tự. Tuy nhiên, chúng ta quan tâm nhiều hơn đến dữ liệu được tạo ra trong file Trace.
5.3.6.2. Dữ liệu tạo ra qua mô phỏng
Dữ liệu được tạo ra trong quá trình mô phỏng được lưu trong các file Trace (.tr). Nếu cần thiết có thể mở các file này dưới dạng text hoặc .tcl. Khuôn dạng dữ liệu trong file Trace được tạo ra cho các nút mạng di động mô phỏng có dạng như sau:
s t 4.084797885 Hs 7 Hd 2 Ni 7 Nx 659.18 Ny 19.48 Nz 0.00 Ne 1.000000 Nl AGT Nw Ma 0 Md 0 Ms 0 Mt 0 Is 7.2 Id 9.0 It cbr Il 512 If 0 Ii 0 Iv 32 Pn cbr Pi 0 Pf 0 Po 2 r t 4.084797885 Hs 7 Hd 2 Ni 7 Nx 659.18 Ny 19.48 Nz 0.00 Ne