'LTE and WI-FI in vehicular netwrok
I am trying to make a WI-FI offloading scenario, In vehicular network using Omnet++ simulator. At the first step I want to run the simulator with both modules added to the car before adding the offloading algorithm. I have defined the car module as extend of StandardHost and added the LteNic modules to it,However when I am trying to run the initialize file I got the message "finish with errors".
the car module
package lte_opf_wifi.cars;
import inet.applications.contract.ITCPApp;
import inet.applications.contract.IUDPApp;
import inet.mobility.contract.IMobility;
import inet.networklayer.common.InterfaceTable;
import inet.networklayer.contract.IRoutingTable;
import inet.networklayer.contract.INetworkLayer;
import inet.networklayer.configurator.ipv4.HostAutoConfigurator;
import inet.transportlayer.tcp.TCP;
import inet.transportlayer.udp.UDP;
import lte.stack.ILteNic;
import inet.node.inet.StandardHost;
//
// Car Module
//
module Car extends StandardHost
{
parameters:
@networkNode();
@display("i=device/car;is=vs;bgb=400,518");
//# Node specs
string nodeType = "UE"; // DO NOT CHANGE
int masterId;
int macNodeId = default(0); // TODO: this is not a real parameter
int macCellId = default(0); // TODO: this is not a real parameter
//# D2D capability
string nicType = default("LteNicUe");
//# Network Layer specs
*.interfaceTableModule = default(absPath(".interfaceTable"));
*.routingTableModule = default(absPath(".routingTable"));
gates:
input radioInlte @directIn ;
submodules:
// NOTE: instance must be named "lteNic"
lteNic: <nicType> like ILteNic {
nodeType = nodeType;
@display("p=250,407");
}
// network layer
configurator: HostAutoConfigurator {
@display("p=49.068,22.968");
}
connections allowunconnected:
lteNic.radioIn <-- radioInlte;
networkLayer.ifOut++ --> lteNic.upperLayerIn;
networkLayer.ifIn++ <-- lteNic.upperLayerOut;
}
the network ned file
// SimuLTE
//
// This file is part of a software released under the license included in file
// "license.pdf". This license can be also found at http://www.ltesimulator.com/
// The above file and the present reference are part of the software itself,
// and cannot be removed from it.
//
package lte_opf_wifi.simulations.cars;
import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator;
import inet.networklayer.ipv4.RoutingTableRecorder;
import inet.node.inet.AdhocHost;
import inet.node.inet.Router;
import inet.node.inet.WirelessHost;
import inet.node.wireless.AccessPoint;
import inet.physicallayer.ieee80211.packetlevel.Ieee80211ScalarRadioMedium;
import inet.node.inet.StandardHost;
import inet.node.ethernet.Eth10G;
import inet.common.misc.ThruputMeteringChannel;
import openflow.nodes.Domain_wController;
import openflow.nodes.OpenFlow_Domain_fixed;
import openflow.nodes.Open_Flow_Controller;
import openflow.nodes.Open_Flow_Switch;
import lte.world.radio.LteChannelControl;
import lte.epc.PgwStandardSimplified;
import lte.corenetwork.binder.LteBinder;
import lte.corenetwork.nodes.eNodeB;
import lte_opf_wifi.cars.Car;
import lte_opf_wifi.veins_inet.VeinsInetManager;
network highway2
{
parameters:
**.mgmt.numChannels = 2;
double playgroundSizeX @unit(m); // x size of the area the nodes are in (in meters)
double playgroundSizeY @unit(m); // y size of the area the nodes are in (in meters)
double playgroundSizeZ @unit(m); // z size of the area the nodes are in (in meters)
@display("bgb=732,713");
types:
channel ethernetline extends ThruputMeteringChannel
{
delay = 1us;
datarate = 100Mbps;
thruputDisplayFormat = "u";
}
submodules:
routingRecorder: RoutingTableRecorder {
@display("p=50,75;is=s");
}
configurator: IPv4NetworkConfigurator {
@display("p=50,125");
config = xmldoc("demo.xml");
}
//# Veins manager module
veinsManager: VeinsInetManager {
@display("p=50,227;is=s");
}
//#RSU
radioMedium: Ieee80211ScalarRadioMedium {
parameters:
@display("p=100,250");
}
rsu[2]: AccessPoint {
@display("p=559.26,451.71;i=veins/sign/yellowdiamond;is=vs");
wlan[*].mgmtType = "Ieee80211MgmtAPSimplified"; // wireless Access point
}
epdg: Router {
@display("p=481.82397,355.632;i=device/smallrouter");
}
//# LTE modules
channelControl: LteChannelControl {
@display("p=50,25;is=s");
}
binder: LteBinder {
@display("p=50,175;is=s");
}
server1: StandardHost {
@display("p=652.47,240.91199;is=n;i=device/server");
}
pgw: PgwStandardSimplified {
nodeType = "PGW";
@display("p=212.232,348.462;is=l");
}
eNodeB1: eNodeB {
@display("p=94.644,507.636;is=vl");
}
eNodeB2: eNodeB {
@display("p=309.744,507.636;is=vl");
}
//#open-flow
open_Flow_Switch0: Open_Flow_Switch {
@display("p=354.198,240.91199;b=66,64");
}
open_Flow_Switch1: Open_Flow_Switch {
@display("p=516.24,240.91199;b=66,64");
}
SDN_Controller: Open_Flow_Controller {
@display("p=427.332,124.757996;b=85,66");
}
//#car
node[10]: Car {
parameters:
@display("p=250.95,629.526;is=vs;i=block/process");
}
connections allowunconnected:
SDN_Controller.ethg++ <--> ethernetline <--> open_Flow_Switch0.gate_controller++;
SDN_Controller.ethg++ <--> ethernetline <--> open_Flow_Switch1.gate_controller++;
open_Flow_Switch0.ethg++ <--> ethernetline <--> open_Flow_Switch1.ethg++;
open_Flow_Switch0.ethg++ <--> ethernetline <--> pgw.filterGate;
open_Flow_Switch1.ethg++ <--> ethernetline <--> server1.pppg++;
open_Flow_Switch0.ethg++ <--> ethernetline <--> epdg.pppg++;
pgw.pppg++ <--> Eth10G <--> eNodeB1.ppp;
pgw.pppg++ <--> Eth10G <--> eNodeB2.ppp;
//# X2 connections
eNodeB1.x2++ <--> Eth10G <--> eNodeB2.x2++;
//# RSU connections
rsu[0].ethg++ <--> Eth10G <--> epdg.ethg++;
rsu[1].ethg++ <--> Eth10G <--> epdg.ethg++;
}
the .ini file
[General]
cmdenv-express-mode = true
cmdenv-autoflush = true
cmdenv-status-frequency = 1s
**.cmdenv-log-level = info
image-path = ../../images
network = highway2
##########################################################
# Simulation parameters #
##########################################################
debug-on-errors = true
print-undisposed = true
sim-time-limit = 200s
**.sctp.**.scalar-recording = true
**.sctp.**.vector-recording = true
**.coreDebug = false
**.routingRecorder.enabled = false
*.playgroundSizeX = 20000m
*.playgroundSizeY = 20000m
*.playgroundSizeZ = 50m
##########################################################
# Openflow #
#########################################################
**.SDN_Controller.ofa_controller.port = 6633
**.open_Flow_Switch*.sendCompletePacket = false
**.SDN_Controller.behavior = "Forwarding"
**.ofa_switch.connectPort = 6633
**.ofa_switch.connectAddress = "controller"
**.buffer.capacity = 10
**.ofa_switch.flow_timeout = 5s
**.open_Flow_Switch*.etherMAC[*].promiscuous = true
#**.controller.ofa_controller.address =
# NIC configuration
**.ppp[*].queueType = "DropTailQueue" # in routers
**.ppp[*].queue.frameCapacity = 10 # in routers
*.configurator.networkAddress = "192.168.1.0"
#**.tcp.sendQueueClass="TCPMsgBasedSendQueue" //obsolote since version 2.0
#**.tcp.receiveQueueClass="TCPMsgBasedRcvQueue" //obsolote since version 2.0
#**.open_Flow_Switch*.tcp.mss = 800
#**.SDN_Controller.tcp.mss = 800
#**.open_flow_switch*.tcp.nagleEnabled = false
##########################################################
# VeinsManager parameters #
##########################################################
*.veinsManager.updateInterval = 0.1s
*.veinsManager.launchConfig = xmldoc("heterogeneous.launchd.xml")
##########################################################
# RSU SETTINGS #
# #
# #
##########################################################
**.rsu[1].wlan[*].mac.address = "10:00:00:00:00:00"
**.rsu[2].wlan[*].mac.address = "10:00:00:00:00:10"
**.node[*].**.mgmt.accessPointAddress = "10:00:00:00:00:00"
**.node[*].**.mgmt.accessPointAddress = "10:00:00:00:00:10"
**.mgmt.frameCapacity = 100
#########################################################
# 11p specific parameters #
# #
# NIC-Settings #
##########################################################
**.wlan*.bitrate = 2Mbps
**.mac.address = "auto"
**.mac.maxQueueSize = 14
**.mac.rtsThresholdBytes = 3000B
**.wlan[*].mac.retryLimit = 7
**.wlan[*].mac.cwMinData = 7
**.wlan[*].mac.cwMinBroadcast = 31
**.wlan[*].radio.transmitter.power = 20mW
**.wlan[*].radio.transmitter.bitrate = 2Mbps
**.wlan[*].radio.transmitter.headerBitLength = 100b
**.wlan[*].radio.transmitter.carrierFrequency = 2.4GHz
**.wlan[*].radio.transmitter.bandwidth = 2MHz
**.wlan[*].radio.receiver.sensitivity = -85dBm
**.wlan[*].radio.receiver.snirThreshold = 4dB
# relay unit configuration
**.relayUnitType = "MACRelayUnit"
**.relayUnit.addressTableSize = 100
**.relayUnit.agingTime = 120s
**.relayUnit.bufferSize = 1MiB
**.relayUnit.highWatermark = 512KiB
**.relayUnit.pauseUnits = 300 # pause for 300*512 bit (19200 byte) time
**.relayUnit.addressTableFile = ""
**.relayUnit.numCPUs = 2
**.relayUnit.processingTime = 2us
##########################################################
# channel parameters #
##########################################################
**.channelControl.pMax = 10W
**.channelControl.alpha = 1.0
**.channelControl.carrierFrequency = 2100e+6Hz
##########################################################
# LTE specific parameters #
##########################################################
# Enable dynamic association of UEs (based on best SINR)
*.node[*].lteNic.phy.dynamicCellAssociation = true
**.node[*].masterId = 1 # useless if dynamic association is disabled
**.node[*].macCellId = 1 # useless if dynamic association is disabled
**.eNodeB1.macCellId = 1
**.eNodeB1.macNodeId = 1
**.eNodeB2.macCellId = 2
**.eNodeB2.macNodeId = 2
**.eNodeBCount = 2
# AMC module parameters
**.rbAllocationType = "localized"
**.feedbackType = "ALLBANDS"
**.feedbackGeneratorType = "IDEAL"
**.maxHarqRtx = 3
**.numUe = ${numUEs=10}
# RUs
**.cellInfo.ruRange = 50
**.cellInfo.ruTxPower = "50,50,50;"
**.cellInfo.antennaCws = "2;" # !!MACRO + RUS (numRus + 1)
**.cellInfo.numRbDl = 25
**.cellInfo.numRbUl = 25
**.numBands = 25
**.fbDelay = 1
# Enable handover
*.node[*].lteNic.phy.enableHandover = true
*.eNodeB*.lteNic.phy.enableHandover = true
*.eNodeB*.lteNic.phy.broadcastMessageInterval = 0.5s
# X2 and SCTP configuration
*.eNodeB*.numX2Apps = 1 # one x2App per peering eNodeB
*.eNodeB*.x2App[*].server.localPort = 5000 + ancestorIndex(1) # Server ports (x2App[0]=5000, x2App[1]=5001, ...)
*.eNodeB1.x2App[0].client.connectAddress = "eNodeB2%x2ppp0"
*.eNodeB2.x2App[0].client.connectAddress = "eNodeB1%x2ppp0"
**.sctp.nagleEnabled = false # if true, transmission of small packets will be delayed on the X2
**.sctp.enableHeartbeats = false
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
