lte rlc tm: Disable delay measurements

This commit is contained in:
Natale Patriciello
2019-02-27 10:33:41 +01:00
parent 66f1e9198c
commit f2d3ffed57
2 changed files with 35 additions and 26 deletions

View File

@@ -23,7 +23,6 @@
#include "ns3/log.h"
#include "ns3/lte-rlc-tm.h"
#include "ns3/lte-rlc-tag.h"
namespace ns3 {
@@ -81,12 +80,8 @@ LteRlcTm::DoTransmitPdcpPdu (Ptr<Packet> p)
if (m_txBufferSize + p->GetSize () <= m_maxTxBufferSize)
{
/** Store arrival time */
RlcTag timeTag (Simulator::Now ());
p->AddPacketTag (timeTag);
NS_LOG_LOGIC ("Tx Buffer: New packet added");
m_txBuffer.push_back (p);
m_txBuffer.push_back (TxPdu (p, Simulator::Now ()));
m_txBufferSize += p->GetSize ();
NS_LOG_LOGIC ("NumOfBuffers = " << m_txBuffer.size() );
NS_LOG_LOGIC ("txBufferSize = " << m_txBufferSize);
@@ -127,20 +122,18 @@ LteRlcTm::DoNotifyTxOpportunity (LteMacSapUser::TxOpportunityParameters txOpPara
return;
}
Ptr<Packet> packet = (*(m_txBuffer.begin ()))->Copy ();
Ptr<Packet> packet = m_txBuffer.begin ()->m_pdu->Copy ();
if (txOpParams.bytes < packet->GetSize ())
{
NS_LOG_WARN ("TX opportunity too small = " << txOpParams.bytes << " (PDU size: " << packet->GetSize () << ")");
NS_LOG_WARN ("TX opportunity too small = " << txOpParams.bytes <<
" (PDU size: " << packet->GetSize () << ")");
return;
}
m_txBufferSize -= (*(m_txBuffer.begin()))->GetSize ();
m_txBufferSize -= packet->GetSize ();
m_txBuffer.erase (m_txBuffer.begin ());
// Sender timestamp
RlcTag rlcTag (Simulator::Now ());
packet->ReplacePacketTag (rlcTag);
m_txPdu (m_rnti, m_lcid, packet->GetSize ());
// Send RLC PDU to MAC layer
@@ -172,13 +165,7 @@ LteRlcTm::DoReceivePdu (LteMacSapUser::ReceivePduParameters rxPduParams)
{
NS_LOG_FUNCTION (this << m_rnti << (uint32_t) m_lcid << rxPduParams.p->GetSize ());
// Receiver timestamp
RlcTag rlcTag;
Time delay;
NS_ASSERT_MSG (rxPduParams.p->PeekPacketTag (rlcTag), "RlcTag is missing");
rxPduParams.p->RemovePacketTag (rlcTag);
delay = Simulator::Now() - rlcTag.GetSenderTimestamp ();
m_rxPdu (m_rnti, m_lcid, rxPduParams.p->GetSize (), delay.GetNanoSeconds ());
m_rxPdu (m_rnti, m_lcid, rxPduParams.p->GetSize (), 0);
// 5.1.1.2 Receive operations
// 5.1.1.2.1 General
@@ -197,10 +184,7 @@ LteRlcTm::DoReportBufferStatus (void)
if (! m_txBuffer.empty ())
{
RlcTag holTimeTag;
NS_ASSERT_MSG (m_txBuffer.front ()->PeekPacketTag (holTimeTag), "RlcTag is missing");
m_txBuffer.front ()->PeekPacketTag (holTimeTag);
holDelay = Simulator::Now () - holTimeTag.GetSenderTimestamp ();
holDelay = Simulator::Now () - m_txBuffer.front ().m_waitingSince;
queueSize = m_txBufferSize; // just data in tx queue (no header overhead for RLC TM)
}

View File

@@ -31,6 +31,10 @@ namespace ns3 {
/**
* LTE RLC Transparent Mode (TM), see 3GPP TS 36.322
*
* Please note that, as in TM it is not possible to add any header, the delay
* measurements gathered from the trace source "RxPDU" of LteRlc are invalid
* (they will be always 0)
*/
class LteRlcTm : public LteRlc
{
@@ -70,12 +74,33 @@ private:
void DoReportBufferStatus ();
private:
/**
* \brief Store an incoming (from layer above us) PDU, waiting to transmit it
*/
struct TxPdu
{
/**
* \brief TxPdu default constructor
* \param pdu the PDU
* \param time the arrival time
*/
TxPdu (const Ptr<Packet> &pdu, const Time &time) :
m_pdu (pdu),
m_waitingSince (time)
{ }
TxPdu () = delete;
Ptr<Packet> m_pdu; ///< PDU
Time m_waitingSince; ///< Layer arrival time
};
std::vector < TxPdu > m_txBuffer; ///< Transmission buffer
uint32_t m_maxTxBufferSize; ///< maximum transmit buffer size
uint32_t m_txBufferSize; ///< transmit buffer size
std::vector < Ptr<Packet> > m_txBuffer; ///< Transmission buffer
EventId m_rbsTimer; ///< RBS timer
};