Mô hình random direction

Một phần của tài liệu Giao thức MAC điều khiển công suất trong mạng AD HOC (Trang 41)

Trong mô hình di đô ̣ng hƣớng ngẫu nhiên (random direction) mẫu, mỗi nút

đƣợc gán một hƣớng ban đầu, tốc độ và thời gian đi lại hữu hạn. Các nút sau đó di chuyển đến biên giới của khu vực mô phỏng theo hƣớng đó. Khi di chuyển đến ranh giới vùng mô phỏng, nút tạm dừng trong một thời gian nhất định, chọn một hƣớng góc (từ 0 đến 180 độ) và tiếp tục quá trình.

3.1.7 Tạo một nút di động (Mobile Node) [7, tr143]

MobileNode là đối tƣợng ns node cơ bản cùng với các chức năng thêm vào nhƣ sự chuyển đô ̣ng, khả năng truyền và nhận trên một kênh cho phép tạo nên nút di động (mobile). Lớp MobileNode có ngồn gốc từ lớp cơ sở Node. MobileNode là một đối tƣợng tách biệt. Tính năng mobile bao gồm chuyển đô ̣ng của nút, cập nhập vị trí định kỳ, duy trì đƣờng biên của đồ hình mạng đƣợc thực thi trong C++ trong khi tìm kiếm các thành phần của mạng bên trong của MobileNode (nhƣ các phân lớp, dmux, LL, Mac, Channel,…) đã đƣợc thực thi trong Otcl. Các chức năng và các thủ tục đƣợc mô tả trong phần này có thể đƣợc tìm thấy trong ~ns/mobilenode.{cc,h}, ~ns/tcl/lib/ns-mobilenode.tcl, ~ns/tcl/mobility/dsdv.tcl, ~ns/tcl/mobility/dsr.tcl, ns/tcl/mobility/tora.tcl. Các ví

dụ minh hoạ có thể đƣợc tìm thấy trong ~ns/tcl/ex/wireless-test.tcl và ~ns/tcl/ex/wireless.tcl.

Trong khi ví dụ đầu tiên sử dụng một topo nhỏ chỉ có 3 node, ví dụ thứ hai thực thi trên mô ̣t cấu trúc 50 nút. Các tập lệnh này có thể đƣợc thực thi một cách đơn giản bằng cách gõ lệnh: $ns tcl/ex/wireless.tcl (or /wireless-test.tcl)

Có năm giao thức định tuyến ad-hoc hiện đƣợc hỗ trợ là DSDV, DSR, TORA và AODV và PUMA. Cơ sở để tạo ra một mobilenode đƣợc mô tả dƣới đây.

$ns_ node-config -Ad HocRouting $opt(Ad HocRouting) -llType $opt(ll)

-macType $opt(mac) -ifqType $opt(ifq) -ifqLen $opt(ifqlen) -antType $opt(ant)

-propInstance [new $opt(prop)] -phyType $opt(netif)

-channel [new $opt(chan)] -topoInstance $topo

-wiredRouting OFF -agentTrace ON

-routerTrace OFF -macTrace OFF

Cấu hình của API ở trên cho một mobilenode với tất cả các giá trị của giao thức định tuyến adhoc-routing, ngăn xếp mạng, kênh, đồ hình (topography), mô hình truyền sóng, với định tuyến hữu tuyến trả về on hay off (yêu cầu cho kịch bản mạng không dây, có dây hỗn hợp) và vết tìm kiếm trả về on hay off tại các mức khác nhau (router, mac, agent).

Tiếp theo là phương pháp tạo ra các mobilenode:

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

$node_($i) random-motion 0 ;Xóa tính năng di chuyển ngẫu nhiên }

Thủ tục trên tạo ra một đối tƣợng mobilenode (tách biệt), tạo ra một tác nhân định tuyến Ad Hoc-routing nhƣ đã đƣợc chỉ định, tạo ra ngăn xếp mạng bao gồm: lớp liên kết (link), giao diện hàng đợi, lớp mac và giao diện mạng với một ăng-ten, sử dụng để định nghĩa mô hình truyền sóng, nối liền các thành phần cấu thành này và kết nối ngăn xếp đến kênh. Mobilenode bây giờ trông giống nhƣ sơ đồ trong hình sau:

Hình 3.5 Một mobilenode theo chuẩn wireless của CMU Monarch mở rộng cho NS2

Cấu trúc mobilenode sử dụng cho giao thức định tuyến DSR hơi khác so với mobilenode đƣợc trình bày ở trên. Lớp SRNode đƣợc xuất phát từ lớp MobileNode. SRNode không sử dụng địa chỉ phân kênh (demux) hay các phân lớp và tất cả các gói tin nhâ ̣n đƣợc bởi node đƣợc truyền la ̣i cho các tác nhân định tuyến DSR theo mặc định. Tác nhân (Agent) định tuyến DSR hoặc là nhận packets cho chính nó bằng cách điều khiển trên cổng (port) dmux hoặc là chuyển tiếp packets nhƣ trên tuyến nguồn trong tiêu đề hay gửi ra tuyến yêu cầu và tuyến trả lời (reply) cho các packet mới. Mô hình của một SRNode đƣợc biểu diễn trong hình 3.6 dƣới đây

Hình 3.6 Một SRNode theo chuẩn wireless của CMU Monarchmở rộng cho NS2

3.1.8. Tạo sự chuyển động cho Node

Các Mobilenode đƣợc thiết kế để có thể mô phỏng sự di chuyển trong không gian ba chiều. Tuy nhiên cho đến phiên bản 2.35 hiê ̣n nay, tọa độ thứ 3 (trục Z) không đƣợc sử dụng. Đó là vì Mobilenode đƣợc giả định là để luôn trên mô ̣t đi ̣a hình bằng phẳng (flat) với tọa độ trục Z luôn luôn bằng 0. Vì vậy, mobilenode có toạ độ X, Y, Z(=0) và tọa độ đƣ ợc điều chỉnh liên tục khi node chuyển đô ̣ng. Có hai phƣơng thức đƣợc đƣa ra để hỗ trợ sự di chuyển trong các mobilenode.

Trong phƣơng thức đầu tiên, 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. Những chỉ dẫn này thƣờng tập trung trong một chuỗi các tâ ̣p tin kịch bản di chuyển riêng biệt.

Vị trí bắt đầu và đích tƣơng lai của mobilenode 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 thời điểm $time giây, node sẽ bắt đầu chuyển động 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) tính theo (m/s) xác định.

Trong phƣơng thức này, node-movement-updates đƣợc kích hoạt bất cứ khi nào vị trí của node ở tại thời gian đƣợc yêu cầu. Quá trình này có thể đƣợc kích hoạt bằng một dạng truy vấn (query) từ quá trình tìm kiếm một node lân cận để biết đƣợc khoảng cách giữa chúng, hoặc thiết lập đích chỉ dẫn mô tả ở trên để thay đổi hƣớng và tốc độ của node.

Một minh hoạ về sự chuyển động của mô ̣t tâ ̣p tin kịch bản chuyển động sử dụng các phƣơng thức API ở trên , có thể đƣợc tìm thấy trong thƣ mục ~ns/tcl/mobility/scene/scen-670x670-50-600-20-0. Ở đây, 670x670 định nghĩa chiều dài và chiều rộng của miền mô phỏng với 50 node hoạt động với tốc độ tối đa là 20m/s với thời gian mô phỏng là 600s. Các file chuyển động trong node có thể đƣợc sinh ra bằng cách sử dụng kịch bản tạo ra bởi CMU đƣợc tìm thấy trong ~ns/indep-utils/cmu-scen-gen/setdest. (adsbygoogle = window.adsbygoogle || []).push({});

Phƣơng thức thứ hai sử dụng quá trình chuyển động ngẫu nhiên của node. Thƣờng đƣợc sử dụng:

$mobilenode start: khởi động mobilenode với một vị trí ngẫu nhiên và thƣờng cập nhập tuyến để thay đổi hƣớng và tốc độ của node. Giá trị đích và tốc độ đƣợc sinh ra ngẫu nhiên. Sự di chuyển của mobilenode đƣợc thực thi trong C++. Có thể xem các phƣơng pháp trong ~ns/mobilenode.{cc.h}, trong đó có chi tiết quá trình thực thi.

Topo của mobilenode (vùng chuyển độ ng của các nút ma ̣ng ) cần phải đƣợc định nghĩa . Nó cần đƣợc định nghĩa trƣớc khi tạo ra các mobilenode. Thông thƣờng dạng topo phẳng (flat) đƣợc tạo ra dựa vào đặc tả chiều dài và chiều rộng của topo, nhƣ sau:

set topo [new Topography]

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

opt(x) opt(y) là giới hạn theo tru ̣c hoành và tru ̣c tung đƣợc sử dụng trong trình mô phỏng. Quá trình hoạt động của mobilenode có thể đƣợc ghi la ̣i vào (logged) bằng cách sử dụng thủ tục nhƣ sau:

proc log-movement {} {

global logtimer ns_ ns set ns $ns_

source ../mobility/timer.tcl Class LogTimer -superclass Timer LogTimer instproc timeout {} {

global opt node_;

for {set i 0} {$i < $opt(nn)} {incr i} { $node_($i) log-movement }

$self sched 0.1 }

set logtimer [new LogTimer] $logtimer sched 0.1}

Trong trƣờng hợp này, vị trí của mobilenode sẽ đƣợc ghi la ̣i sau mỗi 0.1 giây.

3.1.9. Ghi lại vết các sự kiện mô phỏng (vào file *.tr, *.nam)

Vết các sƣ̣ kiê ̣n liên quan đến viê ̣c truyền các gói tin trên tất cả các liên kết có thể đƣợc ghi vào tê ̣p (file) test.out (hoặc out.tr nhƣ trong ns-simple-trace.tr)

$ns trace-all [open test.out w]

Vết các gói trên tất cả các liên kết trong định dạng nam $ns namtrace-all [open test.nam w]

Cũng có thể chỉ “trace” một số tham số, thí dụ: $ns trace-queue $n0 $n1

$ns namtrace-queue $n0 $n1

3.1.10. Tạo ra các kết nối TCP, UDP và nguồn sinh lƣu lƣợng Tạo ra các kết nối TCP và nguồn sinh lƣu lƣợng Tạo ra các kết nối TCP và nguồn sinh lƣu lƣợng

Tạo ra các thực thể gửi và nhận của TCP (source and sink) set tsrc [new Agent/TCP]

set tdst [new Agent/TCPSink] Gắn các thực thể TCP với nút mạng

$ns attach-agent $n0 $tsrc $ns attach-agent $n1 $tdst

Tạo ra kết nối giữa thực thể gửi và nhận TCP $ns connect $tsrc $tdst

Tạo nguồn sinh lƣu lƣợng của ứng dụng FTP set ftp [new Application/FTP] $ftp attach-agent $tsrc

Tạo nguồn sinh lƣu lƣợng của ứng dụng Telnet set telnet [new Application/Telnet] $telnet attach-agent $tsrc

Tạo ra các kết nối UDP và nguồn sinh lƣu lƣợng

Tạo ra các thực thể gửi và nhận của UDP (source and NULL) set usrc [new Agent/UDP]

set udst [new Agent/NULL] Gắn các thực thể UDP với nút mạng (adsbygoogle = window.adsbygoogle || []).push({});

$ns attach-agent $n0 $usrc $ns attach-agent $n1 $udst

Tạo ra kết nối giữa thực thể gửi và nhận UDP $ns connect $usrc $udst

Lƣu lƣợng của các nguồn sinh với tốc độ không đổi – CBR (Constant Bit Rate) set src [new Application/Traffic/CBR]

Lƣu lƣợng của các nguồn sinh gói tin theo phân bố hàm mũ Exponential hoặc Pareto on-off

set src [new Application/Traffic/Exponential] set src [new Application/Traffic

3.2 Công cu ̣ xƣ̉ lý sau mô phỏng 3.2.1 AWK 3.2.1 AWK

Awk là một ngôn ngữ lập trình đƣợc phát triển bởi 3 lâ ̣p trình viên là Alfred Aho, Peter Weinberger, và Brian Kernighan . AWK là mô ̣t ngôn ngƣ̃ lâ ̣p tỉnhg kiểu thông di ̣ch, có khả năng xƣ̉ lý file text rất ma ̣nh đối với nhƣ̃ng file text mà mỗi dòng là mô ̣t da ̣ng bản ghi , tức là có các trƣờng , cô ̣t đƣợc phân tách bởi mô ̣t kí tự phân tách nào đó . Chƣơng trình awk đƣợc tích hợp trong Linux là ứng dụng GNU của ngôn ngữ lập trình Awk.

Cú pháp của AWK rất gần gũi với ngôn ngữ C . Chƣơng trình awk có thể thƣ̣c hiê ̣n nhƣ̃ng công viê ̣c sau

 Có thể phân tích văn bản để tính tần suất các word v.v.

 Chuẩn bị các báo cáo đƣa ra có định dạng, dựa trên các thông tin của file.

 Lọc văn bản theo một cách thức rất mạnh.

3.2.2 Perl

Perl viết tắt của Practical-Extraction and Report- Language là một ngôn ngữ lập trình do Larry Wall sáng tác với mục đích chung là tạo ra những bản báo cáo một cách nhanh chóng và dễ dàng. Do có nhiều toán tử cũng nhƣ hàm để hỗ trợ riêng cho xử lý text nên Perl khác biệt với các ngôn ngữ khác là có tính chất xử lý text rất mạnh, có thể xử lý dễ dàng những tác vụ giống nhƣ C hoặc UNIX shell thƣờng làm trong việc viết một Script nhƣng có thể ngắn gọn và đơn giản hơn. Không giống nhƣ các trình biên di ̣ch C hay C ++, Perl là một trình thông di ̣ch .

Perl có thể chạy trên các môi trƣờng khác nhau nhƣ :

 UNIX PERL chạy trên môi trƣờng Unix.

 PERL FOR WINDOWS NT chạy trên môi trƣờng Windows NT.

 WIN PERL chạy trên môi trƣờng Windows 95/ Windows 98) .

3.2.3 Gnuplot

Gnuplot là một phần mềm miễn phí, dùng để vẽ đồ thị các hàm toán học, hoặc vẽ đồ thị từ các tập dữ liệu sẵn có.

 Thí dụ để vẽ đồ thị hình sin gnuplot> plot sin(x)

 Vẽ đồ thị từ file dữ liệu Tạo file dữ liệu: vi data.dat 40 0.134 60 0.130 80 0.127 100 0.129 120 0.138 130 0.153

gnuplot> plot "data.dat" with lines

Ta cũng có thể add thêm nhãn đồ thị (title), tên trục tung, trục hoành, sử dụng lệnh replot để vẽ lại đồ thị

gnuplot> set xlabel "user" gnuplot> set ylabel "second"

gnuplot> set title "thoi gian truy cap" gnuplot> replot

Ngoài ra Gnuplot cho phép th ực hiện vẽ một hoặc nhiều đồ thị trên cùng một biểu đồ, dữ liệu đầu vào có thể là file văn bản có nhiều cột, nhƣng ta cần chỉ ra 2 cột chứa số liệu vẽ đồ thị.

3.2.4 . Sử dụng Grep

Grep là một lệnh trong Unix|Linux, là thuật ngữ viết tắt của: “Global Regular Expression Parser”. Grep là một bộ lọc, nó tìm và hiển thị các dòng kết quả trong lệnh có chứa mẫu (pattern) mà ngƣời sử dụng chỉ ra.

Cách 1: Lọc đầu ra của một chƣơng trình khác. Cú pháp lệnh: <command> | grep <pattern>0

Ví dụ: cat thesis3x3.tr |grep "^s" |grep "_0_ MAC"|grep “0:0 1:0” (adsbygoogle = window.adsbygoogle || []).push({});

;Hiển thị các sự kiện gửi dữ liệu của nút có id=_0_ trong file thesis3x3.tr và nút nhận là nút 1.

cat thesis3x3.tr |grep "^s" |grep "_0_" |wc -l

;Đếm số sự kiện gửi tại nút id=_0_ trong file thesis3x3.tr

Cách 2: lọc file. Cú pháp nhƣ sau: grep <pattern> <filename>

Ví dụ: grep " _0_ MAC " tr1.tr > tr2.tr

Chƣơng 4: MÔ PHỎNG VÀ ĐÁNH GIÁ HIỆU QUẢ NĂNG LƢỢNG GIAO THỨC MAC ĐIỀU KHIỂN CÔNG SUẤT TRONG MẠNG AD- HOC

Nhƣ đã đề câ ̣p phần lý thuyết chƣơng 2, giao thƣ́ 802.11 DCF luôn để công suất truyền và nhâ ̣n ở mức tối đa , do đó sẽ tiêu hao lãng phí năng lƣợng trên mỗi nút gửi và nhận trong trƣờng hợp 2 nút gƣ̉i nhâ ̣n ở gần nhau. Tƣ̀ ha ̣n chế này tôi đề xuất điều khiển công suất truyền dƣ̣a trên khoảng cách giƣ̃a các nút. Ở đây khoảng cách giữa các nút đƣợ c thể hiê ̣n qua mâ ̣t đô ̣ nút t ăng dần, các nút đƣợc đă ̣t tĩnh trong cùng mô ̣t khu vƣ̣c đi ̣a lý 500m x 500m. Để đánh giá giƣ̃a đề suất và 802.11 tôi sƣ̉ du ̣ng các đô ̣ đo nhƣ trình bày trong phần 4.1.

4.1 Các độ đo hiệu năng đánh giá trong luận văn

Để đánh giá và so sánh hiệu năng mạng ad-hoc, tôi lựa chọn các tham số hiê ̣u năng sau: thông lƣợng trung bình toàn ma ̣ng, năng lƣợng tiêu thu ̣ trung bình trên các nút gửi và năng lƣợng tiêu thụ trung bình trên các nút nhận cho mô ̣t đơn vi ̣ thông tin, và tỷ lệ chuyển phát gói tin thành công.

Năng lƣợng tiê u thu ̣ trung bình trên các nút gƣ̉i / nhâ ̣n cho mô ̣t đơn vi ̣ thông tin = tổng năng lƣợng tiêu thu ̣ trên các nút gƣ̉i (hoă ̣c nhâ ̣n) chia cho (tổng số gói tin gƣ̉i(hoă ̣c nhâ ̣n) * kích thƣớc gói tin)

Throughput: thông lƣợng trung bình toàn mạng là kích thƣớc gói tin nhâ ̣n đƣợc trong mô ̣t đơn vi ̣ thời gian.

PDR (packet delay radio): = (Tổng gói tin nhận đƣợc ta ̣i các nút bên nhâ ̣n/ tổng số gói tin gửi đi ở các nút bên gửi) *100%

4.2 Thƣ̣c nghiê ̣m mô phỏng

Sƣ̉ du ̣ng mô hình Random waypoint tôi xây dựng mạng mô phỏng gồm 3x3, 4x4, 5x5, 6x6, 7x7, 8x8 nút hình thành nên một mạng ad hoc. Các nút này đặt tĩnh trong một khu vực địa lý rộng 500m x 500m (không gian phẳng). Toạ độ của các nút tại mỗi thời điểm là (x, y, z), trong đó tọa độ z = 0. Thời gian mô phỏng là 300 giây.

Mô hình truyền thông đƣợc lựa chọn là TCP. Tôi chọn tham số cho nguồn phát TCP có kích thƣớc các gói tin là 512 bytes. Số lƣợng kết nối cho mỗi mô hình là N/2 nguồn phát, và N/2 nguồn nhận. Các cặp nút nguồn phát và nhận lấy ngẫu nhiên.

Cải tiến:

- Với số nút 3x3, chọn các giá trị radio range (transmision range, sensing range) theo mặc định lần lƣợt là 250m, 550m;

- Với số nút 5x5, giảm các giá trị trên bằng 3/5 giá trị mă ̣c đi ̣nh; - Với số nút 6x6, giảm các giá trị trên bằng 3/6 giá trị mặc định; - Với số nút 7x7, giảm các giá trị trên bằng 3/7 giá trị mă ̣c đi ̣nh; - Với số nút 8x8, giảm các giá trị trên bằng 3/8 giá trị mă ̣c đi ̣nh;

Các thông số mô phỏng 802.11 chƣa điều khiển công suất

Tham số mô phỏng Giá trị

Phạm vi truyền sóng vô tuyến 250m

Phạm vi cảm nhận sóng mang 550m

Vùng mô phỏng 500 x 500m

Số nút tham gia mô phỏng 3x3, 4x4, 5x5, 6x6, 7x7, 8x8

Thời gian mô phỏng 300s

Dạng truyền thông TCP

Số nguồn phát 4, 8, 12, 18, 24, 32, 40, 50

Kích thƣớc gói tin 512 bytes

Băng thông 2Mbps

Giao thƣ́c AODV (adsbygoogle = window.adsbygoogle || []).push({});

Các thông số mô phỏng 802.11 khi thƣ̣c hiê ̣n điều khiển công suất

Tham số mô phỏng Giá trị

Công suất truyền 281,8 mW, 80mW, 36,6mW, 15mW, 10,6mW, 7,25mW

Phạm vi truyền sóng vô tuyến 250m, 180m, 150m, 120m, 110m, 100m Phạm vi cảm nhận sóng mang

Vùng mô phỏng 500 x 500m

Số nút tham gia mô phỏng 3x3, 4x4, 5x5, 6x6, 7x7, 8x8

Thời gian mô phỏng 300s

Dạng truyền thông TCP

Số nguồn phát 4, 8, 12, 18, 24, 32

Một phần của tài liệu Giao thức MAC điều khiển công suất trong mạng AD HOC (Trang 41)