Hình trên cho thấy kiến trúc tổng quát của NS. Trong hình này, một người dùng thông thường (không phải người phát triển) đứng ở vị trí góc dưới bên trái, thiết kế và chạy các mô phỏng trong Tcl sử dụng các đối tượng mô phỏng trong thư viện OTcl. Bộ lập lịch các sự kiện và hầu hết các thành phần mạng được triển khai trong C++ và có thể sử dụng qua OTcl, một sự liên kết OTcl được triển khai sử dụng tclcl. Toàn bộ các vần đề cùng NS chúng là một mở rộng thông dịch Tcl với các thư viện mô phỏng.
4.1.4. Các đặc điểm chính của NS2
Bộ mô phỏng NS2 có thể hỗ trợ người nghiên cứu mạng các đặc điểm nổi bật sau:
- Khả năng trừu tượng hóa: giúp nghiên cứu các giao thức mạng ở nhiều mức khác nhau, từ hành vi đơn lẻ của một giao thức đến kết hợp của nhiều luồng dữ liệu và tương tác của nhiều giao thức. Điều này giúp người nghiên cứu có thể dễ dàng so sánh và phân tích các kết quả chi tiết với trừu tượng.
- Khả năng tương tác với mạng thực: Cho phép chương trình mô phỏng đang chạy tương tác với các nút mạng thực đang hoạt đông thông qua việc thiết lập lưu lượng cho các liên kết mạng.
- Khả năng tạo ngữ cảnh: Người nghiên cứu có thể tạo các hiện trạng mạng phức tạp và các sự kiện động như lỗi liên kết một cách dễ dàng. Điều này giúp cho việc nghiên cứu, kiểm chứng các giao thức mạng trong các mô hình mạng khác nhau được đúng đắn hơn.
- Khả năng hiển thị hóa: Thông qua công cụ hiển thị NAM, người nghiên cứu có thể quan sát trực quan hoạt động của các nút mạng, lưu lượng, tỷ lệ lỗi để từ đó dễ dàng hiểu được các hành vi phức tạp của đồ hình mạng mô phỏng.
- Khả năng mở rộng được: NS2 cho phép mở rộng các chức năng mới một cách dễ dàng như thay đổi các tham số, xây dựng lên một giao thức mới, thử nghiệm các kịch bản khác nhau...
4.1.5. Khả năng mô phỏng của NS
Với bộ mô phỏng NS2, người dùng có thể mô phỏng nhiều giao thức khác nhau tại nhiều tầng khác nhau như: tại tầng ứng dụng, FTP, HTTP; tại tầng giao vận như: UDP,
TCP (reno, tahoe, vegas, sack…), tại tầng MAC như: MAC 802.3, MAC 802.11, MAC 802.15, ...trong các mô hình mạng có dây, mô hình mạng không dây và mô hình mạng hỗn hợp. Ngoài ra NS-2 còn có thể mô phỏng các thuật toán định tuyến trong mạng không dây, đặc biệt là mạng Ad-hoc: DSDV, DSR, AODV, TORA,… các vấn đề về định tuyến Unicast/Multicast, liên mạng sử dụng vệ tinh (Satellite network) và nhiều các vấn đề khác cụ thể như:
Đối với mạng có dây:
- Các đường truyền điểm - điểm đơn công, song công, mạng cục bộ LAN. - Các chính sách phục vụ hàng đợi.
- Các mô hình sinh lỗi.
- Vấn đề định tuyến Unicast/Multicast (Unicast/Multicast routing).
- Các giao thức tầng Giao vận: TCP/Tahoe/Reno/New-Reno/Sack/Vegas, UDP, điều khiển lưu lượng và điều khiển tắc nghẽn.
- Các giao thức tầng Ứng dụng, Web caching, truyền luồng dữ liệu đa phương tiện.
Đối với mạng không dây:
- Kênh truyền.
- Sự di chuyển của các nút mạng trong không gian hai chiều. - Mạng LAN không dây (WLAN) 802.11.
- Mobile IP.
- Các thuật toán định tuyến trong mạng không dây đặc biệt (Ad Hoc networks): DSDV, DSR, AODV, TORA...
- Liên mạng sử dụng vệ tinh (Satellite Networking).
Trong lĩnh vực mạng hỗn hợp có dây và không dây:
- Trạm cơ sở (Base station) đóng vai trò gateway giữa mạng có dây và mạng không dây.
- Snoop TCP.
4.2. Mô phỏng mạng di động không dây 802.11 trong NS [18]-[20]-[21] 4.2.1. Các mô hình truyền sóng vô tuyến 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
Ngoài trời Không gian lí tưởng 2
Các khu vực bị khuất 2.7 tới 5 Trong nhà Tầm nhìn thấy (thẳng) 1.6 tới 1.8
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