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
Name | Type | Default value | Description |
---|---|---|---|
numRouters | int | 5 | |
numPubs | int | 2 | |
numSubs | int | 2 | |
connectedness | double |
0.0<x<1.0 |
|
Datarate | int | ||
PubSubProportion | double | 0.5 | |
TopManager | string | "TMBoost" |
Name | Value | Description |
---|---|---|
isNetwork | ||
display | bgb=756,491;i=old/earth1 |
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 |
// // <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_Net { parameters: int numRouters = 5; int numPubs = 2; int numSubs = 2; double connectedness; //0.0<x<1.0 int Datarate @unit(Mbps); double PubSubProportion = default(0.5); string TopManager = default("TMBoost"); @display("bgb=756,491;i=old/earth1"); types: channel G extends ned.DatarateChannel { datarate = 1Gbps; } submodules: iiTable: IITable { @display("p=31,444"); } tm: <TopManager> like TMInterface { @display("p=31,367"); } psRouter[numRouters]: PSRouter; Publisher[numPubs]: PubHost; Subscriber[numSubs]: SubHost; connections allowunconnected: psRouter[0].ethg++ <--> { datarate = Datarate; delay = 450us; } <--> psRouter[1].ethg++; psRouter[0].ethg++ <--> { datarate = Datarate; delay = 450us; } <--> psRouter[3].ethg++; psRouter[1].ethg++ <--> { datarate = Datarate; delay = 450us; } <--> psRouter[2].ethg++; psRouter[2].ethg++ <--> { datarate = Datarate; delay = 450us; } <--> psRouter[4].ethg++; psRouter[4].ethg++ <--> { datarate = Datarate; delay = 450us; } <--> psRouter[0].ethg++; psRouter[3].ethg++ <--> { datarate = Datarate; delay = 450us; } <--> psRouter[2].ethg++; Publisher[0].ethg++ <--> G <--> psRouter[0].ethg++; Publisher[1].ethg++ <--> G <--> psRouter[2].ethg++; Subscriber[0].ethg++ <--> G <--> psRouter[1].ethg++; Subscriber[1].ethg++ <--> G <--> psRouter[3].ethg++; }