Giới thiệu NS Network Simulation 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.. Cấu tr
Trang 1HỆ MÔ PHỎNG NS
Trang 2Giới thiệu NS (Network
Simulation)
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
học Berkeylay từ năm 1989, là một phần trong
dự án VINT (Virtual Internet Testbed) của phòng
Trang 3Đối tượng mô phỏng:
định đường di động mạng có dây và không dây
Web, Real Audio
Trang 4Cấu trúc thư mục của NS
tclbox
Ns-allinone
tcl
C++ source Otcl code
Example
Validation test Otcl source
Trang 5Cấu trúc phân lớp
mô phỏ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 )
Trang 6Lị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)
head
Event Scheduler
Net work Object
Network Object
handler()
handler()
time_uid_next_handler_
time_uid_next_handler_
Trang 7Các thành phần của NS
TclObject
Other
NsObject
Connector
Classifier
AddrClassifier McastClassfier
Trang 8Link và Trace
Object
Drop
Queue Delay TTL
Agent/Null
1 0
EnqT Queue DeqT Delay TTL
Drpt Agent/Null
RecvT
Trang 9Cơ 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.
Trang 10Đị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
size
Trang 11Dùng C++ và Otcl để xây dựng
NS
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.
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
Trang 12Cài đặt: Linux, Windows
-download ns-allinone
-includes Tcl, Otcl, TclCL, ns, nam Tài liệu: Marc Gries tutorial, ns manual
Trang 13Các Agent và dịch vụ truyền tin trong NS
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:
cách sau:
Dùng phương thức send hoặc sendmsg (trong
Trang 14Mô 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
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 "
n 0
n 1
udp cbr
null
Trang 15TCP Agent
dữ liệu theo một chiều:
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
Trang 16Hoạ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
Trang 17Ứng dụng NS để mô phỏng một mô hình mạng
Để 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
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
Trang 18Mô hình mô phỏng.
5Mbps, 5ms: 0-1
4Mbps, 2ms:3-4
Nút Liên kết Agent Dịch vụ 0
1
2
5
6
tcp ftp0
udp cbr
tcp Fpt2
sink
sink null
Trang 19Kết quả thực hiện mô phỏ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
Trang 20Phân tích kết quả dựa vào TRGRAPH
Event_time_fromnode_tonode_pktsize_flags_fid_srcaddr_dstaddr_sepnum_pktid