Package: inet.routing.dymo
Dymo
simple moduleThis module provides Dynamic MANET On-demand (Dymo also known as AODVv2) Routing based on the IETF draft at http://tools.ietf.org/html/draft-ietf-manet-dymo-24.
Module parameters are copied from the IETF draft and renamed for consistency with INET naming conventions. Some parameters are not yet implemented.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Used in compound modules
Name | Type | Description |
---|---|---|
DymoRouter | compound module | (no description) |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
interfaceTableModule | string |
context parameters |
|
routingTableModule | string | absPath("^.ipv4.routingTable") | |
networkProtocolModule | string | absPath("^.ipv4.ip") | |
clientAddresses | string | "10.10.0.0/24 10.20.0.0" |
1. Dymo parameter group |
useMulticastRREP | bool | false |
USE_MULTICAST_RREP |
interfaces | string | "*" |
string DEFAULT_METRIC_TYPE = default("HOP_COUNT"); |
activeInterval | double | 5s |
2. Dymo parameter group |
maxIdleTime | double | 200s |
MAX_IDLETIME |
maxSequenceNumberLifetime | double | 300s |
MAX_SEQNUM_LIFETIME |
routeRREQWaitTime | double | 2s |
ROUTE_RREQ_WAIT_TIME |
rreqHolddownTime | double | 10s |
double UNICAST_MESSAGE_SENT_TIMEOUT @unit(s) = default(1s); |
maxHopCount | int | 20 |
3. Dymo parameter group |
discoveryAttemptsMax | int | 3 |
string MAX_METRIC = default(""); double MAXTIME; |
appendInformation | bool | true |
4. Dymo parameter group |
bufferSizePackets | int | -1 |
BUFFER_SIZE_PACKETS |
bufferSizeBytes | int | -1B |
BUFFER_SIZE_BYTES double CONTROL_TRAFFIC_LIMIT |
maxJitter | double | 10ms |
Dymo extension parameters |
sendIntermediateRREP | bool | true | |
minHopLimit | int | 5 | |
maxHopLimit | int | 10 |
Properties
Name | Value | Description |
---|---|---|
class | dymo::Dymo |
properties |
display | i=block/routing |
Gates
Name | Direction | Size | Description |
---|---|---|---|
ipIn | input | ||
ipOut | output |
Scheduled messages (observed)
msg | kind | ctrl | tags | msgname | context |
---|---|---|---|---|---|
PacketJitterTimer | 0 | PacketJitterTimer | |||
RreqBackoffTimer | 0 | RreqBackoffTimer | |||
RreqWaitRrepTimer | 0 | RreqWaitRrepTimer |
Direct method calls (observed)
call to | function | info |
---|---|---|
MessageDispatcher | inet::MessageDispatcher::arrived | arrived |
MessageDispatcher | inet::MessageDispatcher::handleRegisterProtocol | handleRegisterProtocol |
InterfaceTable | inet::InterfaceTable::interfaceChanged | interfaceChanged |
Igmpv2 | inet::Igmpv2::receiveSignal | ipv4MulticastGroupJoined |
Ipv4 | inet::Ipv4::registerHook | registerHook() |
Ipv4 | inet::Ipv4::reinjectQueuedDatagram | reinjectDatagram() |
Ipv4RoutingTable | inet::Ipv4RoutingTable::addRoute | addRoute(...) |
Ipv4RoutingTable | inet::Ipv4RoutingTable::findBestMatchingRoute | findBestMatchingRoute(%u.%u.%u.%u) |
Ipv4RoutingTable | inet::Ipv4RoutingTable::isLocalAddress | isLocalAddress(%u.%u.%u.%u) |
Ipv4RoutingTable | inet::Ipv4RoutingTable::removeRoute | removeRoute(...) |
Ipv6 | inet::Ipv6::registerHook | registerHook() |
Ipv6RoutingTable | inet::Ipv6RoutingTable::doLongestPrefixMatch | doLongestPrefixMatch(%s) |
Ipv6RoutingTable | inet::Ipv6RoutingTable::isLocalAddress | isLocalAddress(%s) |
NextHopForwarding | inet::NextHopForwarding::registerHook | registerHook() |
NextHopForwarding | inet::NextHopForwarding::reinjectQueuedDatagram | reinjectDatagram() |
NextHopRoutingTable | inet::NextHopRoutingTable::addRoute | addRoute(...) |
NextHopRoutingTable | inet::NextHopRoutingTable::findBestMatchingRoute | findBestMatchingRoute(%s) |
NextHopRoutingTable | inet::NextHopRoutingTable::isLocalAddress | isLocalAddress(%s) |
NextHopRoutingTable | inet::NextHopRoutingTable::removeRoute | removeRoute(...) |
Called methods (observed)
function | info | call from |
---|---|---|
inet::dymo::Dymo::datagramLocalOutHook | datagramLocalOutHook | Ipv4, Ipv6, NextHopForwarding |
inet::dymo::Dymo::datagramPreRoutingHook | datagramPreRoutingHook | Ipv4, Ipv6, NextHopForwarding |
inet::dymo::Dymo::handleOperationStage | handleOperationStage | ScenarioManager |
inet::dymo::Dymo::receiveSignal | linkBroken | Dcf |
Incoming messages (observed)
Outgoing messages (observed)
gate | msg | kind | ctrl | destModule | tags |
---|---|---|---|---|---|
ipOut | Packet | 0 | Ipv4 | DispatchProtocolReq, HopLimitReq, L3AddressReq, PacketProtocolTag, InterfaceReq? | |
ipOut | Packet | 0 | Ipv6 | DispatchProtocolReq, HopLimitReq, L3AddressReq, PacketProtocolTag | |
ipOut | Packet | 0 | NextHopForwarding | DispatchProtocolReq, HopLimitReq, L3AddressReq, PacketProtocolTag, InterfaceReq? |
Packet operations (observed)
chunkType | packetAction |
---|---|
UdpHeader | insertAtFront, popAtFront |
DymoPacket | peekDataAt |
Rerr | insertAtBack |
Rrep | insertAtBack |
Rreq | insertAtBack |
Shared Tagging operations (observed)
tagType | tagAction |
---|---|
DispatchProtocolReq | addTag |
HopLimitInd | getTag |
HopLimitReq | addTag |
InterfaceInd | getTag |
InterfaceReq | addTag |
L3AddressInd | getTag |
L3AddressReq | addTag |
NetworkProtocolInd | findTag |
PacketProtocolTag | addTag |
Tagging operations (observed)
tagType | tagAction |
---|---|
inet::Ipv4InterfaceData | getTagForUpdate |
inet::Ipv6InterfaceData | getTagForUpdate |
inet::NextHopInterfaceData | getTagForUpdate |
Source code
// // This module provides Dynamic MANET On-demand (Dymo also known as AODVv2) Routing // based on the IETF draft at http://tools.ietf.org/html/draft-ietf-manet-dymo-24. // // Module parameters are copied from the IETF draft and renamed for consistency with // INET naming conventions. Some parameters are not yet implemented. // simple Dymo like IManetRouting { parameters: // properties @class("dymo::Dymo"); @display("i=block/routing"); // context parameters string interfaceTableModule; // The path to the InterfaceTable module string routingTableModule = default(absPath("^.ipv4.routingTable")); string networkProtocolModule = default(absPath("^.ipv4.ip")); // 1. Dymo parameter group string clientAddresses = default("10.10.0.0/24 10.20.0.0"); // CLIENT_ADDRESSES bool useMulticastRREP = default(false); // USE_MULTICAST_RREP // string DEFAULT_METRIC_TYPE = default("HOP_COUNT"); string interfaces = default("*"); // AODVv2_INTERFACES // 2. Dymo parameter group double activeInterval @unit(s) = default(5s); // ACTIVE_INTERVAL double maxIdleTime @unit(s) = default(200s); // MAX_IDLETIME double maxSequenceNumberLifetime @unit(s) = default(300s); // MAX_SEQNUM_LIFETIME double routeRREQWaitTime @unit(s) = default(2s); // ROUTE_RREQ_WAIT_TIME // double UNICAST_MESSAGE_SENT_TIMEOUT @unit(s) = default(1s); double rreqHolddownTime @unit(s) = default(10s); // RREQ_HOLDDOWN_TIME // 3. Dymo parameter group int maxHopCount = default(20); // MAX_HOPCOUNT // string MAX_METRIC = default(""); // double MAXTIME; int discoveryAttemptsMax = default(3); // DISCOVERY_ATTEMPTS_MAX // int MTU; // 4. Dymo parameter group bool appendInformation = default(true); //APPEND_INFORMATION; int bufferSizePackets = default(-1); // BUFFER_SIZE_PACKETS int bufferSizeBytes @unit(B) = default(-1B); // BUFFER_SIZE_BYTES // double CONTROL_TRAFFIC_LIMIT // Dymo extension parameters double maxJitter @unit(s) = default(10ms); // see IETF RFC5148 (Jitter Considerations in MANET) bool sendIntermediateRREP = default(true); int minHopLimit = default(5); int maxHopLimit = default(10); gates: input ipIn; output ipOut; }File: src/inet/routing/dymo/Dymo.ned