Network ICN_Network

Package: default
File: simulations/ICNNet.ned

The ICN Simulation Ground

This simulation ground implements a publish subscribe network. The main component is the PSRouter, which forwards the published messages towards the proper destination. All the pub-sub functionality is incorporated inside the Topology Manager. The general topology is created in the initialization phase and it is random, according to the random seeds given in the ini file of the simulation.

See also: PSRouter, PubHost, SubHost, TMInterface, IITable

Author: Nikolaos Vastardis

PSRouter PubHost SubHost IITable TMInterface

Parameters:

Name Type Default value Description
numRouters int
numPubs int
numSubs int
connectedness double

0.0<x<1.0

Datarate int
PubSubProportion double 0.5
TopManager string "TMBoostLA"
FP_check bool false

Properties:

Name Value Description
isNetwork
display bgb=756,491;i=old/earth1

Unassigned submodule parameters:

Name Type Default value Description
psRouter.eth.mac.promiscuous bool false

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

psRouter.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.

psRouter.eth.mac.mtu int 1500
psRouter.eth.thruputMeter.startTime double 0s
psRouter.eth.thruputMeter.batchSize int 10000
psRouter.eth.thruputMeter.maxInterval double 1s
psRouter.forwarder.procDelay double 0s
psRouter.fwTable.routerId string "auto"

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

psRouter.fwTable.IPForward bool true

turns IP forwarding on/off

psRouter.fwTable.routingFile string ""

routing table file name

psRouter.linkMon.pollInt double uniform(1s,2s)

Interval between polling for statistics

psRouter.linkMon.reportInt double 5s

Interval between sending reports to the TM

Publisher.fwTable.routerId string "auto"

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

Publisher.fwTable.IPForward bool true

turns IP forwarding on/off

Publisher.fwTable.routingFile string ""

routing table file name

Publisher.linkMon.pollInt double uniform(1s,2s)

Interval between polling for statistics

Publisher.linkMon.reportInt double 5s

Interval between sending reports to the TM

Publisher.pub.actPeak double 30s

The time period the application mainly active

Publisher.pub.datarate int 10Mbps

The datarate of each stream from the publisher

Publisher.pub.destAddress string "FF:FF:FF:FF:FF:FF"

destination MAC address, preferably broadcast

Publisher.pub.startTime double this.waitTime

time of sending the first request

Publisher.pub.pubInterval double 10s

time interval of making a new publication

Publisher.pub.waitInterval double uniform(0s,1s)

interval between sending requests

Publisher.pub.reqLength int 100B

length of request packets

Publisher.pub.respLength int 1KB

length of response packets

Publisher.pub.fileSize int 20Mb

the max size of the published files

Publisher.eth.mac.promiscuous bool false

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

Publisher.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.

Publisher.eth.mac.mtu int 1500
Publisher.eth.thruputMeter.startTime double 0s
Publisher.eth.thruputMeter.batchSize int 10000
Publisher.eth.thruputMeter.maxInterval double 1s
Subscriber.fwTable.routerId string "auto"

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

Subscriber.fwTable.IPForward bool true

turns IP forwarding on/off

Subscriber.fwTable.routingFile string ""

routing table file name

Subscriber.linkMon.pollInt double uniform(1s,2s)

Interval between polling for statistics

Subscriber.linkMon.reportInt double 5s

Interval between sending reports to the TM

Subscriber.sub.actPeak double 30s

The time period the application mainly active

Subscriber.sub.datarate int 10Mbps

The datarate of each stream from the publisher

Subscriber.sub.subInterval double 10s

time of choosing a subscriber to satisfy

Subscriber.eth.mac.promiscuous bool false

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

Subscriber.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.

Subscriber.eth.mac.mtu int 1500
Subscriber.eth.thruputMeter.startTime double 0s
Subscriber.eth.thruputMeter.batchSize int 10000
Subscriber.eth.thruputMeter.maxInterval double 1s

Source code:

//
// <b> The ICN Simulation Ground </b>
//
// This simulation ground implements a publish subscribe network. The main
// component is the PSRouter, which forwards the published messages towards
// the proper destination. All the pub-sub functionality is incorporated
// inside the Topology Manager. The general topology is created in the 
// initialization phase and it is random, according to the random seeds
// given in the ini file of the simulation. 
// 
// @see PSRouter, PubHost, SubHost, TMInterface, IITable
//
// @author Nikolaos Vastardis
//
network ICN_Network
{
    parameters:
        int numRouters;
        int numPubs;
        int numSubs;
        double connectedness; //0.0<x<1.0 
        int Datarate @unit(Mbps);
        double PubSubProportion = default(0.5);
        string TopManager = default("TMBoostLA");
        bool FP_check = default(false);
        @display("bgb=756,491;i=old/earth1");
    types:
        channel G extends ned.DatarateChannel
        {
            datarate = 1Gbps;
        }
        channel E extends ned.DatarateChannel
        {
            datarate = 10Mbps;
            delay = 450us;
        }
    submodules:
        psRouter[numRouters]: PSRouter;
        Publisher[numPubs]: PubHost;
        Subscriber[numSubs]: SubHost;
        iiTable: IITable {
            @display("p=31,373");
        }
        tm: <TopManager> like TMInterface {
            @display("p=31,304");
        }
    connections allowunconnected:
        for i=0..numRouters-1, for j=0..numRouters-1, if i<j && (j==i+1 || uniform(0,1) < connectedness) {
            psRouter[i].ethg++ <--> E <--> psRouter[j].ethg++;
        }
        for i=0..numPubs-1 {
            psRouter[intuniform(0,numRouters-1)].ethg++ <--> G <--> Publisher[i].ethg++;
        }
        for i=0..numSubs-1 {
            psRouter[intuniform(0,numRouters-1)].ethg++ <--> G <--> Subscriber[i].ethg++;
        }
}