OMNET++ PROJECT EXAMPLE

OMNET++ PROJECT EXAMPLE Heterogeneous network is a radio access network that comprises layers of different-sized cells ranging from big (macrocells) to small (picocells and femtocells). Networks consisting of different data-link protocol segments use bridges to connect two segments that have different data link protocols.

Features of heterogeneous network:

  • Dual connectivity between the macro cell and small cells.
  • Combined with carrier aggregation.
  • Interference management for neighbor TDD cells.
  • Mobility planning within hyper-dense environment.
Architecture-of-Heterogeneous-Network
Architecture-of-Heterogeneous-Network

Research concepts in heterogeneous network:

  • Power control mechanism in heterogeneous network.
  • Scheduling strategies.
  • Future generation heterogeneous network.
  • Beamforming for the common control channel in heterogeneous network.
  • Cooperative communication.

Sample code for heterogeneous network:

[code lang=”js”]
void HetroNet::updateDisplayString()
{
char buf[80] = "";
if (numForwarded>0) sprintf(buf+strlen(buf), "fwd:%d ", numForwarded);
if (numLocalDeliver>0) sprintf(buf+strlen(buf), "up:%d ", numLocalDeliver);
if (numMulticast>0) sprintf(buf+strlen(buf), "mcast:%d ", numMulticast);
if (numDropped>0) sprintf(buf+strlen(buf), "DROP:%d ", numDropped);
if (numUnroutable>0) sprintf(buf+strlen(buf), "UNROUTABLE:%d ", numUnroutable);
getDisplayString().setTagArg("t", 0, buf);
}
void HetroNet::handleMessage(cMessage *msg)
{
if (msg->getKind() == IP_C_REGISTER_PROTOCOL) {
IPRegisterProtocolCommand * command = check_and_cast<IPRegisterProtocolCommand *>(msg->getControlInfo());
mapping.addProtocolMapping(command->getProtocol(), msg->getArrivalGate()->getIndex());

if (command->getProtocol() == IP_PROT_MANET)
{
int gateindex = mapping.getOutputGateForProtocol(IP_PROT_MANET);
cGate *manetgate = gate("transportOut", gateindex)->getPathEndGate();
cModule *destmod = manetgate->getOwnerModule();
cProperties *props = destmod->getProperties();
isDsr = props && props->getAsBool("isDsr");
}
delete msg;
}
else if (!msg->isSelfMessage() && msg->getArrivalGate()->isName("arpIn"))
endService(PK(msg));
else
QueueBase::handleMessage(msg);
}
void HetroNet::endService(cPacket *packet)
{
if (!isUp) {
EV << "IPv4 is down — discarding message\n"; delete packet; return; } if (mayHaveListeners(iPv4PromiscousPacket)) emit(iPv4PromiscousPacket, packet); if (packet->getArrivalGate()->isName("transportIn")) //TODO packet->getArrivalGate()->getBaseId() == transportInGateBaseId
{
handlePacketFromHL(packet);
}
[/code]