Compound Module StandardHostWithULDropsGenerator

Package: inet.nodes.inet
File: src/nodes/inet/StandardHostWithULDropsGenerator.ned

IP host with SCTP, TCP, UDP layers and applications AND PPPInterfaceWithULDropsGenerator.

NAMTraceWriter NotificationBoard InterfaceTable RoutingTable TCPApp ITCP UDPApp UDP SCTPApp SCTP PingApp NetworkLayer PPPInterfaceWithULDropsGenerator EthernetInterface ExtInterface TCPDump

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.

Networks:

tcpsack (network) (no description)
tcptimestamps (network) (no description)

Parameters:

Name Type Default value Description
numTcpApps int 0
numUdpApps int 0
numSctpApps int 0
tcpAppType string "n/a"
udpAppType string "n/a"
sctpAppType string "n/a"
tcpType string "TCP"

tcp implementation (e.g. TCP, TCP_old, TCP_NSC)

IPForward bool false
namid int -1
routingFile string ""
numExtInterfaces int 0

Properties:

Name Value Description
node
labels node
display i=device/pc2

Gates:

Name Direction Size Description
pppg [ ] inout
ethg [ ] inout

Unassigned submodule parameters:

Name Type Default value Description
sctp.numGapReports int 3

====== SCTP Association Parameters =================================

sctp.rtoInitial double 3s
sctp.rtoMin double 1s
sctp.rtoMax double 60s
sctp.rtoAlpha double 0.125
sctp.rtoBeta double 0.250
sctp.maxBurst int 4
sctp.assocMaxRetrans int 10
sctp.pathMaxRetrans int 5
sctp.maxInitRetrans int 8
sctp.sackPeriod double 200ms
sctp.sackFrequency int 2
sctp.reactivatePrimaryPath bool false
sctp.sendQueueLimit int 0
sctp.validCookieLifetime double 10s

====== Testing =====================================================

sctp.enableHeartbeats bool true

====== Heartbeats ==================================================

sctp.hbInterval double 30s
sctp.nagleEnabled bool true

====== Nagle Algorithm =============================================

sctp.naglePoint int 1468
sctp.fastRecoverySupported bool true

====== Congestion Control ==========================================

sctp.sctpAlgorithmClass string "SCTPAlg"
sctp.ccModule int 0

RFC4960=0

sctp.ssModule int 0

ROUND_ROBIN=0

sctp.arwnd int 65535
sctp.swsLimit int 3000

Limit for SWS

sctp.udpEncapsEnabled bool false
pingApp.destAddr string ""

destination IP or IPv6 address

pingApp.srcAddr string ""

source IP or IPv6 address (useful with multi-homing)

pingApp.packetSize double 56B

of ping payload, in bytes

pingApp.interval double 1s

time to wait between pings (can be random)

pingApp.hopLimit double 32

TTL or hopLimit for IP packets

pingApp.count double 0

stop after count ping requests, 0 means continuously

pingApp.startTime double uniform(0s,this.interval)

send first ping at startTime

pingApp.stopTime double 0s

send no pings after stopTime, 0 means forever

pingApp.printPing bool true

dump on stdout

networkLayer.ip.procDelay double 0s
networkLayer.arp.retryTimeout double 1s

number seconds ARP waits between retries to resolve an IP address

networkLayer.arp.retryCount int 3

number of times ARP will attempt to resolve an IP address

networkLayer.arp.cacheTimeout double 120s

number seconds unused entries in the cache will time out

ppp.ppp.mtu int 4470
ppp.dropsGenerator.dropsVector string ""

the dropsVector format is "<packetNumber>;<packetNumber>;...;" packet numbers in ascending order e.g. "5;6;12;13;"

eth.mac.promiscuous bool false

if true, all packets are received, otherwise only the ones with matching destination MAC address

eth.mac.address string "auto"

MAC address as hex string (12 hex digits), or "auto". "auto" values will be replaced by a generated MAC address in init stage 0.

eth.mac.txrate double 100Mbps

maximum data rate supported by this station (bit/s); actually chosen speed may be lower due to auto- configuration. 0 means fully auto-configured.

eth.mac.duplexEnabled bool true

whether duplex mode can be enabled or not; whether MAC will actually use duplex mode depends on the result of the auto-configuration process (duplex is only possible with DTE-to-DTE connection).

eth.mac.mtu int 1500
ext.filterString string
ext.device string
ext.mtu int 1500
tcpdump.dumpFile string ""
tcpdump.threadEnable bool false
tcpdump.snaplen int 65535
tcpdump.verbosity int 0

Source code:

//
// \IP host with SCTP, TCP, UDP layers and applications AND PPPInterfaceWithULDropsGenerator.
//
module StandardHostWithULDropsGenerator
{
    parameters:
        @node();
        @labels(node,ethernet-node);
        @display("i=device/pc2");
        int numTcpApps = default(0);
        int numUdpApps = default(0);
        int numSctpApps = default(0);
        string tcpAppType = default("n/a");
        string udpAppType = default("n/a");
        string sctpAppType = default("n/a");
        string tcpType = default("TCP");  // tcp implementation (e.g. TCP, TCP_old, TCP_NSC)
        bool IPForward = default(false);
        int namid = default(-1);
        string routingFile = default("");
        int numExtInterfaces = default(0);
    gates:
        inout pppg[] @labels(PPPFrame-conn);
        inout ethg[] @labels(EtherFrame-conn);
    submodules:
        namTrace: NAMTraceWriter {
            parameters:
                namid = namid;
                @display("p=57,294");
        }
        notificationBoard: NotificationBoard {
            parameters:
                @display("p=57,54");
        }
        interfaceTable: InterfaceTable {
            parameters:
                @display("p=57,134");
        }
        routingTable: RoutingTable {
            parameters:
                IPForward = IPForward;
                routerId = "";
                routingFile = routingFile;
                @display("p=57,214");
        }
        tcpApp[numTcpApps]: <tcpAppType> like TCPApp {
            parameters:
                @display("p=186,54");
        }
        tcp: <tcpType> like ITCP {
            parameters:
                @display("p=186,141");
        }
        udpApp[numUdpApps]: <udpAppType> like UDPApp {
            parameters:
                @display("p=336,54");
        }
        udp: UDP {
            parameters:
                @display("p=336,141");
        }
        sctpApp[numSctpApps]: <sctpAppType> like SCTPApp {
            parameters:
                @display("p=501,54");
        }
        sctp: SCTP {
            @display("p=501,141;i=block/wheelbarrow");
        }
        pingApp: PingApp {
            parameters:
                @display("p=501,230");
        }
        networkLayer: NetworkLayer {
            parameters:
                proxyARP = false;
                @display("p=336,230;q=queue");
            gates:
                ifIn[sizeof(pppg)+sizeof(ethg)+numExtInterfaces];
                ifOut[sizeof(pppg)+sizeof(ethg)+numExtInterfaces];
        }
        ppp[sizeof(pppg)]: PPPInterfaceWithULDropsGenerator {
            parameters:
                @display("p=186,390,row,90;q=txQueue");
        }
        eth[sizeof(ethg)]: EthernetInterface {
            parameters:
                @display("p=336,390,row,90;q=txQueue");
        }
        ext[numExtInterfaces]: ExtInterface {
            parameters:
                @display("p=501,390,row,90;q=txQueue;i=block/ifcard");
        }
        tcpdump: TCPDump {
            parameters:
                @display("p=336,302;i=abstract/cache_s");
            gates:
                ifIn[sizeof(pppg)+sizeof(ethg)+numExtInterfaces];
                in2[sizeof(pppg)+sizeof(ethg)+numExtInterfaces];
                ifOut[sizeof(pppg)+sizeof(ethg)+numExtInterfaces];
                out2[sizeof(pppg)+sizeof(ethg)+numExtInterfaces];
        }
    connections allowunconnected:
        for i=0..numTcpApps-1 {
            tcpApp[i].tcpOut --> tcp.appIn++;
            tcpApp[i].tcpIn <-- tcp.appOut++;
        }

        tcp.ipOut --> networkLayer.tcpIn;
        tcp.ipIn <-- networkLayer.tcpOut;

        for i=0..numUdpApps-1 {
            udpApp[i].udpOut --> udp.appIn++;
            udpApp[i].udpIn <-- udp.appOut++;
        }

        udp.ipOut --> networkLayer.udpIn;
        udp.ipIn <-- networkLayer.udpOut;

        for i=0..numSctpApps-1 {
            sctpApp[i].sctpOut --> sctp.from_appl++;
            sctp.to_appl++ --> sctpApp[i].sctpIn;
        }
        sctp.to_ip --> networkLayer.sctpIn;
        networkLayer.sctpOut --> sctp.from_ip;

        networkLayer.pingOut --> pingApp.pingIn;
        networkLayer.pingIn <-- pingApp.pingOut;

        // connections to network outside
        for i=0..sizeof(pppg)-1 {
            pppg[i] <--> ppp[i].phys;
            ppp[i].netwOut --> tcpdump.ifIn[i];
            tcpdump.out2[i] --> networkLayer.ifIn[i];
            ppp[i].netwIn <-- tcpdump.ifOut[i];
            tcpdump.in2[i] <-- networkLayer.ifOut[i];
        }

        for i=0..sizeof(ethg)-1 {
            ethg[i] <--> eth[i].phys;
            eth[i].netwOut --> tcpdump.ifIn[sizeof(pppg)+i];
            tcpdump.out2[sizeof(pppg)+i] --> networkLayer.ifIn[sizeof(pppg)+i];
            eth[i].netwIn <-- tcpdump.ifOut[sizeof(pppg)+i];
            tcpdump.in2[sizeof(pppg)+i] <-- networkLayer.ifOut[sizeof(pppg)+i];
        }

        for i=0..numExtInterfaces-1 {
            ext[i].netwOut --> tcpdump.ifIn[sizeof(pppg)+sizeof(ethg)+i];
            tcpdump.out2[sizeof(pppg)+sizeof(ethg)+i] --> networkLayer.ifIn[sizeof(pppg)+sizeof(ethg)+i];
            ext[i].netwIn <-- tcpdump.ifOut[sizeof(pppg)+sizeof(ethg)+i];
            tcpdump.in2[sizeof(pppg)+sizeof(ethg)+i] <-- networkLayer.ifOut[sizeof(pppg)+sizeof(ethg)+i];
        }
}