Pareto Distribution

Applications and transport agent
API
695430050
許庭瑋
Outline
Application in NS
Class Application
Attaching applications
Class TrafficGenerator
Simulated Applications
Application in NS
On top of transport agents
Two basic types
Traffic generators
Simulated applications
Application in NS
Class Application
class Application : public TclObject {
public:
Application();
virtual void send(int nbytes);
virtual void recv(int nbytes);
virtual void resume();
protected:
int command(int argc, const char*const* argv);
virtual void start();
virtual void stop();
Agent *agent_;
int enableRecv_; // call OTcl recv or not
int enableResume_; // call OTcl resume or not
};
*see trafgen.cc/.h
Attaching transport agent
set src [new Agent/TCP/FullTcp]
set sink [new Agent/TCP/FullTcp]
$ns_ attach-agent $node_(s1) $src
$ns_ attach-agent $node_(k1) $sink
$ns_ connect $src $sink
Attaching applications
Use attach-agent function
set ftp1 [new Application/FTP]
$ftp1 attach-agent $src
Set agent_
Call attachApp()
[agent.cc]
An alternative
Set ftp1 [$src attach-app FTP]
System calls to use transport agent
send(int nbytes)
send nbytes of data to peer
if nbytes==-1 , infinite send
sendmsg(int nbytes, const char* flags = 0)
Identical to send(int bytes)
Additional string flags
MSG_EOF
System calls to use transport agent
 close()
Requests the agent to close the connection
(only applicable for TCP)
 listen()
Requests the agent to listen for new
connections (only applicable for Full TCP)
 set_pkttype(int pkttype)
This function sets the type_ variable in the
agent to pkttype.
Agent upcalls to application
In NS, no actual data transfering between
applications
Agents upcalls application to notify events
Incoming number of bytes of data
Two types of upcalls
recv(int nbytes)
resume()
Done()
All data has been transferred, and ACKed
Done does nothing by default
An example
set myagent [new Agent/TCP/FullTcp]
$myagent proc done
... code you want ...
Example for FTP
set src [new Agent/TCP/FullTcp]
set sink [new Agent/TCP/FullTcp]
$ns_ attach-agent $node_(s1) $src
$ns_ attach-agent $node_(k1) $sink
$ns_ connect $src $sink
# set up TCP-level connections
$sink listen;
$src set window_ 100
set ftp1 [new Application/FTP]
$ftp1 attach-agent $src
$ns_ at 0.0 "$ftp1 start"
Class TrafficGenerator
class TrafficGenerator : public Application {
public:
TrafficGenerator();
virtual double next_interval(int &) = 0;
virtual void init() {}
virtual double interval() { return 0; }
virtual int on() { return 0; }
virtual void timeout();
virtual void recv() {}
virtual void resume() {}
protected:
virtual void start();
virtual void stop();
double nextPkttime_;
int size_;
int running_;
TrafficTimer timer_;
};
Class TrafficGenerator
Four classes derived from
TrafficGenerator
EXPOO_Traffic
Exponential on/off duration
Fixed rate,packet size
POO_Traffic
Pareto on/off distribution
CBR_Traffic
TrafficTrace
Generates traffic according to trace file
Exponential distribution
Exponential On/Off
 packetSize_
 the constant size of the
packets generated
 burst_time_
 the average “on” time for
the generator
 idle_time_
 the average “off” time for
the generator
 rate_
 the sending rate during
“on” times
 Next_packet_time=tr_time+idle
_time
 Example:
set e [new
Application/Traffic/Expon
ential]
$e set packetSize_ 210
$e set burst_time_ 500ms
$e set idle_time_ 500ms
$e set rate_ 100k
Pareto Distribution
α,β>0
Shape in NS is β
Pareto On/Off
 packetSize_
 the constant size of the
packets generated
 burst_time_
 the average "on" time for the
generator
 idle_time_
 the average "off" time for the
generator
 rate_
 the sending rate during "on"
times
 shape_
 the "shape" parameter used
by the pareto distribution
 Example:
set p [new
Application/Traffic/Pareto]
$p set packetSize_ 210
$p set burst_time_ 500ms
$p set idle_time_ 500ms
$p set rate_ 200k
$p set shape_ 1.5
CBR
 rate_
 the sending rate
 interval_ (Optional)
 interval between packets
 packetSize_
 the constant size of the
packets generated
 random_ flag
 indicating whether or not to
introduce random “noise” in
the scheduled departure times
(default isoff)
 maxpkts_
 the maximum number of
packets to send (default is
(228)
 Example:
 set e [new
Application/Traffic/CB
R]
 $e set packetSize_ 48
 $e set rate_ 64Kb
 $e set random_ 1
Traffic Trace
 Enable multiple
Traffic/Trace associated
with one trace file
 2 32-bit fields in trace file
 Next packet generates
time (ms)
 Length of next packet
(bytes)
 Example:
set tfile [new Tracefile]
$tfile filename exampletrace
set t1 [new
Application/Traffic/Trace]
$t1 attach-tracefile $tfile
set t2 [new
Application/Traffic/Trace]
$t2 attach-tracefile $tfile
Random variable in NS
Pareto Distribution
Constant Distribution
Uniform Distribution
Exponential Distribution
HyperExponential Distribution
Pareto Distribution
# Pareto 分佈,柏拉圖分佈
set r1 [new RandomVariable/Pareto]
$r1 use-rng $rng
$r1 set avg_ 10.0
$r1 set shape_ 1.2
for {set i 1} {$i<=3} {incr i} {
puts [$r1 value]
}
Constant Distribution
 set r2 [new RandomVariable/Constant]
$r2 use-rng $rng
$r2 set avg_ 5
for {set i 1} {$i<=3} {incr i} {
puts [$r2 value]
}
Uniform Distribution
 Set min & max
 set r3 [new RandomVariable/Uniform]
$r3 use-rng $rng
$r3 set min_ 0.0
$r3 set max_ 10.0
for {set i 1} {$i<=3} {incr i} {
puts [$r3 value]
}

Exponential Distribution
set r4 [new RandomVariable/Exponential]
$r4 use-rng $rng
$r4 set avg_ 5.0
for {set i 1} {$i<=3} {incr i} {
puts [$r4 value]
}
Example-Exponential traffic
set src [new Agent/UDP]
set sink [new Agent/UDP]
$ns_ attach-agent $node_(s1) $src
$ns_ attach-agent $node_(k1) $sink
$ns_ connect $src $sink
set e [new Application/Traffic/Exponential]
$e attach-agent $src
$e set packetSize_ 210
$e set burst_time_ 500ms
$e set idle_time_ 500ms
$e set rate_ 100k
$ns_ at 0.0 "$e start"
Simulated applications
Two simulated applications : FTP & Telnet
FTP methods:
attach-agent
start
stop
produce n
producemore n
send n
Simulated applications
Telnet
Packet inter-packet time:
Chose from exponential distribution , with
average=interval_ ; (if interval not zero)
Chose according tcplib distribution (see ns2.28\tcp\tcplib-telnet.cc)
Example
 CBR + FTP
 Node 1 CBR
 Node 2 FTP