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:

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);
    }