DRCL J-Sim API

drcl.inet.protocol.dvmrp
Class DVMRP

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.dvmrp.DVMRP
All Implemented Interfaces:
java.lang.Cloneable, InetConstants, McastRouting, ObjectCloneable, ObjectDuplicable, java.io.Serializable

public class DVMRP
extends Routing
implements McastRouting

This component implements the distance vector multicast routing protocol (DVMRP).

The implementation almost complies with the DVMRPv3 Internet Draft except that:

As for (1), we provide our own solutions to those situations which can be seen as augments to the internet draft in our opinion. Due to (2), a couple of things in this implementation are quite different from what would be in a real implementation. For example, the "probe" messages for discovering and maintaining neighboring information are replaced by the neighbor up/down events provided by the core service layer. Moreover, this implementation does not handle IGMP directly. Handling of IGMP is separated from this implementation and should be provided by another component (probably the core service layer). This implementation expects the multicast host events from a predefined event port. The events summarize the IGMP activities that are only interested in by a multicast routing protocol such as DVMRP.

This component treats the tunnel (virtual) interfaces equally with the normal ones. 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)).

See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class drcl.comp.Component
Component.Locks
 
Field Summary
static int DEBUG_DEPENDENT
           
static int DEBUG_GRAFT
           
static int DEBUG_IO
           
static int DEBUG_MCAST_QUERY
           
static int DEBUG_PRUNE
           
static int DEBUG_ROUTE
           
static int DEBUG_SEND_UPDATE
           
static int DEBUG_SYNC_FC
           
static int DEBUG_TIMEOUT
           
static int INFINITY
          Metric of infinity.
 
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
DVMRP()
           
DVMRP(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.
 BitSet getIfset()
          Returns the set of the interfaces that this protocol is operated on.
 int[] getMetrics()
          Returns the metrics on the interfaces that this protocol is operated on.
 java.lang.String getName()
          Returns the (informational) name of the component.
 DVMRPTimingPack getTimingPack()
           
 java.lang.String info()
          Returns information regarding this component.
 void reset()
          Resets the component for being used anew.
 void setIfset(BitSet ifset_)
          Sets the set of the interfaces that this protocol is operated on.
 void setMetrics(int[] metrics_)
          Sets the metrics on the interfaces that this protocol is operated on.
 void setPruneLifetime(int pruneLifetime_)
           
 void setTimingPack(DVMRPTimingPack timing_)
           
 java.lang.String timingInfo()
           
 
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

INFINITY

public static final int INFINITY
Metric of infinity. Recommended in the DVMRPv3 Internet Draft.

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

DEBUG_MCAST_QUERY

public static final int DEBUG_MCAST_QUERY
See Also:
Constant Field Values

DEBUG_PRUNE

public static final int DEBUG_PRUNE
See Also:
Constant Field Values

DEBUG_GRAFT

public static final int DEBUG_GRAFT
See Also:
Constant Field Values

DEBUG_DEPENDENT

public static final int DEBUG_DEPENDENT
See Also:
Constant Field Values

DEBUG_SYNC_FC

public static final int DEBUG_SYNC_FC
See Also:
Constant Field Values
Constructor Detail

DVMRP

public DVMRP()

DVMRP

public DVMRP(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()
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

setIfset

public void setIfset(BitSet ifset_)
Sets the set of the interfaces that this protocol is operated on.


getIfset

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


setMetrics

public void setMetrics(int[] metrics_)
Sets the metrics on the interfaces that this protocol is operated on. The indices to the metrics array are the indices to the interfaces. The values in the array that correspond to the interfaces that this protocol is not operated on are ignored.

See Also:
setIfset(drcl.data.BitSet)

getMetrics

public int[] getMetrics()
Returns the metrics on the interfaces that this protocol is operated on. The indices to the returned metrics array are the indices to the interfaces. The values in the array that correspond to the interfaces that this protocol is not operated on are arbitrary.

Returns:
null if all the interfaces have default metric of zero.
See Also:
setIfset(drcl.data.BitSet)

setTimingPack

public void setTimingPack(DVMRPTimingPack timing_)

getTimingPack

public DVMRPTimingPack getTimingPack()

timingInfo

public java.lang.String timingInfo()

setPruneLifetime

public void setPruneLifetime(int pruneLifetime_)

DRCL J-Sim API

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