Tải bản đầy đủ
Hình 1.5: TclCL hoạt động như lien kết giữa A và B

Hình 1.5: TclCL hoạt động như lien kết giữa A và B

Tải bản đầy đủ

TclCL cung cấp liên kết giữa phân cấp lớp, khởi tạo đối tượng, nối kết biến và
gửi lệnh.
NS phải sử dụng đến 2 ngôn ngữ vì Bộ mô phỏng cần thực hiện hai việc
khác nhau:
Việc 1: Các mô phỏng cho các giao thức yêu cầu một ngôn ngữ lập trình
hệ thống có thể tính toán hiệu quả các byte, các tiêu đề packet và các thuật toán
thực thi đang chạy trên một tập dữ liệu lớn. Với tác vụ này, run-time speed (tốc
độ thời gian chạy thực) là quan trọng trong khi turn – around time ( thời gian
thay đổi) thì ít quan trọng hơn. Turn- around time bao gồm thời gian chạy mô
phỏng, thời gian tìm lỗi, thời gian sửa lỗi, thời gian biên dịch lại và thời gian
chạy lại.
Việc 2: Khi nghiên cứu mạng thì rất cần quan tâm đến các tham số và cấu
hình có thay đổi nhưng không đáng kể, hay quan tâm đến các scenario ( tình
huống) cần khám phá thật nhanh chóng. Trong tác vụ này thì iteration time ( thời
gian lặp lại, tức là thời gian thay đổi mô hình và chạy lại) là quan trọng hơn. Vì
cấu hình chỉ chạy một lần lúc bắt đầu mô phỏng nên run-time trong tác vụ này rõ
ràng kém quan trọng hơn.
Vì thế mà dùng C++ để:
Mô phỏng giao thức chi tiết theo yêu cầu ngôn ngữ lập trình hệ thống
- Thao tác trên byte, xử lý gói, thực thi thuật toán
- Tốc độ thời gian thực là quan trọng nhất
- Thực hiện bất kỳ việc gì mà cần phải xử lý từng packet của một luồng
- Thay đổi hành vi của lớp C++ đang tồn tại theo những hướng đã không
được lường trước.
Dùng OTcl để:
-

Mô phỏng những thông số hay cấu hình thay đổi

-

Cấu hình, thiết lập những gì chỉ làm 1 lần

-

Thực hiện những cái ta muốn bằng cách thao tác trên các đối tượng C++ đang
tồn tại.

19

1.4.2. Đặc điểm của NS2
NS-2 thực thi những tính năng sau:
-

Các kỹ thuật quản lý hàng đợi Router như DropTail, RED, CBQ

-

Multicasting

-

Mô phỏng mạng không dây

-

Hành vi nguồn traffic –www, CBR, VBR

-

Các agent truyền tải - UDP, TCP

-

Định tuyến

-

Luồng Packet

-

Mô hình mạng

-

Các ứng dụng – Telnet, FTP, Ping

-

Các Packet tracing trên tất cả các link và trên các link xác định
Lợi ích của NS-2:
- Khả năng kiểm tra tính ổn định của các giao thức mạng đang tồn tại
- Khả năng đánh giá các giao thức mạng mới trước khi đưa vào sử dụng
- Khả năng thực thi những mô hình mạng lớn mà gần như ta không thể
thực thi được trong thực tế.
- Khả năng mô phỏng nhiều loại mạng khác nhau.
1.4.3. Các thành phần cấu hình mạng trong NS-2
Lớp Simulator: Trong bộ công cụ giả lập NS-2, lớp quan trọng nhất là
lớp Simulator. Nó cung cấp các thủ tục, giao tiếp để tạo, quản lý topology và lưu
giữ các tham số cấu hình của các thành phần trong topology. Thông thường, các
kịch bản giả lập thường bắt đầu bằng việc tạo một thể nghiệm của lớp Simulator
để điều khiển và thực hiện việc giả lập, sau đó gọi các phương thức để tạo các
node, topo và cấu hình cho các node, các liên kết, ứng dụng …
Khởi tạo đối tượng Simulator: Cú pháp để khởi tạo một đối tượng
Simulator như sau:
set ten_doi_tuong [new Simulator]
set ns_ [new Simulator]
Sau khi khởi tạo đối tượng thì thủ tục khởi tạo sẽ thực hiện các công việc:

20

+ Khởi tạo định dạng của gói dữ liệu (gọi hàm create_packetformat).
+ Tạo một bộ lập lịch (scheduler) , mặc định là calendar scheduler.
+ Tạo một “null agent” . null agent được tạo bằng cú pháp:
set nullAgent_ [new Agent/Null]
Các bộ lập lịch và các sự kiện: Hiện tại NS-2 cung cấp bốn bộ lập lịch
cho công cụ giả lập:
+ List scheduler.
+ Heap Scheduler.
+ Calendar scheduler.
+ Real time scheduler.
Quy trình làm việc của bộ lập lịch như sau: Bộ lập lịch các sự kiện sẽ chọn
sự kiện kế tiếp gần nhất trong bộ lập lịch để thực thi, sau khi thực thi xong sẽ trở
về để thực thi sự kiện kế tiếp. Đơn vị thời gian dùng trong bộ lập lịch được tính
bằng giây. Hiện tại, bộ công cụ giả lập chỉ sử dụng tiến trình đơn, tức là tại một
thời điểm chỉ có một sự kiện được xử lý. Nếu có nhiều sự kiện trong bộ lập lịch
thì sự kiện nào vào trước sẽ được xử lý trước. Trong mỗi kịch bản giả lập chỉ
được sử dụng một bộ lập lịch.
-

Bộ lập lịch List Scheduler: (lớp Scheduler/List) được cài đăt dựa trên cấu trúc
dữ liệu danh sách liên kết đơn. Bộ lập lịch này dùng thời gian để phân biệt
thứ tự các sự kiện vì vậy khi thêm hoặc xóa một sự kiện cần phải tìm kiếm cả
danh sách để chọn một entry thích hợp. Khi chọn sự kiện kế tiếp để thực thi

-

thì cần phải dời các sự kiện còn lại lên một vị trí.
Bộ lập lịch Heap Scheduler: (lớp Scheduler/Heap) dùng cấu trúc dữ liệu
Heap để cài đặt. Cấu trúc dữ liệu này cao cấp hơn so với danh sách liên kết vì
lưu trữ được nhiều sự kiện hơn.Độ phức tạp của các thao tác thêm, xóa bằng

-

O(log n) tương ứng với n sự kiện.
Bộ lập lịch Calendar Scheduler: (lớp Scheduler/Calendar) sử dụng cấu trúc
dữ liệu tương tự như lịch tính dương lịch, mà các sự kiện cùng ngày, tháng
của các năm khác nhau có thể được lưu trữ trong cùng một ngày.

21

-

Bộ lập lịch thời gian thực Real-Time Scheduler: (lớp Scheduler/ RealTime)
đồng bộ thực thi các sự kiện trong thời gian thực. Bộ lập lịch này vẫn đang
trong giai đoạn phát triển.
Định nghĩa Cấu trúc Heap:Heap là cây nhị phân gần đầy được cài đặt bằng

mảng một chiều với các node trên heap có nội dung nhỏ hơn hoặc bằng nội dung
của node cha. Heap này được gọi là heap giảm (descending heap ). Heap tăng
( ascending heap ) thì ngược lại: các node trên heap có nội dung lớn hơn hoặc
bằng nội dung của node cha.

Hình 1.6 Cấu trúc Heap giảm
Cấu trúc heap giảm được cài đặt bằng cây nhị phân và mảng một chiều
Các phương thức khác:Lớp Simulator còn cung cấp thêm một số
phương thức cho việc cài đặt các thông số cho việc giả lập.
- Các phương thức này bao gồm ba loại:
+ Các phương thức tạo, quản lý các node, topo và các liên kết.
+ Các phương thức thực hiện việc ghi nhận kết quả của quá trình giả lập.
+ Các phương thức trợ giúp tương tác với bộ lập lịch.
- Các phương thức bao gồm:
+ Simulator instproc now: trả về thời gian hiện tại.
+ Simulator instproc at args: thực thi sự kiện ở thời điểm cụ thể.
+ Simulator instproc cancel args: hủy bỏ việc thực thi sự kiện.
+ Simulator instproc run args: bắt đầu khởi động bộ lập lịch.
+ Simulator instproc halt: dừng bộ lập lịch.

22

+ Simulator instproc flush-trace: flush all trace object write buffers.
+ Simulator instproc create-trace type files src dst: tạo đối tượng trace.
+ Simulator instproc create_packetformat: thiết lập định dạng gói dữ liệu.
Tạo Node: Để tạo một node trong Tcl ta dùng cú pháp:
set ns_ [new Simulator]
$ns node
Một node trong NS chứa ít nhất các thành phần sau:
+ Địa chỉ hoặc số ID, giá trị này khởi tạo bằng 0, và tuần tự tăng 1 đơn
vị khi có một node mới được tạo ra.
+ Danh sách các node láng giềng của nó (neighbor_).
+ Danh sách các Agent (agent_ ).
+ Loại node (nodetype_ ).
+ Module định tuyến của node.
Cấu hình cho MobileNode: Cấu hình cho node chủ yếu tập trung vào
Wireless. Bao gồm các thông số sau: loại cấu trúc ðịa chỉ sử dụng là ðịa chỉ ðẳng
cấp hay phân cấp, ðịnh nghĩa các thành phần mạng cho mobilenode: ðịa chỉ
MAC, loại Antenna, sóng truyền, lựa chọn giao thức định tuyến, định nghĩa mô
hình năng lượng, …
set topo [new Topography]
$ns_ node-config -addressingType hierarchical \
-adhocRouting AODV \
-llType LL \
-macType MAC/802_11 \
-ifqType Queue/DropTail/PriQueue \
-ifqLen 50 \
-antType Antenna/OmniAntenna \
-propType Propagation/TwoRayGround \
-phyType Phy/WirelessPhy \
-topologyInstance $topo \
-channel Channel/WirelessChannel \

23