4.2.1. Các mô hình truyền sóng vô tuyến
4.2.1.1. Mô hình FreeSpace
Mô hình truỵền FreeSpace cho rằng điều kiện truyền lí tưởng là chỉ truyền theo một đường dẫn nằm trong tầm nhìn thấy giữa máy truyền và máy nhận. H. T. Friss đưa ra phương trình tính toán nguồn tín hiệu nhận trong một không gian tự do ở khoảng cách d từ thiết bị truyền.
L d ) ( λ G G P = (d) P t t r r 2 2 2 4π (4.1)
Với Pt là nguồn năng lượng tín hiệu truyền, Gt và Gr là gains ăng ten của máy phát và máy thu theo thứ tự. L (L>=1) là độ mất hệ thống, λ là bước sóng, thông thường nó được chọn Gt=Gr=1 và L=1 trong mô phỏng NS.
Mô hình FreeSpace trình bày cơ bản dải truyền thông như một vòng quanh máy phát. Nếu một máy nhận trong phạm vi vòng vòng tròn phát, nó nhận tất cả các gói tin. Ngược lại nó làm mất tất cả các gói tin.
Giao diện OTcl với việc sử dụng một mô hình truỵền thông là lệnh cấu hình nút. Một cách để sử dụng nó ở đây là:
$ns_ node-config -propType Propagation/FreeSpace Một cách khác là :
set prop [new Propagation/FreeSpace] $ns_ node-config -propInstance $prop
4.2.1.2. Mô hình hai tia mặt đất (Two Ray Ground)
Một đường truyền đơn trong tầm nhìn thấy giữa hai nút di động là rất hiếm. Mô hình phản xạ hai tia mặt đất xem xét đường truyền trực tiếp và đường truyền phản xạ từ mặt đất. Nó nói lên rằng mô hình này đem đến các dự đoán chính xác hơn với một khoảng cách lớn hơn so với mô hình FreeSpace. Năng lượng nguồn nhận ở một khoảng cách d được dự đoán bởi:
L d h h G G P = (d) P t t r t r r 4 2 2 (4.2)
Ở đây ht và hr là độ cao của ăng ten truyền và nhận theo thứ tự. Chú ý rằng công thức nguyên gốc trong tài liệu [20] giả sử L=1. Để thống nhất với mô hình FreeSpace, được thêm vào ở đây.
Phương trình trên chỉ ra một nguồn nhanh hơn phương trình (4.1) giống như khi khoảng cách tăng. Tuy nhiên, mô hình Two Ray Ground không đem lại một kết quả tốt với một khoảng cách ngắn tại vì sự dao động được gây ra bởi việc tạo và phá huỷ kết hợp của hai tia. Vì vậy, mô hình FreeSpace vẫn được sử dụng khi d nhỏ.
Do vậy, một khoảng cách lớn dc sẽ được tính toán trong mô hình này. Khi d<dc phương trình (4.1) được sử dụng, khi d>dc phương trình (4.2) được sử dụng. Với cùng một khoảng cách hai phương trình này cho kềt quả tương tự nhau. Vì thế dc có thể được tính toán như sau:
λ ) h ( = dc 4ππt r / (4.3)
Thông thường, trình thông dịch OTcl sử dụng mô hình phản xạ hai tia mặt đất như sau:
$ns_ node-config -propType Propagation/TwoRayGround Hay có thể sử dụng:
set prop [new Propagation/TwoRayGround] $ns_ node-config -propInstance $prop
4.2.1.3. Mô hình Shadowing
Tổng quan: Mô hình FreeSpace và mô hình phản xạ Two Ray Ground dự đoán
nguồn năng lượng nhận như một chức năng tất định của khoảng cách. Cả hai trình bày dải truyền thông như một vòng tròn lí tưởng. Trên thực tế, nguồn năng lượng nhận ở
một khoảng cách nhất định là một giá trị ngẫu nhiên tại vì nhiều hiệu ứng truyền khác nhau, nó cũng được biết đến như hiện tượng fading (tượng biến đổi cường độ tín hiệu sóng mang). Trên thực tế, cả hai mô hình trên đều dự đoán giá trị trung bình của nguồn năng lượng nhận ở khoảng cách d. Một mô hình tổng quát và thường được sử dụng hơn là mô hình Shadowing
Bảng 4.1. Một vài giá trị đặc biệt của độ mất đường dẫn p
Môi trường p
Không gian lí tưởng 2
Ngoài trời
Các khu vực bị khuất 2.7 tới 5 Tầm nhìn thấy (thẳng) 1.6 tới 1.8 Trong nhà
Bị che khuất 4 tới 6
Bảng 4.2. Một số giá trị đặc biệt của độ lệch hiệu ứng màn chắn (shadowing).
Môi trường dB (dB)
Ngoài trời 4 tới 12
Văn phòng, khu vực cứng cáp 7 Văn phòng, khu vực mềm dẻo 9.6 Nhà máy, tầm nhìn thẳng 3 tới 6
Nhà máy, tầm bị khuất 6.8
Mô hình Shadowing bao gồm hai phần. Phần thứ nhất được biết đến như một mô hình mất đường dẫn, điều đó cũng có thể dự đoán giá trị trung bình của nguồn năng lượng nhận ở khoảng cách d, được biểu thị bởi Pr(d). Nó sử dụng khoảng cách gần d0 như một tham chiếu. Pr(d) được tính toán liên quan tới Pr(d0) như sau:
0 0 ) ( ) ( d d d P d P r r
β được gọi là hệ số mất đường dẫn, và nó thường được xác định theo kinh nghiệm bởi các phương pháp đo lường. Từ phương trình (4.1) chúng ta biết được rằng β =2 cho truyền dẫn trong FreeSpace. Bảng 4.1 đưa ra một số giá trị đặc biệt của β. Giá trị lớn hơn phù hợp hơn với các tắc nghẽn và do đó làm gia tăng nhanh hơn giá trị trung bình của nguồn năng lượng nhận giống như khoảng cách trở nên lớn hơn. Pr(d0) có thể đựơc tính toán từ phương trình (4.1).
Việc mất đường dẫn thường được đo bằng dB(deciBel). Từ phương trình (4.4) chúng ta có 0 0 log 10 ) ( ) ( d d d P d P dB r r
Phần thứ hai của mô hình phản xạ Shadowing là sự thay đổi của nguồn năng lượng nhận ở một khoảng cách nhất định. Nó là biến có giá trị ngẫu nhiên, do vậy nó là phân phối Gauss nếu được đo bằng dB. Nói tóm lại, toàn bộ mô hình Shadowing được biểu diễn bởi
(4.4)
dB dB r r X d d d P d P 0 0 log 10 ) ( ) (
Với XdB là biến ngẫu nhiên Gauss với giá trị trung bình là 0 và độ lệch chuẩn dB, được gọi là độ lệch hiệu ứng chắn và cũng thu được thông qua các phương pháp đo lường. Bảng 4.2 chỉ ra một vài giá trị đặc biệt cúa nó.
Mô hình Shadowing mở rộng mô hình vòng tròn lí tưởng để đạt tới mô hình thống kê: các nút có thể chỉ truyền theo xác suất khi ở gần rìa của dãi truyền thông.
Mục đích mô hình Shadowing: Trước khi sử dụng mô hình Shadowing, người sử dụng lên chọn các giá trị của hệ số mất đường đi và độ lệch hiệu ứng màn chắn chuẩn
dB tuỳ theo môi trường mô phỏng.
Trình thông dịch OTcl vẫn là lệnh cấu hình nút. Một cách để sử dụng nó như sau, và các giá trị với các tham số chỉ được đưa ra làm ví dụ:
# Đầu tiên phải thiết lập giá trị của mô hình hiệu ứng màn chắn. Propagation/Shadowing set pathlossExp_ 2.0 ;hệ số mất đường dẫn
Propagation/Shadowing set std_db_ 4.0 ; độ lệch hiệu ứng màn chắn (dB) Propagation/Shadowing set dist0_ 1.0 ;khoảng cách tham chiếu (m)
Propagation/Shadowing set seed_ 0 ;khởi đầu với RNG-Random number Genrator $ns_ node-config -propType Propagation/Shadowing ;Cấu hình cho nút
Mô hình Shadowing tạo ra một số ngẫu nhiên khởi xướng đối tượng RNG. RNG có ba kiểu khởi tạo: Khởi tạo thô, khởi tạo xác định trước (một thiết lập tốt của khởi tạo) và khởi tạo thông minh (hueristic) (chi tiết trong chương 22.1 tài liệu [20]). Các API trên chỉ sử dụng khởi tạo xác định trước. Nếu một người sử dụng muốn khởi tạo bằng một phương thức khác, API dưới đây có thể được sử dụng.
set prop [new Propagation/Shadowing] $prop set pathlossExp_ 2.0
$prop set std_db_ 4.0 $prop set dist0_ 1.0
$prop seed <seed-type> 0
$ns_ node-config -propInstance $prop
<seed-type> có thể là thô, xác định trước hay heuristic.
4.2.2. Tạo một nút di động (Mobile Node)
MobileNode là đối tượng cơ bản ns đối tượng Node cùng với các chức năng thêm vào như sự di chuyển, khả năng truyền và nhận trên một kênh cho phép tạo môi các truờng di động (mobile), môi trường mô phỏng mạng vô tuyến. Lớp MobileNode có xuất phát từ lớp cơ sở Node. MobileNode là một đối tượng tách biệt. Các tính năng mobile gồm có di chuyển node, 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 and ~ns/tcl/ex/wireless.tcl.
Trong khi minh họa ví dụ đầu tiên sử dụng một topo nhỏ chỉ có 3 node, minh họa thứ hai thực thi trên một topo có 5 node. Các tập lệnh này có thể được thực thi một các đơn giản bằng cách gõ lệnh: $ns tcl/ex/wireless.tcl (or /wireless-test.tcl)
Có bốn giao thức định tuyến ad-hoc hiện được hỗ trợ là DSDV, DSR, TORA và OADV. Ngoài ra còn có các giao thức khác được thêm vào như: OLSR, ZRP, ...
Cơ sở tạo một mobilenode được mô tả bên dưới. Chú ý rằng các API trước đây dành cho việc tạo ra một mobilenode phụ thuộc vào mỗi giao thức định tuyến đã sử dụng, giống như lệnh: set mnode [$opt(rp)-create-mobile-node $id]
Trong đó: $opt(rp): chỉ ra "dsdv", "aodv", "tora" hay "dsr" và định danh (id) hay là chỉ số của mobilenode. Nhưng cách sử dụng trước đây của API đang được phản đối và API mới được trình bày như sau:
Trước hết chúng ta cần định nghĩa các kiểu của những thành phần mạng này nhờ sử dụng một mảng opt() trong ngôn ngữ Tcl:
set opt(chan) Channel/WirelessChannel ;Chọn kiểu kênh truyền thông set opt(prop) Propagation/TwoRayGround ;Chọn mô hình truyền thông
set opt(ant) Antenna/OmniAntenna ; Mô hình anten
set opt(ll) LL ; Kiểu tầng liên kết dữ liệu
set opt(ifq) Queue/DropTail/PriQueue ; Kiểu của giao diện hàng đợi set opt(ifqlen) 50 ; Số gói tin lớn nhất có trong hàng đợi giao diện set opt(netif) Phy/WirelessPhy ; Kiểu giao diện mạng tầng vật lý
set opt(mac) Mac/802_11 ; Kiểu giao thức MAC
set opt(rp) DSDV ;Chọn giao thức định tuyến DSDV, AODV, DSR,... set opt(nn) 50 ;Thiết lập số mobile node mạng trong cần mô phỏng set val(x) 1500 ; Mảng X, Y chứa diện tích địa hình mô phỏng (m) set val(y) 1500
Sau đó chúng ta cần phải thiết lập một đối tượng tôpô mạng để ghi lại sự di động của mobile node trong một vùng giới hạn. Trong ví dụ sau, ta thiết lập các mobile node di chuyển trong một vùng 1500m X 1500m:
set topo [new Topography] $topo load_flatgrid $opt(x) $opt(y)
Cuối cùng ta thực hiện cấu hình các thành phần mạng với đối tượng bộ mô phỏng. Việc cấu hình này sử dụng các hàm API như sau:
$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 Ad Hoc-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). Địa chỉ phân cấp cũng được sử dụng, địa chỉ phân cấp của node cần phải được đưa ra chính xác.
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 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 antenne, sử dụng để định nghĩa mô hình truyền sóng, nối liền (interconnects) 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 hiện nay trông giống như sơ đồ trong hình sau:
Hình 4.4: Một mobilenode dưới chuẩn wireless của Monarch của CMU mở rộng ra NS
Cấu trúc mobilenode sử dụng cho giao thức định tuyến DSR hơi khác biệt 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ỉ demux hay các phân lớp và tất cả các packet nhẩn bởi node được điều khiển giảm xuống 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. Chi tiết về tác nhân định tuyến DSR có thể được tìm thấy trong chương 3. Mô hình lưu đồ của một SRNode được biểu diễn trong hình dưới
Hình 4.5: Một SRNode dưới chuẩn wireless của Monarch của CMU mở rộng ra NS
4.2.3. Tạo sự chuyển động cho Node (Creating Node movements)
Mobilenode được thiết kế để chuyển động (move) trong 3 tọa độ của đồ hình mạng (topology). Tuy nhiên tọa độ thứ 3 (trục Z) không được sử dụng. Đó là vì Mobilenode được đề nghị để luôn luôn chuyển động trên mặt phẳng (flat) với tọa độ trục Z lúc nào cũng bằng 0. Vì vậy, mobilenode có toạ độ X, Y, Z(=0) mà tiếp tục được điều chỉnh khi node hoạt động (move). 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 (directive) thường tập trung trong một chuỗi các file 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 (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) tính theo (m/s) xác định.
Trong phương thức này, node-movement-updates được nổ ra bất cứ vị trí nào của node ở tại thời gian được yêu cầu. Quá trình này có thể được gây ra 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 (movement) của chuỗi các file kịch bản chuyển động sử dụng các phương thức trên API, 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 topo với 50 node hoạt động với tốc độ tối đa là 20m/s với thời gian tạm dừng (pause) trung bình trong 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.
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. Chúng ta đã không sử dụng phương thức thứ hai và đưa nó đến người dùng với khảo sát chi tiết. Quá trình họat động của mobilenode được thực thi trong C++. Hãy xem các phương pháp trong ~ns/mobilenode.{cc.h}chi tiết quá trình thực thi.
Không quan tâm đến các phương thức được sử dụng để sinh ra chuyển động cho node, topo của mobilenode cần phải được định nghĩa. Nó lê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 cơ sở sử dụng:
set topo [new Topography]
$topo load_flatgrid $opt(x) $opt(y)
opt(x) opt(y) là giới hạn được sử dụng trong trình mô phỏng. Quá trình họat động của mobilenode có thể được đưa 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 đặt vào sau mỗi 0.1 giây.