Kiến trúc của NS2

Một phần của tài liệu Nghiên cứu một số giao thức định tuyến trên mạng manet (Trang 59)

7. Bố cục của luận văn

3.1.2. Kiến trúc của NS2

NS2 là một công cụ giả lập hướng đối tượng được viết b ng ngôn ngữ C++ trong phần nhân và ngôn ngữ thông dịch Otcl ở phần giao tiếp.[1]

- Module nhân được gọi là Compiler Hierarchy. - Module giao tiếp được gọi là Interpreted Hierarchy.

- Module liên kết là module có tác dụng như một lớp keo dùng để gắn kết các lớp, các đối tượng, các biến tương ứng trong hai module nhân và module giao tiếp với nhau.

NS và Bộ biên dịch Tcl mở rộng hướng đối tượng; bao gồm các đối tượng Bộ lập lịch Sự kiện, các đối tượng Thành phần Mạng và các mô đun Trợ giúp Thiết lập Mạng.

Hình 3.1. Tổng quan về NS dƣới góc độ ngƣời dùng

- OTcl Script: Kịch bản Otcl.

- Simulation Program: Chương trình Mô phòng. - Otcl: Bộ biên dịch Tcl mở rộng hướng đối tượng. - NS Simulation Library: Thư viện Mô phỏng NS.

- Event Scheduler Objects: Các đối tượng Bộ lập lịch Sự kiện. - Network Component Objects: Các đối tượng Thành phần Mạng. - Network Setup Helping Modules: Các mô đun Trợ giúp Thiết lập Mạng. - Plumbling Modules: Các mô đun Plumbling.

- Simulation Results: Các kết quả Mô phỏng. - Analysis: Phân tích.

- NAM (Network Animator): Minh họa Mạng NAM.

Để sử dụng NS2, user lập trình b ng ngôn ngữ kịch bản OTcl. User có thể thêm các mã nguồn Otcl vào NS2 b ng cách viết các lớp đối tượng mới trong OTcl. Những lớp này khi đó sẽ được biên dịch cùng với mã nguồn gốc. Kịch bản OTcl có thể thực hiện những việc sau:

- Thiết lập Mô hình mạng dùng các đối tượng Thành phần Mạng.

- Báo cho nguồn traffic khi nào bắt đầu truyền và ngưng truyền packet trong Bộ lập lịch Sự kiện.

Thuật ngữ plumbing được dùng để chỉ việc thiết lập mạng, vì thiết lập một mạng nghĩa là xây dựng các đường dữ liệu giữa các đối tượng mạng b ng cách thiết lập con trỏ “neighbour” cho một đối tượng để chỉ đến địa chỉ của đối tượng tương ứng. Module plumbing OTcl trong thực tế thực hiện việc trên rất đơn giản. Plumbing làm nên sức mạnh của NS.

Thành phần lớn khác của NS bên cạnh các đối tượng Thành phần Mạng là Bộ lập lịch Sự kiện. Bộ lập lịch Sự kiện trong NS2 thực hiện những việc sau:

- Tổ chức Bộ định thời Mô phỏng.

- Huỷ các sự kiện trong hàng đợi sự kiện. - Gọi các Thành phần Mạng trong mô phỏng.

Phụ thuộc vào mục đích của user đối với kịch bản mô phỏng OTcl mà kết quả mô phỏng có thể được lưu trữ như file trace. Định dạng file trace sẽ được tải vào trong các ứng dụng khác để thực hiện phân tích:

- File nam trace (file.nam) được dùng cho công cụ Minh họa mạng NAM.

- File Trace (file.tr) được dùng cho công cụ Lần vết và Giám sát Mô phỏng XGRAPH hay TRACEGRAPH.

- NAM Visual Simulation: Mô phỏng ảo NAM.

- Tracing and Monitoring Simulation: Mô phỏng Lần vết và Giám sát.

3.2. Mô ph ng mạng không dây trong môi trƣờng mạng NS

Thực chất mô hình wireless bao gồm MobileNode trong lõi (core) cùng với các đ c tính hỗ trợ thêm vào cho phép các trình mô phỏng của mạng multihop với thủ tục Ad-Hoc, mạng LAN wireless… Đối tượng MobileNode là một đối tượng tách biệt. Lớp MobileNode trong C++ xuất phát từ lớp cha là lớp Node. Vì vậy, một MobileNode là một đối tượng Node cơ sở cộng thêm các chức năng của wireless, có khả năng di chuyển bên trong một topo và nhận ho c truyền tín hiệu thông qua một kênh wireless. [1]

3.2.1. Tạo MobileNode trong NS

Cấu hình cho nút chủ yếu tập trung vào Wireless. Bao gồm các thông số sau: loại cấu trúc địa chỉ sử dụng là địa chỉ đẳng cấp; định nghĩa các thành phần trong mạng MobileNode: địa chỉ Mac, loại antenna, sóng truyền, lựa chọn giao thức định tuyến, định nghĩa mô hình năng lượng. Mã cấu hình MobileNode được viết như sau: [1]

$ns node-config -adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -channelType $val(chan) \ -topoInstance $topo \ -agentTrace ON \ -routerTrace ON \ -macTrace ON \ -movementTrace ON\

3.2.2. Tạo sự hoạt động cho nút

MobileNode được hoạt động trên dạng flat (phẳng) với tọa độ X, Y, Z (Z=0). Có hai phương thức đưa ra sự di chuyển trong các MobileNode. [1]

- Phương thức 1: vị trí bắt đầu của node và các đích sau này của nó có thể được thiết lập một cách rõ ràng, có thể được thiết lập b ng cách sử dụng API sau:

$node set X_ <x1> $node set Y_ <y1> $node set Z_ <z1>

$ns at $time $node setdest <x2> <y2> <speed>

Tại $time sec, node sẽ bắt đầu hoạt động (moving) từ vị trí bắt đầu của nó là (x1,y1) chuyển tiếp sang đích (x2,y2) với tốc độ (speed) xác định. Trong phương thức này, node-movement-updates được khởi tạo (triggered) bất cứ vị trí nào của node tại thời gian được yêu cầu.

- Phương thức 2: tận dụng quá trình họat động ngẫu nhiên của node. Mã API thường được sử dụng là $mobilenode start để khởi động mobilenode với một vị trí ngẫu nhiên và thường cập nhật để thay đổi hướng và tốc độ của node. Giá trị đích và tốc độ được tạo ra một cách ngẫu nhiên.

Dạng topo không cấu trúc (flat) thông thường được tạo ra dựa vào đ c tả chiều dài và chiều rộng của topo cơ sở. Mã API được viết như sau:

set topo [new Topography]

$topo load_flatgrid $opt(x) $opt(y)

3.2.3. Các bước viết mã tcl để thực thi mô phỏng mạng wireless:

- Bƣớc 1: Thiết lập mô phỏng và xác định các h ng số. [1]

Bước đầu tiên của mô phỏng là định nghĩa các tham số môi trường vật lý không dây và khởi tạo mô phỏng

# Định nghĩa lớp vật lý

set val(chan) Channel/WirelessChannel set val(prop) Propagation/TwoRayGround set val(netif) Phy/WirelessPhy

set val(mac) Mac/802_11

set val(ifq) Queue/DropTail/PriQueue

set val(ll) LL

set val(ant) Antenna/OmniAntenna

# Các tham số kịch bản

set val(x) 2000;# X dimension of the topography set val(y) 2000;# Y dimension of the topography set val(ifqlen) 100;# max packet in queue

set val(seed) 0.0;# random seed set val(adhocRouting) [routing protocol]

set val(nn) [no. of nodes];# number of nodes set val(cp) [traffic pattern file]

set val(sc) [mobility scenario file]

set val(stop) [simulation duration];# simulation time - Bƣớc 2: Tạo một thể hiện mô phỏng

set ns_ [new Simulator]

- Bƣớc 3: Tạo đối tượng kiến trúc mạng lưu vết của tất cả các nút trong phạm vi set topo [new Topography]

- Bƣớc 4: Tạo các file lưu vết

set tracefd [open output trace file name w] $ns_ use-newtrace

set namtrace [open nam trace file name w] $ns_ trace-all $tracefd

$ns_ namtrace-all-wireless $namtrace $val(x) $val(y) - Bƣớc 5: Định nghĩa kiến trúc mạng

$topo load_flatgrid $val(x) $val(y) - Bƣớc 6: Tạo đối tượng GOD

- Bƣớc 7: Cấu hình nút.

$ns_ node-config -adhocRouting $val(adhocRouting) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -channelType $val(chan) \ -topoInstance $topo \ -agentTrace ON \ -routerTrace ON \ -macTrace ON

M c định, một nút được xác định là nút unicast. Nếu có một giao thức multicast được yêu cầu, thì phải khai báo cụ thể như sau:

set ns [new Simulator -multicast on] - Bƣớc 8:Tạo các nút di chuyển ngẫu nhiên.

for {set i 0} {$i < $val(nn) } {incr i} { set node_($i) [$ns_ node]

$node_($i) random-motion 0 ;# disable random motion }

- Bƣớc 8:Thiết lập vị trí ban đầu cho nút for {set i 0} {$i < $val(nn) } {incr i} { $node_($i) set X_ [x1]

$node_($i) set Y_ [y1] $node_($i) set Z_ [z1] }

- Bƣớc 9:Thiết lập nút di chuyển

$ns_ at 0.1 “$node_(1) setdest 25.0 20.0 20.0”

- Bƣớc 10: Thiết lập luồng truyền tải giữa các nút (đoạn mã sau thiết lập luồng cho nút 0 và nút i).

for {set i 0} {$i < $val(nn)} {incr i} { set sink_($i) [new Agent/LossMonitor] $ns attach-agent $n_($i) $sink_($i) set tcp_($i) [new Agent/TCP]

$ns attach-agent $n_(0) $tcp_($i) }

#Thủ tục thiết lập luồng

proc attach-CBR-traffic { node sink size interval } { set ns [Simulator instance]

set cbr [new Agent/CBR] $ns attach-agent $node $cbr $cbr set packetSize_ $size $cbr set interval_ $interval

$ns connect $cbr $sink return $cbr }

#Thiết lập luồng cho nút 0 và nút 1

set cbr0 [attach-CBR-traffic $n_(0) $sink_(1) 512 0.25] - Bƣớc 11:Kết thúc và thực thi mô phỏng.

# Xác định thời điểm kết thúc mô phỏng của các nút for {set i 0} {$i < $val(nn) } {incr i} {

$ns_ at $val(stop).0 "$node_($i) reset"; }

$ns_ at $val(stop).0002 "puts \"NS EXITING...\" ; $ns_halt"

# Đưa các thông tin mô phỏng ban đầu vào các file lưu vết

puts $tracefd "M 0.0 nn $val(nn) x $val(x) y $val(y) rp $val(adhocRouting)"

puts $tracefd "M 0.0 sc $val(sc) cp $val(cp) seed $val(seed)"

puts $tracefd "M 0.0 prop $val(prop) ant $val(ant)" - Bƣớc 12:Lệnh cuối c ng bắt đầu mô phỏng

puts "Starting Simulation..." $ns_ run

3.3. Mô ph ng giao thức định tuyến ZRP

3.3.1. Cài đặt module mô phỏng ZRP

Bản NS2 khi cài đ t, m c định sẽ không có module mô phỏng ZRP. Để có thể thực hiện việc mô phỏng giao thức ZRP, ta cần phải cài đ t bổ sung module ZRP [2]. Việc tiến hành cài đ t module ZRP được thực hiện qua các bước sau:

+ Bước 1: Cài đ t NS2, trong trường hợp này tôi cài đ t NS2 phiên bản ns2- allinone2.33.

+ Bước 2: Chép các file cài đ t module ZRP vào thư mục home (thư mục cài đ t NS2). Các file cài đ t bao gồm:

- ns-allinone-2.33_zrp.tar.gz: chứa mã nguồn của module ZRP.

- PatchZRP.patch: chứa các thay đổi cần thiết trong các file NS để module ZRP có thể hoạt động được.

- patchmyZRP.sh: file kịch bản được chạy từ dòng lệnh. + Bước 3: Thực thi patchmyZRP.sh từ dòng lệnh.

3.3.2. Xây dựng kịch bản mô phỏng

Việc thiết kế và thử nghiệm cho các giao thức dựa trên phần mềm mô phỏng NS2. Mô hình thiết kế cho các nút mạng di chuyển ngẫu nhiên trong khu vực bán kính 5000m. Các gói tin phát dựa vào dịch vụ CBR (constant bit race), với kích thước gói tin 512 byte/1 gói tin, chu kỳ gửi tin 4 gói/1 giây. Hàng đợi kiểu FIFO, các gói tin định tuyến sẽ có độ ưu tiên cao hơn các gói tin dữ liệu.

Các yếu tố chính ảnh hưởng đến hiệu năng của giao thức ZRP là bán kính vùng định tuyến p, số lượng nút N và tốc độ di chuyển v của các nút. Trong đó, bán kính vùng định tuyến p có vai trò quyết định đến kết quả hoạt động của giao thức. Đối với mỗi cấu hình mạng nhất định sẽ xác định một bán kính p tối ưu. Mỗi kịch bản mô phỏng sẽ được đ c trưng bởi: số lượng nút N, vận tốc di chuyển của các

nút v và bán kính vùng định tuyến p.

Từ những kết quả mô phỏng thu được, tôi tiến hành so sánh với kết quả mô phỏng CBRP trong [7] và đưa ra những nhận xét đánh giá hiệu năng của giao thức.

3.4. Phân tích kết quả mô ph ng

Để đánh giá hiệu năng hoạt động của giao thức, tôi sử dụng phần mềm Tracegraph 2.02 để phân tích kết quả mô phỏng dựa trên tỷ lệ gói tin gửi thành công và độ trễ trung bình.

3.4.1. Đánh giá hiệu năng của giao thức định tuyến ZRP

Các yếu tố chính ảnh hưởng đến hiệu năng của giao thức ZRP là bán kính vùng định tuyến p, số lượng nút N và tốc độ di chuyển v của nút mạng.

Sự tác động của số lƣợng nút mạng N, bán kính vùng định tuyến p đến hiệu năng hoạt động của giao thức ZRP.

Để đánh giá sự tác động của số lượng nút mạng, bán kính v ng định tuyến đến hiệu năng của giao thức ZRP, chúng tôi sử dụng cấu hình mạng mô phỏng:

- Vận tốc di chuyển của các nút được cố định: v = 20 m/s - Số lượng nút mạng N lần lượt nhận các giá trị 100, 200, 300.

- Bán kính vùng định tuyến p lần lượt nhận các giá trị: 1, 3, 4, 7, 10. Từ cấu hình mạng trên tôi thực hiện mô phỏng và có được kết quả:

p: bán kính v ng định tuyến chủ động. N: số lượng nút mạng

Bảng 3.1. Tỷ lệ gói tin gửi thành công theo N p

N p=1 p=3 p=4 p=7 p=10

100 37,50% 74,32% 85,99% 89,13% 85,43%

200 34,38% 77,36% 91,10% 94,54% 89,30%

300 34,29% 84,17% 92,68% 96,54% 89,16%

Theo kết quả mô phỏng, trong ba trường hợp số lượng nút mạng là 100, 200 và 300, chúng tôi thấy tỷ lệ gói tin gửi thành công (%) khi bán kính vùng định tuyến p = 1 là thấp nhất, lần lượt là 37,50%; 34,38%; 34,29%. Nguyên nhân tỷ lệ gói tin gửi thành công thấp là do khi bán kính v ng định tuyến p = 1, giao thức ZRP hoạt động như một giao thức định tuyến bị động, v ng định tuyến chủ động chỉ

có 1 bước nhảy nên bất cứ yêu cầu truy vấn đường đi nào cũng đều phải sử dụng giao thức định tuyến liên v ng (IERP) để khởi động quá trình khám phá tuyến đường bị động. Các gói tin điều khiển đa số là các gói tin điều khiển bị động. Nguyên nhân này làm cho giao thức ZRP hoạt động kém hiệu quả khi bán kính v ng định tuyến

p = 1. Đồng thời khi số lượng nút mạng tăng thì với bán kính p = 1 thì hiệu năng hoạt động của ZRP cũng giảm.

Đối với các bán kính v ng định tuyến khác (p ≠ 1), khi số lượng nút mạng tăng thì hiệu năng hoạt động của giao thức cũng tăng, ví dụ như bán kính v ng định tuyến p = 4, khi số lượng nút mạng N = 100 thì tỷ lệ gói tin thành công là 85,99%, khi N = 200 thì tỷ lệ gói tin thành công là 91,10%, khi N = 300 thì tỷ lệ gói tin thành công là 92,68% và điều này cũng tương tự như các bán kính v ng định tuyến p khác.

Điều này cho thấy, số lượng nút mạng ảnh hưởng đến hiệu năng hoạt động của giao thức ZRP, khi số lượng nút mạng càng lớn thì hiệu năng hoạt động của giao thức ZRP càng tăng. Nhưng, chúng tôi thấy với bán kính v ng định tuyến p=10 tỷ lệ gói tin gửi thành công tương ứng với số lượng nút mạng 200, 300 là 89,30%; 89,16%. Từ đó cho thấy khi số lượng nút tăng, với bán kính v ng định tuyến thích hợp thì hiệu năng hoạt động của giao thức ZRP sẽ tăng, nhưng với bán kính không thích hợp thì hiệu năng hoạt động của giao thức sẽ giảm.

Hình 3.3. Biểu đồ về sự tác động của N

Theo kết quả mô phỏng, khi bán kính p tăng lên (p=3, p=4, p=7) thì tỷ lệ gói tin gửi thành công tăng lên, cụ thể như với số lượng nút mạng là 100 nút mạng thì tỷ lệ gói tin gửi thành công của ZRP tương ứng với p = 3; 4; 7 là 74,32%; 85,99%;

89,13%. Nguyên nhân là khi p tăng thì hoạt động của giao thức đã có sự phối hợp giữa hai giao thức định tuyến nội v ng (IARP) và giao thức định tuyến liên v ng (IERP). Điều này đã làm cho hiệu năng hoạt động của giao thức ZRP tăng lên.

Nhưng chúng tôi thấy, khi tăng bán kính v ng định tuyến lên nhiều (đến một giá trị nào đó) thì hiệu năng hoạt động của giao thức sẽ giảm xuống, không hiệu quả, theo kết quả mô phỏng khi p=7 thì tỷ lệ gói tin gửi thành công là 89,13%; 94,54% tương ứng với số nút mạng là 100, 200; trong khi đó với p=10 thì tỷ lệ gói tin gửi thành công là 85,43%; 89,30% (tỷ lệ gói tin gửi thành công của p=10 nhỏ hơn p=7). Nguyên nhân là bán kính v ng định tuyến lớn thì sẽ gây ra sự mất cân b ng trong sự phối hợp hoạt động của hai giao thức định tuyến nội v ng và giao thức định tuyến liên vùng, giao thức định tuyến nội v ng sẽ hoạt động nhiều hơn giao thức định tuyến liên vùng. Bảng 3.2. Độ trễ trung bình theo N p N p=1 p=3 p=4 p=7 p=10 100 0,000676 0,000417 0,000305 0,000248 0,000272 200 0,000538 0,000401 0,000326 0,000276 0,000293 300 0,000539 0,000438 0,000417 0,000371 0,000328

Hình 3.4. Biểu đồ về độ trễ trung bình theo N

Ngoài ra, với bán kính p=1 thì độ trễ trung bình tương ứng với số lượng nút mạng là 0,000676(s), 0,000538(s), 0.000539(s), nhưng nếu tăng p, như khi p=7 thì độ trễ trung bình tương ứng với số lượng nút mạng là 0,000248(s), 0,000376(s), 0.000371(s). Chúng tôi thấy khi bán kính v ng định tuyến càng tăng thì độ trễ trung

Một phần của tài liệu Nghiên cứu một số giao thức định tuyến trên mạng manet (Trang 59)

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

(86 trang)