Igmpv3

Package: inet.networklayer.ipv4

Igmpv3

simple module

C++ definition

(no description)

Inheritance diagram

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

Extends

Name Type Description
SimpleModule simple module

Base module for all INET simple modules.

Parameters

Name Type Default value Description
displayStringTextFormat string ""

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

enabled bool true
interfaceTableModule string
routingTableModule string
checksumMode string "declared"
robustnessVariable int 2

IGMP is robust to (robustnessVariable-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
class Igmpv3
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

Source code

simple Igmpv3 extends SimpleModule like IIgmp
{
    parameters:
        @class(Igmpv3);
        bool enabled = default(true);
        string interfaceTableModule;
        string routingTableModule;
        string checksumMode @enum("declared","computed") = default("declared");
        int robustnessVariable = default(2); // IGMP is robust to (robustnessVariable-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