DRCL J-Sim API

drcl.inet.protocol.ospf
Class OSPF

java.lang.Object
  extended bydrcl.DrclObj
      extended bydrcl.comp.Component
          extended bydrcl.net.Module
              extended bydrcl.inet.Protocol
                  extended bydrcl.inet.protocol.Routing
                      extended bydrcl.inet.protocol.ospf.OSPF
All Implemented Interfaces:
java.lang.Cloneable, InetConstants, ObjectCloneable, ObjectDuplicable, java.io.Serializable, UnicastRouting
Direct Known Subclasses:
OSPF_QoS

public class OSPF
extends Routing
implements UnicastRouting

The package, drcl.inet.protocol.OSPF, implements the link-state routing protocol, OSPF v2, Open Shortest Path First routing protocol and follow the RFC2328. In this implementation, we refered much from OSPF code in GNU Zebra project, especially zebra 0.85.

The general data structure can refer to figure 9 and section 5 RFC2328 (If not specially mentioned, the following sections, figures, and etc. can be found in RFC 2328)

Author:
Wei-peng Chen, Hung-ying Tyan
See Also:
OSPF_Area, OSPF_DBdesc, OSPF_Packet, OSPF_Interface, OSPF_LS_Database, OSPF_LSA, OSPF_LSA_Header, OSPF_LSack, OSPF_LSrequest, OSPF_LSupdate, OSPF_Neighbor, OSPF_TimeOut_EVT, Serialized Form

Nested Class Summary
 
Nested classes inherited from class drcl.comp.Component
Component.Locks
 
Field Summary
static boolean debug
           
static int DEBUG_ACK
          Debug level of handling LSA acknowledgement packets.
static int DEBUG_DETAIL
          Debug level of detailed messages for other levels.
static int DEBUG_LSA
          Debug level of handling LSA update packets.
static int DEBUG_NEIGHBOR
          Debug level of neighbor state changes.
static int DEBUG_REFRESH
          Debug level of LSA refresh events.
static int DEBUG_SAMPLE
          Debug level to enable sampled debug messages.
static int DEBUG_SEND
          Debug level of sending ospf packets.
static int DEBUG_SPF
          Debug level of calculating SPF tree and installing route entries.
static int DEBUG_TIMEOUT
          Debug level of handling timeout events.
static boolean debug2
           
 
Fields inherited from class drcl.net.Module
downPort, PortGroup_DOWN, PortGroup_UP, upPort
 
Fields inherited from class drcl.comp.Component
FLAG_COMPONENT_NOTIFICATION, FLAG_DEBUG_ENABLED, FLAG_DIRECT_OUTPUT_ENABLED, FLAG_ENABLED, FLAG_ERROR_ENABLED, FLAG_EVENT_ENABLED, FLAG_GARBAGE_DISPLAY_ENABLED, FLAG_GARBAGE_ENABLED, FLAG_PORT_NOTIFICATION, FLAG_STARTED, FLAG_STOPPED, FLAG_TRACE_ENABLED, FLAG_UNDEFINED_START, id, infoPort, locks, name, parent, PortGroup_DEFAULT_GROUP, PortGroup_EVENT, PortGroup_SERVICE, Root, Trace_DATA, Trace_SEND
 
Fields inherited from interface drcl.inet.InetConstants
BYTE_MODE, DEFAULT_BANDWIDTH, DEFAULT_BUFFER_SIZE, DEFAULT_MTU, EVENT_ID_CHANGED_PORT_ID, EVENT_IDENTITY_ADDED, EVENT_IDENTITY_REMOVED, EVENT_IF_NEIGHBOR_DOWN, EVENT_IF_NEIGHBOR_UP, EVENT_IF_PORT_ID, EVENT_LINK_BROKEN, EVENT_LINK_BROKEN_PORT_ID, EVENT_MCAST_HOST_PORT_ID, EVENT_PKT_ARRIVAL, EVENT_PKT_ARRIVAL_PORT_ID, EVENT_RT_ENTRY_ADDED, EVENT_RT_ENTRY_MODIFIED, EVENT_RT_ENTRY_REMOVED, EVENT_RT_MCAST_CHANGED_PORT_ID, EVENT_RT_UCAST_CHANGED_PORT_ID, EVENT_VIF_NEIGHBOR_DOWN, EVENT_VIF_NEIGHBOR_UP, EVENT_VIF_PORT_ID, HOST_ENTRY_EXT, ID_CSL, ID_TRACE_RT, MCAST_QUERY_PORT_ID, PACKET_MODE, PID_AODV, PID_DV, PID_DVMRP, PID_HELLO, PID_IGMP, PID_OSPF, PID_RSVP, PID_TCP, PID_TRACE_RT, PID_UDP, SERVICE_CONFIGSW_PORT_ID, SERVICE_ID_PORT_ID, SERVICE_IF_PORT_ID, SERVICE_MCAST_PORT_ID, SERVICE_RT_PORT_ID, UCAST_QUERY_PORT_ID
 
Constructor Summary
OSPF()
          Constructor.
 
Method Summary
 void dataArriveAtDownPort(java.lang.Object data_, Port downPort_)
          Handle data arriving at the down port.
 void duplicate(java.lang.Object source_)
          Duplicates the content of source_, including ID, name, child components and connections among them, to this component.
 java.lang.String[] getDebugLevelNames()
          Returns the names of defined debug levels; subclasses should override this method if debug levels are defined.
 java.lang.String getName()
          Returns the (informational) name of the component.
 java.lang.String info()
          Returns information regarding this component.
 void ospf_set_area_id(int id_)
          xxx: Specify the area id for this router (Needed to be modified)
 void reset()
          Resets the component for being used anew.
 
Methods inherited from class drcl.inet.protocol.Routing
addRTEntry, addRTEntry, graftRTEntry, graftRTEntry, graftRTEntry, pruneRTEntry, pruneRTEntry, pruneRTEntry, removeAllRTEntries, removeRTEntry, removeRTEntry, retrieveAllRTEntries, retrieveBestRTEntryDest, retrieveRTEntry, retrieveRTEntryDest, retrieveRTEntrySrc
 
Methods inherited from class drcl.inet.Protocol
broadcast, broadcast, broadcast, broadcast, broadcast, broadcast, broadcast, createConfigSwitchPort, createIDChangedEventPort, createIDServicePort, createIFEventPort, createIFQueryPort, createLinkBrokenEventPort, createMcastHostEventPort, createMcastQueryPort, createMulticastRTChangedEventPort, createPktArrivalEventPort, createRTServicePort, createUcastQueryPort, createUnicastRTChangedEventPort, createVIFEventPort, forward, forward, forward, forward, forward, forward, LinkBrokenEventHandler
 
Methods inherited from class drcl.net.Module
cancelTimeout, setTimeout, setTimeoutAt
 
Methods inherited from class drcl.comp.Component
addComponent, addComponent, addEventPort, addEventPort, addForkPort, addPort, addPort, addPort, addPort, addPort, addPort, addPort, addPort, addServerPort, addServerPort, cancelFork, connect, containsComponent, containsComponent, containsPort, debug, disconnectAll, disconnectAllPeers, disconnectAllPorts, drop, drop, error, error, expose, exposeEventPorts, exposePort, exposePort, exposePort, exposePort, exposePort, findAvailable, findAvailable, findAvailable, fork, forkAt, getAllComponents, getAllPorts, getAllPorts, getAllWiresInside, getAllWiresInsideOut, getAllWiresOut, getComponent, getComponentFlag, getComponentFlag, getContract, getContractHT, getContractHT, getDebugFlagsInBinary, getID, getParent, getPort, getPort, getRoot, getTime, iduplicate, isAncestorOf, isContainer, isDebugEnabled, isDebugEnabledAt, isDirectlyRelatedTo, isDirectOutputEnabled, isEnabled, isErrorNoticeEnabled, isEventExportEnabled, isGarbageDisplayEnabled, isGarbageEnabled, isPortRemovable, isStarted, isStopped, isTraceEnabled, lock, notify, notifyAll, operate, reboot, removeAll, removeAllComponents, removeAllPorts, removeAllPorts, removeComponent, removeComponent, removePort, removePort, removePort, resume, run, sduplicate, send, sendAt, setComponentFlag, setComponentFlag, setDebugEnabled, setDebugEnabled, setDebugEnabledAt, setDebugEnabledAt, setDebugEnabledAt, setDirectOutputEnabled, setDirectOutputEnabled, setEnabled, setErrorNoticeEnabled, setErrorNoticeEnabled, setEventExportEnabled, setEventExportEnabled, setExecutionBoundary, setGarbageDisplayEnabled, setGarbageDisplayEnabled, setGarbageEnabled, setGarbageEnabled, setID, setID, setName, setPort, setPort, setTraceEnabled, setTraceEnabled, sleepFor, sleepUntil, stop, toString, unexpose, unlock, useLocalForkManager, useLocalForkManager, wait
 
Methods inherited from class drcl.DrclObj
clone
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

debug

public static boolean debug

debug2

public static boolean debug2

DEBUG_SAMPLE

public static final int DEBUG_SAMPLE
Debug level to enable sampled debug messages.

See Also:
Constant Field Values

DEBUG_NEIGHBOR

public static final int DEBUG_NEIGHBOR
Debug level of neighbor state changes.

See Also:
Constant Field Values

DEBUG_SEND

public static final int DEBUG_SEND
Debug level of sending ospf packets.

See Also:
Constant Field Values

DEBUG_SPF

public static final int DEBUG_SPF
Debug level of calculating SPF tree and installing route entries.

See Also:
Constant Field Values

DEBUG_REFRESH

public static final int DEBUG_REFRESH
Debug level of LSA refresh events.

See Also:
Constant Field Values

DEBUG_LSA

public static final int DEBUG_LSA
Debug level of handling LSA update packets.

See Also:
Constant Field Values

DEBUG_ACK

public static final int DEBUG_ACK
Debug level of handling LSA acknowledgement packets.

See Also:
Constant Field Values

DEBUG_TIMEOUT

public static final int DEBUG_TIMEOUT
Debug level of handling timeout events.

See Also:
Constant Field Values

DEBUG_DETAIL

public static final int DEBUG_DETAIL
Debug level of detailed messages for other levels.

See Also:
Constant Field Values
Constructor Detail

OSPF

public OSPF()
Constructor.

Method Detail

getName

public java.lang.String getName()
Description copied from class: Component
Returns the (informational) name of the component.

Overrides:
getName in class Component

getDebugLevelNames

public java.lang.String[] getDebugLevelNames()
Description copied from class: Component
Returns the names of defined debug levels; subclasses should override this method if debug levels are defined.

Overrides:
getDebugLevelNames in class Component

info

public java.lang.String info()
Description copied from class: Component
Returns information regarding this component. Subclasses should override this method to provide useful information at run time.

Overrides:
info in class Component

reset

public void reset()
Description copied from class: Component
Resets the component for being used anew. All the internal variables must be set to the initial state. All the ports and child components are reset as well.

Overrides:
reset in class Component

duplicate

public void duplicate(java.lang.Object source_)
Description copied from class: Component
Duplicates the content of source_, including ID, name, child components and connections among them, to this component. Subclasses need to override this method to copy its own variables.

Specified by:
duplicate in interface ObjectDuplicable
Overrides:
duplicate in class Protocol

dataArriveAtDownPort

public void dataArriveAtDownPort(java.lang.Object data_,
                                 Port downPort_)
Handle data arriving at the down port. According to the different packet types ( OSPF Hello pkt, Database descricption pkt,Link State update pkt, LS request pkt, or LS ack pkt), different corresponding methods can handle the packet. Note for OSPF_Hello pkt will be received only once. The other hello maintaince is done by drcl.inet.core.Hello

Parameters:
downPort_ - down port at which messages arrive.

ospf_set_area_id

public void ospf_set_area_id(int id_)
xxx: Specify the area id for this router (Needed to be modified)


DRCL J-Sim API

Copyright © 1998-2003 Distributed Real-time Computing Lab (DRCL). All Rights Reserved.     ~ To J-Sim Home ~