Compound Module NetworkLayerVlans

Package: Vlans.networklayer
File: src/networklayer/NetworkLayerVlans.ned

Network layer of an IP node.

Interfaces to transport layer: TCP, UDP, echo/ping, RSVP

IP ARP_Vlans ICMP IGMP ErrorHandling

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.

Used in compound modules:

If a module type shows up more than once, that means it has been defined in more than one NED file.

StandardVlanHost (compound module)

IP host with TCP, UDP layers and applications.

Parameters:

Name Type Default value Description
proxyARP bool true

Properties:

Name Value Description
display i=block/fork

Gates:

Name Direction Size Description
ifIn [ ] input
tcpIn input
udpIn input
sctpIn input

I.R.

rsvpIn input
ospfIn input
pingIn input
MANETIn input
ifOut [ ] output
TCPOut output
udpOut output
sctpOut output

I.R.

rsvpOut output
ospfOut output
pingOut output
MANETOut output

Unassigned submodule parameters:

Name Type Default value Description
ip.procDelay double 0s
arp_vlans.retryTimeout double 1s

number seconds ARP waits between retries to resolve an IP address

arp_vlans.retryCount int 3

number of times ARP will attempt to resolve an IP address

arp_vlans.cacheTimeout double 120s

number seconds unused entries in the cache will time out

arp_vlans.globalARP bool false

Source code:

//
// Network layer of an \IP node.
//
// Interfaces to transport layer: TCP, UDP, echo/ping, RSVP
//
module NetworkLayerVlans
{
    parameters:
        bool proxyARP = default(true);
        @display("i=block/fork");
    gates:
        input ifIn[];
        input tcpIn;
        input udpIn;
        input sctpIn;   //I.R.
        input rsvpIn;
        input ospfIn;
        input pingIn;
        input MANETIn;
        output ifOut[];
        output TCPOut;
        output udpOut;
        output sctpOut; //I.R.
        output rsvpOut;
        output ospfOut;
        output pingOut;
        output MANETOut;

    submodules:
        ip: IP {
            parameters:
                timeToLive = 32;
                multicastTimeToLive = 32;
                fragmentTimeout = 60s;
                protocolMapping = "6:0,17:1,1:2,2:3,46:4,89:5,132:6,254:7,135:7";
                @display("p=85,95;q=queue");
            gates:
                transportIn[8];
                transportOut[8];
                queueIn[sizeof(ifIn)];
        }
        arp_vlans: ARP_Vlans {
            parameters:
                proxyARP = proxyARP;
                @display("p=163,206;q=pendingQueue");
            gates:
                nicOut[sizeof(ifOut)];
        }
        icmp: ICMP {
            parameters:
                @display("p=160,63");
        }
        igmp: IGMP {
            parameters:
                @display("p=160,122");
        }
        errorHandling: ErrorHandling {
            parameters:
                @display("p=239,63");
        }
    connections allowunconnected:
        // transport Layer
        ip.transportOut[0] --> TCPOut;
        ip.transportIn[0] <-- tcpIn;

        ip.transportOut[1] --> udpOut;
        ip.transportIn[1] <-- udpIn;

        ip.transportOut[2] --> icmp.localIn;
        ip.transportIn[2] <-- icmp.sendOut;

        ip.transportOut[3] --> igmp.localIn;
        ip.transportIn[3] <-- igmp.sendOut;

        ip.transportOut[4] --> rsvpOut;
        ip.transportIn[4] <-- rsvpIn;

        ip.transportOut[5] --> ospfOut;
        ip.transportIn[5] <-- ospfIn;

        ip.transportOut[6] --> sctpOut;     //I.R.
        ip.transportIn[6] <-- sctpIn;

        ip.transportOut[7] --> MANETOut;
        ip.transportIn[7] <-- MANETIn;

        icmp.pingOut --> pingOut;
        icmp.pingIn <-- pingIn;

        icmp.errorOut --> errorHandling.in;

        ip.queueOut --> arp_vlans.ipIn;

        // L2 interfaces to IP and from ARP
        for i=0..sizeof(ifOut)-1 {
            ifIn[i] --> { @display("m=s"); } --> ip.queueIn[i];
        }
}