gov.nist.antd.mpls.signaling
Class S_CRLDP

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

public class S_CRLDP
extends ProtocolSession

Class S_CRLDP.

  The S_CRLDP class is MPLS Signaling Protocol.
  

                                                +------------------------+                   
   (1) When the sCR-LDP is started, it creates  | PeerLSRInfo            |+                  
       a peerLSRInfoTable to maintain peer      |  - PeerLSR information ||+                 
       LSR information to support MPLS signaling|   - Interface Info     |||                 
       messages exchanging                      |   - IP address Info    |||                 
   (2) If there is no peerLSR infomation        |                        |||                                                          
       that is requested to establish a LSP,    +-----------.------------+||                                                              
       Label request will be rejected.            +---------.-------------+|                                    
                                                  +------.--------------+           
                                                            .
                             +=========================+    .
                             | sCR-LDP                 |    .              
    to/from a peerCR-LDP     |  - peerLSRInfoTable...........                      to/from a peerCR-LDP
                             |  - ControlBlockTable.......    
                             |  - Signaling functions  | .                                 
                             +=========================+ .                                     
                                                         .      
                                                +--------.---------------+                   
   (3) When the sCR-LDP receives a Label        | CRLDPControlBlock      |+                  
       request message form the peer CR-LDP,    |  - LSP information     ||+                 
       thesCR-LDP creates a CRLDPControlBlock   |  - Label Request funcs |||                 
       to establish a requested LST             |  - Label Mapping funcs |||                 
   (4) The CRLDPControlBlock has all of         |  - Notification funcs  |||                                                          
       Label Request, Mapping and Release       +------------------------+||                                                              
       functions. So It performs a LSP            +-----------------------+|                                    
       establish, management and release.            +---------------------+                                                         
                                                                     
                                                                     
                                                                     
 

 This class was developed at the National Institute of Standards and
 Technology by employees of the Federal Government and the Towson
 University by student 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
static short AvailableExcessBandwidthReportMessage
          Field AvailableExcessBandwidthReportMessage
 java.util.Vector ControlBlockTable
          Field ControlBlockTable - Control Block Table
 boolean debug
          Field debug - Debug flag
 FaultManager faultManager
           
 MPLSInterfaceMgmt interfacemgmt
          Field interfacemgmt - Interface Management
 boolean isFaultManager
           
 boolean isFirst
          Field isFirst - First run flag
 boolean isTEAgent
          Field isTEAgent - TE Agent activation flag
static short LabelMappingMessage
          Field LabelMappingMessage
static short LabelReleaseMessage
          Field LabelReleaseMessage
static short LabelRequestMessage
          Field LabelRequestMessage
static short LabelWithdrawMessage
          Field LabelWithdrawMessage
 ProtocolGraph localNode
          Field localNode - Local Node(ProtocolGraph)
 java.lang.String LSRID
          Field LSRID - LSR ID
 int MessageIDCount
          Field MessageIDCount - Message ID count
 java.util.Vector MessageList
          Field MessageList - Message List(Queue)
 MPLSMgmt mplsmgmt
          Field mplsmgmt - MPLS Management Object
 Net net
          Field net - Net object
 int NodeType
          Field NodeType - Node Type
static short NotificationMessage
          Field NotificationMessage
 java.util.Hashtable OUNIClientTable
          Field OUNIClientTable - O-UNI Client Table
 OUNI_N ouniServer
          Field ouniServer - O-UNI Server
 java.util.Vector peerLSRInfoTable
          Field peerLSRInfoTable - Peer LSR information Table
 PeerLSRMgmt peerLSRMgmtModule
          Field peerLSRMgmtModule - Peer LSR Management Module
 double ProcessingDelay
          Field ProcessingDelay - Processing Delay
 MPLSSignalingInterfaceMgmt siginterfacemgmt
          Field siginterfacemgmt - Signaling Interface Management object
 TEAgent teagent
          Field teagent - TE Agent module
 ProtocolSession tePath
          Field tePath - Traffic Engineering path(ProtocolSeesion) Object
 
Fields inherited from class SSF.OS.ProtocolSession
name, use
 
Constructor Summary
S_CRLDP()
          Constructor S_CRLDP
 
Method Summary
 void addMessage(MPLSSignalingMessage message)
          Method addMessage Add Message to the message queue
 void config(com.renesys.raceway.DML.Configuration cfg)
          Method config Configuration
 void CRLDPMessageProc(short messageType, MPLSSignalingInfo sigInfo, double DelayTime, S_CRLDP peercrldp)
          Method CRLDPMessageProc Send MPLS Signaling message(call CRLDPMessageProc() method)
 void CRLDPMessageProc(short messageType, MPLSSignalingInfo sigInfo, double DelayTime, S_CRLDP peercrldp, ProtocolMessage additionalMsg)
          Method CRLDPMessageProc Send the Signaling message
 CRLDPControlBlock getCRLDPControlBlock(int ingresslsrid, int locallspid)
          Method getCRLDPControlBlock Extract CRLDP Control block using Ingress LSR ID and Local LSP ID
 MPLSSignalingInfo getCRLDPSignalingInfo(int locallspid, int ingresslsrid)
          Method getCRLDPSignalingInfo Retrieves the Signaling Information
 java.util.Vector getDefactInCCB(int incomingInterfaceid, int incomingfiberid, int incominglambdaid)
          Method getDefactInCCB Return the CRLDPControlBlock that have the specified NIC or Fiber ID, Lambda ID.
 OUNI_N getOUNIServer()
          Method getOUNIServer Get the O-UNI server Module
 void init()
          Method init
 boolean push(ProtocolMessage message, ProtocolSession fromSession)
          Method push
 void recvCRLDPMessage(ProtocolMessage message, S_CRLDP peercrldp)
          Method recvCRLDPMessage Called when it received the CR-LDP message to handle it
 void registeSCRLDP()
          Method registeSCRLDP Register CR-LDP module to MPLS Management module
 void releaseMulticastLSP(int groupid, int sourceid)
          Method releaseMulticastLSP Remove the Control block belong to Multicast LSP
 void removeCRLDPControlBlock(CRLDPControlBlock cblock)
          Method removeCRLDPControlBlock Remove this control block from the table
 CRLDPControlBlock removeCRLDPControlBlock(int locallspid, int ingressip)
          Method removeCRLDPControlBlock Remove Control block using Ingress LSR ID and Local LSP ID
 void sendCRLDPMessage()
          Method sendCRLDPMessage Deliver the CR-LDP siganling message to peer node
 void setFaultManager(FaultManager fm)
          Method setFaultManager This function is called by the Fault Manager to register its information...
 void setOUNIClient(PeerLSRInfo pinfo)
          Method setOUNIClient Set O-UNI client connection and put this to the table
 void setTEAgent(TEAgent tea)
          Method setTEAgent This function is called by the TEAgent to register its information...
 void setupCRLDP(int nodetype, MPLSInterfaceMgmt ifacemgmt)
          Method setupCRLDP The MPLSMgmt module calls this functions to register the MPLSInterfaceMgmt instance and the NodeType of this node...
 CRLDPControlBlock startMessage(MPLSSignalingInfo sinfo, boolean isouni)
          Method startMessage Create New Control block and send MPLS Signaling Message
 
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

localNode

public ProtocolGraph localNode
Field localNode - Local Node(ProtocolGraph)


NodeType

public int NodeType
Field NodeType - Node Type


LSRID

public java.lang.String LSRID
Field LSRID - LSR ID


net

public Net net
Field net - Net object


mplsmgmt

public MPLSMgmt mplsmgmt
Field mplsmgmt - MPLS Management Object


interfacemgmt

public MPLSInterfaceMgmt interfacemgmt
Field interfacemgmt - Interface Management


siginterfacemgmt

public MPLSSignalingInterfaceMgmt siginterfacemgmt
Field siginterfacemgmt - Signaling Interface Management object


tePath

public ProtocolSession tePath
Field tePath - Traffic Engineering path(ProtocolSeesion) Object


debug

public boolean debug
Field debug - Debug flag


isFirst

public boolean isFirst
Field isFirst - First run flag


ProcessingDelay

public double ProcessingDelay
Field ProcessingDelay - Processing Delay


peerLSRInfoTable

public java.util.Vector peerLSRInfoTable
Field peerLSRInfoTable - Peer LSR information Table


ControlBlockTable

public java.util.Vector ControlBlockTable
Field ControlBlockTable - Control Block Table


MessageList

public java.util.Vector MessageList
Field MessageList - Message List(Queue)


peerLSRMgmtModule

public PeerLSRMgmt peerLSRMgmtModule
Field peerLSRMgmtModule - Peer LSR Management Module


isTEAgent

public boolean isTEAgent
Field isTEAgent - TE Agent activation flag


teagent

public TEAgent teagent
Field teagent - TE Agent module


isFaultManager

public boolean isFaultManager

faultManager

public FaultManager faultManager

ouniServer

public OUNI_N ouniServer
Field ouniServer - O-UNI Server


OUNIClientTable

public java.util.Hashtable OUNIClientTable
Field OUNIClientTable - O-UNI Client Table


MessageIDCount

public int MessageIDCount
Field MessageIDCount - Message ID count


NotificationMessage

public static final short NotificationMessage
Field NotificationMessage

See Also:
Constant Field Values

LabelMappingMessage

public static final short LabelMappingMessage
Field LabelMappingMessage

See Also:
Constant Field Values

LabelRequestMessage

public static final short LabelRequestMessage
Field LabelRequestMessage

See Also:
Constant Field Values

LabelWithdrawMessage

public static final short LabelWithdrawMessage
Field LabelWithdrawMessage

See Also:
Constant Field Values

LabelReleaseMessage

public static final short LabelReleaseMessage
Field LabelReleaseMessage

See Also:
Constant Field Values

AvailableExcessBandwidthReportMessage

public static final short AvailableExcessBandwidthReportMessage
Field AvailableExcessBandwidthReportMessage

See Also:
Constant Field Values
Constructor Detail

S_CRLDP

public S_CRLDP()
Constructor S_CRLDP

Method Detail

config

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

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

init

public void init()
          throws ProtocolException
Method init

Overrides:
init in class ProtocolSession
Throws:
ProtocolException

registeSCRLDP

public void registeSCRLDP()
Method registeSCRLDP Register CR-LDP module to MPLS Management module


setupCRLDP

public void setupCRLDP(int nodetype,
                       MPLSInterfaceMgmt ifacemgmt)
Method setupCRLDP The MPLSMgmt module calls this functions to register the MPLSInterfaceMgmt instance and the NodeType of this node... The MPLSInterfaceMgmt module provides informations of NIC, ONIC or Tunnel interface..

Parameters:
nodetype - - Node Type
ifacemgmt - - Interface Management

setOUNIClient

public void setOUNIClient(PeerLSRInfo pinfo)
Method setOUNIClient Set O-UNI client connection and put this to the table

Parameters:
pinfo - - XXX

setTEAgent

public void setTEAgent(TEAgent tea)
Method setTEAgent This function is called by the TEAgent to register its information...

Parameters:
tea - - TE Agent module

setFaultManager

public void setFaultManager(FaultManager fm)
Method setFaultManager This function is called by the Fault Manager to register its information...


getOUNIServer

public OUNI_N getOUNIServer()
Method getOUNIServer Get the O-UNI server Module

Returns:
OUNI_N

startMessage

public CRLDPControlBlock startMessage(MPLSSignalingInfo sinfo,
                                      boolean isouni)
Method startMessage Create New Control block and send MPLS Signaling Message

Parameters:
sinfo - - Singaling Information
isouni - - True if this node is connected to Optical Network
Returns:
CRLDPControlBlock - Created Control Block object

getCRLDPControlBlock

public CRLDPControlBlock getCRLDPControlBlock(int ingresslsrid,
                                              int locallspid)
Method getCRLDPControlBlock Extract CRLDP Control block using Ingress LSR ID and Local LSP ID

Parameters:
ingresslsrid -
locallspid -
Returns:
CRLDPControlBlock

removeCRLDPControlBlock

public CRLDPControlBlock removeCRLDPControlBlock(int locallspid,
                                                 int ingressip)
Method removeCRLDPControlBlock Remove Control block using Ingress LSR ID and Local LSP ID

Parameters:
locallspid -
ingressip -
Returns:
CRLDPControlBlock

removeCRLDPControlBlock

public void removeCRLDPControlBlock(CRLDPControlBlock cblock)
Method removeCRLDPControlBlock Remove this control block from the table

Parameters:
cblock - - XXX

getCRLDPSignalingInfo

public MPLSSignalingInfo getCRLDPSignalingInfo(int locallspid,
                                               int ingresslsrid)
Method getCRLDPSignalingInfo Retrieves the Signaling Information

Parameters:
locallspid - - Local LSP ID
ingresslsrid - - Ingress LSR ID
Returns:
MPLSSignalingInfo

getDefactInCCB

public java.util.Vector getDefactInCCB(int incomingInterfaceid,
                                       int incomingfiberid,
                                       int incominglambdaid)
Method getDefactInCCB Return the CRLDPControlBlock that have the specified NIC or Fiber ID, Lambda ID.

Parameters:
incomingInterfaceid - - NIC Id
incomingfiberid - - Fiber ID
incominglambdaid - - Lambda ID
Returns:
Vector - Return the CCBs that is related above parameters

recvCRLDPMessage

public void recvCRLDPMessage(ProtocolMessage message,
                             S_CRLDP peercrldp)
Method recvCRLDPMessage Called when it received the CR-LDP message to handle it

Parameters:
message -
peercrldp -

releaseMulticastLSP

public void releaseMulticastLSP(int groupid,
                                int sourceid)
Method releaseMulticastLSP Remove the Control block belong to Multicast LSP

Parameters:
groupid -
sourceid -

push

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

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

CRLDPMessageProc

public void CRLDPMessageProc(short messageType,
                             MPLSSignalingInfo sigInfo,
                             double DelayTime,
                             S_CRLDP peercrldp)
Method CRLDPMessageProc Send MPLS Signaling message(call CRLDPMessageProc() method)

Parameters:
messageType - - Message Type
sigInfo - - Signaling Information
DelayTime - - Delay Time
peercrldp - - Peer CR-LDP module

CRLDPMessageProc

public void CRLDPMessageProc(short messageType,
                             MPLSSignalingInfo sigInfo,
                             double DelayTime,
                             S_CRLDP peercrldp,
                             ProtocolMessage additionalMsg)
Method CRLDPMessageProc Send the Signaling message

Parameters:
messageType -
sigInfo -
DelayTime -
peercrldp -
additionalMsg -

addMessage

public void addMessage(MPLSSignalingMessage message)
Method addMessage Add Message to the message queue

Parameters:
message -

sendCRLDPMessage

public void sendCRLDPMessage()
Method sendCRLDPMessage Deliver the CR-LDP siganling message to peer node