gov.nist.antd.mpls.mgmt.mpls_interface
Class MPLSPacketScheduler

java.lang.Object
  |
  +--gov.nist.antd.mpls.mgmt.mpls_interface.MPLSPacketScheduler
Direct Known Subclasses:
PriorityScheduler, RoundRobinScheduler, WFQScheduler

public abstract class MPLSPacketScheduler
extends java.lang.Object

The DiffServPacketScheduler is the basic framework of MPLS Packet Scheduler (PriorityScheduler, RoundRobinScheduler, and WFQScheduler). Each MPLS 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.

 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:
EunHyuk Lim (ehlim@antd.nist.gov, othree28@hotmail.com)
, borchert , Chul Kim

Field Summary
 MPLSPacketScheduler childScheduler
          Field childScheduler - Child Scheduler
 boolean debug
          Field debug - True if debug
 java.lang.String hostID
          Field HostID - Local Host ID
 boolean isActive
          Field isActive - True if it is active
 boolean isPrimary
          Field isPrimary - True it is primary scheduler
 Host localHost
          Field localHost - Local Host Object
 MPLSInterfaceInfo mplsInterfaceInfo
          Field mplsinterfaceinfo - MPLS Interface Information
 double nextSchedulingTime
          Field nextSchedulingTime - Next Scheduling Time
 MPLSPacketScheduler parentScheduler
          Field parentScheduler - Parent Scheduler
 double schedulingBurstSize
          Field SchedulingBurstSize - Scheduling Burst Size
 java.util.Vector schedulingQueueTable
          Field SchedulingQueueTable - Scheduling Queue Table
 double schedulingRate
          Field SchedulingRate - Scheduling Rate
 Timer schedulingTimer
          Field SchedulingTimer - Scheduling Timer
 
Constructor Summary
MPLSPacketScheduler()
           
 
Method Summary
 void createSchedulingTimer()
          This method creates a scheduling timer for in 1 second.
 void createSecondaryScheduler(java.lang.String ClassName)
          Method createSecondaryScheduler Create the secondary scheduler
 MPLSPacketScheduler getChildScheduler()
          Method getChildScheduler
 MPLSPacketScheduler getParentScheduler()
          Return the parent scheduler.
 void holdingScheduler()
          Method holdingScheduler
 void init(MPLSInterfaceInfo minfo)
          Method init
 void initSecondary(MPLSPacketScheduler mps)
          Method initSecondary Initialize the secondary scheduler
 void packetForwarding(ProtocolMessage message, ProtocolSession fromSession)
          Method packetForwarding (former PacketForwarding(ProtocolMessage))
abstract  void scheduling()
          Schedules the messages
abstract  MessageWrapper secondaryScheduling()
          Method secondaryScheduling
 void setNextSchedulingTimer(double waittime)
          Method setNextSchedulingTimer
 void setSchedulingRate(double srate)
          Method setSchedulingRate Set the scheduler Rate
 void startScheduling()
          Method startScheduling
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

mplsInterfaceInfo

public MPLSInterfaceInfo mplsInterfaceInfo
Field mplsinterfaceinfo - MPLS Interface Information


localHost

public Host localHost
Field localHost - Local Host Object


hostID

public java.lang.String hostID
Field HostID - Local Host ID


isActive

public boolean isActive
Field isActive - True if it is active


debug

public boolean debug
Field debug - True if debug


isPrimary

public boolean isPrimary
Field isPrimary - True it is primary scheduler


schedulingRate

public double schedulingRate
Field SchedulingRate - Scheduling Rate


schedulingBurstSize

public double schedulingBurstSize
Field SchedulingBurstSize - Scheduling Burst Size


schedulingQueueTable

public java.util.Vector schedulingQueueTable
Field SchedulingQueueTable - Scheduling Queue Table


nextSchedulingTime

public double nextSchedulingTime
Field nextSchedulingTime - Next Scheduling Time


schedulingTimer

public Timer schedulingTimer
Field SchedulingTimer - Scheduling Timer


parentScheduler

public MPLSPacketScheduler parentScheduler
Field parentScheduler - Parent Scheduler


childScheduler

public MPLSPacketScheduler childScheduler
Field childScheduler - Child Scheduler

Constructor Detail

MPLSPacketScheduler

public MPLSPacketScheduler()
Method Detail

init

public void init(MPLSInterfaceInfo minfo)
Method init

Parameters:
minfo - -

initSecondary

public void initSecondary(MPLSPacketScheduler mps)
Method initSecondary Initialize the secondary scheduler

Parameters:
mps - - XXX

createSchedulingTimer

public void createSchedulingTimer()
This method creates a scheduling timer for in 1 second.


createSecondaryScheduler

public void createSecondaryScheduler(java.lang.String ClassName)
Method createSecondaryScheduler Create the secondary scheduler

Parameters:
ClassName - - XXX

getParentScheduler

public MPLSPacketScheduler getParentScheduler()
Return the parent scheduler.

Returns:
MPLSPacketScheduler

getChildScheduler

public MPLSPacketScheduler getChildScheduler()
Method getChildScheduler

Returns:
MPLSPacketScheduler - XXX

startScheduling

public void startScheduling()
Method startScheduling


holdingScheduler

public void holdingScheduler()
Method holdingScheduler


packetForwarding

public void packetForwarding(ProtocolMessage message,
                             ProtocolSession fromSession)
Method packetForwarding (former PacketForwarding(ProtocolMessage))

Parameters:
message - the message that has to be forwarded.
fromSession - The protocol session the message comes from.

setNextSchedulingTimer

public void setNextSchedulingTimer(double waittime)
Method setNextSchedulingTimer

Parameters:
waittime - - XXX

setSchedulingRate

public void setSchedulingRate(double srate)
Method setSchedulingRate Set the scheduler Rate

Parameters:
srate - - Schedule rate

scheduling

public abstract void scheduling()
Schedules the messages


secondaryScheduling

public abstract MessageWrapper secondaryScheduling()
Method secondaryScheduling

Returns:
The MessageWrapper.