⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpls-sim-template.txt

📁 R. Lo Cigno, P. Larcheri 802.11e closed-loop scheduling Description: ns-2 package for 802.11e clo
💻 TXT
字号:
# NS tcl script template - tested on snapshot 18-09-00## Jan-Rutger Schrader, KPN Research, the Netherlands# j.h.r.schrader@kpn.com# version 0.3# contributed by Schrader, J.H.R. <J.H.R.Schrader@kpn.com># $Header: /nfs/jade/vint/CVSROOT/ns-2/tcl/ex/MPLS-sim-template.txt,v 1.4 2000/10/30 17:27:34 haoboy Exp $## Create simulator object#set ns [new Simulator]## Open files to write trace-data for NAM and Xgraph#set nf [open mpls.nam w]$ns namtrace-all $nfset f0 [open mpls.tr w]## Finish procedure which closes the trace file and opens Xgraph and NAM#proc finish {} {	global ns nf f0	$ns flush-trace	close $nf	close $f0        exec nam mpls.nam &	exit 0}## Set dynamic distance-vector routing protocol#$ns rtproto DV## define nodes and MPLS LSRs (in case of a LSR, the [$ns node]# command has to be preceded by node-config -MPLS ON# and succeeded by node-config -MPLS OFF#set node0   [$ns node]$ns node-config -MPLS ONset LSR1   [$ns node]		:		:set LSR11  [$ns node]$ns node-config -MPLS OFFset node12  [$ns node]## Define links, bandwidth 1 Mb, delay 10ms, queue managementDropTail #$ns duplex-link $node0 $LSR4  1Mb  10ms DropTail $ns duplex-link $LSR1  $LSR2  1Mb  10ms DropTail 		:		: $ns duplex-link $LSR10 $LSR11 1Mb  10ms DropTail $ns duplex-link $LSR11 $node12 1Mb 10ms DropTail## Control layout of the network#$ns duplex-link-op $node0 $LSR4  orient right$ns duplex-link-op $LSR1  $LSR2  orient right$ns duplex-link-op $LSR1  $LSR4  orient left-down		:		:$ns duplex-link-op $LSR9  $LSR10 orient right-up$ns duplex-link-op $LSR10 $LSR11 orient right$ns duplex-link-op $LSR11 $node12 orient right## The default value of a link cost (1) can be adjusted  # Notice that the procedure sets the cost along one direction only!  #$ns cost $LSR4 $LSR5 3$ns cost $LSR5 $LSR4 3 ## Install/configure LDP agents on all MPLS nodes,# and set path restoration function that reroutes traffic# around a link failure in a LSP to an alternative LSP.# There are 2 options as follows:# "new": create new alternative path if one doesn't exist# "drop": do not create any new alternative path## Adjust loop length to address all LSRs (MPLS nodes).#for {set i 1} {$i < 12} {incr i} {	set a LSR$i	for {set j [expr $i+1]} {$j < 12} {incr j} {		set b LSR$j		eval $ns LDP-peer $$a $$b	}	set m [eval $$a get-module "MPLS"]	$m enable-reroute "new"}## Set ldp-message color in NAM#$ns ldp-request-color       blue$ns ldp-mapping-color       red$ns ldp-withdraw-color      magenta$ns ldp-release-color       orange$ns ldp-notification-color  yellow# # Define trigger strategy, Label Distribution Control Mode# and Label Allocation and Distribution Scheme## when the following line is omitted, trigger strategy is# set to data-drivenClassifier/Addr/MPLS set control_driven_ 1Classifier/Addr/MPLS enable-on-demandClassifier/Addr/MPLS enable-ordered-control## Trigger strategy can also be defined per LSR#[$LSR4 get-module "MPLS"] enable-control-driven[$LSR3 get-module "MPLS"] enable-data-driven## Turn on all traces to stdout#Agent/LDP set trace_ldp_ 1Classifier/Addr/MPLS set trace_mpls_ 1## use 'List' scheduling of events#$ns use-scheduler List## Define procedure to create a CBR traffic flow and connect it to a UDP agent#proc attach-expoo-traffic { node sink size burst idle rate } {	global ns			set udp [new Agent/UDP]	$ns attach-agent $node $udp			set traffic [new Application/Traffic/Exponential]	$traffic set packetSize_ $size	$traffic set burst_time_ $burst	$traffic set idle_time_ $idle	$traffic set rate_ $rate	$traffic attach-agent $udp	$ns connect $udp $sink	return $traffic}## Create a traffic sink and attach it to the node node12#set sink0 [new Agent/LossMonitor]$ns attach-agent $node12  $sink0## Create a traffic source#set src0 [attach-expoo-traffic $node0  $sink0 200 0 0 400k]## Create a TCP agent and connect it to an application like FTP or Telnet, which# generates the data#set tcp [new Agent/TCP]$ns attach-agent $node0 $tcpset ftp [new Application/FTP]$tcp set packetSize_ 1024$ftp attach-agent $tcpset sink [new Agent/TCPSink]$ns attach-agent $node12 $sink $ns connect $tcp $sink## Procedure which dumps the nr of packets sent/received at the prompt# (in case of a TCP source)#proc monitor {} {    global tcp    $tcp instvar ndatapack_    puts "packets send: $ndatapack_"    $tcp instvar nackpack_   puts "packets received: $nackpack_"} ## Define a procedure which periodically records the bandwidth received by the# traffic sink sink0 and writes it to the file f0.#set totalpkt 0proc record {} {        global sink0 f0 totalpkt	set ns [Simulator instance]		#Set the time after which the procedure should be called again        set time 0.005		#How many bytes have been received by the traffic sink?        set bw0 [$sink0 set bytes_]		#Get the current time        set now [$ns now]	#Calculate the bandwidth (in MBit/s) and write it to the file        puts $f0 "$now [expr $bw0/$time*8/1000000]"	#Reset the bytes_ values on the traffic sink        $sink0 set bytes_ 0	#Re-schedule the procedure        $ns at [expr $now+$time] "record"                set bw0 [expr $bw0 / 200]        set totalpkt [expr $totalpkt + $bw0]}## Procedure to dump the number of received packets calculated by the procedure# record at the command prompt#proc recv-pkts {} {     global totalpkt     flush stdout     puts "The Number of Total received packet is $totalpkt"}## From here on the simulation events are defined## Start procedure "record"#$ns at 0.0   "record"## Source start#$ns at 0.1   "$src0 start"## Example of defining protection paths according to Haskin's model#$ns at 0.1 "[$LSR4 get-module MPLS] make-explicit-route 11  1_2_3_10_11  1000  -1"$ns at 0.2 "[$LSR11 get-module MPLS] make-explicit-route 11 11_10_9_8_7_4_1000 1005 -1"## Reroute option used to simulate Haskin's model#$ns at 0.3   "[$LSR9 get-module MPLS] reroute-binding   12   -1   1005"## Define link failures#$ns rtmodel-at 0.3 down $LSR5 $LSR6$ns rtmodel-at 0.3 down $LSR6 $LSR3		:$ns rtmodel-at 0.4 down $LSR9 $LSR10## Define when the link have to be restored#$ns rtmodel-at 0.5 up   $LSR5 $LSR6$ns rtmodel-at 0.5 up   $LSR6 $LSR3		:$ns rtmodel-at 0.5 up   $LSR9 $LSR10## Trace results (MPLS/LDP packets) at a given LSR are dumped at the prompt#$ns at 0.1 "[$LSR3 get-module MPLS] trace-mpls"$ns at 0.1 "[$LSR4 get-module MPLS] trace-LDP"## Source stop#$ns at 0.6 "$src0 stop"## Calls procedure "recv-pkts" (and dumps the nr of received packets at the # command prompt#$ns at 0.7 "recv-pkts"## Displays the erb/lib/pft-table of the given LSR at the command prompt#$ns at 0.7 "[$LSR1 get-module MPLS] erb-dump"$ns at 0.7 "[$LSR1 get-module MPLS] lib-dump"$ns at 0.7 "[$LSR1 get-module MPLS] pft-dump"## Calls the procedure "finish"#$ns at 0.7 "finish"## The last line finally starts the simulation#$ns run

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -