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