Tải bản đầy đủ (.ppt) (20 trang)

SinhVienIT net baigiang 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 (266.8 KB, 20 trang )

HỆ MÔ PHỎNG NS


Giới thiệu NS (Network
Simulation)





NS (Network Simulation) chương trình phần
mềm dạng hướng đối tượng được sử dụng để
mô phỏng lại các sự kiện xảy ra trong hệ thống
mạng  yêu cầu, đặc tính vận hành của hệ
thống mạng thực.
NS được sử dụng để mô phỏng LAN và WAN .
Hệ mô phỏng NS-2 được phát triển ở trường đại
học Berkeylay từ năm 1989, là một phần trong
dự án VINT (Virtual Internet Testbed) của phòng
thí nghiệm quốc gia Lawrence Berkeley.


Đối tượng mô phỏng:







Wired, Wireless, Satellite


TCP Agents, UDP Agents, multicast, unicast
Thiết kế các cơ chế quản lý hàng đợi tại bộ định
tuyến như DropTail, Fair Queueing, Red.
Cài đặt thuật toán định đường động và tĩnh, Dijkstra,
vector khoảng cách, thuật toán trạng thái liên kết,
định đường di động ... mạng có dây và không dây.
Hổ trợ các ứng dụng WebCache, FTP, Telnet, CBR,
Web, Real Audio.


Cấu trúc thư mục của NS
Ns-allinone

tclbox

tkbox

otcl

tclcl

ns-2

C++ source

Otcl code
tcl
Example
ex


test

Validation test

lib

Otcl source

nam-1


Cấu trúc phân lớp





ns-2 là nơi đặt tất cả các sự CT thực thi của
mô phỏng
Thư mục lib là thư mục con của tcl chứa đựng
mã nguồn của Otcl và một thành phần quan
trọng đó là sự thực thi quá trình mô phỏng
(như Agent, Node, Link, Packet, Address,
Routing...).
...


Lịch trình của sự kiện:

lưu lại thời gian mô phỏng và


những sự kiện xảy ra trong hàng đợi

. Real-Time (thời gian thực) và

Non-Real-Time (thời gian ảo)

time_uid_next_handler_

handler()

Net work
Object

head
Event
Scheduler

handler()

time_uid_next_handler_

Network
Object


Các thành phần của NS

TclObject


NsObject
Other

Classifier

Connector

SnoopQueue

In

Out

Queue

Drp

Edrp

AddrClassifier

Delay

DropTail
DropTail

McastClassfier

Agent


Red

Trace

TCP
TCP

UDP


Link và Trace



Simplex Link



EnqT

0

Queue
Drop

1

Delay
Agent/Null


TTL

Link with Trace
Object
Queue

DeqT

Drpt

Delay

Agent/Null

TTL

RecvT


Cơ chế theo dõi hàng đợi.




Về cơ bản đối tượng lưu vết được thiết kế theo từng bản ghi
tại thời điểm gói tin đến nơi nhận mà chúng được định dạng.
Người sử dụng luôn có được thông tin từ Trace. Nhưng ở đây
chúng ta quan tâm đến những hoạt động tiếp theo, một trường
hợp có thể xảy ra khi độ trì hoãn trên mạng cao dẫn đến nghẽn
mạch. Khi đó các gói tin tin sẽ được đưa vào hàng đợi như thế

nào, và cơ chế quản lý hàng đợi nào sẽ có hiệu quả hơn.
Chẳng hạn chúng ta muốn sử dụng hàng đợi RED ta phải xác
định kích thước hàng đợi trung bình có trọng số, và kích thước
hiện tại của hàng đợi RED, xác định giá trị chặn trên và chặn
dưới là Tmax và Tmin phù hợp để giải quyết vấn đề trì hoãn
cao trên mạng. Hình dưới đây mô tả quá trình theo dõi diễn
biến trong một hàng đợi từ lúc gói tin đi vào hàng đợi, và đến
lúc gói tin được chuyển đi.


Định dạng gói tin NS: Một gói tin trong NS bao gồm hai phần đó là phần
đầu Header và Data

Header
 cmn header
 ip header
 tcp header
 rtp header
 trace header
 ......








cmn header
Uid_ : unique id

Ptype_ : pkt type
Size_ : simulated pkt
size
Ts_
: time stamp
 


Dùng C++ và Otcl để xây dựng
NS




Hệ mô phỏng NS được viết trên C++ và
Otcl, C++ dùng để xử lý dữ liệu, các thao
tác về gói tin và Otcl được sử dụng để
định dạng cấu hình mô phỏng, điều khiển
mô phỏng.
Đây là lí do để hệ mô phỏng NS đạt hiệu
quả. Để giảm bớt thời gian xử lý gói tin và
những sự kiện trong mô phỏng, tất cả đều
được thực hiện trên C++.


Cài đặt: Linux, Windows
/>-download ns-allinone
-includes Tcl, Otcl, TclCL, ns, nam...
Tài liệu: Marc Gries tutorial, ns manual




Các Agent và dịch vụ truyền tin trong NS.






UDP Agent được thực hiện trên giao thức UDP.
UDP Agent truy cập, xử lý dữ liệu từ ứng dụng. Kích
thước dữ liệu xử lý có thể thay đổi tuy nhiên không
thể vượt quá kích thước lớn nhất của đoạn
(Maximum Segment Size- MSS) giá trị này trong
UDP Agent được mặc định là 1000 byte, thể hiện qua
câu lệnh:
Agent / UDP set packstsize_ 1000
UDP Agent có thể phát chuyển dữ liệu theo hai
cách sau:
Dùng hàm sendmsg() (trong C++).
Dùng phương thức send hoặc sendmsg (trong
Otcl).


Mô tả hoạt động của UDP Agent trong mô phỏng
















set ns [ new Simulator ]
set n0 [ $ns node]
set n1 [ $ns node]
$ns duplex-link $n0 $n1 5mbps 2ms Droptail
set udp0 [ new Agent / UDP]
$ns attach-agent $n0 $udp0
set cbr0 [ new Application / Traffic / CBR]
$cbr0 attach-agent $udp0
$udp0 set packetsize_ 536
cbr
set null0 [ new Agent / Null]
$ns attach-agent $n1 $null0
$ns connect $udp0 $null0
$ns at 1.0 " $cbr0 start "
$ns at 4.0 " $cbr0 stop "

udp

null
n

0

n
1


TCP Agent








Các TCP Agent truyền
dữ liệu theo một chiều:
• Agent / TCP
• Agent / TCP / Reno
• Agent / TCP / Sack
• Agent / TCP / Vegas
• Agent / TCp / Fack












TCP Agent truyền dữ liệu
theo hai chiều:
•Agent / TCP / FullTCP
•Agent / TCP / BayFullTCP
Các TCP Agent nhận dữ
liệu :
•Agent / TCPSink
•Agent / TCPSink / DelAck
•Agent / TCPSink / Sack1
• Agent / TCPSink / Sack1 /
DelAck
• Agent / Null


Hoạt động của TCP Agent trong hệ mô phỏng

















set ns [ new Simulator ]
set n0 [ $ns node]
set n1 [ $ns node]
$ns duplex-link $n0 $n1 5mbps
2ms RED
Set tcp0 [ new Agent / TCP]
$ns attach-agent $n0 $tcp0
set
fpt0 [ new Application /
Traffic / FPT]
$fpt0 attach-agent $tcp0
$tcp0 set packetsize_ 210
$tcp0 set window_ 50
Set sink0 [newAgent/ TCPSink]
$ns attach-agent $n1 $sink0
$ns connect $tcp0 $sink0
$ns at 1.0 " $fpt0 start "
$ns at 4.0 " $fpt0 stop "















Các tham số quan trọng:
• Agent / TCP set windowOption_ 1
• Agent / TCP set windowInit_ 1
• Agent / TCP set windowConstant_
4
• Agent / TCP set windowThresh_
0.02
• Agent / TCP set packetsize_ 210
• Agent / TCP set ack_ 0
• Agent / TCP set dupacks_ 0
• Agent / TCP set overhead_ 0
• Agent / TCP set ecn_ 0
Agent / TCP set tcpTick_ 0.1


Ứng dụng NS để mô phỏng một mô hình mạng
Môi trường làm việc của NS.
Để thực hiện mô phỏng một mô hình mạng trước hết ta phải khởi tạo
các đối tượng, các liên kết, các Agent, các dịch vụ truyền tin... trên
môi trường NS, và điều này khá đơn giản vì NS đã hỗ trợ cách khởi
tạo ra các đối tượng này. Sau khi khởi tạo các đối tượng như
nút(node), liên kết(link), các Agent, các dịch vụ truyền tin... thì đoạn
mã lệnh tương ứng sẽ được phát sinh. Cấu trúc câu lệnh của NS
cũng khá đơn giản chúng ta cũng có thể sử dụng nó để tạo ra một

mô hình theo ý muốn.
 NAM (Network Animator).
Sau khi thực hiện mô phỏng mô hình mạng trên NS, trình biên dịch
sẽ dịch chương trình chúng ta đã mô phỏng, kết quả được lưu dưới
dạng file NAM. NAM có một giao diện dễ sử dụng (có các nút điều
khiển chương trình như: Play, Stop, FastForward, Rewind, Pause...
), chúng ta có thể thực hiện chương trình đã biên dịch dưới dạng
file NAM trong môi trường NAM một cách dễ dàng. Trên màn hình
luôn luôn hiển thị thời gian thực hiện chương trình, tốc độ truyền
gói tin. Ngoài ra nó còn có màn hình quan sát lưu lượng gói tin
truyền đi và số lượng gói tin rời khỏi đường truyền khi có độ trì
hoãn cao hay nghẽn mạch xảy ra trên mạng.



Mô hình mô phỏng.



5Mbps, 5ms: 0-1
4Mbps, 2ms:3-4.....
ftp0
tcp

Nút

Liên kết

Agent


Dịch vụ

0
5
cbr
udp

1

3

4

null
6

2
tcp
Fpt2

sink

sink


Kết quả thực hiện mô phỏng


Khi biên dịch chương
trình này kết quả được

lưu vào file Red.nam và
thực hiện file này trong
môi trường NAM cũng
có kết quả mô phỏng
như sau


Phân tích kết quả dựa vào TRGRAPH

Event_time_fromnode_tonode_pktsize_flags_fid_srcaddr_dstaddr_sepnum_pktid
r: receive, +: enqueue, -: dequeue, d: drop







r
+
r
+

0.173036
0.175396
0.212896
0.212896
0.231696
0.231696


1
1
0
0
0
1

0
0
1
1
1
2

tcp
tcp
ack
ack
ack
ack

450
450
210
210
210
210

-------------------------------------


1
1
1
1
1
1

2.1
2.1
0.0
0.0
0.0
0.0

0.0
0.0
2.1
2.1
2.1
2.1

1
1
1
1
1
1

2
2

3
3
3
3



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×