LTE用户文档
(如有不当的地方,欢迎指正!)
5 配置 LTE MAC 调度器
这里有几种 LTE MAC 调度器用户可以选择。使用下面的代码定义调度器的类型:
Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
lteHelper->SetSchedulerType ("ns3::FdMtFfMacScheduler"); // FD-MT scheduler
lteHelper->SetSchedulerType ("ns3::TdMtFfMacScheduler"); // TD-MT scheduler
lteHelper->SetSchedulerType ("ns3::TtaFfMacScheduler"); // TTA scheduler
lteHelper->SetSchedulerType ("ns3::FdBetFfMacScheduler"); // FD-BET scheduler
lteHelper->SetSchedulerType ("ns3::TdBetFfMacScheduler"); // TD-BET scheduler
lteHelper->SetSchedulerType ("ns3::FdTbfqFfMacScheduler"); // FD-TBFQ scheduler
lteHelper->SetSchedulerType ("ns3::TdTbfqFfMacScheduler"); // TD-TBFQ scheduler
lteHelper->SetSchedulerType ("ns3::PssFfMacScheduler"); //PSS scheduler
TBFQ 和 PSS ,与其他调度器相比,参数更多。用户可以按照以下方式定义这些参数:
* TBFQ scheduler:: Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
lteHelper->SetSchedulerAttribute("DebtLimit", IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)
lteHelper->SetSchedulerAttribute("CreditLimit", UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)
lteHelper->SetSchedulerAttribute("TokenPoolSize", UintegerValue(yourvalue)); // default value 1 byte
lteHelper->SetSchedulerAttribute("CreditableThreshold", UintegerValue(yourvalue)); // default value 0
* PSS scheduler:: Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
lteHelper->SetSchedulerAttribute("nMux", UIntegerValue(yourvalue)); // the maximum number of UE selected by TD scheduler
lteHelper->SetSchedulerAttribute("PssFdSchedulerType", StringValue("CoItA")); // PF scheduler type in PSS
在TBFQ中,根据论文 [FABokhari2009],debt limit 和 credit limit 默认的值分别设置为 -5Mb 和 5Mb 。当前实现中并没有考虑 credit 阈值( = 0)。 在 PSS 中,如果用户不定义 nMux(TD调度器选择的最大用户数目), PSS 默认设置该值为用户总数的一半。 默认的 FD 调度器是 PFsch。
此外, TBFQ 的令牌产生率和 PSS 的目标比特率需要通过 epc bearer QoS 参数中的 Guarantee Bit Rate (GBR,保证比特率) 或 Maximum Bit Rate (MBR,最大比特率) 配置。用户可以使用下列代码在上行和下行链路定义 GBR 和 MBR :
Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
enum EpsBearer::Qci q = EpsBearer::yourvalue; // define Qci type
GbrQosInformation qos;
qos.gbrDl = yourvalue; // Downlink GBR
qos.gbrUl = yourvalue; // Uplink GBR
qos.mbrDl = yourvalue; // Downlink MBR
qos.mbrUl = yourvalue; // Uplink MBR
EpsBearer bearer (q, qos);
lteHelper->ActivateDedicatedEpsBearer (ueDevs, bearer, EpcTft::Default ());
在 PSS 中, TBR(业务比特率)根据承载级别 QoS 参数的 GBR 获得的。在 TBFQ 中,令牌产生率是根据承载级别 QoS 参数的 MBR 设置获得的,因此,承载级别的 QoS 参数需要始终配置。 对于 constant bit rate (CBR,恒定比特率)业务, 建议设置 MBR 为 GBR。 对于 variable bit rate (VBR,可变比特率。PS:文档中写的是 variance bit rate,个人觉得有问题,应该是 variable bit rate) 业务, 建议设置 MBR 为 GBR 的 k 倍大,目的是为了覆盖峰值业务速率。在当前实现中,基于论文 [FABokhari2009] ,k 设置为3。此外,当前版本的 TBFQ 并不会考虑 MBR 和 GBR 中 RLC 头部 和 PDCP 头部的长度。 TBFQ 的另一个参数是数据包到达率。该参数在调度器中计算,值等于历史平均吞吐量(用于 PF 调度器)。
以下子章节会描述 LTE-EPC 模型很多有用的属性。当然,设计或用户文档中仍有很多属性没有明确提及, 但是使用 ns-3 属性系统可以很清楚地记录下来。 你可以轻易地 print 给定对象的属性列表及其描述和默认值传递--PrintAttributes= 到一个仿真程序中,比如:
./waf --run lena-simple --command-template="%s --PrintAttributes=ns3::LteHelper"
你也可以尝试其他的 LTE 和 EPC 对象,比如:
./waf --run lena-simple --command-template="%s --PrintAttributes=ns3::LteEnbNetDevice"
./waf --run lena-simple --command-template="%s --PrintAttributes=ns3::LteEnbMac"
./waf --run lena-simple --command-template="%s --PrintAttributes=ns3::LteEnbPhy"
./waf --run lena-simple --command-template="%s --PrintAttributes=ns3::LteUePhy"
./waf --run lena-simple --command-template="%s --PrintAttributes=ns3::PointToPointEpcHelper"
参考文献
https://www.nsnam.org/docs/models/html/lte-user.html