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