drcl.inet.protocol.dvmrp
Class DVMRP
java.lang.Object
drcl.DrclObj
drcl.comp.Component
drcl.net.Module
drcl.inet.Protocol
drcl.inet.protocol.Routing
drcl.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:
- (1) handling of some situations are not mentioned in the draft, and
- (2) it takes advantage of the services from the
core service layer in the INET framework.
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
| 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.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 java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
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
DVMRP
public DVMRP()
DVMRP
public DVMRP(java.lang.String id_)
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_)
Copyright © 1998-2003 Distributed Real-time Computing Lab (DRCL). All Rights Reserved. ~ To J-Sim Home ~