Package: inet.networklayer.icmpv6
Ipv6NeighbourDiscovery
simple moduleImplements IPv6 Neighbour Discovery.
An overview of the Ipv6 implementation in the INET Framework is provided here.
See also: Ipv6, Ipv6RoutingTable, Icmpv6
Used in compound modules
Name | Type | Description |
---|---|---|
Ipv6NetworkLayer | compound module |
Represents an IPv6 network layer (L3). |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
interfaceTableModule | string |
The path to the InterfaceTable module |
|
crcMode | string | "declared" | |
icmpv6Module | string | ||
xmipv6Module | string | ||
routingTableModule | string | ||
minIntervalBetweenRAs | double | 30ms |
minRtrAdvInterval: 0.03 sec for MIPv6 , declared as parameter to facilitate testing without recompiling (Zarrar 15.07.07) |
maxIntervalBetweenRAs | double | 70ms |
MaxrtrAdvInterval: 0.07 sec for MIPv6, declared as parameter to facilitate testing without recompiling (Zarrar 15.07.07) |
Properties
Name | Value | Description |
---|---|---|
display | i=block/network |
Gates
Name | Direction | Size | Description |
---|---|---|---|
ipv6In | input | ||
ipv6Out | output |
Signals
Name | Type | Unit |
---|---|---|
startDad | long |
Statistics
Name | Title | Source | Record | Unit | Interpolation Mode |
---|---|---|---|---|---|
startDad | DAD started | count, vector |
Scheduled messages (observed)
msg | kind | ctrl | tags | msgname | context |
---|---|---|---|---|---|
omnetpp::cMessage | 0 | assignLinkLocalAddr | |||
omnetpp::cMessage | 1 | sendPeriodicRA | filled | ||
omnetpp::cMessage | 2 | sendSolicitedRA | filled | ||
omnetpp::cMessage | 3 | initiateRTRDIS | filled | ||
omnetpp::cMessage | 4 | dadTimeout | filled | ||
omnetpp::cMessage | 5 | processRDTimeout | filled | ||
omnetpp::cMessage | 6 | NUDTimeout | filled | ||
omnetpp::cMessage | 7 | arTimeout | filled |
Direct method calls (observed)
call to | function | info |
---|---|---|
InterfaceTable | inet::InterfaceTable::interfaceChanged | interfaceChanged |
Icmpv6 | inet::Icmpv6::sendErrorMessage | sendErrorMessage(datagram, type=%d, code=%d) |
Ipv6NeighbourDiscovery | inet::Ipv6NeighbourDiscovery::createAndSendNsPacket | createAndSendNsPacket |
Ipv6NeighbourDiscovery | inet::Ipv6NeighbourDiscovery::initiateDad | initiateDad |
Ipv6RoutingTable | inet::Ipv6RoutingTable::doLongestPrefixMatch | doLongestPrefixMatch(%s) |
Called methods (observed)
function | info | call from |
---|---|---|
inet::Ipv6NeighbourDiscovery::createAndSendNsPacket | createAndSendNsPacket | Ipv6NeighbourDiscovery |
inet::Ipv6NeighbourDiscovery::initiateDad | initiateDad | Ipv6NeighbourDiscovery |
inet::Ipv6NeighbourDiscovery::resolveNeighbour | resolveNeighbor(%s,if=%d) | Ipv6 |
Incoming messages (observed)
gate | msg | kind | ctrl | srcModule | tags |
---|---|---|---|---|---|
ipv6In | Packet | 0 | Ipv6 | DispatchProtocolInd, DispatchProtocolReq, DscpInd, EcnInd, HopLimitInd, InterfaceInd, L3AddressInd, NetworkProtocolInd, PacketProtocolTag, TosInd, ErrorRateInd?, Ieee802SapInd?, MacAddressInd?, SignalPowerInd?, SignalTimeInd?, SnirInd?, Ieee80211ChannelInd?, Ieee80211ModeInd? | |
ipv6In | Packet | 0 | Ipv6NdControlInfo | Ipv6 | DispatchProtocolReq, NetworkProtocolInd, PacketProtocolTag, InterfaceInd?, MacAddressInd?, MulticastReq?, SocketReq?, TransportProtocolInd? |
Outgoing messages (observed)
gate | msg | kind | ctrl | destModule | tags |
---|---|---|---|---|---|
ipv6Out | Packet | 0 | Ipv6 | HopLimitReq, InterfaceReq, L3AddressReq, PacketProtocolTag | |
ipv6Out | Packet | 0 | Ipv6NdControlInfo | Ipv6 | DispatchProtocolReq, NetworkProtocolInd, PacketProtocolTag, InterfaceInd?, MacAddressInd?, TransportProtocolInd? |
Packet operations (observed)
chunkType | packetAction |
---|---|
Icmpv6Header | peekAtFront |
Ipv6Header | peekAtFront |
Ipv6NeighbourAdvertisement | insertAtFront |
Ipv6NeighbourSolicitation | insertAtFront |
Ipv6RouterAdvertisement | insertAtFront |
Ipv6RouterSolicitation | insertAtFront |
Shared Tagging operations (observed)
tagType | tagAction |
---|---|
DispatchProtocolReq | removeTagIfPresent |
HopLimitInd | getTag |
HopLimitReq | addTagIfAbsent |
InterfaceInd | getTag |
InterfaceReq | addTagIfAbsent |
L3AddressInd | getTag |
L3AddressReq | addTagIfAbsent |
PacketProtocolTag | addTagIfAbsent, getTag |
Tagging operations (observed)
tagType | tagAction |
---|---|
inet::Ipv6InterfaceData | getTag, getTagForUpdate |
Source code
// // Implements IPv6 Neighbour Discovery. // // An overview of the Ipv6 implementation in the INET Framework is // provided <a href="ipv6overview.html">here</a>. // // @see ~Ipv6, ~Ipv6RoutingTable, ~Icmpv6 // simple Ipv6NeighbourDiscovery { parameters: string interfaceTableModule; // The path to the InterfaceTable module string crcMode @enum("declared","computed") = default("declared"); string icmpv6Module; string xmipv6Module; string routingTableModule; double minIntervalBetweenRAs @unit(s) = default(30ms); //minRtrAdvInterval: 0.03 sec for MIPv6 , declared as parameter to facilitate testing without recompiling (Zarrar 15.07.07) double maxIntervalBetweenRAs @unit(s) = default(70ms); //MaxrtrAdvInterval: 0.07 sec for MIPv6, declared as parameter to facilitate testing without recompiling (Zarrar 15.07.07) @display("i=block/network"); @signal[startDad](type=long); // emits value=1 @statistic[startDad](title="DAD started"; record=count,vector); gates: input ipv6In; output ipv6Out; }File: src/inet/networklayer/icmpv6/Ipv6NeighbourDiscovery.ned