LTE用户文档
(如有不当的地方,欢迎指正!)
19 Frequency Reuse Algorithms(频率复用算法)
本节我们将描述如何在 LTE 仿真中使用频率复用(FR)算法。共有两种可能的配置方式。第一种方法是“手动”,它需要更多的参数配置,但是允许用户按照自己的需求配置 FR 算法。第二种是更加“自动的”,它非常方便,因为它对于每种 FR 算法都是一样的,因此用户可以通过修改 FR 算法的类型就能非常快速地切换 FR 算法 。“自动”方法的一个缺点是每种算法只有有限的配置,这使得它不那么灵活,但是对大多数情况来说已经足够。
下面的小节将描述这两种方法。
如果用户没有配置 FR 算法,默认会在基站上安装 FR 算法(例如 LteFrNoOpAlgorithm)。如果 FR 算法被禁用,它就会起作用。
必须提到的是,大多数实现的 FR 算法工作的带宽大于或等于 15 RBs。该要求的限制是至少要分配 3 个连续的 RBs 用于用户传输。
19.1 Manual configuration(手动配置)
频率复用算法可以通过在仿真程序设置 FR 算法的类型和属性来“手动”配置。当前,已经实现了 7 种 FR 算法:
- ns3::LteFrNoOpAlgorithm
- ns3::LteFrHardAlgorithm
- ns3::LteFrStrictAlgorithm
- ns3::LteFrSoftAlgorithm
- ns3::LteFfrSoftAlgorithm
- ns3::LteFfrEnhancedAlgorithm
- ns3::LteFfrDistributedAlgorithm
通过 LteHelper 对象和它的 SetFfrAlgorithmType 方法来选择一种 FR 算法,如下:
Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
lteHelper->SetFfrAlgorithmType ("ns3::LteFrHardAlgorithm");
每种实现的 FR 算法都会提供几种可配置的属性。用户没必要关心上行和下行带宽,因为在小区配置期间它是自动实现的。如果要修改 FR 算法的带宽,可以对 LteEnbNetDevice 配置需要的值:
uint8_t bandwidth = ;
lteHelper->SetEnbDeviceAttribute ("DlBandwidth", UintegerValue (bandwidth));
lteHelper->SetEnbDeviceAttribute ("UlBandwidth", UintegerValue (bandwidth));
下面,描述每种 FR 算法的配置。
(1)Hard Frequency Reuse 算法
正如设计文档的 Hard Frequency Reuse 这一节描述的, ns3::LteFrHardAlgorithm 使用一个子带。为了配置该子带,用户需要指定下行和上行的偏移和带宽(RBs的数目)。
Hard Frequency Reuse 算法提供下列属性:
- DlSubBandOffset: 下行偏移(RBGs的数目)
- DlSubBandwidth:下行传输子带宽配置(RBGs的数目)
- UlSubBandOffset:上行偏移(RBGs的数目)
- UlSubBandwidth: 上行传输子带宽配置(RBGs的数目)
例子 LteFrHardAlgorithm 配置方式如下:
lteHelper->SetFfrAlgorithmType ("ns3::LteFrHardAlgorithm");
lteHelper->SetFfrAlgorithmAttribute ("DlSubBandOffset", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("DlSubBandwidth", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("UlSubBandOffset", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("UlSubBandwidth", UintegerValue ());
NetDeviceContainer enbDevs = lteHelper->InstallEnbDevice (enbNodes.Get());
当整个小区的带宽为 25 时,上述例子允许基站只使用下行和上行的 8 到 16 个 RBs。
(2)Strict Frequency Reuse Algorithm(严频率复用算法)
严频率复用算法使用两个子带:一个用于每个小区(common 子带),另一个为 private 子带。也存在 RSRQ(参考信号接收质量) 阈值,它用于确定用户应该服务哪个子带。而且,这些子带上的功率传输是不同的。
严频率复用算法提供下列属性:
- UlCommonSubBandwidth: 上行 common 子带宽配置 (RBGs的数目)
- UlEdgeSubBandOffset:上行边缘子带偏移(RBGs的数目)
- UlEdgeSubBandwidth: 上行边缘子带宽配置(RBGs的数目)
- DlCommonSubBandwidth:下行common 子带宽配置 (RBGs的数目)
- DlEdgeSubBandOffset: 下行边缘子带偏移(RBGs的数目)
- DlEdgeSubBandwidth:下行边缘子带宽配置(RBGs的数目)
- RsrqThreshold: 如果 RSRQ 低于该阈值,用户应该服务每个边缘子带
- CenterPowerOffset: 中心子带的 PdschConfigDedicated::Pa 值,默认值为 dB0
- EdgePowerOffset: 边缘子带的 PdschConfigDedicated::Pa 值,默认值为 dB0
- CenterAreaTpc : TPC 值,设置在中心区域用户的 DL-DCI 中,使用绝对模式,默认值 1 映射到 -1(根据 TS36.213 Table 5.1.1.1-2)
- EdgeAreaTpc: TPC 值,设置在边缘区域用户的 DL-DCI 中,使用绝对模式,默认值 1 映射到 -1(根据 TS36.213 Table 5.1.1.1-2)
下述例子允许基站使用的下行和上行的 common 子带为 0 到 6 个 RBs,private 子带为 12 到 18 个 RBs, RSRQ 阈值为 20 dB,中心区域的功率等于 LteEnbPhy::TxPower - 3dB,边缘区域的功率等于 LteEnbPhy::TxPower + 3dB:
lteHelper->SetFfrAlgorithmType ("ns3::LteFrStrictAlgorithm");
lteHelper->SetFfrAlgorithmAttribute ("DlCommonSubBandwidth", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("UlCommonSubBandwidth", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandOffset", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandwidth", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandOffset", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandwidth", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
UintegerValue (LteRrcSap::PdschConfigDedicated::dB_3));
lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
lteHelper->SetFfrAlgorithmAttribute ("CenterAreaTpc", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaTpc", UintegerValue ());
NetDeviceContainer enbDevs = lteHelper->InstallEnbDevice (enbNodes.Get());
(3)Soft Frequency Reuse Algorithm(软频率复用算法)
在软频率复用算法中,基站使用整个小区带宽,但是存在两种子带,其中用户被提供不同的功率级别。
软频率复用算法提供下列属性:
- UlEdgeSubBandOffset: 上行边缘子带频移(RBGs的数目)
- UlEdgeSubBandwidth: 上行边缘子带配置(RBGs的数目)
- DlEdgeSubBandOffset: 下行边缘子带偏移(RBGs的数目)
- DlEdgeSubBandwidth:下行边缘子带配置(RBGs的数目)
- AllowCenterUeUseEdgeSubBand: 如果为真,中心用户可以接收到边缘子带RBGs,否则边缘子带只能用于边缘用户,默认值为真
- RsrqThreshold: 如果 RSRQ 低于该阈值,用户应该服务边缘子带。
- CenterPowerOffset:中心子带的 PdschConfigDedicated::Pa 值,默认值为 dB0
- EdgePowerOffset: 边缘子带的 PdschConfigDedicated::Pa 值,默认值为 dB0
- CenterAreaTpc: TPC 值,设置在中心区域用户的 DL-DCI 中,使用绝对模式,默认值 1 映射到 -1(根据 TS36.213 Table 5.1.1.1-2)
- EdgeAreaTpc:TPC 值,设置在边缘区域用户的 DL-DCI 中,使用绝对模式,默认值 1 映射到 -1(根据 TS36.213 Table 5.1.1.1-2)
下述例子配置小区边缘用户使用的 RBs 为 8 到16 ,且该子带对中心区域的用户不可用。 RSRQ 阈值为 20 dB,中心区域的功率等于 LteEnbPhy::TxPower,边缘区域的功率等于 LteEnbPhy::TxPower + 3dB:
lteHelper->SetFfrAlgorithmType ("ns3::LteFrSoftAlgorithm");
lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandOffset", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandwidth", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandOffset", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandwidth", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("AllowCenterUeUseEdgeSubBand", BooleanValue (false));
lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
NetDeviceContainer enbDevs = lteHelper->InstallEnbDevice (enbNodes.Get());
(4)Soft Fractional Frequency Reuse Algorithm(软部分频率复用算法)
软部分频率复用算法使用3种子带:中心、 中等 (common) 和边缘。用户只能配置其中两个: common 和边缘。中心子带由剩余的带宽组成。每个子带可以提供不同的传输功率。因为存在三种子带,所以需要配置两个 RSRQ 阈值。
软部分频率复用算法提供下列属性:
- UlCommonSubBandwidth:上行 common 子带宽配置 (RBGs的数目)
- UlEdgeSubBandOffset:上行边缘子带偏移(RBGs的数目)
- UlEdgeSubBandwidth: 上行边缘子带宽配置(RBGs的数目)
- DlCommonSubBandwidth: 下行common 子带宽配置 (RBGs的数目)
- DlEdgeSubBandOffset: 下行边缘子带偏移(RBGs的数目)
- DlEdgeSubBandwidth: 下行边缘子带宽配置(RBGs的数目)
- CenterRsrqThreshold: 如果 RSRQ 低于该阈值,用户应该服务中等 (common) 子带
- EdgeRsrqThreshold: 如果 RSRQ 低于该阈值,用户应该服务边缘子带
- CenterAreaPowerOffset: 中心子带的 PdschConfigDedicated::Pa 值,默认值为 dB0
- MediumAreaPowerOffset: 中等子带的 PdschConfigDedicated::Pa 值,默认值为 dB0
- EdgeAreaPowerOffset: 边缘子带的 PdschConfigDedicated::Pa 值,默认值为 dB0
- CenterAreaTpc: TPC 值,设置在中心区域用户的 DL-DCI 中,使用绝对模式,默认值 1 映射到 -1(根据 TS36.213 Table 5.1.1.1-2)
- MediumAreaTpc: TPC 值,设置在中等区域用户的 DL-DCI 中,使用绝对模式,默认值 1 映射到 -1(根据 TS36.213 Table 5.1.1.1-2)
- EdgeAreaTpc: TPC 值,设置在边缘区域用户的 DL-DCI 中,使用绝对模式,默认值 1 映射到 -1(根据 TS36.213 Table 5.1.1.1-2)
在下述例子中,中等(common)子带使用的 RBs 为 0 到6 ,边缘子带使用的 RBs 为 6 到 12 ,中心子带(由剩余 RBs 组成)使用的 RBs 为 12 到 24 ,中心和中等之间区域的 RSRQ 阈值为 28 dB,中等和边缘之间区域的 RSRQ 阈值为 18 dB 。中心区域的功率等于 LteEnbPhy::TxPower - 3dB, 中等区域的功率等于 LteEnbPhy::TxPower + 3dB,边缘区域的功率等于 LteEnbPhy::TxPower + 3dB:
lteHelper->SetFfrAlgorithmType ("ns3::LteFfrSoftAlgorithm");
lteHelper->SetFfrAlgorithmAttribute ("UlCommonSubBandwidth", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("DlCommonSubBandwidth", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandOffset", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("DlEdgeSubBandwidth", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandOffset", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandwidth", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("CenterRsrqThreshold", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("EdgeRsrqThreshold", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("CenterAreaPowerOffset",
UintegerValue (LteRrcSap::PdschConfigDedicated::dB_3));
lteHelper->SetFfrAlgorithmAttribute ("MediumAreaPowerOffset",
UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaPowerOffset",
UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
NetDeviceContainer enbDevs = lteHelper->InstallEnbDevice (enbNodes.Get());
(5)Enhanced Fractional Frequency Reuse Algorithm(增强型部分频率复用算法)
增强型部分频率复用 (EFFR) 保留每个小区系统带宽的一部分(通常有3种小区类型,每种获得1/3 的系统带宽)。然后,部分该子带宽用作 Primary Segment(主段) ,复用因子为 3 ;部分用作 Secondary Segment (辅助段),复用因子为 1。用户必须配置小区子带宽的上行和下行偏移( RB 的数目),一部分 RB 数目用作 Primary Segment ,一部分 RB 数目用作 Secondary Segment。 Primary Segment 可以由小区任意使用,然而分配给用户的 Secondary Segment 的资源块,只能是比配置的 CQI 阈值高的 CQI 反馈值对应的 RBs。当用户的 RSRQ 低于 RsrqThreshold 时,用户被认为是边缘用户。
既然每个基站都需要知道其他小区类型的 Primary 和 Secondary 位置, 那么在基站计算它们时,会假定每个小区的配置是相同的,只有子带宽偏移不同。因此,均匀地划分可用的系统带宽给每个小区并对每个小区应用相同的 Primary 和 Secondary Segments 配置是重要的。
增强型部分频率复用算法提供下列属性:
- UlSubBandOffset:该小区的上行子带偏移(RBGs的数目)
- UlReuse3SubBandwidth: 上行复用 3 子带宽配置 (RBGs的数目)
- UlReuse1SubBandwidth:上行复用 1 子带宽配置 (RBGs的数目)
- DlSubBandOffset: 该小区的下行子带偏移(RBGs的数目)
- DlReuse3SubBandwidth: 下行复用 3 子带宽配置 (RBGs的数目)
- DlReuse1SubBandwidth: 下行复用 1 子带宽配置 (RBGs的数目)
- RsrqThreshold:如果 RSRQ 低于该阈值,用户应服务边缘子带
- CenterAreaPowerOffset: 中心子带的 PdschConfigDedicated::Pa 值,默认值为 dB0
- EdgeAreaPowerOffset:边缘子带的 PdschConfigDedicated::Pa 值,默认为 dB0
- DlCqiThreshold: 如果 RBG 的 DL-CQI 高于该阈值,则在 RBG 上传输是可能的
- UlCqiThreshold: 如果 RBG 的 UL-CQI 高于该阈值,则在 RBG 上传输是可能的
- CenterAreaTpc: TPC 值,设置在中心区域用户的 DL-DCI 中,使用绝对模式,默认值 1 映射到 -1(根据 TS36.213 Table 5.1.1.1-2)
- EdgeAreaTpc:TPC 值,设置在边缘区域用户的 DL-DCI 中,使用绝对模式,默认值 1 映射到 -1(根据 TS36.213 Table 5.1.1.1-2)
在下述例子中,下行和上行的偏移为 0 RB 和 4 RB ,将用于 Primary Segment 和 Secondary Segment。中心和边缘之间区域的 RSRQ 阈值为 25 dB 。 下行和上行 CQI 阈值设为 10 。 中心区域的功率等于 LteEnbPhy::TxPower - 6dB。 边缘区域的功率等于 LteEnbPhy::TxPower + 0dB:
lteHelper->SetFfrAlgorithmType("ns3::LteFfrEnhancedAlgorithm");
lteHelper->SetFfrAlgorithmAttribute("RsrqThreshold", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute("DlCqiThreshold", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute("UlCqiThreshold", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute("CenterAreaPowerOffset",
UintegerValue (LteRrcSap::PdschConfigDedicated::dB_6));
lteHelper->SetFfrAlgorithmAttribute("EdgeAreaPowerOffset",
UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
lteHelper->SetFfrAlgorithmAttribute("UlSubBandOffset", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute("UlReuse3SubBandwidth", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute("UlReuse1SubBandwidth", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute("DlSubBandOffset", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute("DlReuse3SubBandwidth", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute("DlReuse1SubBandwidth", UintegerValue ());
(6)Distributed Fractional Frequency Reuse Algorithm(分布式部分频率复用算法)
分布式部分频率复用要求所有基站安装 X2 接口。只有当配置了 EPC 时,X2 接口才能安装,因此该 FFR 方式只能用于 EPC 场景。
当使用分布式部分频率复用算法时, 基站使用整个小区带宽,并且存在两种子带:中心子带和边缘子带。 在这些子带中,用户被提供不同的功率级别。 算法基于相邻小区的协议信息(例如 RNTP(相对窄带发射功率 ))自适应地为小区边缘子带选择 RBs,并通知相邻小区的基站它选择哪些 RBs 用于边缘子带。如果小区中没有用户分类为边缘用户,那么基站将不会使用任何 RBs 。
分布式部分频率复用算法提供下列属性:
- CalculationInterval:边缘子带之间的时间间隔计算,默认值为1秒
- RsrqThreshold :如果 RSRQ 低于该阈值,用户应服务边缘子带
- RsrpDifferenceThreshold :如果用户从服务小区接收到的信号功率和从相邻小区接收到的信号功率之间的差别小于 RsrpDifferenceThreshold 值,那么增加小区权重
- CenterPowerOffset :中心子带的 PdschConfigDedicated::Pa 值,默认值为 dB0
- EdgePowerOffset : 边缘子带的 PdschConfigDedicated::Pa 值,默认值为 dB0
- EdgeRbNum:可以用于边缘子带的 RB 数目
- CenterAreaTpc :TPC 值,设置在中心区域用户的 DL-DCI 中,使用绝对模式,默认值 1 映射到 -1(根据 TS36.213 Table 5.1.1.1-2)
- EdgeAreaTpc: TPC 值,设置在边缘区域用户的 DL-DCI 中,使用绝对模式,默认值 1 映射到 -1(根据 TS36.213 Table 5.1.1.1-2)
在下述例子中,计算间隔为 500 ms。中心和边缘区域的 RSRQ 阈值为 25。 RSRP Difference Threshold 设置为 5 。在下行和上行,每个小区的边缘子带使用 6 个 RBs。中心区域的功率等于 LteEnbPhy::TxPower - 0dB,边缘区域的功率等于 LteEnbPhy::TxPower + 3dB:
lteHelper->SetFfrAlgorithmType("ns3::LteFfrDistributedAlgorithm");
lteHelper->SetFfrAlgorithmAttribute("CalculationInterval", TimeValue(MilliSeconds()));
lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("RsrpDifferenceThreshold", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("EdgeRbNum", UintegerValue ());
lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
19.2 Automatic configuration(自动配置)
频率复用算法也可以以一种更“自动”的方式配置——通过设置带宽和 FrCellTypeId。 在 FR 实例初始化的过程中,带宽和 FrCellTypeId 的配置根据配置表来设置。注意,只有子带会被配置,阈值和传输功率会被设为默认值。 如果有人想修改阈值和传输功率的默认值,可以参考前面的章节。
一共有三种 FrCellTypeId : 1、 2、3, 对应每个带宽的三种不同配置。在六边形的基站布局中,三种配置允许相邻小区有不同配置。如果用户需要相邻小区有更多不同配置,可以使用手动配置方式。
下面的例子表示 FR 算法的自动配置:
lteHelper->SetFfrAlgorithmType("ns3::LteFfrSoftAlgorithm");
lteHelper->SetFfrAlgorithmAttribute("FrCellTypeId", UintegerValue ());
NetDeviceContainer enbDevs = lteHelper->InstallEnbDevice (enbNodes.Get());
参考文献
https://www.nsnam.org/docs/models/html/lte-user.html