diff --git a/src/stack/mac/LteMacBase.ned b/src/stack/mac/LteMacBase.ned index 197cd4a07..85ff60789 100644 --- a/src/stack/mac/LteMacBase.ned +++ b/src/stack/mac/LteMacBase.ned @@ -46,16 +46,16 @@ simple LteMacBase like ILteMac //# @signal[macDelayDl]; @statistic[macDelayDl](title="Delay at the MAC layer UL"; unit="s"; source="macDelayDl"; record=mean,vector); - @signal[macThroughputDl]; - @statistic[macThroughputDl](title="Throughput at the MAC layer DL"; unit="Bps"; source="macThroughputDl"; record=mean); + @signal[macPacketDl](type=inet::Packet); + @statistic[macThroughputDl](title="Throughput at the MAC layer DL"; unit=bps; source="throughput(macPacketDl)"; record=mean); @signal[macDelayUl]; @statistic[macDelayUl](title="Delay at the MAC layer UL"; unit="s"; source="macDelayUl"; record=mean,vector); - @signal[macThroughputUl]; - @statistic[macThroughputUl](title="Throughput at the MAC layer UL"; unit="Bps"; source="macThroughputUl"; record=mean); - @signal[macCellThroughputUl]; - @statistic[macCellThroughputUl](title="Cell Throughput at the MAC layer UL"; unit="Bps"; source="macCellThroughputUl"; record=mean); - @signal[macCellThroughputDl]; - @statistic[macCellThroughputDl](title="Cell Throughput at the MAC layer DL"; unit="Bps"; source="macCellThroughputDl"; record=mean); + @signal[macPacketUl](type=inet::Packet); + @statistic[macThroughputUl](title="Throughput at the MAC layer UL"; unit=bps; source="throughput(macPacketUl)"; record=mean); + @signal[macCellPacketUl](type=inet::Packet); + @statistic[macCellThroughputUl](title="Cell Throughput at the MAC layer UL"; unit=bps; source="throughput(macCellPacketUl)"; record=mean); + @signal[macCellPacketDl](type=inet::Packet); + @statistic[macCellThroughputDl](title="Cell Throughput at the MAC layer DL"; unit=bps; source="throughput(macCellPacketDl)"; record=mean); @signal[macCellPacketLossDl]; @statistic[macCellPacketLossDl](title="Mac Cell Packet Loss Dl"; unit=""; source="macCellPacketLossDl"; record=mean); @signal[macCellPacketLossUl]; diff --git a/src/stack/mac/LteMacEnbD2D.ned b/src/stack/mac/LteMacEnbD2D.ned index f3ce3eefb..2ce0ea2c3 100644 --- a/src/stack/mac/LteMacEnbD2D.ned +++ b/src/stack/mac/LteMacEnbD2D.ned @@ -43,8 +43,8 @@ simple LteMacEnbD2D extends LteMacEnb bool msHarqInterrupt = default(true); bool msClearRlcBuffer = default(true); - @signal[macCellThroughputD2D]; - @statistic[macCellThroughputD2D](title="Cell Throughput at the MAC layer D2D"; unit="Bps"; source="macCellThroughputD2D"; record=mean); + @signal[macCellPacketD2D](type=inet::Packet); + @statistic[macCellThroughputD2D](title="Cell throughput at the MAC layer D2D"; unit=bps; source="throughput(macCellPacketD2D)"; record=mean); @signal[macCellPacketLossD2D]; @statistic[macCellPacketLossD2D](title="Mac Cell Packet Loss D2D"; unit=""; source="macCellPacketLossD2D"; record=mean); } diff --git a/src/stack/mac/LteMacUeD2D.ned b/src/stack/mac/LteMacUeD2D.ned index 530ff6c39..050c3d224 100644 --- a/src/stack/mac/LteMacUeD2D.ned +++ b/src/stack/mac/LteMacUeD2D.ned @@ -42,8 +42,8 @@ simple LteMacUeD2D extends LteMacUe @statistic[macPacketLossD2D](title="Mac Packet Loss D2D"; unit=""; source="macPacketLossD2D"; record=mean); @signal[macDelayD2D]; @statistic[macDelayD2D](title="Delay at the MAC layer D2D"; unit="s"; source="macDelayD2D"; record=mean,vector); - @signal[macThroughputD2D]; - @statistic[macThroughputD2D](title="Throughput at the MAC layer D2D"; unit="Bps"; source="macThroughputD2D"; record=mean); + @signal[macPacketD2D](type=inet::Packet); + @statistic[macThroughputD2D](title="Throughput at the MAC layer D2D"; unit=bps; source="throughput(macPacketD2D)"; record=mean); @signal[rcvdD2DModeSwitchNotification]; @statistic[rcvdD2DModeSwitchNotification](title="Reception of mode switch notification (tx side)"; unit=""; source="rcvdD2DModeSwitchNotification"; record=count,vector); diff --git a/src/stack/mac/amc/LteAmc.cc b/src/stack/mac/amc/LteAmc.cc index 2a4e300ce..a637fd2eb 100644 --- a/src/stack/mac/amc/LteAmc.cc +++ b/src/stack/mac/amc/LteAmc.cc @@ -438,7 +438,7 @@ void LteAmc::pushFeedbackD2D(MacNodeId id, LteFeedback fb, MacNodeId peerId, dou // DEBUG EV << "PeerId: " << peerId << ", Antenna: " << dasToA(antenna) << ", TxMode: " << txMode << ", Index: " << index << endl; EV << "RECEIVED" << endl; - fb.print(NODEID_NONE, id, D2D, "LteAmc::pushFeedbackD2D"); + fb.print(cellId_, id, D2D, "LteAmc::pushFeedbackD2D"); } const LteSummaryFeedback& LteAmc::getFeedback(MacNodeId id, Remote antenna, TxMode txMode, const Direction dir, double carrierFrequency) @@ -591,9 +591,9 @@ unsigned int LteAmc::computeBitsOnNRbs(MacNodeId id, Band b, unsigned int blocks return 0; // DEBUG - EV << NOW << " LteAmc::blocks2bits Node: " << id << "\n"; - EV << NOW << " LteAmc::blocks2bits Band: " << b << "\n"; - EV << NOW << " LteAmc::blocks2bits Direction: " << dirToA(dir) << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs Node: " << id << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs Band: " << b << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs Direction: " << dirToA(dir) << "\n"; // Acquiring current user scheduling information const UserTxParams& info = computeTxParams(id, dir, carrierFrequency); @@ -605,7 +605,7 @@ unsigned int LteAmc::computeBitsOnNRbs(MacNodeId id, Band b, unsigned int blocks for (Codeword cw = 0; cw < codewords; ++cw) { // if CQI == 0 the UE is out of range, thus bits=0 if (info.readCqiVector().at(cw) == 0) { - EV << NOW << " LteAmc::blocks2bits - CQI equal to zero on cw " << cw << ", return no blocks available" << endl; + EV << NOW << " LteAmc::computeBitsOnNRbs - CQI equal to zero on cw " << cw << ", return no blocks available" << endl; continue; } @@ -614,19 +614,19 @@ unsigned int LteAmc::computeBitsOnNRbs(MacNodeId id, Band b, unsigned int blocks unsigned int i = (mod == _QPSK ? 0 : (mod == _16QAM ? 9 : (mod == _64QAM ? 15 : 0))); // DEBUG - EV << NOW << " LteAmc::blocks2bits ---::[ Codeword = " << cw << "\n"; - EV << NOW << " LteAmc::blocks2bits Modulation: " << modToA(mod) << "\n"; - EV << NOW << " LteAmc::blocks2bits iTbs: " << iTbs << "\n"; - EV << NOW << " LteAmc::blocks2bits i: " << i << "\n"; - EV << NOW << " LteAmc::blocks2bits CQI: " << info.readCqiVector().at(cw) << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs ---::[ Codeword = " << cw << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs Modulation: " << modToA(mod) << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs iTbs: " << iTbs << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs i: " << i << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs CQI: " << info.readCqiVector().at(cw) << "\n"; const unsigned int *tbsVect = itbs2tbs(mod, info.readTxMode(), layers.at(cw), iTbs - i); bits += tbsVect[blocks - 1]; } // DEBUG - EV << NOW << " LteAmc::blocks2bits Resource Blocks: " << blocks << "\n"; - EV << NOW << " LteAmc::blocks2bits Available space: " << bits << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs Resource Blocks: " << blocks << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs Available space: " << bits << "\n"; return bits; } @@ -634,23 +634,23 @@ unsigned int LteAmc::computeBitsOnNRbs(MacNodeId id, Band b, unsigned int blocks unsigned int LteAmc::computeBitsOnNRbs(MacNodeId id, Band b, Codeword cw, unsigned int blocks, const Direction dir, double carrierFrequency) { if (blocks > 110) // Safety check to avoid segmentation fault - throw cRuntimeError("LteAmc::blocks2bits(): Too many blocks"); + throw cRuntimeError("LteAmc::computeBitsOnNRbs(): Too many blocks"); if (blocks == 0) return 0; // DEBUG - EV << NOW << " LteAmc::blocks2bits Node: " << id << "\n"; - EV << NOW << " LteAmc::blocks2bits Band: " << b << "\n"; - EV << NOW << " LteAmc::blocks2bits Codeword: " << cw << "\n"; - EV << NOW << " LteAmc::blocks2bits Direction: " << dirToA(dir) << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs Node: " << id << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs Band: " << b << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs Codeword: " << cw << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs Direction: " << dirToA(dir) << "\n"; // Acquiring current user scheduling information UserTxParams info = computeTxParams(id, dir, carrierFrequency); // if CQI == 0 the UE is out of range, thus return 0 if (info.readCqiVector().at(cw) == 0) { - EV << NOW << " LteAmc::blocks2bits - CQI equal to zero, return no blocks available" << endl; + EV << NOW << " LteAmc::computeBitsOnNRbs - CQI equal to zero, return no blocks available" << endl; return 0; } unsigned char layers = info.getLayers().at(cw); @@ -660,45 +660,45 @@ unsigned int LteAmc::computeBitsOnNRbs(MacNodeId id, Band b, Codeword cw, unsign unsigned int i = (mod == _QPSK ? 0 : (mod == _16QAM ? 9 : (mod == _64QAM ? 15 : 0))); // DEBUG - EV << NOW << " LteAmc::blocks2bits Modulation: " << modToA(mod) << "\n"; - EV << NOW << " LteAmc::blocks2bits iTbs: " << iTbs << "\n"; - EV << NOW << " LteAmc::blocks2bits i: " << i << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs Modulation: " << modToA(mod) << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs iTbs: " << iTbs << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs i: " << i << "\n"; const unsigned int *tbsVect = itbs2tbs(mod, info.readTxMode(), layers, iTbs - i); // DEBUG - EV << NOW << " LteAmc::blocks2bits Resource Blocks: " << blocks << "\n"; - EV << NOW << " LteAmc::blocks2bits Available space: " << tbsVect[blocks - 1] << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs Resource Blocks: " << blocks << "\n"; + EV << NOW << " LteAmc::computeBitsOnNRbs Available space: " << tbsVect[blocks - 1] << "\n"; return tbsVect[blocks - 1]; } unsigned int LteAmc::computeBytesOnNRbs(MacNodeId id, Band b, unsigned int blocks, const Direction dir, double carrierFrequency) { - EV << NOW << " LteAmc::blocks2bytes Node " << id << ", Band " << b << ", direction " << dirToA(dir) << ", blocks " << blocks << "\n"; + EV << NOW << " LteAmc::computeBytesOnNRbs Node " << id << ", Band " << b << ", direction " << dirToA(dir) << ", blocks " << blocks << "\n"; unsigned int bits = computeBitsOnNRbs(id, b, blocks, dir, carrierFrequency); unsigned int bytes = bits / 8; // DEBUG - EV << NOW << " LteAmc::blocks2bytes Resource Blocks: " << blocks << "\n"; - EV << NOW << " LteAmc::blocks2bytes Available space: " << bits << "\n"; - EV << NOW << " LteAmc::blocks2bytes Available space: " << bytes << "\n"; + EV << NOW << " LteAmc::computeBytesOnNRbs Resource Blocks: " << blocks << "\n"; + EV << NOW << " LteAmc::computeBytesOnNRbs Available space: " << bits << "\n"; + EV << NOW << " LteAmc::computeBytesOnNRbs Available space: " << bytes << "\n"; return bytes; } unsigned int LteAmc::computeBytesOnNRbs(MacNodeId id, Band b, Codeword cw, unsigned int blocks, const Direction dir, double carrierFrequency) { - EV << NOW << " LteAmc::blocks2bytes Node " << id << ", Band " << b << ", Codeword " << cw << ", direction " << dirToA(dir) << ", blocks " << blocks << "\n"; + EV << NOW << " LteAmc::computeBytesOnNRbs Node " << id << ", Band " << b << ", Codeword " << cw << ", direction " << dirToA(dir) << ", blocks " << blocks << "\n"; unsigned int bits = computeBitsOnNRbs(id, b, cw, blocks, dir, carrierFrequency); unsigned int bytes = bits / 8; // DEBUG - EV << NOW << " LteAmc::blocks2bytes Resource Blocks: " << blocks << "\n"; - EV << NOW << " LteAmc::blocks2bytes Available space: " << bits << "\n"; - EV << NOW << " LteAmc::blocks2bytes Available space: " << bytes << "\n"; + EV << NOW << " LteAmc::computeBytesOnNRbs Resource Blocks: " << blocks << "\n"; + EV << NOW << " LteAmc::computeBytesOnNRbs Available space: " << bits << "\n"; + EV << NOW << " LteAmc::computeBytesOnNRbs Available space: " << bytes << "\n"; return bytes; } @@ -712,8 +712,8 @@ unsigned int LteAmc::computeBytesOnNRbs_MB(MacNodeId id, Band b, unsigned int bl // DEBUG EV << NOW << " LteAmc::computeBytesOnNRbs_MB Resource Blocks: " << blocks << "\n"; - EV << NOW << " LteAmc::computeBytesOnNRbs_MB Available space: " << bits << "\n"; - EV << NOW << " LteAmc::computeBytesOnNRbs_MB Available space: " << bytes << "\n"; + EV << NOW << " LteAmc::computeBytesOnNRbs_MB Available space: " << bits << " bits\n"; + EV << NOW << " LteAmc::computeBytesOnNRbs_MB Available space: " << bytes << " bytes\n"; return bytes; } @@ -980,7 +980,7 @@ Cqi LteAmc::readWbCqi(const CqiVector& cqi) // consider the cqi of each band unsigned int bands = cqi.size(); for (Band b = 0; b < bands; ++b) { - EV << "LteAmc::getWbCqi - Cqi " << cqi.at(b) << " on band " << (int)b << endl; + EV << "LteAmc::readWbCqi - Cqi " << cqi.at(b) << " on band " << (int)b << endl; cqiCounter += cqi.at(b); cqiMin = cqiMin < cqi.at(b) ? cqiMin : cqi.at(b); @@ -1091,7 +1091,7 @@ Pmi LteAmc::readWbPmi(const PmiVector& pmi) throw cRuntimeError("LteAmc::readWbPmi(): Unknown weight %f", pmiComputationWeight_); } - EV << "LteAmc::getWbPmi - Pmi " << pmiRet << " evaluated\n"; + EV << "LteAmc::readWbPmi - Pmi " << pmiRet << " evaluated\n"; return pmiRet; } @@ -1328,7 +1328,7 @@ void LteAmc::testUe(MacNodeId nodeId, Direction dir) numTxModes = UL_NUM_TXMODE; } else { - throw cRuntimeError("LteAmc::attachUser(): Unrecognized direction"); + throw cRuntimeError("LteAmc::testUe(): Unrecognized direction"); } unsigned int nodeIndex = (*nodeIndexMap).at(nodeId); diff --git a/src/stack/mac/buffer/harq/LteHarqBufferRx.cc b/src/stack/mac/buffer/harq/LteHarqBufferRx.cc index 581b40d0b..ef6586403 100644 --- a/src/stack/mac/buffer/harq/LteHarqBufferRx.cc +++ b/src/stack/mac/buffer/harq/LteHarqBufferRx.cc @@ -18,13 +18,11 @@ namespace simu5g { -unsigned int LteHarqBufferRx::totalCellRcvdBytes_ = 0; - using namespace omnetpp; -simsignal_t LteHarqBufferRx::macCellThroughputSignal_[2] = { cComponent::registerSignal("macCellThroughputDl"), cComponent::registerSignal("macCellThroughputUl") }; +simsignal_t LteHarqBufferRx::macCellPacketSignal_[2] = { cComponent::registerSignal("macCellPacketDl"), cComponent::registerSignal("macCellPacketUl") }; simsignal_t LteHarqBufferRx::macDelaySignal_[2] = { cComponent::registerSignal("macDelayDl"), cComponent::registerSignal("macDelayUl") }; -simsignal_t LteHarqBufferRx::macThroughputSignal_[2] = { cComponent::registerSignal("macThroughputDl"), cComponent::registerSignal("macThroughputUl") }; +simsignal_t LteHarqBufferRx::macPacketSignal_[2] = { cComponent::registerSignal("macPacketDl"), cComponent::registerSignal("macPacketUl") }; LteHarqBufferRx::LteHarqBufferRx(unsigned int num, LteMacBase *owner, Binder *binder, MacNodeId srcId) : binder_(binder), macOwner_(owner), numHarqProcesses_(num), srcId_(srcId), processes_(num, nullptr), isMulticast_(false) @@ -127,24 +125,12 @@ std::list LteHarqBufferRx::extractCorrectPdus() auto temp = pktTemp->peekAtFront(); auto uInfo = pktTemp->getTag(); - unsigned int size = pktTemp->getByteLength(); - // emit delay statistic macUe_emit(macDelaySignal_[dir], (NOW - pktTemp->getCreationTime()).dbl()); - // Calculate Throughput by sending the number of bits for this packet - totalCellRcvdBytes_ += size; - totalRcvdBytes_ += size; - double den = (NOW - getSimulation()->getWarmupPeriod()).dbl(); - - // emit throughput statistics - if (den > 0) { - double tputSample = (double)totalRcvdBytes_ / den; - double cellTputSample = (double)totalCellRcvdBytes_ / den; - - nodeB_->emit(macCellThroughputSignal_[dir], cellTputSample); - macUe_emit(macThroughputSignal_[dir], tputSample); - } + // emit packet statistics + nodeB_->emit(macCellPacketSignal_[dir], pktTemp); + macUe_emit(macPacketSignal_[dir], pktTemp); macOwner_->dropObj(pktTemp); ret.push_back(pktTemp); diff --git a/src/stack/mac/buffer/harq/LteHarqBufferRx.h b/src/stack/mac/buffer/harq/LteHarqBufferRx.h index 4d26016f6..1a0525e15 100644 --- a/src/stack/mac/buffer/harq/LteHarqBufferRx.h +++ b/src/stack/mac/buffer/harq/LteHarqBufferRx.h @@ -54,13 +54,11 @@ class LteHarqBufferRx bool isMulticast_; // Statistics - static unsigned int totalCellRcvdBytes_; - unsigned int totalRcvdBytes_ = 0; Direction dir = UNKNOWN_DIRECTION; - static simsignal_t macCellThroughputSignal_[2]; + static simsignal_t macCellPacketSignal_[2]; static simsignal_t macDelaySignal_[2]; - static simsignal_t macThroughputSignal_[2]; + static simsignal_t macPacketSignal_[2]; // reference to the eNB module opp_component_ptr nodeB_; @@ -170,6 +168,12 @@ class LteHarqBufferRx macUe_->emit(signal, val); } } + virtual void macUe_emit(simsignal_t signal, inet::Packet *pkt) + { + if (macUe_ != nullptr) { + macUe_->emit(signal, pkt); + } + } /** * macSource_ is a private member, so derived classes need this member function to diff --git a/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.cc b/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.cc index 08e4cd11e..f9442504f 100644 --- a/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.cc +++ b/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.cc @@ -22,9 +22,9 @@ namespace simu5g { using namespace omnetpp; -simsignal_t LteHarqBufferRxD2D::macThroughputD2D_ = cComponent::registerSignal("macThroughputD2D"); +simsignal_t LteHarqBufferRxD2D::macPacketD2D_ = cComponent::registerSignal("macPacketD2D"); simsignal_t LteHarqBufferRxD2D::macDelayD2D_ = cComponent::registerSignal("macDelayD2D"); -simsignal_t LteHarqBufferRxD2D::macCellThroughputD2D_ = cComponent::registerSignal("macCellThroughputD2D"); +simsignal_t LteHarqBufferRxD2D::macCellPacketD2D_ = cComponent::registerSignal("macCellPacketD2D"); LteHarqBufferRxD2D::LteHarqBufferRxD2D(unsigned int num, LteMacBase *owner, Binder *binder, MacNodeId srcId, bool isMulticast) : LteHarqBufferRx(binder, owner, num, srcId) @@ -116,7 +116,6 @@ std::list LteHarqBufferRxD2D::extractCorrectPdus() for (Codeword cw = 0; cw < MAX_CODEWORDS; ++cw) { if (processes_[i]->isCorrect(cw)) { auto temp = processes_[i]->extractPdu(cw); - unsigned int size = temp->getByteLength(); auto info = temp->getTag(); // emit delay statistic @@ -125,25 +124,13 @@ std::list LteHarqBufferRxD2D::extractCorrectPdus() else macUe_emit(macDelaySignal_[dir], (NOW - temp->getCreationTime()).dbl()); // TODO `info->getDirection()` and `dir` maybe differs - // Calculate Throughput by sending the number of bits for this packet - totalRcvdBytes_ += size; - totalCellRcvdBytes_ += size; - - double den = (NOW - getSimulation()->getWarmupPeriod()).dbl(); - - if (den > 0) { - double tputSample = (double)totalRcvdBytes_ / den; - double cellTputSample = (double)totalCellRcvdBytes_ / den; - - // emit throughput statistics - if (info->getDirection() == D2D) { - check_and_cast(nodeB_.get())->emit(macCellThroughputD2D_, cellTputSample); - macUe_emit(macThroughputD2D_, tputSample); - } - else { - nodeB_->emit(macCellThroughputSignal_[dir], cellTputSample); // TODO `info->getDirection()` and `dir` maybe differs - macUe_emit(macThroughputSignal_[dir], tputSample); // TODO `info->getDirection()` and `dir` maybe differs - } + if (info->getDirection() == D2D) { + check_and_cast(nodeB_.get())->emit(macCellPacketD2D_, temp); + macUe_emit(macPacketD2D_, temp); + } + else { + nodeB_->emit(macCellPacketSignal_[dir], temp); // TODO `info->getDirection()` and `dir` maybe differs + macUe_emit(macPacketSignal_[dir], temp); // TODO `info->getDirection()` and `dir` maybe differs } ret.push_back(temp); diff --git a/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.h b/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.h index fd958bdff..95a1a24a5 100644 --- a/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.h +++ b/src/stack/mac/buffer/harq_d2d/LteHarqBufferRxD2D.h @@ -37,8 +37,8 @@ class LteHarqBufferRxD2D : public LteHarqBufferRx // D2D Statistics static inet::simsignal_t macDelayD2D_; - static inet::simsignal_t macCellThroughputD2D_; - static inet::simsignal_t macThroughputD2D_; + static inet::simsignal_t macCellPacketD2D_; + static inet::simsignal_t macPacketD2D_; /** * Checks for all processes if the PDU has been evaluated and sends diff --git a/src/stack/mac/scheduling_modules/LteMaxCi.cc b/src/stack/mac/scheduling_modules/LteMaxCi.cc index 5d8eb6a48..356fe246a 100644 --- a/src/stack/mac/scheduling_modules/LteMaxCi.cc +++ b/src/stack/mac/scheduling_modules/LteMaxCi.cc @@ -19,7 +19,7 @@ using namespace omnetpp; void LteMaxCi::prepareSchedule() { - EV << NOW << " LteMaxCI::schedule " << eNbScheduler_->mac_->getMacNodeId() << endl; + EV << NOW << " LteMaxCI::prepareSchedule " << eNbScheduler_->mac_->getMacNodeId() << endl; activeConnectionTempSet_ = *activeConnectionSet_; @@ -83,7 +83,7 @@ void LteMaxCi::prepareSchedule() // Insert the cid score score.push(desc); - EV << NOW << " LteMaxCI::schedule computed for cid " << cid << " score of " << desc.score_ << endl; + EV << NOW << " LteMaxCI::prepareSchedule computed for cid " << cid << " score of " << desc.score_ << endl; } if (direction_ == UL || direction_ == DL) { // D2D background traffic not supported (yet?) @@ -118,20 +118,20 @@ void LteMaxCi::prepareSchedule() unsigned int granted; if (MacCidToNodeId(current.x_) >= BGUE_MIN_ID) { - EV << NOW << " LteMaxCI::schedule scheduling background UE " << MacCidToNodeId(current.x_) << " with score of " << current.score_ << endl; + EV << NOW << " LteMaxCI::prepareSchedule scheduling background UE " << MacCidToNodeId(current.x_) << " with score of " << current.score_ << endl; // Grant data to that background connection. granted = requestGrantBackground(current.x_, 4294967295U, terminate, active, eligible); - EV << NOW << "LteMaxCI::schedule granted " << granted << " bytes to background UE " << MacCidToNodeId(current.x_) << endl; + EV << NOW << "LteMaxCI::prepareSchedule granted " << granted << " bytes to background UE " << MacCidToNodeId(current.x_) << endl; } else { - EV << NOW << " LteMaxCI::schedule scheduling connection " << current.x_ << " with score of " << current.score_ << endl; + EV << NOW << " LteMaxCI::prepareSchedule scheduling connection " << current.x_ << " with score of " << current.score_ << endl; // Grant data to that connection. granted = requestGrant(current.x_, 4294967295U, terminate, active, eligible); - EV << NOW << "LteMaxCI::schedule granted " << granted << " bytes to connection " << current.x_ << endl; + EV << NOW << "LteMaxCI::prepareSchedule granted " << granted << " bytes to connection " << current.x_ << endl; } // Exit immediately if the terminate flag is set. @@ -140,12 +140,12 @@ void LteMaxCi::prepareSchedule() // Pop the descriptor from the score list if the active or eligible flag are clear. if (!active || !eligible) { score.pop(); - EV << NOW << "LteMaxCI::schedule connection " << current.x_ << " was found ineligible" << endl; + EV << NOW << "LteMaxCI::prepareSchedule connection " << current.x_ << " was found ineligible" << endl; } // Set the connection as inactive if indicated by the grant. if (!active) { - EV << NOW << "LteMaxCI::schedule scheduling connection " << current.x_ << " set to inactive " << endl; + EV << NOW << "LteMaxCI::prepareSchedule scheduling connection " << current.x_ << " set to inactive " << endl; if (MacCidToNodeId(current.x_) <= BGUE_MIN_ID) { carrierActiveConnectionSet_.erase(current.x_); diff --git a/src/stack/phy/LtePhyBase.cc b/src/stack/phy/LtePhyBase.cc index 89de69275..2ea87129c 100644 --- a/src/stack/phy/LtePhyBase.cc +++ b/src/stack/phy/LtePhyBase.cc @@ -23,7 +23,7 @@ short LtePhyBase::airFramePriority_ = 10; simsignal_t LtePhyBase::averageCqiDlSignal_ = registerSignal("averageCqiDl"); simsignal_t LtePhyBase::averageCqiUlSignal_ = registerSignal("averageCqiUl"); simsignal_t LtePhyBase::averageCqiD2DSignal_ = registerSignal("averageCqiD2D"); - +simsignal_t LtePhyBase::macNodeIdSignal_ = registerSignal("macNodeId"); void LtePhyBase::initialize(int stage) { diff --git a/src/stack/phy/LtePhyBase.h b/src/stack/phy/LtePhyBase.h index 0632b697f..1d037dd54 100644 --- a/src/stack/phy/LtePhyBase.h +++ b/src/stack/phy/LtePhyBase.h @@ -138,6 +138,7 @@ class LtePhyBase : public ChannelAccess static simsignal_t averageCqiDlSignal_; static simsignal_t averageCqiUlSignal_; static simsignal_t averageCqiD2DSignal_; + static simsignal_t macNodeIdSignal_; // Users that are transmitting (uplink) // receiving (downlink) current packet diff --git a/src/stack/phy/LtePhyBase.ned b/src/stack/phy/LtePhyBase.ned index ac423ae76..d435c5981 100644 --- a/src/stack/phy/LtePhyBase.ned +++ b/src/stack/phy/LtePhyBase.ned @@ -43,6 +43,13 @@ simple LtePhyBase like ILtePhy double multicastD2DRange @unit(m) = default(1000m); string binderModule = default("binder"); string channelModelModule = default("^.channelModel[0]"); // or "nrChannelModel[0]" + + //# + //# Statistics recording + //# + @signal[macNodeId]; + @statistic[macNodeId](title="MacNodeId provided at object construction by the Binder"; unit=""; source="macNodeId"; record=last); + gates: input upperGateIn; // from upper layer diff --git a/src/stack/phy/LtePhyEnb.cc b/src/stack/phy/LtePhyEnb.cc index c44c093a1..366e79e4f 100644 --- a/src/stack/phy/LtePhyEnb.cc +++ b/src/stack/phy/LtePhyEnb.cc @@ -43,6 +43,7 @@ void LtePhyEnb::initialize(int stage) if (stage == inet::INITSTAGE_LOCAL) { // get local id nodeId_ = MacNodeId(hostModule->par("macNodeId").intValue()); + emit(macNodeIdSignal_, num(nodeId_)); EV << "Local MacNodeId: " << nodeId_ << endl; cellInfo_ = getCellInfo(binder_, nodeId_); diff --git a/src/stack/phy/LtePhyUe.cc b/src/stack/phy/LtePhyUe.cc index caeff8471..312efb3bb 100644 --- a/src/stack/phy/LtePhyUe.cc +++ b/src/stack/phy/LtePhyUe.cc @@ -94,6 +94,7 @@ void LtePhyUe::initialize(int stage) nodeId_ = MacNodeId(hostModule->par("nrMacNodeId").intValue()); else nodeId_ = MacNodeId(hostModule->par("macNodeId").intValue()); + emit(macNodeIdSignal_, num(nodeId_)); EV << "Local MacNodeId: " << nodeId_ << endl; } else if (stage == inet::INITSTAGE_PHYSICAL_LAYER) { diff --git a/src/stack/phy/LtePhyUeD2D.cc b/src/stack/phy/LtePhyUeD2D.cc index 858f12229..af5457225 100644 --- a/src/stack/phy/LtePhyUeD2D.cc +++ b/src/stack/phy/LtePhyUeD2D.cc @@ -28,6 +28,7 @@ void LtePhyUeD2D::initialize(int stage) d2dTxPower_ = par("d2dTxPower"); d2dMulticastEnableCaptureEffect_ = par("d2dMulticastCaptureEffect"); d2dDecodingTimer_ = nullptr; + d2dEnforceEnbBoundOnSideLink = par("d2dEnforceEnbBoundOnSideLink"); } } @@ -160,6 +161,35 @@ void LtePhyUeD2D::handleAirFrame(cMessage *msg) return; } + if (d2dEnforceEnbBoundOnSideLink){ + // In normal a setup, neighboring base stations should have different carrier frequencies and + // thus communication between UE's associated with different eNB's should not be possible, i.e. + // these UES should not be able to talk to each other over sidelink. + // However, modelling networks with different carrier frequencies is currently not fully supported. + // Workaround: This switch checks if the UE's are associated with the same eNB even if + // both eNB's are on the same frequency. Communication received from a different cell is dropped. + + // check if sending and receiving node are associated with the same eNB + MacNodeId other_enb_id = binder_->getNextHop(lteInfo->getSourceId()); + + /* alternative implementation variant - not relying on next hop information: + LteMacBase* otherMacBase = binder_->getMacFromMacNodeId(lteInfo->getSourceId()); + if (otherMacBase == nullptr){ + throw cRuntimeError("LtePhyUeD2D::handleAirFrame - MAC not found"); + } + MacNodeId other_enb_id = (MacNodeId)otherMacBase->getMacCellId(); + */ + + if (masterId_ != other_enb_id){ + EV << "D2D frame from UE that is associated with a different base station -> ignore frame" << endl; + EV << "Current MasterID: " << masterId_ << ", MAC cell ID of sender (its eNB): " << other_enb_id << endl; + delete lteInfo; + delete frame; + return; + } + } + + // If the packet is a D2D multicast one, store it and decode it at the end of the TTI. if (d2dMulticastEnableCaptureEffect_ && binder_->isInMulticastGroup(nodeId_, lteInfo->getMulticastGroupId())) { // If not already started, auto-send a message to signal the presence of data to be decoded. diff --git a/src/stack/phy/LtePhyUeD2D.h b/src/stack/phy/LtePhyUeD2D.h index abc70a0ce..6b37d7ccb 100644 --- a/src/stack/phy/LtePhyUeD2D.h +++ b/src/stack/phy/LtePhyUeD2D.h @@ -25,6 +25,9 @@ class LtePhyUeD2D : public LtePhyUe // D2D Tx Power double d2dTxPower_; + // If set to true, do not allow D2D communication between UE's associated with different eNB's. + bool d2dEnforceEnbBoundOnSideLink; + /* * Capture Effect for D2D Multicast communications */ diff --git a/src/stack/phy/LtePhyUeD2D.ned b/src/stack/phy/LtePhyUeD2D.ned index e49ece6b3..a5a56579c 100644 --- a/src/stack/phy/LtePhyUeD2D.ned +++ b/src/stack/phy/LtePhyUeD2D.ned @@ -27,6 +27,7 @@ simple LtePhyUeD2D extends LtePhyUe double d2dTxPower @unit(dBm) = default(26dBm); bool d2dMulticastCaptureEffect = default(true); string d2dMulticastCaptureEffectFactor = default("RSRP"); // or distance + bool d2dEnforceEnbBoundOnSideLink = default(false); // Do not allow D2D communication between UE's associated with different eNB's. //# D2D CQI statistic @signal[averageCqiD2D]; diff --git a/tests/fingerprint/lte_d2d.csv b/tests/fingerprint/lte_d2d.csv index 3ed230e16..5eb0f83e3 100644 --- a/tests/fingerprint/lte_d2d.csv +++ b/tests/fingerprint/lte_d2d.csv @@ -1,7 +1,7 @@ # workingdir, args, simtimelimit, fingerprint -/simulations/LTE/d2d/, -f omnetpp.ini -c SinglePair-UDP-D2D -r 0, 5s, 781f-3e67/tplx;2b89-ff4b/tls, PASS, -/simulations/LTE/d2d/, -f omnetpp.ini -c SinglePair-UDP-Infra -r 0, 5s, 4f46-da61/tplx;38ce-e08d/tls, PASS, -/simulations/LTE/d2d/, -f omnetpp.ini -c MultiplePairs-UDP-D2D -r 0, 5s, 6b3c-0924/tplx;a58e-fa4d/tls, PASS, -/simulations/LTE/d2d/, -f omnetpp.ini -c MultiplePairs-UDP-Infra -r 0, 5s, 6c16-962a/tplx;414a-1494/tls, PASS, -/simulations/LTE/d2d/, -f omnetpp.ini -c MultiplePairs-UDP-D2D-wReuse -r 0, 5s, 72df-ab34/tplx;b80b-3dd4/tls, PASS, +/simulations/LTE/d2d/, -f omnetpp.ini -c SinglePair-UDP-D2D -r 0, 5s, 781f-3e67/tplx;9bd5-7d90/tls, PASS, +/simulations/LTE/d2d/, -f omnetpp.ini -c SinglePair-UDP-Infra -r 0, 5s, 4f46-da61/tplx;d157-5345/tls, PASS, +/simulations/LTE/d2d/, -f omnetpp.ini -c MultiplePairs-UDP-D2D -r 0, 5s, 6b3c-0924/tplx;be0f-5766/tls, PASS, +/simulations/LTE/d2d/, -f omnetpp.ini -c MultiplePairs-UDP-Infra -r 0, 5s, 6c16-962a/tplx;5e58-257c/tls, PASS, +/simulations/LTE/d2d/, -f omnetpp.ini -c MultiplePairs-UDP-D2D-wReuse -r 0, 5s, 72df-ab34/tplx;171d-4cb2/tls, PASS, diff --git a/tests/fingerprint/lte_demo.csv b/tests/fingerprint/lte_demo.csv index 6daeebcf0..665cabe14 100644 --- a/tests/fingerprint/lte_demo.csv +++ b/tests/fingerprint/lte_demo.csv @@ -1,14 +1,14 @@ # workingdir, args, simtimelimit, fingerprint -/simulations/LTE/demo/, -f omnetpp.ini -c VideoStreaming -r 0, 5s, 9277-de9f/tplx;1eae-0b5e/s, PASS, +/simulations/LTE/demo/, -f omnetpp.ini -c VideoStreaming -r 0, 5s, 9277-de9f/tplx;941c-5ec1/s, PASS, /simulations/LTE/demo/, -f omnetpp.ini -c MixedTraffic -r 0, 5s, 3504-679b/tplx, PASS, -/simulations/LTE/demo/, -f omnetpp.ini -c VoIP -r 0, 5s, aee0-82e6/tplx;b729-8224/s, PASS, -/simulations/LTE/demo/, -f omnetpp.ini -c VoIP_DL-UL -r 0, 5s, 9eb4-f6a0/tplx;05a6-ead6/s, PASS, -/simulations/LTE/demo/, -f omnetpp.ini -c VoIP-DL -r 0, 5s, 049c-41e1/tplx;0b68-fed8/s, PASS, -/simulations/LTE/demo/, -f omnetpp.ini -c VoIP-UL -r 0, 5s, 35e1-c33e/tplx;4ce9-653c/s, PASS, -/simulations/LTE/demo/, -f omnetpp.ini -c CBR-UL -r 0, 5s, 1d09-6b21/tplx;2261-9fd4/s, PASS, -/simulations/LTE/demo/, -f omnetpp.ini -c CBR-UL -r 5, 5s, 9226-de7b/tplx;aacb-a485/s, PASS, -/simulations/LTE/demo/, -f omnetpp.ini -c CBR-DL -r 0, 5s, ff0b-b399/tplx;feec-43cc/s, PASS, -/simulations/LTE/demo/, -f omnetpp.ini -c CBR-DL -r 5, 5s, e34f-fa8b/tplx;1d8e-9fa2/s, PASS, -/simulations/LTE/demo/, -f omnetpp.ini -c SchedulersTest -r 0, 5s, f835-ba31/tplx;82b3-4f01/s, PASS, -/simulations/LTE/demo/, -f omnetpp.ini -c SchedulersTest -r 12, 5s, c318-4c97/tplx;d70f-666c/s, PASS, +/simulations/LTE/demo/, -f omnetpp.ini -c VoIP -r 0, 5s, aee0-82e6/tplx;cbaf-8e4e/s, PASS, +/simulations/LTE/demo/, -f omnetpp.ini -c VoIP_DL-UL -r 0, 5s, 9eb4-f6a0/tplx;3908-c683/s, PASS, +/simulations/LTE/demo/, -f omnetpp.ini -c VoIP-DL -r 0, 5s, 049c-41e1/tplx;30d2-6925/s, PASS, +/simulations/LTE/demo/, -f omnetpp.ini -c VoIP-UL -r 0, 5s, 35e1-c33e/tplx;d83c-cd46/s, PASS, +/simulations/LTE/demo/, -f omnetpp.ini -c CBR-UL -r 0, 5s, 1d09-6b21/tplx;0f95-6887/s, PASS, +/simulations/LTE/demo/, -f omnetpp.ini -c CBR-UL -r 5, 5s, 9226-de7b/tplx;f779-966c/s, PASS, +/simulations/LTE/demo/, -f omnetpp.ini -c CBR-DL -r 0, 5s, ff0b-b399/tplx;97df-fc1a/s, PASS, +/simulations/LTE/demo/, -f omnetpp.ini -c CBR-DL -r 5, 5s, e34f-fa8b/tplx;524f-ff66/s, PASS, +/simulations/LTE/demo/, -f omnetpp.ini -c SchedulersTest -r 0, 5s, f835-ba31/tplx;8ada-dedd/s, PASS, +/simulations/LTE/demo/, -f omnetpp.ini -c SchedulersTest -r 12, 5s, c318-4c97/tplx;7819-51db/s, PASS, diff --git a/tests/fingerprint/mec.csv b/tests/fingerprint/mec.csv index 502de4289..271d69c60 100644 --- a/tests/fingerprint/mec.csv +++ b/tests/fingerprint/mec.csv @@ -1,6 +1,6 @@ # workingdir, args, simtimelimit, fingerprint, -/simulations/NR/mec/singleMecHost, -f omnetpp.ini -c SingleMec -r 0, 20s, f9b0-fb7a/tlx;f5ac-5628/s, PASS, -/simulations/NR/mec/multiMecHost, -f omnetpp.ini -c MultiMec -r 0, 20s, 6aff-ca52/tlx;df19-c69a/s, PASS, -/simulations/NR/mec/multiOperator, -f omnetpp.ini -c MultiOperator_SingleMec -r 0, 20s, ae52-aa83/tlx;16bc-88be/s, PASS, -/simulations/NR/mec/multiOperator, -f omnetpp.ini -c MultiOperator_MultiMec -r 0, 20s, 1a05-3f26/tlx;b7e5-1208/s, PASS, -/simulations/NR/mec/rnisTest, -f omnetpp.ini -c RnisTest -r 0, 5s, f447-35ec/tlx;cac1-2ed1/s, PASS, +/simulations/NR/mec/singleMecHost, -f omnetpp.ini -c SingleMec -r 0, 20s, f9b0-fb7a/tlx;6767-e21f/s, PASS, +/simulations/NR/mec/multiMecHost, -f omnetpp.ini -c MultiMec -r 0, 20s, 6aff-ca52/tlx;f45f-0d33/s, PASS, +/simulations/NR/mec/multiOperator, -f omnetpp.ini -c MultiOperator_SingleMec -r 0, 20s, ae52-aa83/tlx;068e-7eee/s, PASS, +/simulations/NR/mec/multiOperator, -f omnetpp.ini -c MultiOperator_MultiMec -r 0, 20s, 1a05-3f26/tlx;a929-707b/s, PASS, +/simulations/NR/mec/rnisTest, -f omnetpp.ini -c RnisTest -r 0, 5s, f447-35ec/tlx;33d7-7018/s, PASS, diff --git a/tests/fingerprint/nr_carrier_aggr.csv b/tests/fingerprint/nr_carrier_aggr.csv index 68c92c2e9..323c30baf 100644 --- a/tests/fingerprint/nr_carrier_aggr.csv +++ b/tests/fingerprint/nr_carrier_aggr.csv @@ -1,5 +1,5 @@ # workingdir, args, simtimelimit, fingerprint -/simulations/NR/test_multiCarrier, -f omnetpp.ini -c SingleCarrier-CBR-DL -r 0, 5s, 712b-da7d/tplx;4da3-a7b4/s, PASS, -/simulations/NR/test_multiCarrier, -f omnetpp.ini -c SingleCarrier-CBR-UL -r 0, 5s, b511-fc56/tplx;83c7-c17d/s, PASS, -/simulations/NR/test_multiCarrier, -f omnetpp.ini -c MultiCarrier-CBR-DL -r 0, 5s, 49e9-b86f/tplx;1261-a3af/s, PASS, -/simulations/NR/test_multiCarrier, -f omnetpp.ini -c MultiCarrier-CBR-UL -r 0, 5s, e56d-b1e5/tplx;d08e-e660/s, PASS, +/simulations/NR/test_multiCarrier, -f omnetpp.ini -c SingleCarrier-CBR-DL -r 0, 5s, 712b-da7d/tplx;5c1c-6bbe/s, PASS, +/simulations/NR/test_multiCarrier, -f omnetpp.ini -c SingleCarrier-CBR-UL -r 0, 5s, b511-fc56/tplx;5375-fc93/s, PASS, +/simulations/NR/test_multiCarrier, -f omnetpp.ini -c MultiCarrier-CBR-DL -r 0, 5s, 49e9-b86f/tplx;ff05-4a91/s, PASS, +/simulations/NR/test_multiCarrier, -f omnetpp.ini -c MultiCarrier-CBR-UL -r 0, 5s, e56d-b1e5/tplx;f18a-4865/s, PASS, diff --git a/tests/fingerprint/nr_d2d.csv b/tests/fingerprint/nr_d2d.csv index 235ce6ad0..e3793ffc2 100644 --- a/tests/fingerprint/nr_d2d.csv +++ b/tests/fingerprint/nr_d2d.csv @@ -1,7 +1,7 @@ # workingdir, args, simtimelimit, fingerprint -/simulations/NR/d2d/, -f omnetpp.ini -c SinglePair-UDP-D2D -r 0, 5s, 6bf4-9eec/tplx;e195-700a/tls, PASS, -/simulations/NR/d2d/, -f omnetpp.ini -c SinglePair-UDP-Infra -r 0, 5s, 038d-7c5a/tplx;82b7-2d07/tls, PASS, -/simulations/NR/d2d/, -f omnetpp.ini -c MultiplePairs-UDP-D2D -r 0, 5s, dfea-7d65/tplx;8c39-d418/tls, PASS, -/simulations/NR/d2d/, -f omnetpp.ini -c MultiplePairs-UDP-Infra -r 0, 5s, 98f1-cdb4/tplx;08e5-74bc/tls, PASS, -/simulations/NR/d2d/, -f omnetpp.ini -c MultiplePairs-UDP-D2D-wReuse -r 0, 5s, e1b2-0a80/tplx;2997-716d/tls, PASS, +/simulations/NR/d2d/, -f omnetpp.ini -c SinglePair-UDP-D2D -r 0, 5s, 6bf4-9eec/tplx;fd7d-8228/tls, PASS, +/simulations/NR/d2d/, -f omnetpp.ini -c SinglePair-UDP-Infra -r 0, 5s, 038d-7c5a/tplx;e761-731b/tls, PASS, +/simulations/NR/d2d/, -f omnetpp.ini -c MultiplePairs-UDP-D2D -r 0, 5s, dfea-7d65/tplx;5dd2-2190/tls, PASS, +/simulations/NR/d2d/, -f omnetpp.ini -c MultiplePairs-UDP-Infra -r 0, 5s, 98f1-cdb4/tplx;39d5-718e/tls, PASS, +/simulations/NR/d2d/, -f omnetpp.ini -c MultiplePairs-UDP-D2D-wReuse -r 0, 5s, e1b2-0a80/tplx;f9b6-7bcf/tls, PASS, diff --git a/tests/fingerprint/nr_dual_connectivity.csv b/tests/fingerprint/nr_dual_connectivity.csv index 52a2a8d1c..a360af2e8 100644 --- a/tests/fingerprint/nr_dual_connectivity.csv +++ b/tests/fingerprint/nr_dual_connectivity.csv @@ -1,9 +1,9 @@ # workingdir, args, simtimelimit, fingerprint -/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-MasterOnly-DL -r 0, 5s, 2d8f-f556/tplx;dac8-5917/s, PASS, -/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-MasterOnly-UL -r 0, 5s, 845f-025c/tplx;b38e-a84e/s, PASS, -/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-SecondaryOnly-DL -r 0, 5s, 458d-f4b6/tplx;a729-fe54/s, PASS, -/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-SecondaryOnly-UL -r 0, 5s, 494b-b13d/tplx;ae30-4e1e/s, PASS, -/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-MasterPlusSecondary-DL -r 0, 5s, d922-ff35/tplx;f476-279d/s, PASS, -/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-MasterPlusSecondary-UL -r 0, 5s, 5d34-b50d/tplx;62fb-3fbf/s, PASS, -/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-SplitBearer-DL -r 0, 5s, 309d-f2b3/tplx;96b3-729b/s, PASS, -/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-SplitBearer-UL -r 0, 5s, 5e3b-9cd9/tplx;2979-0e4a/s, PASS, +/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-MasterOnly-DL -r 0, 5s, 2d8f-f556/tplx;9d09-d67f/s, PASS, +/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-MasterOnly-UL -r 0, 5s, 845f-025c/tplx;cf66-70f0/s, PASS, +/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-SecondaryOnly-DL -r 0, 5s, 458d-f4b6/tplx;399a-ae7b/s, PASS, +/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-SecondaryOnly-UL -r 0, 5s, 494b-b13d/tplx;3a64-c711/s, PASS, +/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-MasterPlusSecondary-DL -r 0, 5s, d922-ff35/tplx;2b34-4aaa/s, PASS, +/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-MasterPlusSecondary-UL -r 0, 5s, 5d34-b50d/tplx;7317-1dea/s, PASS, +/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-SplitBearer-DL -r 0, 5s, 309d-f2b3/tplx;a30e-840c/s, PASS, +/simulations/NR/dualConnectivity, -f omnetpp.ini -c DualConn-SplitBearer-UL -r 0, 5s, 5e3b-9cd9/tplx;f021-9737/s, PASS, diff --git a/tests/fingerprint/nr_standalone.csv b/tests/fingerprint/nr_standalone.csv index 09d48d827..61cf1f27e 100644 --- a/tests/fingerprint/nr_standalone.csv +++ b/tests/fingerprint/nr_standalone.csv @@ -1,4 +1,4 @@ # workingdir, args, simtimelimit, fingerprint -/simulations/NR/standalone, -f omnetpp.ini -c VoIP-DL -r 0, 5s, 7127-a871/tplx;ded8-01d1/s,PASS, -/simulations/NR/standalone, -f omnetpp.ini -c VoIP-UL -r 0, 5s, ee32-76b0/tplx;2379-98cc/s,PASS, +/simulations/NR/standalone, -f omnetpp.ini -c VoIP-DL -r 0, 5s, 7127-a871/tplx;ba2a-a88e/s,PASS, +/simulations/NR/standalone, -f omnetpp.ini -c VoIP-UL -r 0, 5s, ee32-76b0/tplx;f6dd-1b45/s,PASS,