gov.nist.antd.diffserv
Class DiffServPacketScheduler

java.lang.Object
  |
  +--gov.nist.antd.diffserv.DiffServPacketScheduler
Direct Known Subclasses:
PriorityScheduler, RoundRobinScheduler, WFQScheduler

public abstract class DiffServPacketScheduler
extends java.lang.Object

DiffServPacketScheduler is the basic framework of DiffServ Packet Scheduler (PriorityScheduler, RoundRobinScheduler, and WFQScheduler). Each DiffServ packet scheduler maintains relative parameters for priority scheduling, weight-based scheduling, and hybrid scheduling of two stage scheduling.
In priority-based scheduling the higher priority packet flow exclusively use the bandwidth regardless the of the lower-priority queue status. In weighted scheduling, weight for each queue is allocated, and the relative portion of the bandwidth is allocated to the queue according to its weight. DiffServPacketScheduler also configures the DataLinkMapping of the dispatched DiffServ packet from queue. Currently, MPLS LSP or usual IP packet forwarding can be configured as DataLink for DiffServ packet flow.

 =========================
 Example of DML definition
 =========================
  	# DiffServ Packet Scheduler Configuration
  	PacketScheduler [
   		name Priority use gov.nist.antd.DiffServ.PriorityScheduler
   		ClassType [ CT EF CT AF4 CT BF ]
   		_find .dictionary.DiffServ_Parameters.TrafficShaper
   		DataLink_Mapping[
   			MPLS_LSP [
   				pathID DiffServ-110-111-Priority
   				SetUpTime 13
   				Priority 6
   				_find .dictionary.DiffServ_Parameters.TrafficParameters
				NodeList [
					Node [ ID 110 ]	Node [ ID 120 ]	Node [ ID 220 ]
					Node [ ID 221 ] Node [ ID 121 ] Node [ ID 111 ]
				]
			]
		]
  	] 
 

 This class was developed at the National Institute of Standards and
 Technology by employees of the Federal Government in the course of
 their official duties. Pursuant to title 17 Section 105 of the United
 States Code this software is not subject to copyright protection and
 is in the public domain.
 NIST assumes no responsibility whatsoever for its use by other parties,
 and makes no guarantees, expressed or implied, about its quality,
 reliability, or any other characteristic.
 
We would appreciate acknowledgement if the software is used.
NIST ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION AND DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.

Author:
Young-Tak Kim
, Eun-Hyuk Lim , borchert , rouil

Nested Class Summary
 class DiffServPacketScheduler.SchedulingQueueEntry
          Inner class SchedulingQueueEntry
 
Field Summary
 DiffServPacketScheduler childScheduler
          Field childScheduler - XXX
 boolean debug
          Field debug - XXX
 int DiffServFlowID
          Field DiffServFlowID - XXX
 DiffServTrafficConditioner DSTConditioner
          Field DSTConditioner - XXX
 DiffServFlowProfile FlowProfile
          Field FlowProfile - XXX
 IP ipsess
          Field ipsess - XXX
 boolean isActive
          Field isActive - XXX
 boolean isMPLS
          Field isMPLS - XXX
 boolean isPrimary
          Field isPrimary - XXX
 boolean isWFQScheduler
           
 Host localHost
          Field localHost - XXX
 MPLSMgmt mplsmgmt
          Field mplsmgmt - XXX
 java.util.Vector MPLSSignalingInfoList
          Field MPLSSignalingInfoList - XXX
 java.lang.String name
          Field name - XXX
 double nextSchedulingTime
          Field nextSchedulingTime - XXX
 DiffServPacketScheduler parentScheduler
          Field parentScheduler - XXX
 DiffServPacketScheduler.SchedulingQueueEntry parentScheulerInfo
          Field parentScheulerInfo - XXX
 double SchedulingBurstSize
          Field SchedulingBurstSize - XXX
 java.util.Vector SchedulingQueueTable
          Field SchedulingQueueTable - XXX
 double SchedulingRate
          Field SchedulingRate - XXX
 double SchedulingRateForSecondary
          Field SchedulingRateForSecondary - XXX
 java.util.Vector SchedulingRateList
          Field SchedulingRateList - XXX
 Timer SchedulingTimer
          Field SchedulingTimer - XXX
 S_CRLDP sCRLDPInfo
          Field sCRLDPInfo - XXX
 double SumWeight
          Field SumWeight - XXX
 java.lang.String useClass
          Field useClass - XXX
 
Constructor Summary
DiffServPacketScheduler()
           
 
Method Summary
 void ActivateQueue(DiffServPacketScheduler dsps)
          Method ActivateQueue
 void config(com.renesys.raceway.DML.Configuration cfg)
          Method config
 void configClassType(com.renesys.raceway.DML.Configuration cfg)
          Method configClassType
 void configDataLinkMapping(com.renesys.raceway.DML.Configuration cfg)
          Method configDataLinkMapping
 void configSecondaryScheduler(com.renesys.raceway.DML.Configuration cfg)
          Method configSecondaryScheduler
 void configTrafficShpaer(com.renesys.raceway.DML.Configuration cfg)
          Method configTrafficShpaer
 void createSchedulingTimer()
          Method createSchedulingTimer
 void DeActivateQueue()
          Method DeActivateQueue
 java.lang.String getClassTypeInfo()
          Method getClassTypeInfo
 void holdingScheduler()
          Method holdingScheduler
 void init(int flowid, DiffServTrafficConditioner dstc)
          Method init
 void initSecondary(DiffServPacketScheduler dsps)
          Method initSecondary
 void LSPEstablish()
          Method LSPEstablish
 boolean PacketForwarding(ProtocolMessage message)
          Method PacketForwarding
abstract  void Scheduling()
          Method Scheduling.
abstract  MessageWrapper SecondaryScheduling()
          Method SecondaryScheduling
 void setLSPReleaseTimer(double endtime)
          Method setLSPReleaseTimer
 void setLSPStartTimer(double starttime)
          Method setLSPStartTimer
 void setNextSchedulingTimer(double waittime)
          Method setNextSchedulingTimer
 void setSchedulingInfoToChildScheduler(DiffServPacketScheduler.SchedulingQueueEntry sinfo)
          Method setSchedulingInfoToChildScheduler
 void setSchedulingRate()
          Method setSchedulingRate
 void setSchedulingRate(double rate)
          Method setSchedulingRate
 void setupLSPandQueue()
          Method setupLSPandQueue
 void setWFQRx(double newRate)
          Short concise description.
 void startSchedule()
          Method startSchedule
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DSTConditioner

public DiffServTrafficConditioner DSTConditioner
Field DSTConditioner - XXX


debug

public boolean debug
Field debug - XXX


localHost

public Host localHost
Field localHost - XXX


isMPLS

public boolean isMPLS
Field isMPLS - XXX


mplsmgmt

public MPLSMgmt mplsmgmt
Field mplsmgmt - XXX


MPLSSignalingInfoList

public java.util.Vector MPLSSignalingInfoList
Field MPLSSignalingInfoList - XXX


sCRLDPInfo

public S_CRLDP sCRLDPInfo
Field sCRLDPInfo - XXX


ipsess

public IP ipsess
Field ipsess - XXX


DiffServFlowID

public int DiffServFlowID
Field DiffServFlowID - XXX


FlowProfile

public DiffServFlowProfile FlowProfile
Field FlowProfile - XXX


name

public java.lang.String name
Field name - XXX


useClass

public java.lang.String useClass
Field useClass - XXX


isPrimary

public boolean isPrimary
Field isPrimary - XXX


SchedulingRateList

public java.util.Vector SchedulingRateList
Field SchedulingRateList - XXX


SchedulingRate

public double SchedulingRate
Field SchedulingRate - XXX


SchedulingBurstSize

public double SchedulingBurstSize
Field SchedulingBurstSize - XXX


SchedulingTimer

public Timer SchedulingTimer
Field SchedulingTimer - XXX


SchedulingRateForSecondary

public double SchedulingRateForSecondary
Field SchedulingRateForSecondary - XXX


isActive

public boolean isActive
Field isActive - XXX


SchedulingQueueTable

public java.util.Vector SchedulingQueueTable
Field SchedulingQueueTable - XXX


SumWeight

public double SumWeight
Field SumWeight - XXX


isWFQScheduler

public boolean isWFQScheduler

nextSchedulingTime

public double nextSchedulingTime
Field nextSchedulingTime - XXX


parentScheduler

public DiffServPacketScheduler parentScheduler
Field parentScheduler - XXX


parentScheulerInfo

public DiffServPacketScheduler.SchedulingQueueEntry parentScheulerInfo
Field parentScheulerInfo - XXX


childScheduler

public DiffServPacketScheduler childScheduler
Field childScheduler - XXX

Constructor Detail

DiffServPacketScheduler

public DiffServPacketScheduler()
Method Detail

init

public void init(int flowid,
                 DiffServTrafficConditioner dstc)
Method init

Parameters:
flowid - - XXX
dstc - - XXX

initSecondary

public void initSecondary(DiffServPacketScheduler dsps)
Method initSecondary

Parameters:
dsps - - XXX

createSchedulingTimer

public void createSchedulingTimer()
Method createSchedulingTimer


setSchedulingInfoToChildScheduler

public void setSchedulingInfoToChildScheduler(DiffServPacketScheduler.SchedulingQueueEntry sinfo)
Method setSchedulingInfoToChildScheduler

Parameters:
sinfo - - XXX

config

public void config(com.renesys.raceway.DML.Configuration cfg)
            throws com.renesys.raceway.DML.configException
Method config

Parameters:
cfg - - XXX
Throws:
com.renesys.raceway.DML.configException

configClassType

public void configClassType(com.renesys.raceway.DML.Configuration cfg)
                     throws com.renesys.raceway.DML.configException
Method configClassType

Parameters:
cfg - - XXX
Throws:
com.renesys.raceway.DML.configException

configSecondaryScheduler

public void configSecondaryScheduler(com.renesys.raceway.DML.Configuration cfg)
                              throws com.renesys.raceway.DML.configException
Method configSecondaryScheduler

Parameters:
cfg - - XXX
Throws:
com.renesys.raceway.DML.configException

configTrafficShpaer

public void configTrafficShpaer(com.renesys.raceway.DML.Configuration cfg)
                         throws com.renesys.raceway.DML.configException
Method configTrafficShpaer
 TrafficShaper [
      MeanRate %d  # This is starting value

      TrafficShaperInfo [
              Time %d
              MeanRate %d
      ]
              :
              :
      TrafficShaperInfo [
              Time %d
              MeanRate %d
      ]
 ]

Parameters:
cfg - - XXX
Throws:
com.renesys.raceway.DML.configException

setSchedulingRate

public void setSchedulingRate()
Method setSchedulingRate


setSchedulingRate

public void setSchedulingRate(double rate)
Method setSchedulingRate

Parameters:
rate - - XXX

setWFQRx

public void setWFQRx(double newRate)
Short concise description.

Parameters:
newRate - description.

configDataLinkMapping

public void configDataLinkMapping(com.renesys.raceway.DML.Configuration cfg)
                           throws com.renesys.raceway.DML.configException
Method configDataLinkMapping

Parameters:
cfg - - XXX
Throws:
com.renesys.raceway.DML.configException

startSchedule

public void startSchedule()
Method startSchedule


holdingScheduler

public void holdingScheduler()
Method holdingScheduler


PacketForwarding

public boolean PacketForwarding(ProtocolMessage message)
Method PacketForwarding

Parameters:
message - - XXX
Returns:
boolean - XXX

setNextSchedulingTimer

public void setNextSchedulingTimer(double waittime)
Method setNextSchedulingTimer

Parameters:
waittime - - XXX

setLSPStartTimer

public void setLSPStartTimer(double starttime)
Method setLSPStartTimer

Parameters:
starttime - - XXX

setLSPReleaseTimer

public void setLSPReleaseTimer(double endtime)
Method setLSPReleaseTimer

Parameters:
endtime - - XXX

setupLSPandQueue

public void setupLSPandQueue()
Method setupLSPandQueue


LSPEstablish

public void LSPEstablish()
Method LSPEstablish


ActivateQueue

public void ActivateQueue(DiffServPacketScheduler dsps)
Method ActivateQueue

Parameters:
dsps - - XXX

DeActivateQueue

public void DeActivateQueue()
Method DeActivateQueue


getClassTypeInfo

public java.lang.String getClassTypeInfo()
Method getClassTypeInfo

Returns:
String - XXX

Scheduling

public abstract void Scheduling()
Method Scheduling.


SecondaryScheduling

public abstract MessageWrapper SecondaryScheduling()
Method SecondaryScheduling

Returns:
The scheduled message wrapper