[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ns] Fairness in NS




Subsequent to writing my previous message I tried swapping around the
sources that implemented ECN whilst still ensuring that only to enabled
it.

I found that results were random. Sometimes the ECN disabled source did
better and sometimes it did worse.

It all lookes most inconclusive.  I guess that either RED gateways are
just randomly unfair or NS-2 isn't the right tool for evaluating this
situation.

Any comments?

Thanks again
Joshua


On Thu, 27 Sep 2001, jmentz wrote:
> 
> Hi, I am trying to running a simulation to evaluate the fairness of RED
> gateways when 2 of the three TCP's have ECN enabled.
> 
> I am finding that the source without ECN is getting far more throughput
> than the ECN enabled sources.  Further, the non-ECN source gets only 3
> packets dropped whilst the ECN sources get the E bit (congestion
> experienced) set at least 10 times each in the simulation.
> 
> I have analysed red.cc but still can't find the cause of this.  According
> to red.cc, whether a source is ECN capable shouldn't affect the rate at
> which its packets are dropped/marked.
> 
> I would be grateful for any comments. And have included my code for
> reference.
> 
> Thank you
> Joshua Mentz
> 
> #Create a simulator object
> set ns [new Simulator]
> 
> #Define different colors of data flows for NAM
> $ns color 1 blue
> $ns color 2 red
> $ns color 3 green
> 
> 
> #Open the NAM trace file and the queue trace file   
> set nf [open sim1.nam w]
> $ns namtrace-all $nf
> 
> 
> #--------------Define a 'finish' procedure---------------------
> proc finish {} {
>         	global ns nf f 
>         	$ns flush-trace
>         	#Close the NAM trace file
>         	close $f
> 		close $nf
>         	#Execute NAM on the trace file
>         	exec nam.exe sim1.nam &		
>         	exit 0				
>        	       }
> 
> #Create four nodes
> set n0 [$ns node]
> set n1 [$ns node]
> set n2 [$ns node]
> set n3 [$ns node]
> set n4 [$ns node]
> 
> 
> #-----------CLASS VARIABLE MODIFICATIONS---------------------------
> 
> Application/Traffic/Exponential set packetSize_ 1500
> Application/Traffic/Exponential set burst_time_ 50ms
> Application/Traffic/Exponential set idle_time_ 2ms
> Application/Traffic/Exponential set rate_ 100M
> 
> Agent/TCP/Sack1 set window_ 30
> #Agent/TCP/Sack1 set ecn_ true	
> Agent/TCP/Sack1 set packetSize_ 552
> Queue/RED set setbit_ true
> 
> 
> Queue/RED set thresh_ 10
> Queue/RED set maxthresh_ 20
> Queue/RED set q_weight_ 0.01
> Queue/RED set linterm_ 40
> Queue/RED set wait_ true
> Queue/RED set gentle_ true
> Queue/RED set drop_tail_ false
> 
> #Create links between the nodes
> $ns duplex-link $n0 $n3 6.312Mb 4ms DropTail
> $ns duplex-link $n1 $n3 6.312Mb 4ms DropTail
> $ns duplex-link $n2 $n3 6.312Mb 4ms DropTail
> $ns duplex-link $n3 $n4 6.312Mb 10ms RED
> 
>    
> #Set Queue Size of link (n3-n4) to 40 packets
> $ns queue-limit $n3 $n4 40
> 
> 
> #Give node position (for NAM) 
> $ns duplex-link-op $n0 $n3 orient right-down
> $ns duplex-link-op $n1 $n3 orient right
> $ns duplex-link-op $n2 $n3 orient right-up
> $ns duplex-link-op $n3 $n4 orient right
> 
> #Monitor the queue for link (n3-n4). (for NAM)
> $ns duplex-link-op $n3 $n4 queuePos 0.5
> 
> #create queue trace file
> set f [open sim1Q.tr w]
> $ns trace-queue $n3 $n4 $f
> 
> #---------TCP connection 0-------------------------------
> 
> set tcp0 [new Agent/TCP/Sack1]			
> $ns attach-agent $n0 $tcp0
> $tcp0 set ecn_ true
> 
> set sink [new Agent/TCPSink/Sack1]
> $ns attach-agent $n4 $sink
> $ns connect $tcp0 $sink
> $tcp0 set fid_ 0
> 
> 
> set traf0 [new Application/Traffic/Exponential]
> $traf0 attach-agent $tcp0
> #$traf0 set interval_ 0.001
> 
> #---------TCP connection 1-------------------------------
> set tcp1 [new Agent/TCP/Sack1]			
> $ns attach-agent $n1 $tcp1
> $tcp1 set ecn_ false
> 
> set sink [new Agent/TCPSink/Sack1]
> $ns attach-agent $n4 $sink
> $ns connect $tcp1 $sink
> $tcp1 set fid_ 1
> 
> set traf1 [new Application/Traffic/Exponential]
> $traf1 attach-agent $tcp1
> 
> #---------TCP connection 2-------------------------------
> set tcp2 [new Agent/TCP/Sack1]			
> $ns attach-agent $n2 $tcp2
> $tcp2 set ecn_ true
> 
> set sink [new Agent/TCPSink/Sack1]
> $ns attach-agent $n4 $sink
> $ns connect $tcp2 $sink
> $tcp2 set fid_ 2
> 
> set traf2 [new Application/Traffic/Exponential]
> $traf2 attach-agent $tcp2
> 
> 
> 
> #-----------------Schedule events----------------------------
> 
> $ns at 0.0 "$traf0 start"
> $ns at 0.0 "$traf1 start"
> $ns at 0.0 "$traf2 start"
> $ns at 4.0 "$traf0 stop"
> $ns at 4.0 "$traf1 stop"
> $ns at 4.0 "$traf2 stop"
> 
> $ns at 4.2 "finish"
> 
> #Print CBR packet size and interval
> #puts "traf rate = [$traf0 set rate_]"
> #puts "traf packet size = [$traf0 set packet_size_]"
> #puts "traf interval = [$traf0 set interval_]"
> 
> #Run the simulation
> $ns run
> 
> 
> 
>