Thực tế kết nối và thể hiện định tuyến trên NS2

Một phần của tài liệu khảo sát mạng lan với các phần mở rộng không dây (Trang 61 - 70)

Vlink không gây ra bất kỳ sự trễ nào trên các gói và chỉ đáp ứng cho một mục đích là cài đặt giao diện LAN thay vì những liên kết thông thường ở bộ phân loại của các node.

4.1.2 Mô phỏng WLAN

Để mơ phỏng mạng WLAN, ngồi các đối tượng như trong mô phỏng LAN (ở phần trên), NS thêm đối tượng nsNode cơ sở cùng với các chức năng như di chuyển, khả năng truyền và nhận trên một kênh cho phép tạo môi trường mobile, môi trường mô phỏng wireless. WLAN sử dụng lớp MobileNode với các đặc tính hỗ trợ thêm vào cho phép mô phỏng mạng multi-hop với thủ tục ad-

hoc, mạng WLAN, … MobileNode là một đối tượng tách biệt bao gồm các tính năng mobile như: di chuyển, cập nhập vị trí định kỳ, duy trì đường biên của topo,… Chúng được thực thi trong C++ trong q trình dị tìm các thành phần của mạng bên trong của MobileNode (như các phân lớp, LL, Mac, Channel,…). Node mobile có khả năng nhận và truyền các tín hiệu đến hoặc từ một kênh wireless.

Do bản chất của mô phỏng giữa mạng WLAN và LAN là tương đồng nhau, NS2 thay đổi một số yếu tố của các thành phần dùng cho mô phỏng LAN để phù hợp với WLAN như: Định tuyến, thêm mơ hình lỗi vào đường truyền dành cho truyền dẫn không dây, thay đổi tọa độ. NS hỗ trợ mơ phỏng cả 2 loại WLAN đó là Ad-Hoc và Infrastructure-based. Một số khác biệt so với mô phỏng LAN như sau:

4.1.2.1. Định tuyến trong mô phỏng WLAN kiểu Ad-hoc

Định tuyến: Hiện NS2 (phiên bản ns-2.30) hỗ trợ bốn giao thức định tuyến Ad-hoc đó là: DSDV, DSR, TORA, và AODV.

DSDV

Trong giao thức định tuyến này, meassage được chuyển đổi giữa các nút (mobilenode) lân cận, chúng thường xuyên cập nhật thông tin định tuyến khi có một trong những nút lân cận thay đổi bảng định tuyến. Một gói tin được gửi theo tuyến đến đích của nó khơng biết được nó đã được lưu tạm trong buffer trước khi nó được gửi đến node tiếp theo. Do vậy, tại các node, bộ nhớ đệm (buffer)

phải có kích thước đủ lớn để lưu các gói tin cho đến khi nút đó nhận được hồi đáp route-replies của đích (định tuyến đã hồn tất), gói tin lưu tạm đó sẽ bị hủy. Tất cả các gói tin di chuyển qua mobilenode được định tuyến trực tiếp bằng địa chỉ dmux của nút nguồn đến cổng dmux của nút đích, cổng dmux sẽ điều khiển các gói tin đến các agent đích tương ứng. Cổng 225 được gắn kèm với định tuyến agent trong mobilenodes, các mobilenodes cũng sử dụng đích mặc định (default-target) trong phân lớp của nó. Trong trường hợp đích của gói tin khơng tìm thấy trong phân lớp (có thể ngẫu nhiên xảy ra khi đích khơng phải là mobilenode), gói tin đó sẽ được dùng để chỉ ra đích mặc định trong định tuyến agent, định tuyến agent gán địa chỉ hop kế tiếp vào gói tin (xem hop đó là đích đến) và gửi nó xuống lớp link. [16]

Giao thức định tuyến này chủ yếu được thực thi trong C++. Tham khảo chi tiết vấn đề thực thi giao thức DSDV đối với mạng Ad-hoc trong ~ns/dsdv và ~ns/tcl/mobility/dsdv.tcl

DSR

DSR là giao thức định tuyến động, khác với DSDV sử dụng mobilenode thì DSR sử dụng SRNode cho việc định tuyến. Điểm vào của SRNode (The

SRNode’s entry_ points) chỉ đến quá trình định tuyến agent của DSR, vì vậy tất

cả các gói tin đã nhận được bởi node buộc phải truyền với định tuyến agent. Mơ hình này cần thiết cho thơng tin định tuyến sau này (trong tương lai) trên các gói tin data, ngược lại sẽ khơng qua q trình định tuyến agent.

Agent DSR kiểm tra dữ liệu gói tin để lấy thơng tin định tuyến rồi chuyển tiếp (forward) gói tin dựa trên thơng tin định tuyến vừa tìm được. Trong trường hợp nó khơng tìm thơng tin định tuyến trong gói tin thì nó sẽ cung cấp tuyến đường trước đó (nếu nó xác định được) hoặc chỉ lưu trữ gói tin đó để chờ các phản ứng tiếp theo và gửi truy vấn để tìm đường đến đích (nếu nó chưa xác định được) mà khơng u cầu phải biết đích.

Tóm lại, q trình định tuyến DRS ln dựa vào dữ liệu của gói tin tại nút đó mà khơng cần biết đích đến của gói tin, sau đó nút này sẽ gửi broadcast đến tất cả các nút lân cận của nó và tìm định tuyến đến đích dựa trên các phúc đáp Route-reply từ các nút trong mạng. Xem chi tiết phương thức định tuyến DSR ở

thư mục ~ns/dsr và ~ns/tcl/mobility/dsr.

TORA

Tora là giao thức định tuyến phân cấp dựa trên thuật toán “link reversal” (liên kết ngược). Tại mỗi nút một bản sao tách biệt của TORA được sử dụng cho mỗi đích. Khi một nút cần được định tuyến để truyền gói tin đến một đích, nó gửi broadcast thơng điệp QUERY có chứa địa chỉ đích. Gói này di chuyển qua mạng cho tới khi tìm được đích hay nút trung gian mà từ đó có thể đến nút đích. Sau đó nút này sẽ gửi broadcast gói tin UPDATE để cập nhật đường đi đến đích của nó trên bảng định tuyến của các nút cịn lại. Khi nhận được thơng tin của nút này, các nút còn lại sẽ cập nhập giá trị cao hơn giá trị của lân cận (neighbour) từ giá trị mà nó nhận được trong UPDATE. Điều này có nghĩa là đường đi từ một nút nguồn được xây dựng bằng cách tăng dần "bước đi" (từ nút nguồn đó đến nút lân cận tiếp theo), đồng thời từ phía đích sẽ "lùi" một bước (từ nút đích về lân cận của đích). Như vậy, việc định tuyến này được xây dựng từ "vết bước đi"

của nút nguồn và "vết lùi về" của nút đích và kết quả của quá trình này là một chuỗi các link trực tiếp xuất phát từ nút có câu hỏi truy vấn QUERY sang nút đích.

Nếu có nút đích mà nó khơng thể đến được thì nó sẽ đánh dấu để tuyến không đi qua nút này, Trong trường hợp nút khơng thể tìm thấy được bất kỳ lân cận nào có giới hạn WRT (Wireless Router Time) để đến đích, nó sẽ cố gắng tìm một tuyến mới. Trong trường hợp phân vùng mạng, nút sẽ gửi broadcast thông điệp CLEAR để thiết lập lại tất cả các tuyến và yêu cầu mạng gỡ bỏ các tuyến không hợp lệ đã được thiết lập trước đó. TORA hoạt động trên IMEP (Internet

MANET Encapsulation Protocol) nên nó cung cấp cơ chế phân phát an tồn các

thơng điệp định tuyến và đưa ra giao thức định tuyến trong bất kỳ sự thay đổi nào của đường truyền từ nút đó đến lân cận của nó; để giảm chi phí định tuyến IMEP cố gắng kết hợp hai thông điệp IMEP và TORA trong một gói hay block; để duy trì trạng thái kết nối giữa 1 nút và lân cận, IMEP gửi thông điệp BEACON và các nốt nghe thấy thông điệp này sẽ phải trả lời bằng thông điệp “Hello”. (quá trình thực thi TORA trong NS được diễn tả kỹ trong thư mục ns/tora và ns/tcl/mobility/tora.tcl).

AODV

AODV là giao thức kết hợp của hai giao thức DSR và DSDV; nó dựa vào cơ chế khám phá tuyến (route-discovery) duy trì tuyến của DSR và sử dụng phương pháp định tuyến hop-by-hop, chỉ số tuần tự và thông tin chỉ dẫn định tuyến của DSDV. Một nút nếu muốn biết tuyến đến đích thì nó tạo ROUTE REQUEST rồi thơng qua các nút trung gian để dị tìm đích và nó cũng sẽ nhận được thông tin của liên kết ngược của đích gửi trở về cho nó. Khi nút đó có yêu cầu đến một nút khác với tuyến xác định, nó tạo ra ROUTE REPLY gồm có chỉ số của các hop cần thiết để đến được đích. Tất cả các nút tham gia trong quá trình chuyển tiếp reply đến đích này tạo ra đường đi của tuyến từ nút gửi yêu cầu định tuyến đến đích. Trạng thái tạo ra ở mỗi node từ nguồn đến đích là trạng thái hop-by-hop (theo chặng) và khơng phải theo tồn bộ tuyến mà nó tổng hợp được sau khi gửi ROUTE REQUEST và nhận thông tin phản hồi ở bước dị tìm trước đó. (Xem ns/aodv và ns/tcl/lib/ns-lib.tcl để biết chi tiết của AODV)

4.1.2.2. Nút và mơ hình di chuyển trong WLAN

Sự di chuyển của nút mạng là một trong những đặc tính của mạng WLAN. Trong NS, các nút mạng có thể di chuyển được trong khơng gian 3

chiều, vị trí của nó được xác định bởi 3 tọa độ (x, y, z) trong không gian. Tuy nhiên, cho đến nay, NS2 mới chỉ hỗ trợ việc mô phỏng chuyển động trong 1 mặt phẳng, với Z lúc nào cũng bằng 0. Sau đây là 3 mơ hình chuyển động đã được đưa vào NS2 để mô phỏng các kiểu chuyển động của mobilenode:

Mơ hình di chuyển của nút mạng khi biết trước vị trí đầu và cuối:

Đường đi của nút được chỉ dẫn (directive) một cách rõ ràng trong các file mô tả sự di chuyển riêng biệt. (adsbygoogle = window.adsbygoogle || []).push({});

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 lệnh thiết lập sau:

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

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

Tại $time (tính bằng giây - sec), mobilenode sẽ bắt đầu di chuyển (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 với đơn vị là m/s.

Mô hình nút di chuyển CMU: Là một phiên bản của hệ thống setdest (chi

tiết ở ~ns/indep-utils/cmu-scen-gen/setdest), setdest tạo ra các biến ngẫu nhiên

bằng cách thực hiện các lời gọi chức năng này ở thư viện initstate (), điều này đã thay thế cho một "máy phát" số ngẫu nhiên trong lớp RNG. Cấu hình di chuyển của nút được thiết lập như sau:

./setdest [-n num_of_nodes] [-p pausetime] [-s maxspeed] [-t simtime] \ [-x maxx] [-y maxy] > [outdir/movement-file]

Trong đó:

-n num_of_nodes: Số nút di chuyển

-p pausetime: Thời gian tạm dừng trung bình giữa 2 lần di chuyển -s maxspeed: Tốc độ tối đa của di chuyển

-t simtime: Thời gian chạy mô phỏng

- x maxx và -y maxy: Ranh giới di chuyển trên mặt phẳng theo tọa độ x và y (không xét tọa độ z và đã xem z = 0)

Mơ hình di chuyển ngẫu nhiên: Cơ chế này, NS khởi tạo mobilenode

hướng và tốc độ của node. Giá trị tọa độ đích di chuyển đến và tốc độ được tạo ra ngẫu nhiên. Quá trình di chuyển của mobilenode có 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

}

(Vị trí của mobilenode sẽ được cập nhật sau mỗi 0.1 giây.)

4.1.2.3. Ngăn xếp mạng của mobilenode trong WLAN

Ngăn xếp mạng đối với một mobilenode gồm có lớp link (LL), modul RP kết nối đến LL, một hàng đợi có ưu tiên tại giao diện mạng IFq (Interface Priority

queue), lớp MAC, giao diện mạng netIF (net interface), tất cả được kết nối đến channel. (Hình 4.6)

Link Layer LL có module ARP để giải quyết tất cả các quá trình chuyển

đổi địa chỉ IP sang địa chỉ MAC và Routing Agent. (chi tiết có ở trong

~ns/ll.{cc,h} và ~ns/tcl/lan/ns-ll.tcl ).

ARP là giao thức phân giải địa chỉ (Address Resolution Protocol) thực thi (adsbygoogle = window.adsbygoogle || []).push({});

ở dạng BSD (implemented in BSD style) nhận các câu hỏi từ lớp Link. Nếu ARP biết được địa chỉ MAC của đích đến, nó ghi địa này vào header của gói tin tầng MAC và thêm vào hàng đợi tại giao diện mạng (interface queue) của hop đó. Ngược lại, nó gửi broadcasts truy vấn ARP và tạm giữ ở bộ nhớ đệm của Mobilenode. (chi tiết có ở trong ~ns/arp.{cc,h} và ~ns/tcl/lib/ns-mobilenode.tcl).

Interface Queue được thực thi như một hàng đợi có ưu tiên đưa ra các quyền ưu tiên để định tuyến các gói tin. (chi tiết trong ~ns/priqueue.{cc,h}).

Mac Layer IEEE 802.11 theo cơ chế Chức năng cộng tác phân tán - DCF

- là giao thức MAC được thực thi bởi CMU, sử dụng khuôn dạng RTS/CTS/DATA/ACK cho tất cả các gói tin unicast và broadcast. (chi tiết có ở

trong ~ns/mac-802_11.{cc,h}).

Network Interfaces (giao tiếp mạng) đáp ứng giao tiếp phần cứng (hardware interface) sử dụng bởi mobilenode để truy xuất đến kênh truyền thơng. (chi tiết có ở trong ~ns/phy.{cc.h} and ~ns/wireless-phy.{cc,h})

Mơ hình truyền bá Radio Sử dụng cơng thức tính sự suy giảm năng

lượng tín hiệu truyền đối với các khoảng cách gần là 1/r2 và đối với khoảng cách xa là 1/r4 (chi tiết có ở trong ~ns/tworayground.{cc,h}).

Antenna (Antenna omni-directional) được sử dụng với mục đích chung bởi mobilenodes. (chi tiết có ở trong ~ns/antenna.{cc,h}).

4.1.2.4. Mơ hình lỗi của NS-2

Trong NS2, mơ hình lỗi (ErrorModel) được áp dụng vào các thủ tục tạo ra lỗi để tác động trực tiếp vào đường truyền nhằm mơ tả các tình huống lỗi có thể xảy ra ở mạng thực. Các đơn vị lỗi được NS2 sử dụng là byte, gói tin hoặc thời gian.

Lớp ErrorModel có nguồn gốc từ lớp cơ sở Connector. Vì vậy nó kế thừa một vài phương thức để kết nối các đối tượng như target hay drop-target. Nếu drop-target tồn tại, nó sẽ nhận các gói tin bị sai lệch từ ErrorModel.

Có 2 mơ hình lỗi được sử dụng trong NS2 đó là mơ hình lỗi đồng đều (Uniform) và mơ hình lỗi đa trạng thái. Đối với mơ hình lỗi đồng đều, tỉ lệ gói tin lỗi được người sử dụng tự đặt tùy vào thí nghiệm và nó được tính bởi số gói tin lỗi trong 1 giây. Đối với mơ hình lỗi đa trạng thái, số gói tin lỗi được phân bố theo xác suất và được tính thơng qua ma trận chuyển trạng thái cấp N với N là số trạng thái (tơi đã trình bày nội dung này ở phần 1.2.1).

Ví dụ q trình tạo ra một mơ hình lỗi đồng đều (Uniform) với tỉ lệ gói lỗi là 1% (0.01), được viết bằng đoạn mã sau:

# tạo một modul loss_ và thiết lập tỉ lệ gói lỗi là 1%

set loss_module [new ErrorModel] $loss_module set rate_ 0.01

#Tuỳ chọn: thiết lập đơn vị tính lỗi và biến ngẫu nhiên

$loss_module unit pkt ; # đơn vị lỗi: các packet (theo mặc định)

$loss_module ranvar [new RandomVariable/Uniform]

# thiết lập target cho các packet bị huỷ

$loss_module drop-target [new Agent/Null] Ví dụ q trình tạo ra một mơ hình lỗi 3 trạng thái

# Tạo 3 mơ hình lỗi đồng đều có một trạng thái set tmp [new ErrorModel/Uniform 0 pkt] set tmp1 [new ErrorModel/Uniform .9 pkt] set tmp2 [new ErrorModel/Uniform .5 pkt]

# Tạo mơ hình lỗi 3 trạng thái # Tạo mảng các trạng thái

set m_states [list $tmp $tmp1 $tmp2]

# Thiết lập thời gian đường truyền nằm ở mỗi trạng thái

set m_periods [list 0 .0075 .00375]

# Thiết lập ma trận chuyển trạng thái

set m_transmx { {0.95 0.05 0} {0 0 1}

{1 0 0}}

# Thiết lập đơn vị tính là gói tin (adsbygoogle = window.adsbygoogle || []).push({});

set m_trunit pkt

# Chuyển trạng thái theo thời gian

set m_sttype pkt set m_nstates 3

set em_s_r($i) [new ErrorModel/MultiState $m_states $m_periods $m_transmx $m_trunit $m_sttype $m_nstates $m_nstart]

Sử dụng mơ hình lỗi trong mơ phỏng mạng

Để sử dụng mơ hình lỗi cho mạng, đầu tiên NS phải thêm vào một đối tượng SimpleLink (vì SimpleLink là một đối tượng hoàn chỉnh, thuận tiện cho các thao tác mô phỏng đường truyền đơn công - dùng trong mạng khơng dây).

Nút đích Đối tượng Hàng đợi

Đối tượng trễ

Vị trí 1 Vị trí 3

Vị trí 2

Nút nguồn

Đường truyền đơn cơng

Hình 4.7: Các vị trí chèn lỗi khi mơ phỏng mạng khơng dây.

Mơ hình lỗi có thể được chèn vào nhiều vị trí trên đường truyền đơn cơng (SimpleLink), hiện tại NS hỗ trợ các phương thức để chèn mơ hình lỗi vào ba vị trí khác nhau trên đường truyền đơn:

Bảng so sánh các vị trí chèn lỗi Vị trí chèn lỗi Loại đường truyền sẽ chèn lỗi Vị trí so với đối tượng hàng đợi Vị trí so với đối tượng trễ Các trường hợp ứng dụng để mơ phỏng mạng thực

Vị trí 1 Đơn công Trước Trước Đường truyền bị nghẽn, Gói tin bị q TTL và bị drop

Vị trí 2 Đơn cơng Sau Trước Gói tin bị q TTL Vị trí 3 Đơn cơng Sau Sau Gói tin bị quá TTL

4.2. Đánh giá hiệu suất giao thức TCP, UDP trong mạng LAN

Mục đích: Khảo sát, đánh giá khả năng thích ứng với lỗi nảy sinh trên

đường truyền và hệ số sử dụng đường truyền của mạng LAN khi truyền thông đồng thời luồng TCP và UDP; đánh giá độ trễ trung bình của gói tin, độ lệch chuẩn của độ trễ của luồng TCP và tỉ lệ phân phát gói tin TCP thành cơng.

Mơ hình khảo sát:

Mạng LAN khảo sát có tơ-pơ và cấu hình như sau:

S0 S2 S1 S3 Sink S4 S5 Null S6 10Mbps, 5ms Vị trí chèn lỗi đường truyền TCP FTP UDP CBR

Một phần của tài liệu khảo sát mạng lan với các phần mở rộng không dây (Trang 61 - 70)