DRCL J-Sim 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, ObjectCloneable, 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.

The component can run either on physical interfaces or tunnel (virtual) interfaces (setMode(String). By default, it runs on physical interfaces. The tunnel interfaces are configured in the core service layer.

One may configure this component to operate on a specific set of interfaces (setIfset(drcl.data.BitSet)).

Version:
1.2, 10/22/2003
Author:
Bin Wang, Hung-ying Tyan
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.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
DV()
           
DV(java.lang.String id_)
           
 
Method Summary
 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.
static int getDVPacketSize(DVPacket dvpkt_)
           
 BitSet getIfset()
          Returns the set of the interfaces that this protocol is operated on.
 java.lang.String getMode()
           
 java.lang.String getName()
          Returns the (informational) name of the component.
 java.lang.String info()
          Provide routing table information.
 void reset()
          Resets the component for being used anew.
 int[] routeQueryHandler(InetPacket pkt_, int incomingIf_, Port inPort_)
           
 int[] routeQueryHandler(RTKey key_, Port inPort_)
           
 void setIfset(BitSet ifset_)
          Sets the set of the interfaces that this protocol is operated on.
 void setMode(java.lang.String mode_)
          Sets the operation mode.
 
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

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

setIfset

public void setIfset(BitSet ifset_)
Sets the set of the interfaces that this protocol is operated on. Set this *only* before start-up.


getIfset

public BitSet getIfset()
Returns the set of the interfaces that this protocol is operated on.


setMode

public void setMode(java.lang.String mode_)
Sets the operation mode. Accepted modes: PHYSICAL, VIRTUAL. PHYSICAL: works with physical interfaces only. VIRTUAL: works with virtual (tunnel) interfaces only. Set this *only* before start-up.


getMode

public java.lang.String getMode()
See Also:
setMode(String).

getDVPacketSize

public static int getDVPacketSize(DVPacket dvpkt_)

routeQueryHandler

public int[] routeQueryHandler(RTKey key_,
                               Port inPort_)
See Also:
RTLookup, Protocol.createUcastQueryPort(), Protocol.createMcastQueryPort()

routeQueryHandler

public int[] routeQueryHandler(InetPacket pkt_,
                               int incomingIf_,
                               Port inPort_)
See Also:
RTLookup, Protocol.createUcastQueryPort(), Protocol.createMcastQueryPort()

DRCL J-Sim API

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