DRCL JavaSim API

drcl.inet.protocol.dv
Class DV

java.lang.Object
  |
  +--drcl.DrclObj
        |
        +--drcl.comp.Component
              |
              +--drcl.net.Module
                    |
                    +--drcl.inet.Protocol
                          |
                          +--drcl.inet.protocol.Routing
                                |
                                +--drcl.inet.protocol.dv.DV
All Implemented Interfaces:
java.lang.Cloneable, InetConstants, ObjectDuplicable, java.io.Serializable, UnicastRouting

public class DV
extends Routing
implements UnicastRouting

Implements a routing information protocol (RIP, RFC1058, RFC2453). Split-horizon with poison reverse, triggered updates and "holddown" state for deleted routes are implemented.

The protocol takes advantages of the NEIGHBOR_UP event from the core service layer to activate the protocol at the beginning. When a new neighbor is discovered, the protocol sends a request message at the interface, starts a triggered update at the other interfaces; and sets up the regular update timer if necessary.

Version:
1.0, 10/17/2000
Author:
Bin Wang, Hung-ying Tyan
See Also:
Serialized Form

Inner classes inherited from class drcl.comp.Component
Component.LockPack
 
Field Summary
static int DEBUG_IO
           
static int DEBUG_ROUTE
           
static int DEBUG_SEND_UPDATE
           
static int DEBUG_TIMEOUT
           
static double DELETE_TIMEOUT_PERIOD
          Hold-down timeout period for entries to be removed.
static int INFINITY
          Infinity metric.
static double MAX_TIME_OUT_VARIANCE
          Timeout variance for updating the distance vector information.
static double NEIGHBOR_TIMEOUT_PERIOD
          Routing table entry timeout period.
static double REGULAR_UPDATE_TIMEOUT_PERIOD
          Regular update timeout period.
static double TRIGGERED_UPDATE_TIMEOUT_PERIOD
          Triggered update timeout period.
 
Fields inherited from class drcl.inet.protocol.Routing
queryPort, rtconfigPort
 
Fields inherited from class drcl.net.Module
address, downPort, PortGroup_DOWN, PortGroup_UP, timerPort, 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, lockHead, 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_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, MCAST_QUERY_PORT_ID, PACKET_MODE, PID_DV, PID_DVMRP, PID_HELLO, PID_IGMP, PID_OSPF, PID_RSVP, PID_TCP, 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
DV()
           
DV(java.lang.String id_)
           
 
Method Summary
protected  void dataArriveAtDownPort(java.lang.Object msg_, Port downPort_)
          The handler invoked when a packet arrives at a "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()
          Provide routing table information.
protected  void neighborDownEventHandler(int ifindex_, NetAddress neighbor_, Port inPort_)
          Called back when a neighbor down event is received.
protected  void neighborUpEventHandler(int ifindex_, NetAddress neighbor_, Port inPort_)
          Neighbor up event: sends a request to the neighbor.
protected  void process(java.lang.Object data_, Port inPort_)
          This method classifies inPort_ and delegates process of data to the appropriate handler.
 void reset()
          Resets the component for being used anew.
protected  void timeout(java.lang.Object data_)
          The handler invoked when a timeout event occurs.
 int[] ucastQueryHandler(RTKey key_)
          Handel unicast query from CSL.
 
Methods inherited from class drcl.inet.protocol.Routing
addRTEntry, addRTEntry, addRTEntry, addRTEntry, addRTEntry, addRTEntry, addRTEntry, graftRTEntry, graftRTEntry, graftRTEntry, pruneRTEntry, pruneRTEntry, pruneRTEntry, removeAllRTEntries, removeRTEntry, removeRTEntry, replaceRTEntry, replaceRTEntry, retrieveAllRTEntries, retrieveRTEntry, retrieveRTEntryDest, retrieveRTEntrySrc
 
Methods inherited from class drcl.inet.Protocol
broadcast, broadcast, broadcast, broadcast, broadcast, broadcast, createConfigSwitchPort, createIDChangedEventPort, createIDServicePort, createIFEventPort, createIFQueryPort, createMcastHostEventPort, createMcastQueryPort, createMulticastRTChangedEventPort, createPktArrivalEventPort, createRTServicePort, createUcastQueryPort, createUnicastRTChangedEventPort, createVIFEventPort, forward, forward, forward, forward, forward, forward, idAddedEventHandler, idRemovedEventHandler, mcastHostJoinEventHandler, mcastHostLeaveEventHandler, mcastQueryHandler, pktArrivalHandler, processOther, rtAddedEventHandler, rtModifiedEventHandler, rtRemovedEventHandler, ucastQueryHandler, vNeighborDownEventHandler, vNeighborUpEventHandler
 
Methods inherited from class drcl.net.Module
cancelTimeout, dataArriveAtUpPort, deliver, getAddress, removeDefaultDownPort, removeDefaultUpPort, removeTimerPort, setAddress, setTimeout, setTimeoutAt
 
Methods inherited from class drcl.comp.Component
_resume, _start, _stop, addComponent, addComponent, addEventPort, addEventPort, addForkPort, addPort, addPort, addPort, addPort, addPort, addPort, addPort, addPort, addServerPort, addServerPort, cancelFork, componentAdded, componentRemoved, connect, containsComponent, containsComponent, containsPort, debug, disconnectAll, disconnectAllPeers, disconnectAllPorts, drop, drop, error, error, expose, exposeEventPorts, exposePort, exposePort, exposePort, exposePort, exposePort, findAvailable, findAvailable, findAvailable, finishing, fork, forkAt, getAllComponents, getAllPorts, getAllPorts, getAllWiresInside, getAllWiresInsideOut, getAllWiresOut, getComponent, getComponentFlag, getComponentFlag, getContract, getContractHT, getContractHT, getDebugFlagsInBinary, getForkManager, getID, getParent, getPort, getPort, getRoot, getRuntime, getTime, iduplicate, isAncestorOf, isComponentNotificationEnabled, isContainer, isDebugEnabled, isDebugEnabledAt, isDirectOutputEnabled, isEnabled, isErrorNoticeEnabled, isEventExportEnabled, isGarbageDisplayEnabled, isGarbageEnabled, isPortNotificationEnabled, isPortRemovable, isStarted, isStopped, isTraceEnabled, lock, notify, notifyAll, operate, portAdded, portRemoved, reboot, removeAll, removeAllComponents, removeAllPorts, removeAllPorts, removeComponent, removeComponent, removePort, removePort, removePort, resume, run, sduplicate, send, sendAt, setComponentFlag, setComponentFlag, setComponentNotificationEnabled, setContract, setDebugEnabled, setDebugEnabled, setDebugEnabledAt, setDebugEnabledAt, setDebugEnabledAt, setDirectOutputEnabled, setDirectOutputEnabled, setEnabled, setErrorNoticeEnabled, setErrorNoticeEnabled, setEventExportEnabled, setEventExportEnabled, setExecutionBoundary, setGarbageDisplayEnabled, setGarbageDisplayEnabled, setGarbageEnabled, setGarbageEnabled, setID, setID, setName, setPort, setPort, setPortNotificationEnabled, setPortRemovable, setRuntime, 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, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

REGULAR_UPDATE_TIMEOUT_PERIOD

public static final double REGULAR_UPDATE_TIMEOUT_PERIOD
Regular update timeout period. Recommended in RFC2453.

MAX_TIME_OUT_VARIANCE

public static final double MAX_TIME_OUT_VARIANCE
Timeout variance for updating the distance vector information. Recommended in RFC2453.

NEIGHBOR_TIMEOUT_PERIOD

public static final double NEIGHBOR_TIMEOUT_PERIOD
Routing table entry timeout period. Recommended in RFC2453.

DELETE_TIMEOUT_PERIOD

public static final double DELETE_TIMEOUT_PERIOD
Hold-down timeout period for entries to be removed. Recommended in RFC2453.

TRIGGERED_UPDATE_TIMEOUT_PERIOD

public static final double TRIGGERED_UPDATE_TIMEOUT_PERIOD
Triggered update timeout period. This is set up when a triggered update is needed. The reason for this delay is to prevent excessive traffic from message exchanges during a transitional period.

INFINITY

public static final int INFINITY
Infinity metric. As indicated in RFC2453, "The protocol is limited to networks whose longest path (the network's diameter) is 15 hops. The designers believe that the basic protocol design is inappropriate for larger networks."

DEBUG_IO

public static final int DEBUG_IO

DEBUG_TIMEOUT

public static final int DEBUG_TIMEOUT

DEBUG_ROUTE

public static final int DEBUG_ROUTE

DEBUG_SEND_UPDATE

public static final int DEBUG_SEND_UPDATE
Constructor Detail

DV

public DV()

DV

public DV(java.lang.String id_)
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

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.
Overrides:
duplicate in class Protocol

info

public java.lang.String info()
Provide routing table information.
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

neighborUpEventHandler

protected void neighborUpEventHandler(int ifindex_,
                                      NetAddress neighbor_,
                                      Port inPort_)
Neighbor up event: sends a request to the neighbor. Activates/sets up the regular update timer.
Overrides:
neighborUpEventHandler in class Protocol
Parameters:
ifindex_ - index of the interface.

neighborDownEventHandler

protected void neighborDownEventHandler(int ifindex_,
                                        NetAddress neighbor_,
                                        Port inPort_)
Description copied from class: Protocol
Called back when a neighbor down event is received.
Overrides:
neighborDownEventHandler in class Protocol
Following copied from class: drcl.inet.Protocol
Parameters:
ifindex_ - index of the interface.
See Also:
Protocol.createIFEventPort()

process

protected void process(java.lang.Object data_,
                       Port inPort_)
Description copied from class: Module
This method classifies inPort_ and delegates process of data to the appropriate handler. If a subclass decides to override this method, then it should call super.process(data_, inPort_) to make those handlers effective.
Overrides:
process in class Module
Following copied from class: drcl.net.Module
See Also:
Module.dataArriveAtUpPort(Object, drcl.comp.Port), Module.dataArriveAtDownPort(Object, drcl.comp.Port), Module.processOther(Object, drcl.comp.Port)

timeout

protected void timeout(java.lang.Object data_)
Description copied from class: Module
The handler invoked when a timeout event occurs. Subclasses should override it to handle such an event.
Overrides:
timeout in class Module
Following copied from class: drcl.net.Module
See Also:
Module.setTimeout(Object, double), Module.setTimeoutAt(Object, double)

dataArriveAtDownPort

protected void dataArriveAtDownPort(java.lang.Object msg_,
                                    Port downPort_)
Description copied from class: Module
The handler invoked when a packet arrives at a "down" port. Subclasses should override it to handle such an event.
Overrides:
dataArriveAtDownPort in class Module

ucastQueryHandler

public int[] ucastQueryHandler(RTKey key_)
Handel unicast query from CSL.

DRCL JavaSim API

Copyright © 2001 - DRCL, OSU     ~ Back to JavaSim Home ~