Number of Resource blocks

788 views
Skip to first unread message

research dummy

unread,
Oct 2, 2021, 5:52:39 PM10/2/21
to ns-3-users
Hello everyone, 

I was designing a simulation for an LTE network with 10 MHz of available spectrum at some frequency. I want to have a channel bandwidth of 5 MHz, resulting in 2 channels of 5 MHz at each base station (eNobeB). Now I see that 5 MHz in documentation is 25 RBs. Would the downlink EARFCN let the Base Station know it can transmit over 10 MHz of spectrum? 

lteHelper->SetEnbDeviceAttribute ("DlEarfcn", UintegerValue (6250));

The following should set the Downlink frequency to Band 20 - 801 MHz to 811 MHz if I understood the documentation correctly.

Also, would I assign 25 RBs to each Base Station?

// Set the number of resource blocks to be used at the eNB. Default is 25 = 5 MHz
Config::SetDefault ("ns3::LteEnbNetDevice::DlBandwidth", UintegerValue (25))

Or, since I have 5 MHz Channels and two channels per Base Station, would I set the number of resource blocks as 50 (25*2)?

I appreciate any help you can provide.

Zoraze Ali

unread,
Oct 3, 2021, 11:38:09 AM10/3/21
to ns-3-users
Hi,

Please see the reply inline:

On Saturday, October 2, 2021 at 11:52:39 PM UTC+2 research dummy wrote:
Hello everyone, 

I was designing a simulation for an LTE network with 10 MHz of available spectrum at some frequency. I want to have a channel bandwidth of 5 MHz, resulting in 2 channels of 5 MHz at each base station (eNobeB). Now I see that 5 MHz in documentation is 25 RBs. Would the downlink EARFCN let the Base Station know it can transmit over 10 MHz of spectrum?
 

lteHelper->SetEnbDeviceAttribute ("DlEarfcn", UintegerValue (6250));

   No, because the default bandwidth in the number of RBs is set to 25 RBs, i.e., 5 MHz. So, when the above line of code is executed it would set only the EARFCN. Now, after that code, if you have this: "lteHelper->InstallEnbDevice (enbNodeContainer);", all the eNB nodes in the enbNodeContainer would be configured to use the same channel of 5 MHz automatically. 

The following should set the Downlink frequency to Band 20 - 801 MHz to 811 MHz if I understood the documentation correctly.
     Yes, it is Band 20, please confirm the range. 

Also, would I assign 25 RBs to each Base Station?

// Set the number of resource blocks to be used at the eNB. Default is 25 = 5 MHz
Config::SetDefault ("ns3::LteEnbNetDevice::DlBandwidth", UintegerValue (25))
 
   If you want to use the default 5 MHz, bandwidth, then you don't have to explicitly use the above code. 

Or, since I have 5 MHz Channels and two channels per Base Station, would I set the number of resource blocks as 50 (25*2)?

    There is no automatic division of the spectrum and the assignment of the channels to each eNB. If you like to use a 10 MHz wide channel and you want to assign 5 MHz to two eNBs such that those eNBs do not interfere with each other, you need to use a frequency reuse algorithm, e.g., Hard Frequency reuse algo, on top of the EARFCN and Bandwidth configuration. 

Kind regards,
Zoraze

research dummy

unread,
Oct 4, 2021, 1:55:19 AM10/4/21
to ns-3-users
Hello Zoraze,

Thank you for your detailed explanations. I have responded in line as well. Please take your time as well, as I know you are probably busy.

On Sunday, October 3, 2021 at 11:38:09 AM UTC-4 zoraze wrote:
Hi,

Please see the reply inline:

On Saturday, October 2, 2021 at 11:52:39 PM UTC+2 research dummy wrote:
Hello everyone, 

I was designing a simulation for an LTE network with 10 MHz of available spectrum at some frequency. I want to have a channel bandwidth of 5 MHz, resulting in 2 channels of 5 MHz at each base station (eNobeB). Now I see that 5 MHz in documentation is 25 RBs. Would the downlink EARFCN let the Base Station know it can transmit over 10 MHz of spectrum?
 

lteHelper->SetEnbDeviceAttribute ("DlEarfcn", UintegerValue (6250));

   No, because the default bandwidth in the number of RBs is set to 25 RBs, i.e., 5 MHz. So, when the above line of code is executed it would set only the EARFCN. Now, after that code, if you have this: "lteHelper->InstallEnbDevice (enbNodeContainer);", all the eNB nodes in the enbNodeContainer would be configured to use the same channel of 5 MHz automatically. 

Yes, the default channel bandwidth I remember from the documentation being 5 MHz (25 RBs).  EARFCN DL with a value 6250 should be 801 MHz,  so based on your explanation, if I wanted the frequency from 801 MHz to 811 MHz, I would set the RBs equal to 50 (10 MHz). Or would it treat 801 MHz as a center frequency and give me 5 MHz up/down from that value (ex 796 MHz to 806 MHz).

The following should set the Downlink frequency to Band 20 - 801 MHz to 811 MHz if I understood the documentation correctly.
     Yes, it is Band 20, please confirm the range. 
Hopefully, the sentence above will confirm confusion or display my misunderstanding. I have confirmed, though, that EARFCN 6250 is 801 MHz for the downlink frequency.
 
Also, would I assign 25 RBs to each Base Station?

// Set the number of resource blocks to be used at the eNB. Default is 25 = 5 MHz
Config::SetDefault ("ns3::LteEnbNetDevice::DlBandwidth", UintegerValue (25))
 
   If you want to use the default 5 MHz, bandwidth, then you don't have to explicitly use the above code. 
I more have the code above as: (1) as a reminder and (2) to have the ability to replace the number with a variable which can be a command-line argument as the program advances. 

Or, since I have 5 MHz Channels and two channels per Base Station, would I set the number of resource blocks as 50 (25*2)?

    There is no automatic division of the spectrum and the assignment of the channels to each eNB. If you like to use a 10 MHz wide channel and you want to assign 5 MHz to two eNBs such that those eNBs do not interfere with each other, you need to use a frequency reuse algorithm, e.g., Hard Frequency reuse algo, on top of the EARFCN and Bandwidth configuration. 

I was considering a hard frequency reuse strategy for the program and read over the user documentation where example settings were provided. Before I fully move into that, I just wanted to know that I have the correct understanding. I did see in other posts that there is no specific division of the spectrum into channels. But hypothetically, say that I have 10 MHz of available spectrum. I want to divide using a hard frequency reuse algorithm a 5 MHz channel for each eNB (2 eNB nodes in my simulation, so they don't interfere); I would want to set my DlBandwidth to 50 RBs and give say RBs 0-24 to eNB 1 and 25-50 to eNB 2.


Kind regards,
Zoraze

Please let me know if any of that needs further clarifications, and please take your time as your response is highly valued. But thank you again for your previous responses, as they have cleared up some confusion.
 

Zoraze Ali

unread,
Oct 4, 2021, 3:40:25 AM10/4/21
to ns-3-...@googlegroups.com
Hi, 

My reply is inline.

On Mon, Oct 4, 2021 at 7:55 AM research dummy <researc...@gmail.com> wrote:
Hello Zoraze,

Thank you for your detailed explanations. I have responded in line as well. Please take your time as well, as I know you are probably busy.

On Sunday, October 3, 2021 at 11:38:09 AM UTC-4 zoraze wrote:
Hi,

Please see the reply inline:

On Saturday, October 2, 2021 at 11:52:39 PM UTC+2 research dummy wrote:
Hello everyone, 

I was designing a simulation for an LTE network with 10 MHz of available spectrum at some frequency. I want to have a channel bandwidth of 5 MHz, resulting in 2 channels of 5 MHz at each base station (eNobeB). Now I see that 5 MHz in documentation is 25 RBs. Would the downlink EARFCN let the Base Station know it can transmit over 10 MHz of spectrum?
 

lteHelper->SetEnbDeviceAttribute ("DlEarfcn", UintegerValue (6250));

   No, because the default bandwidth in the number of RBs is set to 25 RBs, i.e., 5 MHz. So, when the above line of code is executed it would set only the EARFCN. Now, after that code, if you have this: "lteHelper->InstallEnbDevice (enbNodeContainer);", all the eNB nodes in the enbNodeContainer would be configured to use the same channel of 5 MHz automatically. 

Yes, the default channel bandwidth I remember from the documentation being 5 MHz (25 RBs).  EARFCN DL with a value 6250 should be 801 MHz,  so based on your explanation, if I wanted the frequency from 801 MHz to 811 MHz, I would set the RBs equal to 50 (10 MHz). Or would it treat 801 MHz as a center frequency and give me 5 MHz up/down from that value (ex 796 MHz to 806 MHz).


It would treat 801 MHz as a center frequency, and for 50 RBs, i.e., 10 MHz you would get 5 MHz up/down. 

 

The following should set the Downlink frequency to Band 20 - 801 MHz to 811 MHz if I understood the documentation correctly.
     Yes, it is Band 20, please confirm the range. 
Hopefully, the sentence above will confirm confusion or display my misunderstanding. I have confirmed, though, that EARFCN 6250 is 801 MHz for the downlink frequency.
 
Also, would I assign 25 RBs to each Base Station?

// Set the number of resource blocks to be used at the eNB. Default is 25 = 5 MHz
Config::SetDefault ("ns3::LteEnbNetDevice::DlBandwidth", UintegerValue (25))
 
   If you want to use the default 5 MHz, bandwidth, then you don't have to explicitly use the above code. 
I more have the code above as: (1) as a reminder and (2) to have the ability to replace the number with a variable which can be a command-line argument as the program advances. 

ok, I see no problem in making it configurable in your example. 
 

Or, since I have 5 MHz Channels and two channels per Base Station, would I set the number of resource blocks as 50 (25*2)?

    There is no automatic division of the spectrum and the assignment of the channels to each eNB. If you like to use a 10 MHz wide channel and you want to assign 5 MHz to two eNBs such that those eNBs do not interfere with each other, you need to use a frequency reuse algorithm, e.g., Hard Frequency reuse algo, on top of the EARFCN and Bandwidth configuration. 

I was considering a hard frequency reuse strategy for the program and read over the user documentation where example settings were provided. Before I fully move into that, I just wanted to know that I have the correct understanding. I did see in other posts that there is no specific division of the spectrum into channels. But hypothetically, say that I have 10 MHz of available spectrum. I want to divide using a hard frequency reuse algorithm a 5 MHz channel for each eNB (2 eNB nodes in my simulation, so they don't interfere); I would want to set my DlBandwidth to 50 RBs and give say RBs 0-24 to eNB 1 and 25-50 to eNB 2.

 The simulator uses Resource Allocation Type 0, which works with Resource Block Group (RBG) as a scheduling unit, i.e., at minimum, a UE in DL could be assigned one RBG. Now, how many RBs would be in one RBG is standardized by 3GPP and it depends on the system BW. Have a look at this table: https://www.sharetechnote.com/html/Handbook_LTE_RAType.html. Since RBG sizes for the BW >= 10 MHz (50 RBs) are not multiples of 25 RBs, I would say that your desired configuration is not possible. For a 50 RBs wide channel, you would waste 2 RBs, i.e., each eNB at max could have 24 non-overlapping RBs.

Kind regards,
Zoraze  

research dummy

unread,
Oct 4, 2021, 9:06:18 PM10/4/21
to ns-3-users
Hello Zoraze, 

Now that I have fixed my EARFCN to what I was expecting, my RBs are set to the appropriate amount. Thank you again for all your assistance during this step! 

I believe my RBs are not being divided appropriately...or at all.

So I am doing the manual Hard Frequency Reuse allocation on 5 Base Stations. I see in the documentation that a FrCellTypeID attribute is used with three possible values (1, 2, 3) to do automatic configuration. But as I am doing manual configuration, I am not using this attribute. The way that I am manually configuring my eNBs resource blocks is as follows:

NetDeviceContainer enbDevs;

lteHelper->SetFfrAlgorithmType ("ns3::LteFrHardAlgorithm");
lteHelper->SetFfrAlgorithmAttribute ("DlSubBandOffset", UintegerValue (0)); 
lteHelper->SetFfrAlgorithmAttribute ("DlSubBandwidth", UintegerValue (6)); 
lteHelper->SetFfrAlgorithmAttribute ("UlSubBandOffset", UintegerValue (0)); 
lteHelper->SetFfrAlgorithmAttribute ("UlSubBandwidth", UintegerValue (50)); 
enbDevs.Add(lteHelper->InstallEnbDevice (enbNodes.Get(0)));

lteHelper->SetFfrAlgorithmAttribute ("DlSubBandOffset", UintegerValue (6)); 
lteHelper->SetFfrAlgorithmAttribute ("DlSubBandwidth", UintegerValue (12)); 
lteHelper->SetFfrAlgorithmAttribute ("UlSubBandOffset", UintegerValue (0)); 
lteHelper->SetFfrAlgorithmAttribute ("UlSubBandwidth", UintegerValue (50));
enbDevs.Add(lteHelper->InstallEnbDevice (enbNodes.Get(1)));

lteHelper->SetFfrAlgorithmAttribute ("DlSubBandOffset", UintegerValue (18)); 
lteHelper->SetFfrAlgorithmAttribute ("DlSubBandwidth", UintegerValue (10)); 
lteHelper->SetFfrAlgorithmAttribute ("UlSubBandOffset", UintegerValue (0)); 
lteHelper->SetFfrAlgorithmAttribute ("UlSubBandwidth", UintegerValue (50));
enbDevs.Add(lteHelper->InstallEnbDevice (enbNodes.Get(2)));

lteHelper->SetFfrAlgorithmAttribute ("DlSubBandOffset", UintegerValue (28)); 
lteHelper->SetFfrAlgorithmAttribute ("DlSubBandwidth", UintegerValue (14)); 
lteHelper->SetFfrAlgorithmAttribute ("UlSubBandOffset", UintegerValue (0)); 
lteHelper->SetFfrAlgorithmAttribute ("UlSubBandwidth", UintegerValue (50));
enbDevs.Add(lteHelper->InstallEnbDevice (enbNodes.Get(3)));

lteHelper->SetFfrAlgorithmAttribute ("DlSubBandOffset", UintegerValue (42)); 
lteHelper->SetFfrAlgorithmAttribute ("DlSubBandwidth", UintegerValue (8)); 
lteHelper->SetFfrAlgorithmAttribute ("UlSubBandOffset", UintegerValue (0)); 
lteHelper->SetFfrAlgorithmAttribute ("UlSubBandwidth", UintegerValue (50));
enbDevs.Add(lteHelper->InstallEnbDevice (enbNodes.Get(4)));

As a side note, 60% of UEs connect to eNB 1, 2, and 4. To verify that the allocation doesn't seem to be working, I have tried other allocations such as: (1) each eNB gets 10 RBs, (2) eNBs1-4 get 0 RBs while eNB 5 gets all 50, (3) the above configuration, and (4) no frequency reuse at all. 

I am using MyApp from fifth.cc as a traffic generator and only considering downlink traffic. I am monitoring the flow statistics using FlowMonitor. 

It seems like no matter what the configuration of RBs is using Hard Frequency Reuse, the System Throughput is equivalent to if I didn't have any frequency reuse scheme in place.

Please take your time once again getting back to me, also if I made any mistakes.

research dummy

unread,
Oct 5, 2021, 10:40:23 AM10/5/21
to ns-3-users
Was trying to find more examples in the meantime. 

I looked over lena-frequency-reuse.cc; however, this example is just performing automatic configuration when it comes to hard frequency reuse. 

I also saw in the user documentation, the following for Hard Frequency Reuse:

"In this scheme whole frequency bandwidth is divided into few (typically 3, 4, or 7) disjoint sub-bands." 

Though I see no reason why 5 sub-bands should be a problem. 

I couldn't find a reason in the src/lte/model/lte-fr-hard-algorithm.cc file that might be the cause of the problem.

research dummy

unread,
Oct 6, 2021, 12:51:35 AM10/6/21
to ns-3-users
Hello Zoraze,

Please let me know if any more information is required to help determine the issue. I am also running on NS3.34 all-in-one on Ubuntu 16.04.7 LTS, if that helps at all. Though still take your time as your current help has been much appreciated and eye-opening. 

I have also tried modifying lte-fr-hard-algorithm.cc to have 5 FrCellTypeId's instead of the original 3, and tried automatic configuration.

-----------------------------------------------------------------------------------------------------------------------

The changes to lte-fr-hard-algorithm.cc was 
static const struct FrHardDownlinkDefaultConfiguration
{
  uint8_t m_cellId; ///< cell ID
  uint8_t m_dlBandwidth; ///< DL bandwidth
  uint8_t m_dlOffset; ///< DL offset
  uint8_t m_dlSubBand; ///< DL subband
} g_frHardDownlinkDefaultConfiguration[] = {
  ... // Code not changed here
  { 1, 50, 0, 10},
  { 2, 50, 10, 10},
  { 3, 50, 20, 10},
  { 4, 50, 30, 10},
  { 5, 50, 40, 10},
  ... // Code not changed here
}

static const struct FrHardUplinkDefaultConfiguration
{
  uint8_t m_cellId; ///< cell ID
  uint8_t m_ulBandwidth; ///< UL bandwidth
  uint8_t m_ulOffset; ///< Ul offset
  uint8_t m_ulSubBand; ///< UL subband
} g_frHardUplinkDefaultConfiguration[] = {
  ... // Code not changed here
  { 1, 50, 0, 10},
  { 2, 50, 10, 10},
  { 3, 50, 20, 10},
  { 4, 50, 30, 10},
  { 5, 50, 40, 10},
  ... // Code not changed here
};

-----------------------------------------------------------------------------------------------------------------------

The automatic configuration in my code is as follows.

lteHelper->SetFfrAlgorithmAttribute ("FrCellTypeId", UintegerValue (1));
enbDevs.Add (lteHelper->InstallEnbDevice (enbNodes.Get (0));
// Repeat last two lines till FrCellTypeId, UintegerValue (5);

-----------------------------------------------------------------------------------------------------------------------

Though the same thing as before, no matter what the configure of resource blocks is, I have no difference in the trace files, system throughput, flow stats. I have tried multiple different arrangements of Resource Blocks. I only see variability when changing the seed or runId, but for each seed/runId, the results are the same for each Resource block configuration.
Reply all
Reply to author
Forward
0 new messages