Igmpv3

Package: inet.networklayer.ipv4

Igmpv3

simple module

(no description)

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Parameters

Name Type Default value Description
enabled bool true
interfaceTableModule string
routingTableModule string
crcMode string "declared"
robustnessVariable int 2

IGMP is roboust to (roboustnessVariable-1) packet loss

queryInterval double 125s
queryResponseInterval double 10s
groupMembershipInterval double (robustnessVariable * queryInterval) + queryResponseInterval
otherQuerierPresentInterval double (robustnessVariable * queryInterval) + (queryResponseInterval / 2)
startupQueryInterval double queryInterval / 4
startupQueryCount int robustnessVariable
lastMemberQueryInterval double 1s
lastMemberQueryCount int robustnessVariable
unsolicitedReportInterval double 10s

Properties

Name Value Description
display i=block/cogwheel

double version1RouterPresentInterval @unit(s) = default(400s);

selfMessageKinds inet::IgmpTimerKind

Gates

Name Direction Size Description
ipIn input

delivered IGMP packets

ipOut output

to Ipv4

routerIn input
routerOut output

Scheduled messages (observed)

msgkindctrltagsmsgnamecontext
omnetpp::cMessage0IgmpvN General Query timerfilled
omnetpp::cMessage3IgmpvN Host General Timerfilled

Direct method calls (observed)

call tofunctioninfo
MessageDispatcherinet::MessageDispatcher::arrivedarrived
MessageDispatcherinet::MessageDispatcher::handleRegisterProtocolhandleRegisterProtocol
InterfaceTableinet::InterfaceTable::interfaceChangedinterfaceChanged
Igmpv3inet::Igmpv3::receiveSignalipv4McastChange

Called methods (observed)

functioninfocall from
inet::Igmpv3::receiveSignalipv4McastChangeIgmpv3

Incoming messages (observed)

gatemsgkindctrlsrcModuletags
ipInPacket0Ipv4DispatchProtocolReq, DscpInd, EcnInd, HopLimitInd, InterfaceInd, L3AddressInd, MacAddressInd, NetworkProtocolInd, PacketProtocolTag, TosInd

Outgoing messages (observed)

gatemsgkindctrldestModuletags
ipOutPacket0Ipv4DispatchProtocolInd, DispatchProtocolReq, HopLimitReq, InterfaceReq, Ipv4OptionsReq, L3AddressReq, PacketProtocolTag, DscpReq?

Packet operations (observed)

chunkTypepacketAction
IgmpMessagepeekAtFront
Igmpv3QueryinsertAtFront, peekAtFront
Igmpv3ReportinsertAtFront, peekAtFront

Shared Tagging operations (observed)

tagTypetagAction
DispatchProtocolIndaddTagIfAbsent
DispatchProtocolReqaddTagIfAbsent
DscpReqaddTag
HopLimitReqaddTagIfAbsent
InterfaceIndgetTag
InterfaceReqaddTagIfAbsent
Ipv4OptionsReqaddTag
L3AddressIndgetTag
L3AddressReqaddTagIfAbsent
PacketProtocolTagaddTagIfAbsent

Tagging operations (observed)

tagTypetagAction
inet::Ipv4InterfaceDatafindTagForUpdate, getTag, getTagForUpdate

Source code

simple Igmpv3 like IIgmp
{
    parameters:
        bool enabled = default(true);
        string interfaceTableModule;
        string routingTableModule;
        string crcMode @enum("declared","computed") = default("declared");
        int robustnessVariable = default(2); // IGMP is roboust to (roboustnessVariable-1) packet loss
        double queryInterval @unit(s) = default(125s);
        double queryResponseInterval @unit(s) = default(10s);
        double groupMembershipInterval @unit(s) = default((robustnessVariable * queryInterval) + queryResponseInterval);
        double otherQuerierPresentInterval @unit(s) = default((robustnessVariable * queryInterval) + (queryResponseInterval / 2));
        double startupQueryInterval @unit(s) = default(queryInterval / 4);
        int startupQueryCount = default(robustnessVariable);
        double lastMemberQueryInterval @unit(s) = default(1s);
        int lastMemberQueryCount = default(robustnessVariable);
        double unsolicitedReportInterval @unit(s) = default(10s);
        //      double version1RouterPresentInterval @unit(s) = default(400s);
        @display("i=block/cogwheel");
        @selfMessageKinds(inet::IgmpTimerKind);

    gates:
        input ipIn @labels(Ipv4ControlInfo/up);  // delivered IGMP packets
        output ipOut @labels(Ipv4ControlInfo/down); // to ~Ipv4

        input routerIn @labels(Ipv4ControlInfo/up);
        output routerOut @labels(Ipv4ControlInfo/down);
}

File: src/inet/networklayer/ipv4/Igmpv3.ned