Hello all,
I am simulating MPLS on ns2. i used the following code but didnot get
the results.
please if anyone can help me..
set ns [new Simulator]
set nf [open out.nam w]
$ns namtrace-all $nf
#set tf [open out.tr w]
#$ns trace-all $tf
set Node0 [$ns node]
set Node1 [$ns node]
$ns node-config -MPLS ON
set LSR2 [$ns node]
set LSR3 [$ns node]
set LSR4 [$ns node]
set LSR5 [$ns node]
set LSR6 [$ns node]
set LSR7 [$ns node]
set LSR8 [$ns node]
$ns node-config -MPLS OFF
set Node9 [$ns node]
set Node10 [$ns node]
$ns duplex-link $Node0 $LSR2 1Mb 10ms DropTail
$ns duplex-link $Node1 $LSR2 1Mb 10ms DropTail
$ns duplex-link $LSR2 $LSR3 1Mb 10ms DropTail
$ns duplex-link $LSR3 $LSR4 1Mb 10ms DropTail
$ns duplex-link $LSR4 $LSR8 1Mb 10ms DropTail
$ns duplex-link $LSR2 $LSR5 1Mb 10ms DropTail
$ns duplex-link $LSR5 $LSR6 1Mb 10ms DropTail
$ns duplex-link $LSR5 $LSR4 1Mb 10ms DropTail
$ns duplex-link $LSR6 $LSR7 1Mb 10ms DropTail
$ns duplex-link $LSR6 $LSR8 1Mb 10ms DropTail
$ns duplex-link $LSR7 $LSR8 1Mb 10ms DropTail
$ns duplex-link $LSR7 $Node9 1Mb 10ms DropTail
$ns duplex-link $LSR8 $Node10 1Mb 10ms DropTail
#
# configure ldp agents on all mpls nodes
#
for {set i 2} {$i 9} {incr i} {
for {set j [expr $i+1]} {$j 9} {incr j} {
set a LSR$i
set b LSR$j
eval $ns LDP-peer $$a $$b
}
}
[$LSR2 get-module MPLS] enable-control-driven
[$LSR3 get-module MPLS] enable-control-driven
[$LSR4 get-module MPLS] enable-control-driven
[$LSR5 get-module MPLS] enable-control-driven
[$LSR6 get-module MPLS] enable-control-driven
[$LSR7 get-module MPLS] enable-control-driven
[$LSR8 get-module MPLS] enable-control-driven
#
# set ldp-message clolr
#
$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
#$ns enable-data-driven
#$ns enable-ordered-control
#
# make agent to send packets
#
set Src0 [new Application/Traffic/CBR]
set udp0 [new Agent/UDP]
$Src0 attach-agent $udp0
$ns attach-agent $Node0 $udp0
$Src0 set packetSize 500
$Src0 set interval 0.010
set Src1 [new Application/Traffic/CBR]
set udp1 [new Agent/UDP]
$Src1 attach-agent $udp1
$ns attach-agent $Node1 $udp1
$Src1 set packetSize 500
$Src1 set interval 0.010
set Dst0 [new Agent/Null]
$ns attach-agent $Node9 $Dst0
set Dst1 [new Agent/Null]
$ns attach-agent $Node10 $Dst1
$ns connect $udp0 $Dst0
$ns connect $udp1 $Dst1
$ns at 0.1 $Src0 start
$ns at 0.1 $Src1 start
for {set i 2} {$i 9} {incr i} {
set a LSR$i
set m [eval $$a get-module MPLS]
eval set LSR$i $m
}
$ns at 0.2 $LSR7 ldp-trigger-by-withdraw 9 -1
$ns at 0.2 $LSR8 ldp-trigger-by-withdraw 10 -1
$ns at 0.3 $LSR2 flow-aggregation 9 -1 6 -1
$ns at 0.3 $LSR2 flow-aggregation 10 -1 6 -1
$ns at 0.5 $LSR6 ldp-trigger-by-withdraw 6 -1
$ns at 0.7 $Src1 stop
$ns at 0.7 $LSR2 make-explicit-route 7 5_4_8_6_7 3000 -1
$ns at 0.9 $LSR2 flow-erlsp-install 9 -1 3000
$ns at 1.1 $LSR2 ldp-trigger-by-release 7 3000
$ns at 1.2 $LSR4 make-explicit-route 8 4_5_6_8 3500 -1
$ns at 1.4 $LSR2 make-explicit-route 7 2_3_4_3500_7 3600 -1
$ns at 1.6 $LSR2 flow-erlsp-install 9 -1 3600
$ns at 2.0 $Src0 stop
$ns at 2.1 $LSR2 pft-dump
$ns at 2.1 $LSR2 erb-dump
$ns at 2.1 $LSR2 lib-dump
$ns at 2.1 $LSR3 pft-dump
$ns at 2.1 $LSR3 erb-dump
$ns at 2.1 $LSR3 lib-dump
$ns at 2.1 $LSR4 pft-dump
$ns at 2.1 $LSR4 erb-dump
$ns at 2.1 $LSR4 lib-dump
$ns at 2.1 $LSR5 pft-dump
$ns at 2.1 $LSR5 erb-dump
$ns at 2.1 $LSR5 lib-dump
$ns at 2.1 $LSR6 pft-dump
$ns at 2.1 $LSR6 erb-dump
$ns at 2.1 $LSR6 lib-dump
$ns at 2.1 $LSR7 pft-dump
$ns at 2.1 $LSR7 erb-dump
$ns at 2.1 $LSR7 lib-dump
$ns at 2.1 $LSR8 pft-dump
$ns at 2.1 $LSR8 erb-dump
$ns at 2.1 $LSR8 lib-dump
#define 'finish' procedure
proc finish {} {
global ns nf
$ns flush trace
#close the trace files
close $nf
#close $tf