Một kịch bản mô phỏng của NS-2 thông thường bao gồm các bước sau : + Khởi tạo lịch biểu sự kiện
+ Bật chế độ tracing nếu cần + Khởi tạo topo mạng
+ Thiết đặt các giao thức định tuyến + Khởi tạo các tác nhân vận chuyển + Khởi tạo các lưu lượng source/sink + Chèn các thông báo lỗi nếu cần
Khởi tạo lịch biểu sự kiện
Cú pháp :Set ns [new Simulator]
-Lịch biểu các sự kiện :$ns at <time><event> -Bắt đầu lịch biểu :$ns run
Mở một file cho trace data
Set nf [open out.nam w] $ns namtrace-all $nf
hoặc $ns namtrace-all-wireless $nf -Bật tracing trên các liên kết đặc biệt $ns namtrace-queue $n0 $n1
-Thủ tục để đóng file và bắt đầu phần mềm NAM
Proc finish{}{ Global ns nf $ns flush-trace Close $nf
Exec nam out.nam & Exit 0
}
Khởi tạo topo mạng + Nút :set n0 [$ns node] Set n1 [$ns node] + Các liên kết và hàng đợi
$ns duplex-link $n0 $n1 <băng thông><độ trễ><kiểu hàng đợi>
Kiểu hang đợi có thể :DropTail,RED,CBQ,FQ,SFQ,DRR + Khởi tạo một tác nhân UDP và gắn nó với nút n0
Set udp [new agent/udp] $ns attach-agent $n0 $udp
+ Khởi tạo một nguồn lưu lượng CBR và gắn nó với udp0
Set cbr [new application/traffic/cbr] $cbr attach-agent $udp
+ Khởi tạo một tác nhân rỗng để làm suy giảm lưu lượng
Set null [new agent/null] $ns attach-agent $n2 $null + Kết nối chúng
$ns connect $udp $null + Thực thi lịch biểu sự kiện
$ns at 0.5 “$cbr start” $ns at 3.5 “$cbr stop ”
+ Khởi tạo một tác nhân TCP và gắn nó với nút n0
Set tcp [new agent/tcp] $ns attach-agent $n0 $tcp
+ Khởi tạo một nguồn lưu lượng FTP và gắn nó với tcp0
Set ftp [new application/traffic/ftp] $ftp attach-agent $tcp
+ Khởi tạo một TCPSink để làm suy giảm lưu lượng
Set sink [new agent/tcpsink] $ns attach-agent $n2 $sink + Thực thi lịch biểu sự kiện
$ns at 0.5 “$FTP start” $ns at 3.5 “$FTP stop ” Thiết đặt sự định tuyến + Unicast :
$ns rtproto <kiểu>
Kiểu :Static,Session,DV,cost ,multi-path + Multicast:
$ns multicast (ngay sau khi [new Simulator])
hoặc set ns [new Simulator-multicast on] $ns mrtproto <kiểu >
Kiểu CtrMcast,DM,ST,BST Chèn các thông báo lỗi + Khởi tạo modul lỗi
Set loss_module [new errrormodel] $loss_module set rate_0.01
$loss_module unit pkt
$loss_module ranvar[new random variable/uniform] $loss_module drop-target[new agent/null]
+ Chèn module lỗi