Tải bản đầy đủ (.pptx) (19 trang)

ĐỀ TÀI GIỚI THIỆU PHẦN MỀM MÔ PHỎNG MẠNG NS2

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.47 MB, 19 trang )

ĐỀ TÀI THẢO LUẬN
GIỚI THIỆU PHẦN MỀM MÔ PHỎNG MẠNG NS2
Môn : Lý thuyết mạng máy tính
GV hướng dẫn : NGUYỄN ĐỨC THIỆN
SV thực hiện :
1
LỜI NÓI ĐẦU
Hiện nay, các hệ thống mạng ngày càng phức tạp, đòi hỏi phải đáp ứng được với nhiều
loại dịch vụ khác nhau, với tốc độ dịch vụ khác nhau, lưu lượng các gói tin trên đường
truyền không ngừng tăng lên, nhiều lúc dẫn đến tắc nghẽn. Vì vậy, việc sử dụng các phương
pháp giải thích ngày càng trở nên phức tạp trong tính toán các đối tượng ngẫu nhiên, đồng
thời khó có những mô hình thực tế để do thử nghiệm nên việc sử dụng các hệ thống mô
phỏng máy tính trở nên thuận lợi hơn nhiều
Phương pháp mô phỏng là sử dụng chương trình phần mềm xây dựng các đối tượng trong
mạng dựa trên Topology mạng đã được thiết kế. Thiết lập bảng hoạt động cho từng node
mạng, thiết lập các thông số đường truyền, thời gian truyền.
Hiện tại có rất nhiều phần mềm mô phỏng. Một trong số đó là NS2 – một sản phẩm phần
mềm lớn, chuyên dụng cho việc mô phỏng mạng
Sau đây, chúng em xin trình bày đề tài giới thiệu về NS2 bao gồm các phần chính
-Giới thiệu về NS-2
-Mô phỏng với NS-2
-Xây dựng 1 ứng dụng demo
2
I. GIỚI THIỆU VỀ NS2
3
Tổng quan về NS2

NS2 là phần mềm mô phỏng mạng điều khiển sự kiện riêng rẽ hướng đối tượng,
được phát triển tại đại học Califonia, Berkely.

NS2 được viết bằng ngôn ngữ C++ và OTcl. Trong đó, C++ dùng để xử lí dữ


liệu, các thao tác về gói tin còn Octl được sử dụng để định dạng cấu hình mô
phỏng, điều khiển mô phỏng.

NS rất hữu ích cho việc mô phỏng mạng diện rộng (WAN) và mạng local
(LAN). Bốn lợi ích lớn nhất của NS2 phải kể đến đầu tiên là:

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
4
Tổng quan về NS2

NS2 là phần mềm mã nguồn mở có sẵn cho môi trường Linux.Để
chạy NS-2 trong Windowns ta cần dùng phần mềm giả lập môi
trường.

NS thực thi các giao thức mạng như:

Các mô hình mạng: LAN, WLAN, di động, vệ tinh,

Các giao thức mạng như: TCP, UDP

Các dịch vụ nguồn lưu lượng như: FTP, CBR, VBR, Telnet, http

Các kỹ thuật quản lý hàng đợi: Vào trước Ra trước (Drop Tail), Loại bỏ sớm

ngẫu nhiễn - RED (Random Early Drop) và Xếp hàng dựa trên sự phân lớp
– CBQ (Class-Based Queueing)

Các thuật toán định tuyến như: Dijkstra, Distance Vector, Link State…

Các Chuẩn IEEE 802.11, IEEE 802.3,…

NS-2 cũng thực thi multicasting và vài giao thức lớp Điều khiển truy cập
đường truyền (MAC) đối với mô phỏng LAN.
5
Kiến trúc NS2

Kiến trúc thư mục NS-2 và NAM trong môi trường Linux. NS-2 và
NAM đều là các thư mục con của ns-allinone-2.28. NS-2 bao gồm
các thực thi mô phỏng (bằng mã C++ và mã OTcl), các kịch bản Otcl
kiểm tra tính hiệu lực và các kịch bản OTcl minh
Hình 1: Kiến trúc thư mục cài đặt của NS-2 và NAM
6

Cấu trúc của NS-2 bao gồm các thành phần được chỉ ra dưới Hình 2
Hình 2: Tổng quan về NS dưới góc độ người dùng
7
Kiến trúc NS2

chức năng của chúng được mô tả như sau:
-
OTcl Script Kịch bản OTcl
-
Simulation Program Chương trình Mô phòng
-

OTcl Bộ biên dịch Tcl mở rộng hướng đối tượng
-
NS Simulation Library Thư viện Mô phỏng NS
-
Event Scheduler Objects Các đối tượng Bộ lập lịch Sự kiện
-
Network Component Objects Các đối tượng Thành phần Mạng
-
Network Setup Helping Module Các mô đun Trợ giúp Thiết lập Mạng
-
Plumbling Modules Các mô đun Plumbling
-
Simulation Results Các kết quả Mô phỏng
-
Analysis Phân tích
-
NAM Network Animator Minh họa Mạng NAM
8
Kiến trúc NS2

NS là Bộ biên dịch Tcl mở rộng hướng đối tượng: bao gồm các đối tượng Bộ lập lịch
Sự kiện, các đối tượng Thành phần Mạng và các mô đun Trợ giúp Thiết lập Mạng (hay
các mô đun Plumbing). Để sử dụng NS-2, user lập trình bằng ngôn ngữ kịch bản OTcl.
User có thể thêm các mã nguồn Otcl vào NS-2 bằng cách viết các lớp đối tượng mới
trong OTcl. Những lớp này khi đó sẽ được biên dịch cùng với mã nguồn gốc. Kịch bản
OTcl có thể thực hiện những việc sau:

Khởi tạo Bộ lập lịch Sự kiện

Thiết lập Mô hình mạng dùng các đối tượng Thành phần Mạng


Báo cho nguồn traffic khi nào bắt đầu truyền và ngưng truyền packet trong Bộ lập lịch Sự kiện

Thuật ngữ plumbing được dùng để chỉ việc thiết lập mạng, vì thiết lập một mạng nghĩa
là xây dựng các đường dữ liệu giữa các đối tượng mạng bằng cách thiết lập con trỏ
“neighbour” cho một đối tượng để chỉ đến địa chỉ của đối tượng tương ứng. Mô đun
plumbing OTcl trong thực tế thực hiện việc trên rất đơn giản. Plumbing làm nên sức
mạnh của NS.

Thành phần lớn khác của NS bên cạnh các đối tượng Thành phần Mạng là Bộ lập lịch
Sự kiện. Bộ lập lịch Sự kiện trong NS-2 thực hiện những việc sau:

Tổ chức Bộ định thời Mô phỏng

Huỷ các sự kiện trong hàng đợi sự kiện

Triệu gọi các Thành phần Mạng trong mô phỏng
9
Kiến trúc NS2

Phụ thuộc vào mục đích của user đối với kịch bản mô phỏng OTcl mà kết quả mô phỏng có thể
được lưu trữ như file trace. Định dạng file trace sẽ được tải vào trong các ứng dụng khác để thực
hiện phân tích:

File nam trace (file.nam) được dùng cho công cụ Minh họa mạng NAM

File Trace (file.tr) được dùng cho công cụ Lần vết và Giám sát Mô phỏng XGRAPH hay TRACEGRAPH
Hình 3: Luồng các sự kiện cho file Tcl chạy trong NS

NAM Visual Simulation Mô phỏng ảo NAM


Tracing and Monitoring Simulation Mô phỏng Lần vết và Giám sát
10
Kiến trúc NS2

Hình 4 là kiến trúc chung của NS. User có thể tưởng tượng mình đang
đứng ở góc trái dưới, thiết kế và chạy các mô phỏng trong Tcl. Tcl dùng
các đối tượng mô phỏng trong OTcl. Các đối tượng Bộ lập lịch Sự kiện và
hầu hết các đối tượng Thành phần Mạng thực thi bằng C++ và sẵn có cho
OTcl qua một liên kết OTcl. Liên kết OTcl này được thực thi dùng TclCL.
Tất cả đã làm nên NS, bộ biên dịch Tcl mở rộng hướng đối tượng và các
thư viện mô phỏng mạng.
Hình 4: Kiến trúc của NS-2
11
Kiến trúc NS2

NS sử dụng hai ngôn ngữ lập trình: Ngôn ngữ kịch bản (Tcl – Tool
Command Language, đọc là tickle) và Ngôn ngữ lập trình hệ thống
(C/C++). Trong đó

Ngôn ngữ C++:

Mô phỏng giao thức chi tiết 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.

Ngôn ngữ Otcl:

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

Tham dò nhanh một số tình huống

Thời gian tương tác (thay đổi mô hình hay chạy lại) là quan trọng

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

Bằng cách sử dụng C++/OTcl, bộ mô phỏng mạng phải hoàn toàn là
hướng đối tượng
12

Các đặc tính của NS-2
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,

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 gói dữ liệu packet


Mô hình mạng, Các ứng dụng – Telnet, FTP, Ping

Cài đặt

Có thể cài đặt NS2 bằng 1 gói phần mềm duy nhất hoặc bằng các gói
phần mềm con riêng lẻ. Link down các phần mềm có tại trang chủ
/>‐
NS-2 là phần mềm mã nguồn mở có sẵn cho cả nền Windows 32
và Linux. Để cài trên Windown, chúng ta cần cài phần mềm giả
lập môi trường Cygwin. Bạn cũng có dùng 1 phần mềm tạo máy
ảo (VMware, VirtualBox ) và 1 hệ điều hành nhân Linux (thông
dụng hiện nay là Ubuntu) để tạo ra 1 môi trường Linux thực sự để
cài đặt
13
II. MÔ PHỎNG VỚI NS-2
14
MÔ PHỎNG VỚI NS-2

KHỞI TẠO VÀ KẾT THÚC:

Cú pháp để khởi tạo một đối tượng Simulator như sau:
Set tên_đối_tượng [new Simulator]

Để có file đầu ra với dữ liệu mô phỏng (file bám vết ) hay các file sử dụng cho hiển thị (file nam) thì
chúng ta cần tạo file này bằng cách sử dụng lệnh open như sau:
#mở file bám vết
Set tracefile1 [open out.tr w]//tao file bám vết tên là out.tr
$ns trace-all $tracefile1
#mở file bám vết nam
Set namfile [open out.nam w]//tạo file bám vết tên là out.nam

$ns namtrace-all $namfile

Để kết thúc chương trình ta dùng hàm finish
#định nghĩa 1 thủ tục `finish'
Proc finish {} {
glocal ns tracefile1 namfile
$ns flush-trace
close $tracefile1
close $namfile
exe nam out.nam &
exit 0
}

Để gọi thủ tục hàm finish ta dùng lệnh $ns at t “finish” ,trong đó t là thời điểm muốn gọi hàm finish tính
bằng giây.

Để bắt đầu quá trình mô phỏng : $ns run.
15
MÔ PHỎNG VỚI NS-2

TẠO NÚT MẠNG:
tạo 1 node:
cú pháp : set tên_node [$ns node]
vd: set n0 [$ns node]

TẠO LIÊN KẾT CÁC NÚT MẠNG:

Liên kết đơn công :
là loại liên kết theo kiểu point-to-point giữa 2 nút mà chỉ có 1 node truyền và 1 node nhận.Cú pháp:
$ns simplex-link <$node1> <$node2> <bandwidth><delay><queue_type>

Trong đó:
+ bandwith:là băng thông.
+delay:thời gian trễ giữa 2 lần.
+queue_type:loại hàng đợi.

Liên kết song cong:
là loại liên kết theo kiểu point-to-point giữa 2 nút nhưng mỗi node vừa truyền và nhận.Cú pháp:
$ns duplex-link <$node1> <$node2> <bandwidth><delay><queue_type>


Làm đứt liên kết giữa 2 nút:
cú pháp : $ns rtmodel-at 1.0 down $n(1) $n(2)
$ns rtmodel-at 2.0 up $n(1) $n(2)
16
MÔ PHỎNG VỚI NS-2

CÁC TÁC NHÂN-AGNET TRONG NS2

Agent UDP:
Tạo 1 đối tượng UDP:
Set udp(int) [new agent/udp]
Kết nối agent udp cho node:
$ns attach-agent <$node> <$agent>
Cài đặt ứng dụng cho agent:
$traffic-gen attach-agent <$agent>
Trong đó: traffic-gen:là tên ứng dụng,để tạo 1 ứng dụng cú pháp:
Set traffic-gen [new application/traffic/traffic-gen]
Tạo kết nối giữa 2 agnet:
$ns connect <$agnet1> <$agent2>
Cấu hình cho 1 agent UDP:

$udp set packsize _<kich_thước>
$udp set dst_addr_<address>
$udp set dst_port_<portnum>
$udp set class_<class-type>
$udp set ttl_<time to live>

Agnet TCP:
Cấu hình TCP:set tcp [new Agent/TCP]//tạo ra biến con trỏ tcp cho tác nhân TCP
set sink [new Agent/TCPSink]//định nghĩa nút TCP đích và gán nó cho biến con trỏ sink
$ns attach-agent $n0 $tcp //định nghĩa nut nguồn kết nối TCP
$ns attach-agent $n1 $tcp_sink//định nghĩa nút đích
$ns connect $tcp $tcp_sink//kết nối TCP giữa các nút nguồn và đích
17
MÔ PHỎNG VỚI NS-2

LẬP LỊCH SỰ KIỆN:

Ns2 là một mô phỏng dựa trên các tập sự kiện riêng lẻ,vì vậy cần lập lịch sự kiện bằng cú pháp sau: $ns at <time>
<event>

Bộ lập lịch bắt đầu khi ta chạy ns :$ns run

Vd:$ns at 0.1 “$cbr start”
$ns at 3 “$cbr stop”
Thời gian hoạt động của cbr là 0.1 đến 3 đơn vị tính bằng giây.

HIỂN THỊ DÙNG NAM:

Thủ tục thiết lập vị trí của các nút mạng trong nam:
$ns duplex-link-op $n0 $n2 orient right-down

$ns duplex-link-op $n1 $n2 orient right-up
$ns simplex-link-op $n2 $n3 orient left
$ns simplex-link-op $n3 $n2 orient right
$ns duplex-link-op $n3 $n4 orient right-up
$ns duplex-link-op $n3 $n5 orient right-down

Tô màu nút:
$n0 color Red//tô đỏ nút n0

Tô màu liên kết:
$ns duplex-link-op $n0 $n2 color “tên màu”

LIÊN KẾT LỖI:

Liên kết lỗi là định tuyến đường đi khác khi tuyến đường cũ bị lỗi.

Cú pháp: $ns rtpeoto dv
18
TÀI LIỆU THAM KHẢO

“The ns Manual”. Kavin Fall, Kannan Varadhan. The
VINT Project, A Collaboration between researchers at UC
Berkeley, LBL, USC/ISI, and Xerox PARC. December 13,
2003
/>
“NS by example” .Jae Chung and Mark Claypool.
/>
Giáo trình thực hành NS-2

Một số tài liệu khác trên Internet

19

×