[LENA] access to the DL transmission queue size possible or not?

229 views
Skip to first unread message

Hamed

unread,
Aug 23, 2016, 7:56:32 PM8/23/16
to ns-3-users
Dear experts,

As previous question, I understood that in LENA, the radio bearer queue size in RLC layer. But still I have problem to see this value.

We can easily cal the transmission queue size via  "PfFfMacScheduler::UpdateDlRlcBufferInfo (uint16_t rnti, uint8_t lcid, uint16_t size)" function (https://www.nsnam.org/doxygen/pf-ff-mac-scheduler_8cc_source.html#l00216).

My problem is that when I launch my code (imagine lena-simple.cc or lena-simple-epc.cc with choosing PfFfMacScheduler), I get 80000 for the queue size which does not vary!

Output:
UE 1 LC 3 txqueue 80000 retxqueue 0 status 0 decrease 2196
UE 1 LC 3 txqueue 80000 retxqueue 0 status 0 decrease 2196
UE 1 LC 3 txqueue 80000 retxqueue 0 status 0 decrease 2196
UE 1 LC 3 txqueue 80000 retxqueue 0 status 0 decrease 2196
UE 1 LC 3 txqueue 80000 retxqueue 0 status 0 decrease 2196
...

I don't understand this output. I searched and I found that in LteRlcSm::ReportBufferStatus (https://www.nsnam.org/doxygen/lte-rlc_8cc_source.html), it has been told to the function that it should put the value 80000 for the txQueueSize!!!

My question is that it means we can not have access to the current transmission queue size?

Cheers
Hamed


Hamed

unread,
Aug 24, 2016, 7:04:16 AM8/24/16
to ns-3-users
Up!!

Zoraze Ali

unread,
Aug 24, 2016, 7:52:47 AM8/24/16
to ns-3-users
Hi Hamed,

Do you know which RLC type you are using?

BR,
Zoraze


On Wednesday, August 24, 2016 at 1:56:32 AM UTC+2, Hamed wrote:

Hamed

unread,
Aug 24, 2016, 8:07:03 AM8/24/16
to ns-3-users
Hi Zoraze Ali,

I think it is PDU.

Cheers
Hamed

Zoraze Ali

unread,
Aug 24, 2016, 8:35:41 AM8/24/16
to ns-3-users
Hi Hamed,

I am sorry to say that, your answer tells me that you have less understandings of LTE itself. Based on my experience, it would be a lot easier for you to dig into the code after you read a book and understand how LTE or the part in which you are interested in works.

Currently, in LTE module of ns-3 there are following RLC types,
RLC: Transparent Mode (TM), Unacknowledge Mode (UM) ,  Acknowledged Mode (AM) and Saturation Mode (SM). You can find their implementation details here, https://www.nsnam.org/docs/models/html/lte-design.html#rlc .

I am confident that after reading the documentation you would be easily able to answer my question.

Happy learning,

BR,
Zoraze 

Hamed Samie

unread,
Aug 24, 2016, 8:38:14 AM8/24/16
to ns-3-...@googlegroups.com
Thanks for the information, I will read them and I will come back to your question soon.

Cheers
Hamed
--
Posting to this group should follow these guidelines https://www.nsnam.org/wiki/Ns-3-users-guidelines-for-posting
---
You received this message because you are subscribed to a topic in the Google Groups "ns-3-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ns-3-users/sV1-pIpkF3w/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ns-3-users+unsubscribe@googlegroups.com.
To post to this group, send email to ns-3-...@googlegroups.com.
Visit this group at https://groups.google.com/group/ns-3-users.
For more options, visit https://groups.google.com/d/optout.

Hamed

unread,
Aug 24, 2016, 9:49:01 AM8/24/16
to ns-3-users
Dear Ali,

Again thanks for your answer and the information that you gave me. I am kind of confused about the type of the RLC. I understand your point when I compare the functions LteRlcAm::DoReportBufferStatus (void), LteRlcTm::DoReportBufferStatus (void) and LteRlcSm::DoReportBufferStatus (void). This is obvious that what I am receiving from my simulation is from Saturated Rlc. But I do not know why and how I can switch between them.

In fact for begining my work (which for that I need to have access to the current queue size for each Frame or each TTI), I chose the lena-simple.cc (or lena-simple-epc.cc) and I chose to transmi a voice data (EpsBearer::GBR_CONV_VOICE which is the default choice) and I chose the PfFfMacScheduler (https://www.nsnam.org/doxygen/pf-ff-mac-scheduler_8cc_source.html) as the scheduler which is the default choice too. And in the function PfFfMacScheduler::UpdateDlRlcBufferInfo I asked it to print the QueueSize variable (m_rlcTransmissionQueueSize). So it printed the out put which is related to the SM RLC in my knowledge.

So I do not know is it enough information to ask you question or not. But I really appreciate your answer which is really helping me.

Cheers
Hamed

Zoraze Ali

unread,
Aug 24, 2016, 11:01:29 AM8/24/16
to ns-3-users
Hi Hamed,

Please see inlines,

On Wednesday, August 24, 2016 at 3:49:01 PM UTC+2, Hamed wrote:
Dear Ali,

Again thanks for your answer and the information that you gave me. I am kind of confused about the type of the RLC. I understand your point when I compare the functions LteRlcAm::DoReportBufferStatus (void), LteRlcTm::DoReportBufferStatus (void) and LteRlcSm::DoReportBufferStatus (void). This is obvious that what I am receiving from my simulation is from Saturated Rlc. But I do not know why and how I can switch between them.

 If you do understand the difference among different RLC types then you should not be confused. If you are confused about them please refer to a book. I don't know how to answer your "Why" but for "How" please refer to https://www.nsnam.org/docs/models/html/lte-user.html. Every module in ns-3 have detailed Design and User documentation to help you, please explore them.

In fact for begining my work (which for that I need to have access to the current queue size for each Frame or each TTI), I chose the lena-simple.cc (or lena-simple-epc.cc) and I chose to transmi a voice data (EpsBearer::GBR_CONV_VOICE which is the default choice) and I chose the PfFfMacScheduler (https://www.nsnam.org/doxygen/pf-ff-mac-scheduler_8cc_source.html) as the scheduler which is the default choice too. And in the function PfFfMacScheduler::UpdateDlRlcBufferInfo I asked it to print the QueueSize variable (m_rlcTransmissionQueueSize). So it printed the out put which is related to the SM RLC in my knowledge.

I would suggest you to find out the difference between lena-simple.cc and lena-simple-epc.cc, hint: you may find the answer in user documentation. Moreover, if you have already read about RLC(SM:SATURATED MODE) in design documentation you should be able to answer why you are getting txqueue 80000.

On the side note, do follow the user documentation step by step it will help you.

BR,
Zoraze

Hamed

unread,
Aug 25, 2016, 5:49:11 AM8/25/16
to ns-3-users
Thanks Ali for the information and your answer. 

As I understood NS3 by default for the case without EPC take the SM RLC which as has been mentioned in the tutorial is not a realistic case! so this is why I get 80000 (which means that transmission queue is always full of data to be sent).

Unfortunately, a case like lena-simple is interesting for me which I can define a couple of different radio bearers to be sent from eNB to the UE(s) and compare the evolution of the transmission queue for each data flow based on using different scheduling schemes.  

I am not that much familiar with applications like Server-Client (which is used in lena-simple-epc and I am learning now about them). I have just a question (maybe the last one), in case you are familiar with the subject, is there any way that I apply a EPS Bearer like "EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE" in EPC (lena-simple-epc,) ?

Cheers
Hamed

Zoraze Ali

unread,
Aug 25, 2016, 9:02:12 AM8/25/16
to ns-3-users
Hi Hamed,

First of all, please don't ask the same question in two different post. My answer is in lines, 

On Thursday, August 25, 2016 at 11:49:11 AM UTC+2, Hamed wrote:
Thanks Ali for the information and your answer. 

As I understood NS3 by default for the case without EPC take the SM RLC which as has been mentioned in the tutorial is not a realistic case! so this is why I get 80000 (which means that transmission queue is always full of data to be sent).

Unfortunately, a case like lena-simple is interesting for me which I can define a couple of different radio bearers to be sent from eNB to the UE(s) and compare the evolution of the transmission queue for each data flow based on using different scheduling schemes.  

I am not that much familiar with applications like Server-Client (which is used in lena-simple-epc and I am learning now about them). I have just a question (maybe the last one), in case you are familiar with the subject, is there any way that I apply a EPS Bearer like "EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE" in EPC (lena-simple-epc,) ?

   Of course you can do that. In the user documentation of LTE it is clearly shown how you can activate the EPS bearer when using EPC, see here,   https://www.nsnam.org/docs/release/3.25/models/html/lte-user.html#evolved-packet-core-epc

    For example, EpsBearer bearer (EpsBearer::GBR_CONV_VOICE) and then, lteHelper->ActivateDedicatedEpsBearer (ueDevs.Get (u), bearer, tft) . Follow the user documentation to learn about the procedure. You can also find a very good example in lena-dual-stripe.cc .

As you are a beginner, i would also suggest you to first search for the similar topic on the group, maybe the question has already been answered directly or indirectly. 

BR,
Zoraze

Hamed

unread,
Aug 26, 2016, 7:29:19 AM8/26/16
to ns-3-users
Hi Ali, 

Thanks for your reply. 

I have a question about the QueueSize parameter that ns3 provides. so basically in the Schedulers (which they are aware of the QueueSize even if they dont care about them) in the function UpdateDlRlcBufferInfo (for example PfFfMacScheduler::UpdateDlRlcBufferInfo (uint16_t rnti, uint8_t lcid, uint16_t size)), we can have access to the "std::map< LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters > m_rlcBufferReq". This parameter can give us some information like Transmission QueueSize or the delay. But it does not distinguish the different radio bearers as I understood. In the First part of the map it gives the Logical channel ID (which will be always 3 as I use the dedicated bearer) and the RNTI (Radio Network Temporary Identifier).

So it means that even in this case I do not have access to the queue for each radio bearer?

Cheers
Hamed

Zoraze Ali

unread,
Aug 29, 2016, 6:01:08 AM8/29/16
to ns-3-users
Hi Hamed,

Sorry for bit delayed response. As per my knowledge, if you have configured two different EPS bearers correctly in UpdateDlRlcBufferInfo you should be able to see two different lcids which can help you to distinguish between the queues of two EPS bearers flows.

BR,
Zoraze

Hamed

unread,
Aug 29, 2016, 1:22:56 PM8/29/16
to ns-3-users
 Hi Ali,
Thanks for your reply. Yes I understood that my self also during these days. But it is working correctly when I am using LteRadio (lena-simple) . But when I tried the EPC version (lena-simple-epc) it is not working. I followed the tutorial, so I assumed that I did not have a mistake in writing the code.

For exampl e when I defined in lena-simple three different radio bearers
  enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
  EpsBearer bearer (q);
  lteHelper->ActivateDataRadioBearer (ueDevs, bearer);

  enum EpsBearer::Qci q2 = EpsBearer::GBR_CONV_VIDEO;
  EpsBearer bearer2 (q2);
  lteHelper->ActivateDataRadioBearer (ueDevs, bearer2);
 
  //lteHelper->EnableMacTraces ();
  //lteHelper->EnableRlcTraces ();
  enum EpsBearer::Qci q3 = EpsBearer::NGBR_VIDEO_TCP_OPERATOR;
  EpsBearer bearer3 (q3);
  lteHelper->ActivateDataRadioBearer (ueDevs, bearer3);

I got in my out put:
UE 1 LC 3 txqueue 79270 retxqueue 0 status 0 decrease 732 Time   268
 UE 1 LC 4 txqueue 79270 retxqueue 0 status 0 decrease 732 Time   268
 UE 1 LC 5 txqueue 79270 retxqueue 0 status 0 decrease 732 Time   268
 UE 1 LC 3 txqueue 79270 retxqueue 0 status 0 decrease 732 Time   269
 UE 1 LC 4 txqueue 79270 retxqueue 0 status 0 decrease 732  Time   269
 UE 1 LC 5 txqueue 79270 retxqueue 0 status 0 decrease 732  Time   269

which is as we expected (a saturated queue and one logical chanel for each bearer!). But I is not the case of my lena-simple-epc.

Here I attached what I wrote for lena-simple-epc. Coupld you please look at that? Maybe it is easier for you to tell me if I made a mistake or not.

Thanks
Hamed

lena-simple-hamed.cc

Zoraze Ali

unread,
Aug 29, 2016, 4:11:00 PM8/29/16
to ns-3-users
Hi Hamed,

You should have three EPS bearer configured with their separate Tft configurations, e.g.,
Tft 1:
Ptr<EpcTft> tft1 = Create<EpcTft> ();
EpcTft::PacketFilter dlpf1;
dlpf1.localPortStart = 1234;
dlpf1.localPortEnd = 1234;
tft1->Add (dlpf1);
EpsBearer bearer1 (EpsBearer::NGBR_VIDEO_TCP_DEFAULT);
lteHelper->ActivateDedicatedEpsBearer (ueDevs.Get (u), bearer1, tft1);

Tft2:
Ptr<EpcTft> tft2 = Create<EpcTft> ();
EpcTft::PacketFilter dlpf2;
dlpf2.localPortStart = 4321;
dlpf2.localPortEnd = 4321;
tft2->Add (dlpf2);
EpsBearer bearer2 (EpsBearer::GBR_CONV_VOICE);
lteHelper->ActivateDedicatedEpsBearer (ueDevs.Get (u), bearer2, tft2);

and so on for 3rd bearer. Additionally, you should also have three applications configured properly on above ports. Please note, i didn't test the above code so please be careful at your end.

I hope it helps.

BR,
Zoraze

Erwin Li

unread,
Apr 26, 2024, 8:07:22 AM4/26/24
to ns-3-users
Hi Hamed,

A stupid question, where the output like "UE 1 LC 3 txqueue 80000 retxqueue 0 status 0 decrease 2196"
 from? Is it from some logs?

Best regards,
Erwin
Reply all
Reply to author
Forward
0 new messages