LENA LTE: questions on proportional fairness scheduler and MAC transport block size

668 views
Skip to first unread message

Dapeng Liu

unread,
Jun 6, 2012, 5:59:48 PM6/6/12
to ns-3-...@googlegroups.com, marco....@cttc.es, nba...@cttc.es
Hi all,

I am looking into the code for the proportional fairness scheduler, and had a few questions:

1. After the resource block groups (RBGs) are allocated, each UE will get multiple RBGs with probably different CQIs for each RBG. However when buiding the DCI for a UE, why do we choose the worst CQIs among all allocated RBGs, and calculate the transport block size based on the MCS corresponding to that CQI? The code snippet follows:

                  if (((*itCqi).second.m_higherLayerSelected.at ((*itMap).second.at (k)).m_sbCqi.at (0)) < worstCqi)
                    {
                      worstCqi = ((*itCqi).second.m_higherLayerSelected.at ((*itMap).second.at (k)).m_sbCqi.at (0));
                    }
......
      newDci.m_mcs.push_back (m_amc->GetMcsFromCqi (worstCqi));
      int tbSize = (m_amc->GetTbSizeFromMcs (newDci.m_mcs.at (0), RgbPerRnti * rbgSize) / 8); // (size of TB in bytes according to table 7.1.7.2.1-1 of 36.213)
      newDci.m_tbsSize.push_back (tbSize);

I thought for each allocated RBG, we may have different CQI so different MCS. We group the RBGs with the common MCS (or CQIs) into one transport block, so one transport block may carry data from multiple UEs. Then all RBGs may be grouped into multiple transport blocks. So we may have multiple transport blocks and each UE may have data in multiple transport blocks. But my understanding conflicts with the definition: each UE may have at most one transport block during each TTI. Please help resolve my confusion.

2. A minor question:
When allocating RBGs, we have 

             Line A:         double achievableRate = ((m_amc->GetTbSizeFromMcs (mcs, 1) / 8) / 0.001); // = TB size / TTI

But when constructing DCI we have

             Line B:        int tbSize = (m_amc->GetTbSizeFromMcs (newDci.m_mcs.at (0), RgbPerRnti * rbgSize) / 8); // (size of TB in bytes according to table 7.1.7.2.1-1 of 36.213)

I thought GetTbSizeFromMcs takes mcs and the number of resource blocks, not the number of resource block groups. So the Line A should be (mcs, rbgSize), not (mcs, 1). Please clarify.


Thank you very much for your attention.

Nicola Baldo

unread,
Jun 7, 2012, 4:48:18 AM6/7/12
to ns-3-...@googlegroups.com, marco....@cttc.es, nba...@cttc.es

On Wednesday, June 6, 2012 11:59:48 PM UTC+2, Dapeng Liu wrote:
I thought for each allocated RBG, we may have different CQI so different MCS. We group the RBGs with the common MCS (or CQIs) into one transport block, so one transport block may carry data from multiple UEs.

Well... that's not how LTE works. May I suggest you to take a look at TS 36.212 and TS 36.312, or maybe  an LTE book (probably easier).

Dapeng Liu

unread,
Jun 7, 2012, 4:59:53 AM6/7/12
to ns-3-...@googlegroups.com, marco....@cttc.es, nba...@cttc.es
Thanks Nicola. I seem to have the answers.

Each UE at most receives one transport block during each TTI. This transport block will be modulated using the MCS based on the lowest CQI resource block group allocated to this UE.

In the code, UE may have discontigous resource blocks, but in the implementation it does not.

Is my searched result correct?

--
You received this message because you are subscribed to the Google Groups "ns-3-users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/ns-3-users/-/tHa6MAwbkcwJ.
To post to this group, send email to ns-3-...@googlegroups.com.
To unsubscribe from this group, send email to ns-3-users+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/ns-3-users?hl=en.

Dapeng Liu

unread,
Jun 7, 2012, 5:08:03 AM6/7/12
to ns-3-...@googlegroups.com, marco....@cttc.es, nba...@cttc.es
For my second question, does my concern make any sense?

thanks.

On Thu, Jun 7, 2012 at 1:48 AM, Nicola Baldo <nba...@cttc.es> wrote:

--

Marco Miozzo

unread,
Jun 8, 2012, 9:34:05 AM6/8/12
to ns-3-...@googlegroups.com
Hi all,

if you use fading it might be that UEs have discontinuous resource block allocation, with flat channel (default mode in LENA) this behavior is inhibited and usually UEs receive contiguous RB (most of the time all the RBs in a TTI).

For what concern the lowest CQI issue, this is a design choice (it is not related to standard), it's a "vanilla" conservative solution.

For what concern LINE A of the first email, you are right, it should be:
    achievableRate += ((m_amc->GetTbSizeFromMcs (mcs, rbgSize) / 8) / 0.001); // = TB size / TTI

Fixed, thanks for the comment.

Regards,
marco.

Dapeng Liu

unread,
Jun 10, 2012, 1:52:29 AM6/10/12
to marco....@gmail.com, ns-3-...@googlegroups.com
Hi Marco,

Thank you very much for your help.

From the proportional scheduler code available in LENA, it seems individual resource blocks (or groups RBGs) can be allocated to different users (the outer for loop):

PfFfMacScheduler::DoSchedDlTriggerReq()
{
...

for (int i = 0; i < rbgNum; i++)
    {
...
      for (it = m_flowStatsDl.begin (); it != m_flowStatsDl.end (); it++)
        {
...
}


So even for without fading (actually scheduler does not care if it has fading or not), UEs may have discontinuous resource blocks. Could you please clarify this for me?

Thanks a lot.

Ramachandra Ponnam

unread,
Mar 26, 2014, 3:44:57 AM3/26/14
to ns-3-...@googlegroups.com, marco....@cttc.es, nba...@cttc.es
Hi Liu


I have some basic doubts about RBG allocation based on UE:

1) in Pf-ff-Mac_Scheduler code in NS3, i am not able to find how many RBGs are allocated to each UE present under the cell for a particular subframe.
EX:we  Consider the following parametres  BW=5Mhz
number of UEs=3
 
so mobility model considered=constantpositionMobilityModel

BW=5Mhz means 25PRBs and equivalent to 12RBGs

so where i can find exactly howmany RBGs are allocated to each UE.

Thanks & Regards,
ramachandra
Reply all
Reply to author
Forward
0 new messages