gov.nist.antd.diffserv
Class DiffServQueue

java.lang.Object
  |
  +--gov.nist.antd.diffserv.SimplePacketQueue
        |
        +--gov.nist.antd.diffserv.DiffServQueue
Direct Known Subclasses:
DiffServDropTailQueue, DiffServREDQueue

public abstract class DiffServQueue
extends SimplePacketQueue

This abstract class inherits the SimplePacketQueue, and is used to implement various DiffServ queues (e.g. TropTail, RED, RIO). It contains various information for the packet processing in the DiffServ-queue. It also contains variables of queue statics for the performance of the queuing function.

 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

Field Summary
 double bitrate
          Field bitrate - XXX
 int BufferSize
          Field BufferSize - XXX
 int ClassType
          Field ClassType - XXX
 java.lang.String ClassTypeString
          Field ClassTypeString - XXX
 boolean debug
          Field debug - XXX
 long dequeueCount
          Field dequeueCount - XXX
 int DiffServFlowID
          Field DiffServFlowID - XXX
 double dropBytes
          Field dropBytes - XXX
 int dropCount
          Field dropCount - XXX
 DiffServPrfFlowProfile DSFP
          Field DSFP - XXX
 DiffServPacketScheduler DSPSchduler
          Field DSPSchduler - XXX
 java.lang.String HostID
          Field HostID - XXX
 double incomingBytes
          Field incomingBytes - XXX
 int incomingCount
          Field incomingCount - XXX
 boolean isActive
          Field isActive - XXX
 boolean islog
          Field islog - XXX
 boolean isWFQ
          Field isWFQ - XXX
 Host localHost
          Field localHost - XXX
 java.lang.String name
          Field name - XXX
 double nextEFt
          Field nextEFt - XXX
 double outgoingBytes
          Field outgoingBytes - XXX
 int outgoingCount
          Field outgoingCount - XXX
 double prevdropBytes
          Field prevdropBytes - XXX
 int prevdropCount
          Field prevdropCount - XXX
 double prevEFt
          Field prevEFt - XXX
 double previncomingBytes
          Field previncomingBytes - XXX
 int previncomingCount
          Field previncomingCount - XXX
 double prevoutgoingBytes
          Field prevoutgoingBytes - XXX
 int prevoutgoingCount
          Field prevoutgoingCount - XXX
 double Rx
          Field Rx - XXX
 double totalQueueingDelay
          Field totalQueueingDelay - XXX
 java.lang.String use
          Field use - XXX
 
Fields inherited from class gov.nist.antd.diffserv.SimplePacketQueue
fifoQueue
 
Constructor Summary
DiffServQueue()
          Constructor DiffServQueue
 
Method Summary
 void calculatEFtForWFQ(ProtocolMessage message)
          Weighted Fair Queue Scheduling.
 void config(com.renesys.raceway.DML.Configuration cfg)
          Method config XXX
 MessageWrapper dequeue()
          Dequeues the next wrapper.
 void disableQueue()
          Method disableQueue
 void enableQueue(DiffServPacketScheduler ps)
          Method enableQueue XXX
 boolean enqueue(ProtocolMessage message, ProtocolSession fromSession)
          Method enqueue XXX
 double getAvgQueueingDelay()
          Method getAvgQueueingDelay
 double getDropPacketBytes()
          Method getDropPacketBytes
 int getDropPacketCount()
          Method getDropPacketCount
 double getIncomingPacketBytes()
          Method getIncomingPacketBytes
 int getIncomingPacketCount()
          Method getIncomingPacketCount
 double getOutgoingPacketBytes()
          Method getOutgoingPacketBytes
 int getOutgoingPacketCount()
          Method getOutgoingPacketCount
 void init(DiffServPrfFlowProfile dsfp)
          Method init XXX
 void setupWFQParms(double C, double W, double sW)
          Method setupWFQParms XXX
 
Methods inherited from class gov.nist.antd.diffserv.SimplePacketQueue
getAvailableQLength, getFirstPacket, getMaxSize, getQLength, init, isEmpty, isFull, reset, setMaxSize
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HostID

public java.lang.String HostID
Field HostID - XXX


name

public java.lang.String name
Field name - XXX


use

public java.lang.String use
Field use - XXX


BufferSize

public int BufferSize
Field BufferSize - XXX


DiffServFlowID

public int DiffServFlowID
Field DiffServFlowID - XXX


ClassType

public int ClassType
Field ClassType - XXX


ClassTypeString

public java.lang.String ClassTypeString
Field ClassTypeString - XXX


localHost

public Host localHost
Field localHost - XXX


DSFP

public DiffServPrfFlowProfile DSFP
Field DSFP - XXX


DSPSchduler

public DiffServPacketScheduler DSPSchduler
Field DSPSchduler - XXX


isActive

public boolean isActive
Field isActive - XXX


debug

public boolean debug
Field debug - XXX


islog

public boolean islog
Field islog - XXX


isWFQ

public boolean isWFQ
Field isWFQ - XXX


prevEFt

public double prevEFt
Field prevEFt - XXX


nextEFt

public double nextEFt
Field nextEFt - XXX


Rx

public double Rx
Field Rx - XXX


bitrate

public double bitrate
Field bitrate - XXX


incomingCount

public int incomingCount
Field incomingCount - XXX


incomingBytes

public double incomingBytes
Field incomingBytes - XXX


previncomingCount

public int previncomingCount
Field previncomingCount - XXX


previncomingBytes

public double previncomingBytes
Field previncomingBytes - XXX


dropCount

public int dropCount
Field dropCount - XXX


dropBytes

public double dropBytes
Field dropBytes - XXX


prevdropCount

public int prevdropCount
Field prevdropCount - XXX


prevdropBytes

public double prevdropBytes
Field prevdropBytes - XXX


outgoingCount

public int outgoingCount
Field outgoingCount - XXX


outgoingBytes

public double outgoingBytes
Field outgoingBytes - XXX


prevoutgoingCount

public int prevoutgoingCount
Field prevoutgoingCount - XXX


prevoutgoingBytes

public double prevoutgoingBytes
Field prevoutgoingBytes - XXX


dequeueCount

public long dequeueCount
Field dequeueCount - XXX


totalQueueingDelay

public double totalQueueingDelay
Field totalQueueingDelay - XXX

Constructor Detail

DiffServQueue

public DiffServQueue()
Constructor DiffServQueue

Method Detail

init

public void init(DiffServPrfFlowProfile dsfp)
Method init XXX

Parameters:
dsfp - - XXX

config

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

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

enableQueue

public void enableQueue(DiffServPacketScheduler ps)
Method enableQueue XXX

Parameters:
ps - - XXX

disableQueue

public void disableQueue()
Method disableQueue


enqueue

public boolean enqueue(ProtocolMessage message,
                       ProtocolSession fromSession)
Method enqueue XXX

Overrides:
enqueue in class SimplePacketQueue
Parameters:
message - - XXX
fromSession - - XXX
Returns:
boolean - XXX

dequeue

public MessageWrapper dequeue()
Dequeues the next wrapper.

Overrides:
dequeue in class SimplePacketQueue
Returns:
The dequeued message wrapper.

setupWFQParms

public void setupWFQParms(double C,
                          double W,
                          double sW)
Method setupWFQParms XXX

Parameters:
C - - XXX
W - - XXX
sW - - XXX

calculatEFtForWFQ

public void calculatEFtForWFQ(ProtocolMessage message)
Weighted Fair Queue Scheduling. Find a packet with smallest EFt(estimated finish time). For this processing, each queue with "DSPktSched_WFQ" flag set maintains the variable "nextPckEFt". EFt is calculated for each packet at its arrival by the enque() method. For a queue weight wx and aggregated bandwidth C, relative bandwidth for queue x : Rx = C * wx /(sumi wi). For a packet Pi of size Bi, arrived at ti, the estimated EFt(Pi) = St(Pi) + Tt(Pi) where transmission start time St(Pi) = Max[EFt(Pi-1), ti] packet transmission time Tt(Pi) = Bi / Rx; The nextPckEFt variable is set by deque() method if there is next packet to send. If there is no packet to send, nextPckEFt = INF (infinity value).

Parameters:
message - - XXX

getIncomingPacketCount

public int getIncomingPacketCount()
Method getIncomingPacketCount

Returns:
int - XXX

getIncomingPacketBytes

public double getIncomingPacketBytes()
Method getIncomingPacketBytes

Returns:
double - XXX

getDropPacketCount

public int getDropPacketCount()
Method getDropPacketCount

Returns:
int - XXX

getDropPacketBytes

public double getDropPacketBytes()
Method getDropPacketBytes

Returns:
double - XXX

getOutgoingPacketCount

public int getOutgoingPacketCount()
Method getOutgoingPacketCount

Returns:
int - XXX

getOutgoingPacketBytes

public double getOutgoingPacketBytes()
Method getOutgoingPacketBytes

Returns:
double - XXX

getAvgQueueingDelay

public double getAvgQueueingDelay()
Method getAvgQueueingDelay

Returns:
double - XXX