ns-intserv.tcl

来自「一款用来进行网络模拟的软件」· TCL 代码 · 共 169 行

TCL
169
字号
## Copyright (c) Xerox Corporation 1997. All rights reserved.## This program is free software; you can redistribute it and/or modify it# under the terms of the GNU General Public License as published by the# Free Software Foundation; either version 2 of the License, or (at your# option) any later version.# # This program is distributed in the hope that it will be useful, but# WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU# General Public License for more details.# # You should have received a copy of the GNU General Public License along# with this program; if not, write to the Free Software Foundation, Inc.,# 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA# # Linking this file statically or dynamically with other modules is making# a combined work based on this file.  Thus, the terms and conditions of# the GNU General Public License cover the whole combination.# # In addition, as a special exception, the copyright holders of this file# give you permission to combine this file with free software programs or# libraries that are released under the GNU LGPL and with code included in# the standard release of ns-2 under the Apache 2.0 license or under# otherwise-compatible licenses with advertising requirements (or modified# versions of such code, with unchanged license).  You may copy and# distribute such a system following the terms of the GNU GPL for this# file and the licenses of the other code concerned, provided that you# include the source code of that other code when and as the GNU GPL# requires distribution of source code.# # Note that people who make modified versions of this file are not# obligated to grant this special exception for their modified versions;# it is their choice whether to do so.  The GNU General Public License# gives permission to release a modified version without this exception;# this exception also makes it possible to release a modified version# which carries forward this exception.## $Header: /cvsroot/nsnam/ns-2/tcl/lib/ns-intserv.tcl,v 1.12 2005/08/26 05:05:29 tomh Exp $#defaultsQueue/SimpleIntServ set qlimit1_ 50Queue/SimpleIntServ set qlimit0_ 50Agent/SA set rate_ 0Agent/SA set bucket_ 0Agent/SA set packetSize_ 210ADC set backoff_ trueADC set dobump_ trueADC/MS set backoff_ falseADC set src_ -1ADC set dst_ -1ADC/MS set utilization_ 0.95ADC/MSPK set utilization_ 0.95ADC/Param set utilization_ 1.0ADC/HB set epsilon_ 0.7ADC/ACTO set s_ 0.002ADC/ACTO set dobump_ falseADC/ACTP set s_ 0.002ADC/ACTP set dobump_ falseEst/TimeWindow set T_ 3Est/ExpAvg set w_ 0.125Est set period_ 0.5ADC set bandwidth_ 0SALink set src_ -1SALink set dst_ -1Est set src_ -1Est set dst_ -1Class IntServLink -superclass  SimpleLinkIntServLink instproc init { src dst bw delay q arg {lltype "DelayLink"} } {		$self next $src $dst $bw $delay $q $lltype ; # SimpleLink ctor	$self instvar queue_ link_	$self instvar measclassifier_ signalmod_ adc_ est_ measmod_		set ns_ [Simulator instance]		#Create a suitable adc unit from larg with suitable params	set adctype [lindex $arg 3]	set adc_ [new ADC/$adctype]	$adc_ set bandwidth_ $bw	$adc_ set src_ [$src id]	$adc_ set dst_ [$dst id]		if { [lindex $arg 5] == "CL" } {		#Create a suitable est unit 		set esttype [lindex $arg 4]		set est_ [new Est/$esttype]		$est_ set src_ [$src id]		$est_ set dst_ [$dst id]		$adc_ attach-est $est_ 1				#Create a Measurement Module 		set measmod_ [new MeasureMod]		$measmod_ target $queue_		$adc_ attach-measmod $measmod_ 1	}		#Create the signalmodule	set signaltype [lindex $arg 2]	set signalmod_ [new $signaltype]	$signalmod_ set src_ [$src id]	$signalmod_ set dst_ [$dst id]	$signalmod_ attach-adc $adc_	$self add-to-head $signalmod_	#Create a measurement classifier to decide which packets to measure	$self create-meas-classifier	$signalmod_ target $measclassifier_		#Schedule to start the admission control object	$ns_ at 0.0 "$adc_ start"}IntServLink instproc buffersize { b } {	$self instvar est_ adc_	$est_ setbuf [set b]	$adc_ setbuf [set b]}#measClassifier is an instance of Classifier/Hash/Flow#for right now# FlowId 0 -> Best Effort traffic# FlowId non-zero -> Int Serv traffic IntServLink instproc create-meas-classifier {} {	$self instvar measclassifier_ measmod_ link_ queue_		set measclassifier_ [new Classifier/Hash/Fid 1 ]	#set slots for measclassifier	set slot [$measclassifier_ installNext $queue_]	$measclassifier_ set-hash auto 0 0 0 $slot 		#Currently measure all flows with fid.ne.0 alone	set slot [$measclassifier_ installNext $measmod_]	$measclassifier_ set default_ 1}IntServLink instproc trace-sig { f } {	$self instvar signalmod_ est_ adc_	$signalmod_ attach $f	$est_ attach $f	$adc_ attach $f	set ns [Simulator instance]	$ns at 0.0 "$signalmod_ add-trace"}#Helper  function to output link utilization and bw estimateIntServLink instproc trace-util { interval {f ""}} {	$self instvar est_	set ns [Simulator instance]	if { $f != "" } {		puts $f "[$ns now] [$est_ load-est] [$est_ link-utlzn]" 	}	$ns at [expr [$ns now]+$interval] "$self trace-util $interval $f" }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?