gov.nist.antd.mpls.mgmt
Class MPLSMgmt

java.lang.Object
  |
  +--SSF.OS.ProtocolSession
        |
        +--gov.nist.antd.mpls.mgmt.MPLSMgmt
All Implemented Interfaces:
com.renesys.raceway.DML.Configurable

public class MPLSMgmt
extends ProtocolSession

The MPLS Management module.

 * 
 The MPLSMgmt module contains serveral MPLS function modules.
  - MPLSForwardingTable : gov.nist.antd.mpls_mgmt.forwarding_table.MPLSForwardingTable.java
  - MPLSForwarding : gov.nist.antd.mpls_mgmt.mpls_forwarding.MPLSForwarding.java
  - MPLSSignalingInterfaceMgmt : gov.nist.antd.mpls_mgmt.mpls_signaling_interface.MPLSSignalingInterfaceMgmt.java
  - MPLSInterfaceMgmt : gov.nist.antd.mpls_mgmt.mpls_interface.MPLSInterfaceMgmt

 MPLSMgmt module
                                            +-------------------+
                                            | Signaling Prtocol |
                                            +--------+----------+
                                                     |
        +--------------------------------------------+----------------+--------------------+
        | MPLSMgmt                                   |                | TEAgent            |
        |  +---------------------+     +-------------+--------------+ |   - Fault          |
        |  | MPLSForwardingTable |     | MPLSSignalingInterfaceMgmt | |     management     |
        |  |  - In/Out Interface |-----|  - Resource Allocation     | | +----------------+ |
        |  |  - In/Out Label     |     |  - Creates forwarding Info | | | OAMModule      | |
        |  +----------+----------+     +--------------+-------------+ | |  - Performance | |
        |             |                               |               | |    monitoring  | |
        |  +----------+-----------+    +--------------+-------------+ | |  - Coninuity   | |
        |  | MPLSForwarding       |    | MPLSInterfaceMgmt          | | |    check       | |
        |  |  - Label Swapping    |    |  - Resource Information    | | |  - Loopback    | |
        |  |  - Packet Forwarding |    |    management              | | |    test        | |
        |  +----------------------+    +----------------------------+ | +----------------+ |
        +-------------------------------------------------------------+--------------------+


 Scheduler Informations -------------------------------------------------------------------------
 The MPLSMgmt module provides 3 kind of scheduler.
  - RoundRobin Scheduler : gov.nist.antd.mpls_mgmt.mpls_interface.RoundRobinScheduler
  - Priority Scheduler : gov.nist.antd.mpls_mgmt.mpls_interface.PriorityScheduler
  - WFQ Scheduler : gov.nist.antd.mpls_mgmt.mpls_interface.WFQRobinScheduler

 You can use a single scheduler or a hybrid scheduler.
 If you want to use a single scheduler, you should write "PrimaryScheduler" configuration only
 You cann't change the Scheduler name in the DML configuration
   - Example of a Single Scheduler configuration
     ProtocolSession [name MPLSModule use gov.nist.antd.mpls_mgmt.MPLSMgmt
              logfile on
              mplsinit [
                    PacketScheduler [
                             PrimaryScheduler [
                                   name RoundRobin use gov.nist.antd.mpls_mgmt.mpls_interface.RoundRobinScheduler
                                   #name Priority use gov.nist.antd.mpls_mgmt.mpls_interface.PriorityScheduler
                                   #name WFQ use gov.nist.antd.mpls_mgmt.mpls_interface.WFQScheduler
                     ]
              ]
     ]

 If you want to use a hybrid scheduler, you should write both "PrimaryScheduler" and "SecondaryScheduler" configuration
  - Example of a hybrid scheduler configuration
     ProtocolSession [name MPLSModule use gov.nist.antd.mpls_mgmt.MPLSMgmt
              logfile on
              mplsinit [
                    PacketScheduler [
                             PrimaryScheduler [
                                   name RoundRobin use gov.nist.antd.mpls_mgmt.mpls_interface.RoundRobinScheduler
                                   #name Priority use gov.nist.antd.mpls_mgmt.mpls_interface.PriorityScheduler
                                   #name WFQ use gov.nist.antd.mpls_mgmt.mpls_interface.WFQScheduler
                             ]
                             SecondaryScheduler[
                                   name WFQ use gov.nist.antd.mpls_mgmt.mpls_interface.WFQScheduler
                                   #name RoundRobin use gov.nist.antd.mpls_mgmt.mpls_interface.RoundRobinScheduler
                                   #name Priority use gov.nist.antd.mpls_mgmt.mpls_interface.PriorityScheduler
                                   Priority 4 # SecondaryScheduler priority in the PrimaryScheduler
                             ]
                    ]
              ]
       ]
  - In case of the WFQ, It can't use the PrimaryScheduler of the hybrid scheduler
    It can use a single scheduler only...

 Queueing Information -------------------------------------------------------------------------
 The MPLSMgmt module provedes 2 kind of Queue.
 - DropTail Queue : gov.nist.antd.mpls_mgmt.mpls_interface.MPLSDropTailQueue
 - RED Queue : gov.nist.antd.mpls_mgmt.mpls_interface.MPLSREDQueue

  - Example of a DropTail Queue configuration
     ProtocolSession [name MPLSModule use gov.nist.antd.mpls_mgmt.MPLSMgmt
              logfile on
              mplsinit [
                    PacketScheduler [ ...... ]
                    Queue [
                         name DropTail use gov.nist.antd.mpls_mgmt.mpls_interface.MPLSDropTailQueue
                         BufferSize 10000
                    ]
              ]
     ]

  - Example of a RED Queue configuration
     ProtocolSession [name MPLSModule use gov.nist.antd.mpls_mgmt.MPLSMgmt
              logfile on
              mplsinit [
                    PacketScheduler [ ...... ]
                    Queue [
                         name DropTail use gov.nist.antd.mpls_mgmt.mpls_interface.MPLSDropTailQueue
                         BufferSize 10000
                         # Minimum Threshold of the buffer(%)
                         THmin 0.5     # if buffersize is 10000, THmin is 5000
                         # Maximum Threshold of the buffer(%)
                         THmax 0.9     # if buffersize is 10000, THmax is 9000
                         # Maximum drop probability
                         Pmax 1.0
                         # Average Packet Size
                         mean_pkt_size 1000
                         # Queue Weight
                         QueueWeight 0.002
                    ]
              ]
      ]

  - Example of the auto configuration of the buffersize 
    BufferSize = AveragePacketSize * ( ln(TargetPacketLossRatio)/ln(TargetUtilization) - 1)
     ProtocolSession [name MPLSModule use gov.nist.antd.mpls_mgmt.MPLSMgmt
              logfile on
              mplsinit [
                    PacketScheduler [ ...... ]
                    Queue [
                         name DropTail use gov.nist.antd.mpls_mgmt.mpls_interface.MPLSDropTailQueue
                         TargetUtilization 0.8       # utilization 
                         TargetPacketLossRatio 0.001 # packet loss ratio
                         AveragePacketSize 1000      # average packet size
                    ]
              ]
     ]

 

 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 , rouil

Field Summary
 int AveragePacketSize
          AveragePacketSize - Bytes
 int BufferSize
          BufferSize - Buffer size of a Queue, Default Buffer size is 10000 bytes
 boolean debug
          debug - debug mode on or off
 DiffServTrafficConditioner diffserv
          diffserv - DiffServ Module instance
 MPLSForwarding forwarding
          forwarding - MPLS Packet forwarding module
 MPLSForwardingTable forwardingtable
          forwardingtable - Forwarding Table management class
 java.lang.String ID
          ID - Node(LSR) ID
 int IngressLSRID
          IngressLSRID - IngressLSRID for a LSPID
 double inPmax
          inPmax - XXX
 MPLSInterfaceMgmt interfacemgmt
          interfacemgmt - Interface Information management class
 double inTHmax
          inTHmax - XXX
 double inTHmin
          inTHmin - XXX
 IP ipsess
          ipsess - IP protocol session of this LSR
 boolean isControlChannelON
          isControlChannelON - creates control channel or not
 boolean isOptimalBandwidthFunc
          isOptimalBandwidthFunc - Optimized bandwidth borrowing mode on or off
 int localLSPIDCounter
          localLSPIDCounter - localLSPID for a LSPID
 ProtocolGraph localNode
          localNode - ProtocolGraph of the Node
 boolean logfile
          logfile - creates logfile or not
static int LSRType
          LSRType - Definition for a LSR
 int mean_pkt_size
          mean_pkt_size - XXX
 MPLSMonitor monitor
          monitor - Simulation result monitoring module
 int NodeType
          NodeType - Node type of this node(LSR or OXC)
 double outPmax
          outPmax - XXX
 double outTHmax
          outTHmax - XXX
 double outTHmin
          Out profile variable /** outTHmin - XXX
 OXCSwitch oxcswitch
          oxcswitch - OXCSwitch instance
static int OXCType
          OXCType - Definition for a OXC
 double Pmax
          Pmax - XXX
 boolean primaryScheduler
          primaryScheduler - Primary Scheduler
 java.lang.String primarySchedulerClass
          primarySchedulerClass - Primary Scheduler, Default Primary Scheduler is the RoundRobin Scheduler
 java.lang.String primarySchedulerName
          primarySchedulerName - Primary Scheduler, Default Primary Scheduler is the RoundRobin Scheduler
 java.lang.String QueueClass
          QueueClass - Default Class of Queue is MPLSDropTailQueue
 java.lang.String QueueName
          QueueName - Default Queue is DropTail queue
 double QueueWeight
          QueueWeight - XXX
 double RunTime
          RunTime - simulation duration
 java.lang.String[] SchedulerNameList
          SchedulerNameList - Priority, WFQ, RoundRobin
 boolean secondaryScheduler
          secondaryScheduler - Secondary Scheduler
 java.lang.String secondarySchedulerClass
          secondarySchedulerClass - Secondary Scheduler, Default Secondary Scheduler is none..
 java.lang.String secondarySchedulerName
          secondarySchedulerName - Secondary Scheduler, Default Secondary Scheduler is none..
 int secondarySchedulerPriority
          secondarySchedulerPriority - Priority of the Secondary Scheduler
 MPLSSignalingInterfaceMgmt siginterfacemgmt
          siginterfacemgmt - Interface for MPLS signaling protocol
 double TargetPacketLossRatio
          TargetPacketLossRatio - ( 0.0 < TargetPacketLossRatio < 1.0)
 double TargetUtilization
          TargetUtilization - Target Utilization of a Queue( 0.0 < TargetUtilization < 1.0)
 TEAgent teagent
          teagent - Traffic Agent moduel
 ProtocolSession tePath
          tePath - Traffic Engineering module
 double THmax
          THmax - XXX
 double THmin
          THmin - XXX
 
Fields inherited from class SSF.OS.ProtocolSession
name, use
 
Constructor Summary
MPLSMgmt()
          Constructor MPLSMgmt
 
Method Summary
 void config(com.renesys.raceway.DML.Configuration cfg)
          Method config XXX
 int getIngressLSRID()
          Method getIngressLSRID
 int getLocalLSPID()
          Method getLocalLSPID
 MPLSForwarding getMPLSForwarding()
          Method getMPLSForwarding
 MPLSForwardingTable getMPLSForwardingTable()
          Method getMPLSForwardingTable
 MPLSInterfaceMgmt getMPLSInterfaceMgmt()
          Method getMPLSInterfaceMgmt
 MPLSSignalingInterfaceMgmt getMPLSSignalingInterfaceMgmt()
          Method getMPLSSignalingInterfaceMgmt
 int getNodeType()
          Method getNodeType
 OXCSwitch getOXCSwitch()
          Method getOXCSwitch
 TEAgent getTEAgent()
          Method getTEAgent
 double getTime()
          Method getTime
 void init()
          Method init
 void initMPLSMgmtSubModule()
          Method initMPLSMgmtSubModule
 ShimMessage LabelStacking(int interfaceid, int labelvalue, ProtocolMessage message)
          Method LabelStacking Label Stacking Information
 boolean mplsPacketForwarding(ProtocolMessage message, ProtocolSession fromSession)
          Method mplsPacketForwarding XXX
 OpticalFrameHeader opticalFraming(int interfaceid, int labelvalue, ProtocolMessage message)
          Method opticalFraming XXX
 OpticalFrameHeader opticalFraming(int interfaceid, int labelvalue, ProtocolMessage message, double timestamp)
          Method opticalFraming XXX
 boolean push(ProtocolMessage message, ProtocolSession fromSession)
          Method push XXX
 void setDiffServ(DiffServTrafficConditioner dstc)
          Method setDiffServ XXX
 void setupMPLSMgmt()
          Method setupMPLSMgmt
 
Methods inherited from class SSF.OS.ProtocolSession
close, closed, debugIdentifier, inGraph, open, opened, pushAfterDelay, pushAfterDelayFailed, setGraph, version
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ID

public java.lang.String ID
ID - Node(LSR) ID


localNode

public ProtocolGraph localNode
localNode - ProtocolGraph of the Node


IngressLSRID

public int IngressLSRID
IngressLSRID - IngressLSRID for a LSPID


localLSPIDCounter

public int localLSPIDCounter
localLSPIDCounter - localLSPID for a LSPID


NodeType

public int NodeType
NodeType - Node type of this node(LSR or OXC)


LSRType

public static final int LSRType
LSRType - Definition for a LSR

See Also:
Constant Field Values

OXCType

public static final int OXCType
OXCType - Definition for a OXC

See Also:
Constant Field Values

ipsess

public IP ipsess
ipsess - IP protocol session of this LSR


oxcswitch

public OXCSwitch oxcswitch
oxcswitch - OXCSwitch instance


diffserv

public DiffServTrafficConditioner diffserv
diffserv - DiffServ Module instance


interfacemgmt

public MPLSInterfaceMgmt interfacemgmt
interfacemgmt - Interface Information management class


forwardingtable

public MPLSForwardingTable forwardingtable
forwardingtable - Forwarding Table management class


forwarding

public MPLSForwarding forwarding
forwarding - MPLS Packet forwarding module


siginterfacemgmt

public MPLSSignalingInterfaceMgmt siginterfacemgmt
siginterfacemgmt - Interface for MPLS signaling protocol


monitor

public MPLSMonitor monitor
monitor - Simulation result monitoring module


tePath

public ProtocolSession tePath
tePath - Traffic Engineering module


teagent

public TEAgent teagent
teagent - Traffic Agent moduel


RunTime

public double RunTime
RunTime - simulation duration


logfile

public boolean logfile
logfile - creates logfile or not


debug

public boolean debug
debug - debug mode on or off


isControlChannelON

public boolean isControlChannelON
isControlChannelON - creates control channel or not


isOptimalBandwidthFunc

public boolean isOptimalBandwidthFunc
isOptimalBandwidthFunc - Optimized bandwidth borrowing mode on or off


SchedulerNameList

public java.lang.String[] SchedulerNameList
SchedulerNameList - Priority, WFQ, RoundRobin


primaryScheduler

public boolean primaryScheduler
primaryScheduler - Primary Scheduler


primarySchedulerName

public java.lang.String primarySchedulerName
primarySchedulerName - Primary Scheduler, Default Primary Scheduler is the RoundRobin Scheduler


primarySchedulerClass

public java.lang.String primarySchedulerClass
primarySchedulerClass - Primary Scheduler, Default Primary Scheduler is the RoundRobin Scheduler


secondaryScheduler

public boolean secondaryScheduler
secondaryScheduler - Secondary Scheduler


secondarySchedulerName

public java.lang.String secondarySchedulerName
secondarySchedulerName - Secondary Scheduler, Default Secondary Scheduler is none..


secondarySchedulerClass

public java.lang.String secondarySchedulerClass
secondarySchedulerClass - Secondary Scheduler, Default Secondary Scheduler is none..


secondarySchedulerPriority

public int secondarySchedulerPriority
secondarySchedulerPriority - Priority of the Secondary Scheduler


QueueName

public java.lang.String QueueName
QueueName - Default Queue is DropTail queue


QueueClass

public java.lang.String QueueClass
QueueClass - Default Class of Queue is MPLSDropTailQueue


BufferSize

public int BufferSize
BufferSize - Buffer size of a Queue, Default Buffer size is 10000 bytes


TargetUtilization

public double TargetUtilization
TargetUtilization - Target Utilization of a Queue( 0.0 < TargetUtilization < 1.0)


TargetPacketLossRatio

public double TargetPacketLossRatio
TargetPacketLossRatio - ( 0.0 < TargetPacketLossRatio < 1.0)


AveragePacketSize

public int AveragePacketSize
AveragePacketSize - Bytes


THmin

public double THmin
THmin - XXX


THmax

public double THmax
THmax - XXX


Pmax

public double Pmax
Pmax - XXX


mean_pkt_size

public int mean_pkt_size
mean_pkt_size - XXX


QueueWeight

public double QueueWeight
QueueWeight - XXX


inTHmin

public double inTHmin
inTHmin - XXX


inTHmax

public double inTHmax
inTHmax - XXX


inPmax

public double inPmax
inPmax - XXX


outTHmin

public double outTHmin
Out profile variable /** outTHmin - XXX


outTHmax

public double outTHmax
outTHmax - XXX


outPmax

public double outPmax
outPmax - XXX

Constructor Detail

MPLSMgmt

public MPLSMgmt()
Constructor MPLSMgmt

Method Detail

config

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

Specified by:
config in interface com.renesys.raceway.DML.Configurable
Overrides:
config in class ProtocolSession
Parameters:
cfg - - Configuration for the MPLSMgmt
Throws:
com.renesys.raceway.DML.configException

init

public void init()
          throws ProtocolException
Method init

Overrides:
init in class ProtocolSession
Throws:
ProtocolException

setupMPLSMgmt

public void setupMPLSMgmt()
Method setupMPLSMgmt


initMPLSMgmtSubModule

public void initMPLSMgmtSubModule()
Method initMPLSMgmtSubModule


getIngressLSRID

public int getIngressLSRID()
Method getIngressLSRID

Returns:
int - IngressLSRID for a LSPID

getLocalLSPID

public int getLocalLSPID()
Method getLocalLSPID

Returns:
int - LocalLSPID for a LSPID

LabelStacking

public ShimMessage LabelStacking(int interfaceid,
                                 int labelvalue,
                                 ProtocolMessage message)
Method LabelStacking Label Stacking Information

Parameters:
interfaceid - - OutGoing Interface ID
labelvalue - - Label for Label stacking
message - - ProtocolMessage, Payload
Returns:
ShimMessage - ProtocolMessage

opticalFraming

public OpticalFrameHeader opticalFraming(int interfaceid,
                                         int labelvalue,
                                         ProtocolMessage message,
                                         double timestamp)
Method opticalFraming XXX

Parameters:
interfaceid - - XXX
labelvalue - - XXX
message - - XXX
timestamp - - XXX
Returns:
OpticalFrameHeader - XXX

opticalFraming

public OpticalFrameHeader opticalFraming(int interfaceid,
                                         int labelvalue,
                                         ProtocolMessage message)
Method opticalFraming XXX

Parameters:
interfaceid - - XXX
labelvalue - - XXX
message - - XXX
Returns:
OpticalFrameHeader - XXX

push

public boolean push(ProtocolMessage message,
                    ProtocolSession fromSession)
             throws ProtocolException
Method push XXX

Specified by:
push in class ProtocolSession
Parameters:
message - - XXX
fromSession - - XXX
Returns:
boolean - XXX
Throws:
ProtocolException

mplsPacketForwarding

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

Parameters:
message - - XXX
fromSession - - XXX
Returns:
boolean - XXX

getTime

public double getTime()
Method getTime

Returns:
double - XXX

setDiffServ

public void setDiffServ(DiffServTrafficConditioner dstc)
Method setDiffServ XXX

Parameters:
dstc - - XXX

getMPLSInterfaceMgmt

public MPLSInterfaceMgmt getMPLSInterfaceMgmt()
Method getMPLSInterfaceMgmt

Returns:
MPLSInterfaceMgmt - XXX

getMPLSForwardingTable

public MPLSForwardingTable getMPLSForwardingTable()
Method getMPLSForwardingTable

Returns:
MPLSForwardingTable - XXX

getMPLSForwarding

public MPLSForwarding getMPLSForwarding()
Method getMPLSForwarding

Returns:
MPLSForwarding - XXX

getMPLSSignalingInterfaceMgmt

public MPLSSignalingInterfaceMgmt getMPLSSignalingInterfaceMgmt()
Method getMPLSSignalingInterfaceMgmt

Returns:
MPLSSignalingInterfaceMgmt - XXX

getOXCSwitch

public OXCSwitch getOXCSwitch()
Method getOXCSwitch

Returns:
OXCSwitch - XXX

getNodeType

public int getNodeType()
Method getNodeType

Returns:
int - XXX

getTEAgent

public TEAgent getTEAgent()
Method getTEAgent

Returns:
TEAgent - XXX