Compound Module NA_StandardHost

Package: nesg.netattacks.nodes
File: src/nodes/NA_StandardHost.ned

Generic standard host. Modificated from StandarHost module. Migrated from INET for inheritance requirements of NA_AttackerAdhocHost and NA_AttackerWirelessHost

See also: StandarHost, NodeBase

Author: Gabriel Maciá Fernández, gmacia@ugr.es

Date: 01/22/2013

NotificationBoard IMobility NA_NetworkLayer RoutingTable InterfaceTable PcapRecorder IWirelessNic IWiredNic IWiredNic IExternalNic ITCPApp ITCP IUDPApp IUDP ISCTPApp ISCTP IPingApp

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Inheritance diagram:

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

Extends:

Name Type Description
NA_NodeBase compound module

Compound module allowing hacked modules. Modificated from NodeBase module.

Known subclasses:

Name Type Description
NA_AttackerWirelessHost compound module

Attacker wireless host. Modificated from WirelessHost module. Redefined from INET framework and used as attacker host.

NA_WirelessHost compound module

Generic wireless host. Modificated from WirelessHost module. Migrated from INET for inheritance requirements of NA_AttackerAdhocHost and NA_AttackerWirelessHost

Parameters:

Name Type Default value Description
numExtInterfaces int 0
numRadios int 0

the number of radios in the router. by default no wireless

numPcapRecorders int 0

no of PcapRecorders.

mobilityType string "StationaryMobility"
routingFile string ""
IPForward bool false
numTcpApps int 0

no of TCP apps. Specify the app types in INI file with tcpApp[0..1].typename="TCPEchoApp" syntax

numUdpApps int 0

no of UDP apps. Specify the app types in INI file with udpApp[0..1].typename="UDPVideoStreamCli" syntax

numSctpApps int 0

no of SCTP apps. Specify the app types in INI file with sctpApp[0..1].typename="SCTPServer" syntax

numPingApps int 0

no of PING apps. Specify the app types in INI file with pingApp[0..1].typename="PingApp" syntax

tcpType string firstAvailable("TCP", "TCP_lwIP", "TCP_NSC", "TCP_None")

tcp implementation (e.g. ~TCP, ~TCP_lwIP, ~TCP_NSC) or ~TCPSpoof

udpType string firstAvailable("UDP","UDP_None")
sctpType string firstAvailable("SCTP","SCTP_None")

Properties:

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

Gates:

Name Direction Size Description
radioIn [ ] input numRadios
pppg [ ] inout
ethg [ ] inout

Unassigned submodule parameters:

Name Type Default value Description
networkLayer.ip.procDelay double 0s
networkLayer.ip.timeToLive int 32
networkLayer.ip.multicastTimeToLive int 32
networkLayer.ip.fragmentTimeout double 60s
networkLayer.ip.forceBroadcast bool false
networkLayer.arp.retryTimeout double 1s

number seconds ARP waits between retries to resolve an IPv4 address

networkLayer.arp.retryCount int 3

number of times ARP will attempt to resolve an IPv4 address

networkLayer.arp.cacheTimeout double 120s

number seconds unused entries in the cache will time out

networkLayer.arp.globalARP bool false
routingTable.routerId string "auto"

for routers, the router id using IPv4 address dotted notation; specify "auto" to select the highest interface address; should be left empty ("") for hosts

routingTable.forwardMulticast bool false

turns multicast forwarding on/off

interfaceTable.displayAddresses bool true

whether to display IP addresses on links

pcapRecorder.verbose bool false

whether to log packets on the module output

pcapRecorder.pcapFile string ""

the PCAP file to be written

pcapRecorder.snaplen int 65535

maximum number of bytes to record per packet

pcapRecorder.dumpBadFrames bool true

enable dump of frames with hasBitError

pcapRecorder.moduleNamePatterns string "wlan[*] eth[*] ppp[*] ext[*]"

space-separated list of sibling module names to listen on

pcapRecorder.sendingSignalNames string "packetSentToLower"

space-separated list of outbound packet signals to subscribe to

pcapRecorder.receivingSignalNames string "packetReceivedFromLower"

space-separated list of inbound packet signals to subscribe to

Source code:

//
// Generic standard host. Modificated from StandarHost module. 
// Migrated from INET for inheritance requirements 
// of NA_AttackerAdhocHost and NA_AttackerWirelessHost
//
// @see StandarHost, NodeBase
//
// @author Gabriel Maciá Fernández, gmacia@ugr.es
// @date 01/22/2013
module NA_StandardHost extends NA_NodeBase
{
    parameters:
        @display("i=device/pc2");
        int numTcpApps = default(0);  // no of TCP apps. Specify the app types in INI file with tcpApp[0..1].typename="TCPEchoApp" syntax
        int numUdpApps = default(0);  // no of UDP apps. Specify the app types in INI file with udpApp[0..1].typename="UDPVideoStreamCli" syntax
        int numSctpApps = default(0); // no of SCTP apps. Specify the app types in INI file with sctpApp[0..1].typename="SCTPServer" syntax
        int numPingApps = default(0);  // no of PING apps. Specify the app types in INI file with pingApp[0..1].typename="PingApp" syntax
        string tcpType = default(firstAvailable("TCP", "TCP_lwIP", "TCP_NSC", "TCP_None"));  // tcp implementation (e.g. ~TCP, ~TCP_lwIP, ~TCP_NSC) or ~TCPSpoof
        string udpType = default(firstAvailable("UDP","UDP_None"));
        string sctpType = default(firstAvailable("SCTP","SCTP_None"));
        IPForward = default(false);  // disable routing by default
        networkLayer.proxyARP = default(false);
    submodules:
        tcpApp[numTcpApps]: <> like ITCPApp {
            parameters:
                @display("p=186,54,row");
        }
        tcp: <tcpType> like ITCP if numTcpApps>0 {
            parameters:
                @display("p=186,141");
        }
        udpApp[numUdpApps]: <> like IUDPApp {
            parameters:
                @display("p=336,54,row");
        }
        udp: <udpType> like IUDP if numUdpApps>0 {
            parameters:
                @display("p=336,141");
        }
        sctpApp[numSctpApps]: <> like ISCTPApp {
            parameters:
                @display("p=501,54,row");
        }
        sctp: <sctpType> like ISCTP if numSctpApps>0 {
            @display("p=501,141");
        }
        pingApp[numPingApps]: <default("PingApp")> like IPingApp {
            parameters:
                @display("p=501,230");
        }
    connections allowunconnected:
        for i=0..numTcpApps-1 {
            tcpApp[i].tcpOut --> tcp.appIn++;
            tcpApp[i].tcpIn <-- tcp.appOut++;
        }

        tcp.ipOut --> networkLayer.tcpIn if numTcpApps>0;
        tcp.ipIn <-- networkLayer.tcpOut if numTcpApps>0;

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

        udp.ipOut --> networkLayer.udpIn if numUdpApps>0;
        udp.ipIn <-- networkLayer.udpOut if numUdpApps>0;

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

        for i=0..numPingApps-1 {
            networkLayer.pingOut++ --> pingApp[i].pingIn;
            networkLayer.pingIn++ <-- pingApp[i].pingOut;
        }
}