[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
>
>
>
>