J-Sim v1.2.1-p7 API

drcl.inet.protocol.dv
Class DV

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.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.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class drcl.comp.Component
Component.Locks
 
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_EXPOSED, FLAG_GARBAGE_DISPLAY_ENABLED, FLAG_GARBAGE_ENABLED, FLAG_HAS_EXPOSED_CHILD, 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, MCAST_QUERY_PORT_ID, PACKET_MODE, PID_AODV, 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.
 int[] routeQueryHandler(InetPacket pkt_, int incomingIf_, Port inPort_)
          Called back when a unicast/multicast query event is received.
 int[] routeQueryHandler(RTKey key_, Port inPort_)
          Called back when a unicast/multicast query event is received.
protected  void timeout(java.lang.Object data_)
          The handler invoked when a timeout event occurs.
 
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, retrieveBestRTEntryDest, retrieveRTEntry, retrieveRTEntryDest, retrieveRTEntrySrc
 
Methods inherited from class drcl.inet.Protocol
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, idAddedEventHandler, idRemovedEventHandler, LinkBrokenEventHandler, mcastHostJoinEventHandler, mcastHostLeaveEventHandler, pktArrivalHandler, processOther, rtAddedEventHandler, rtModifiedEventHandler, rtRemovedEventHandler, 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, isDirectlyRelatedTo, 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, yield
 
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.

See Also:
Constant Field Values

MAX_TIME_OUT_VARIANCE

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

See Also:
Constant Field Values

NEIGHBOR_TIMEOUT_PERIOD

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

See Also:
Constant Field Values

DELETE_TIMEOUT_PERIOD

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

See Also:
Constant Field Values

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.

See Also:
Constant Field Values

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."

See Also:
Constant Field Values

DEBUG_IO

public static final int DEBUG_IO
See Also:
Constant Field Values

DEBUG_TIMEOUT

public static final int DEBUG_TIMEOUT
See Also:
Constant Field Values

DEBUG_ROUTE

public static final int DEBUG_ROUTE
See Also:
Constant Field Values

DEBUG_SEND_UPDATE

public static final int DEBUG_SEND_UPDATE
See Also:
Constant Field Values
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.

Specified by:
duplicate in interface ObjectDuplicable
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.
See Also:
Protocol.createIFEventPort()

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

routeQueryHandler

public int[] routeQueryHandler(RTKey key_,
                               Port inPort_)
Description copied from class: Protocol
Called back when a unicast/multicast query event is received.

Overrides:
routeQueryHandler in class Protocol
See Also:
RTLookup, Protocol.createUcastQueryPort(), Protocol.createMcastQueryPort()

routeQueryHandler

public int[] routeQueryHandler(InetPacket pkt_,
                               int incomingIf_,
                               Port inPort_)
Description copied from class: Protocol
Called back when a unicast/multicast query event is received.

Overrides:
routeQueryHandler in class Protocol
See Also:
RTLookup, Protocol.createUcastQueryPort(), Protocol.createMcastQueryPort()

J-Sim v1.2.1-p7 API

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