📄 mtp.tcl
字号:
# Simulation scenarios for modeling wireless links for transport protocols# Andrei Gurtov# ICSI/University of Helsinki###################################################################### General Parameters#####################################################################set opt(title) zero ;set opt(seed) -1 ;set opt(stop) 100 ;# Stop time.set opt(ecn) 0 ;###################################################################### Topology#####################################################################set opt(type) gprs ;#type of link: #gsm gprs umts geo wlan_duplex wlan_ether wlan_complexset opt(bwUL) 0 ;# speed of congested link in kbpsset opt(bwDL) 0 ;# speed of congested link in kbpsset opt(propUL) 0 ;# uplink delay of congested link in sset opt(propDL) 0 ;# downlink delay of congested link in sset opt(secondDelay) 55 ;# average delay of access links in msset opt(rtts) 1 ;# 1 for a range of delays for the access links.set opt(numWebNodes) 10 ;# number of access links for web traffic set opt(accessLink) 1 ;# 1 for a range of bandwidth for the access links. # NOT IMPLEMENTED YET###################################################################### AQM parameters#####################################################################set opt(minth) 30 ;set opt(maxth) 0 ;set opt(adaptive) 1 ;# 1 for Adaptive RED, 0 for plain RED set opt(queue) DT ;# 0 for DropTail ;# 1 for REDset opt(qsize) 0 ;# Queue size in packets.###################################################################### Traffic generation.#####################################################################set opt(pingInt) 0 ;# ping interval, 0 = offset opt(flows) 1 ;# number of long-lived TCP flowsset opt(shortflows) 0 ;# two short flows in the beginningset opt(flowsRev) 0 ;# number of reverse long-lived TCP flowsset opt(flowsTfrc) 0 ;# number of long-lived TFRC flowsset opt(webers) 0 ;# number of web usersset opt(window) 30 ;# window for long-lived trafficset opt(smallpkt) 10 ;# inverse of fraction of TCP connections # with smaller packetsset opt(reverse) 1 ;# reverse-path trafficset opt(web) 2 ;# number of web sessionsset opt(numPage) 10 ;# number of pages per sessionset opt(pagesize) 10 ;# number of objects per page set opt(objSize) 60 ;# average size of web object in pkts. set opt(shape) 1.05 ;# shape parameter for Pareto distribution of web size # a larger parameter means more small objectsset opt(interpage) 1 ;# interpage parameter for web traffic generator.###################################################################### Plotting statistics.#####################################################################set opt(printRTTs) 0 ;# 1 to print link delaysset opt(quiet) 0 ;# popup anything?set opt(wrap) 90 ;# wrap plots?set opt(srcTrace) is ;# where to plot trafficset opt(dstTrace) bs ;# where to plot traffic###################################################################### Link characteristics.#####################################################################set opt(delayInt) "" ; # interval of delaysset opt(delayLen) "" ; # length of delaysset opt(allocLenUL) "" ; # delay of allocating a channel in sec in uplinkset opt(allocHoldUL) "" ; # idle time after channel is released in uplinkset opt(allocLenDL) "" ; #set opt(allocHoldDL) "" ; ## currently only in downlinkset opt(bwLowLen) 0 ; # length of period of low bandwidth in secset opt(bwHighLen) 0 ; # length of period of high bandwidth in secset opt(bwScale) 0 ; # factor by which bandwidth is decreased# currently only in downlinkset opt(reorderLen) 0 ; # reordering delay in secset opt(reorderRate) 0 ; # per-packet reordering rateset opt(errUnit) packet ; # unit of errors, per packet or per bitset opt(errRateUL) 0 ; # the rate of errors in uplink set opt(errBurstUL) 0 ; # coefficient 0..1 of how bursty errors areset opt(errSlotUL) 0 ; # time in sec of low error periodset opt(errRateDL) 0 ; # set opt(errBurstDL) 0 ; # set opt(errSlotDL) 0set opt(vhoTarget) none ; # to which network handover occursset opt(vhoTime) 30 ; # when handover occursset opt(vhoLoss) 0 ; # fraction of packets lost during handoverset opt(vhoDelay) 0 ; # delay in sec caused by handoverset opt(gprsbuf) 10 ; # buffer size for gprsset opt(wlan_duplex_buf) 10 ; # buffer size for wlan_duplexset opt(nodeDist) 2 ; # distance in meters between WLAN nodes#####################################################################set opt(tfrcFB) 1 ; #number of feedback reports in TFRC per RTTproc getopt {argc argv} { global opt for {set i 0} {$i < $argc} {incr i} { set arg [lindex $argv $i] if {[string range $arg 0 0] != "-"} continue set name [string range $arg 1 end] set opt($name) [lindex $argv [expr $i+1]] puts "opt($name): $opt($name)" }}getopt $argc $argvif {$opt(seed) > -1} { puts "Seeding Random number generator with $opt(seed)\n" ns-random $opt(seed)}Agent/TFRCSink set NumFeedback_ $opt(tfrcFB)#default downlink bandwidth in bpsset bwDL(gsm) 9600set bwDL(gprs) 30000set bwDL(umts) 384000set bwDL(geo) 2000000set bwDL(wlan_duplex) 650000 ;# 650000set bwDL(wlan_ether) 1000000set bwDL(wlan_complex) 1000000#default uplink bandwidth in bpsset bwUL(gsm) 9600set bwUL(gprs) 10000set bwUL(umts) 64000set bwUL(geo) 200000set bwUL(wlan_duplex) 650000#default downlink propagation delay in secondsset propDL(gsm) .500set propDL(gprs) .100set propDL(umts) .150set propDL(geo) .250set propDL(wlan_duplex) .01set propDL(wlan_ether) .01 ;#0.01#default uplink propagation delay in secondsset propUL(gsm) .500set propUL(gprs) .100set propUL(umts) .150set propUL(geo) .250set propUL(wlan_duplex) .01 ;#0.01 0.003#default buffer size in packetsset buf(gsm) 10set buf(gprs) $opt(gprsbuf)set buf(umts) 20set buf(geo) 20set buf(wlan_duplex) $opt(wlan_duplex_buf)set buf(wlan_ether) 10set buf(wlan_complex) 10#topology cellular "access link"# is# /# 3Mb,10ms xMb,yms / 3Mb,50ms# lp--------ms --------- bs# \ 3Mb,50ms# \# x#proc cell_topo {} { global ns nodes qm $ns duplex-link $nodes(bs) $nodes(ms) 1 1 $qm $ns duplex-link $nodes(lp) $nodes(ms) 3Mbps 10ms DropTail $ns duplex-link $nodes(bs) $nodes(is) 3Mbps 50ms DropTail puts "cell topology"}#topology satellite "ISP link"## lp is# \ /# 10Mb,2ms \ 30Mb,250ms / 10Mb,50ms# ms --------- bs# 1Mb,100ms/ \ 10Mb,50ms# / \# y x#proc sat_topo {} { global ns nodes qm $ns duplex-link $nodes(bs) $nodes(ms) 1 1 $qm $ns duplex-link $nodes(lp) $nodes(ms) 3Mbps 10ms DropTail $ns duplex-link $nodes(bs) $nodes(is) 3Mbps 50ms DropTail puts "sat topology"}#topology wlan "ether"## is# /# 100Mb,1ms adsl / 3Mb,50ms# lp --------- ms -------- bs# \ 3Mb,50ms# \# x#proc wlan_topo_simple {} { global qm ns nodes opt bwDL propDL buf switch $opt(type) { wlan_duplex { puts "duplex wlan topology" $ns duplex-link $nodes(ms) $nodes(bs) 1 1 $qm } wlan_ether { puts "ethernet wlan topology" # Mac/Csma/Ca Mac/802_3 set lan [$ns make-lan "$nodes(bs) $nodes(ms)" $bwDL(wlan_ether) $propDL(wlan_ether) LL Queue/$qm Mac/802_3 Channel "Phy/WiredPhy" $buf(wlan_ether)] # [$nodes(bs) queue] set limit_ $buf(wlan_duplex) } } $ns duplex-link $nodes(lp) $nodes(ms) 100Mbps 1ms $qm $ns duplex-link $nodes(bs) $nodes(is) 10Mbps 50ms DropTail}#proc wlan_topo_complex {} { global ns nodes qm opt buf bwDL puts "complex wlan topology"#Configuration for Orinoco 802.11b 11Mbps PC card with ->22.5m range#Phy/WirelessPhy set Pt_ 0.031622777#Phy/WirelessPhy set bandwidth_ 11Mb#Mac/802_11 set dataRate_ 11Mb#Mac/802_11 set basicRate_ 1Mb #for broadcast packets#Phy/WirelessPhy set freq_ 2.472e9 #channel-13.2.472GHz#Phy/WirelessPhy set CPThresh_ 10.0#Phy/WirelessPhy set CSThresh_ 5.011872e-12#Phy/WirelessPhy set L_ 1.0 #Phy/WirelessPhy set RXThresh_ 5.82587e-09 Mac/802_11 set dataRate_ $bwDL(wlan_complex) $ns node-config -addressType hierarchical AddrParams set domain_num_ 2 lappend cluster_num 1 1 AddrParams set cluster_num_ $cluster_num lappend eilastlevel 2 2 AddrParams set nodes_num_ $eilastlevel set topo [new Topography] $topo load_flatgrid 1000 1000 # god needs to know the number of all wireless interfaces MN+BS create-god 2 set nodes(bs) [$ns node {0.0.0}] set nodes(is) [$ns node {0.0.1}] # DSDV DSR TORA AODV $ns node-config -adhocRouting DSDV \ -llType LL \ -macType Mac/802_11 \ -ifqType Queue/$qm \ -ifqLen $buf(wlan_complex) \ -propType "Propagation/TwoRayGround" \ -antType "Antenna/OmniAntenna" \ -phyType "Phy/WirelessPhy" \ -wiredRouting ON \ -channel [new "Channel/WirelessChannel"] \ -agentTrace ON \ -routerTrace OFF \ -topoInstance $topo \ -macTrace OFF \ -movementTrace OFF #create base station set nodes(ms) [$ns node {1.0.0}] $nodes(ms) random-motion 0 $nodes(ms) set X_ $opt(nodeDist) $nodes(ms) set Y_ 0.0 $nodes(ms) set Z_ 0.0 #configure for mobilenodes $ns node-config -wiredRouting OFF set nodes(lp) [$ns node {1.0.1}] $nodes(lp) random-motion 0 $nodes(lp) set X_ 2.0 $nodes(lp) set Y_ 2.0 $nodes(lp) set Z_ 0.0 $nodes(lp) base-station [AddrParams addr2id [$nodes(ms) node-addr]] $ns duplex-link $nodes(ms) $nodes(bs) 10Mbps 30ms DropTail $ns duplex-link $nodes(bs) $nodes(is) 10Mbps 50ms DropTail # establish route set ping9 [$ns create-connection Ping $nodes(is) Ping $nodes(lp) 9] $ping9 oneway# $ns after 0.001 "$ping9 send"}#proc set_link_params {t} { global ns nodes bwUL bwDL propUL propDL buf $ns bandwidth $nodes(bs) $nodes(ms) $bwDL($t) simplex $ns bandwidth $nodes(ms) $nodes(bs) $bwUL($t) simplex $ns delay $nodes(bs) $nodes(ms) $propDL($t) simplex $ns delay $nodes(ms) $nodes(bs) $propDL($t) simplex $ns queue-limit $nodes(bs) $nodes(ms) $buf($t) $ns queue-limit $nodes(ms) $nodes(bs) $buf($t)}#remove-all-packet-headers ; # removes all except common#add-packet-header Flags IP TCP ; # hdrs reqd for TCPif {$opt(queue) == "DT"} { set qm DropTail}if {$opt(queue) == "RED"} { set qm RED}set tcpTick_ 0.01set pktsize 1460Agent/TCP set tcpTick_ $tcpTick_set out $opt(title)proc stop {} { global nodes opt set wrap $opt(wrap) set sid [$nodes($opt(srcTrace)) id] set did [$nodes($opt(dstTrace)) id] if {$opt(srcTrace) == "bs"} { set a "-a out.tr" } else { set a "out.tr" } set GETRC "../../../bin/getrc" set RAW2XG "../../../bin/raw2xg" exec $GETRC -s $sid -d $did -f 0 out.tr | \ $RAW2XG -s 0.01 -m $wrap -r > plot.xgr exec $GETRC -s $did -d $sid -f 0 out.tr | \ $RAW2XG -a -s 0.01 -m $wrap >> plot.xgr exec $GETRC -s $sid -d $did -f 1 out.tr | \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -