目录
3.7 控制信息单元---BSR(缓冲状态报告控制信息单元)
第1章 L2 MAC层的架构
1.1 RAN的架构
1.2 L2 MAC层的架构
L2(数据链路层),又称无线网络层,实现终端与基站之间通过无线信道(逻辑信道)传递IP分数数据。
(1)PDCP(Packet Data Convergence Control,IP分组数据汇聚控制层)
(2)RLC(Radio Link Control,无线链路控制层)该层把无线链路传输的数据分为三种:透明传输TM、非确认模式UM、确认模式AM。
(2)MAC(Medium Access Control,媒体访问控制层),通过控制底层的物理层媒介(基带时频资源)传递数据。MAC层把逻辑信道数据映射到传输信道,并把映射后的传输信道的传输块数据TB传递给物理层。
1.3 MAC层的帧调度功能
(1)用户优先级的处理(逻辑信道到传输信道的映射)
- 不同用户的优先级。
- 同一个用户,不同逻辑信道之间的优先级
(2)复用与解复用(数据包的封装)
将来自上层的SDU(服务数据包, 来自其他层未经过本层处理的数据包),复用成发送给物理层的下层MAC PDU(协议数据包)
MAC层PDU,对于物理层而言,又称为传输块TB块上。
(3)HARQ
混合自动重传请求(Hybrid Automatic Repeat reQuest,HARQ),是一种将前向纠错编码(FEC)和自动重传请求(ARQ)相结合而形成的技术。
HARQ实现了物理层传输块(MAC层PDU)的差错控制(检错、纠错、重传等)
详见: https://blog.csdn.net/HiWangWenBing/article/details/114399713
(4)COMP(协同多点传输),以支持载波聚合CA功能。
第2章 逻辑信道到物理信道的映射
2.1 映射示意图
从上图可以看出:
下行:多个逻辑信道,对应到一个传输信道,这个过程就是复用。
上行:一个传输信道,对应到多个逻辑信道,这个过程就是解复用。
从实现上来,一个个信道就是一个个优先级队列。
MAC层的调度器:
下行:从逻辑信道的队列中取数据,进行数据复用后,发送到传输信道的队列中。
下行:从传输信道的队列中取数据,进行数据解复用后,发送到逻辑信道的队列中。
2.2 逻辑信道
MAC层为RLC层以逻辑信道的形式提供服务。
逻辑信道只关注传输的信息是什么。
通过逻辑信道,实现了MAC层与上层的分离。
根据传输的是控制信息还是业务信息,逻辑信道分为:
- 控制信道
- 业务信道
(1)下行控制信道:控制信道用于传输控制面信息。
- 广播控制信道(BCCH, Broadcast Control Channel):用于广播系统控制信息的下行信道。它在用户的实际工作开始之前,传送一些必要的通知信息。
- 寻呼控制信道(PCCH,Paging Control Channel):用于传输寻呼信息和系统信息变化通知的下行信道。寻人启事类消息的入口,一般用于被叫流程。
- 公共控制信道(CCCH,Common Control Channel):在UE和网络之间还没有建立RRC连接时,用于发送控制信息。类似于主管和员工间协调工作用的渠道。
- 专用控制信道(DCCH,Dedicated Control Channel):用于在RRC连接建立之后,UE和网络之间发送一对一的专用控制信息。类似于主管和亲信之间协调工作的渠道。
- 多播控制信道(MCCH,Multicast Control Channel):点对多点的下行控制信息的传送信道。类似于领导给多个下属下达搬运货物的指示的渠道。
(2)下行业务信道
- 专用业务信道(DTCH ,Dedicated Traffic Channel):用于去往/来自终端的用户数据的传输。传输所有上行链路和非MBSFN下行链路用户数据的逻辑信道。
(3)上行控制信道
- CCCH 公共控制信道,用于传输与随机接入相关的控制信息。
- DCCH 专用控制信道,用于传输去往/来自终端的控制信息。用于终端的单独配置。
(4)上行业务信道
- DTCH 专用业务信道。
2.3 传输信道
传输信道不关心传输的是什么,而是怎么传。
下行:
- 广播信道(BCH,Broadcast Channel):通过广播的方式,给整个小区传输下行控制信息。
- 下行共享信道(DL-SCH,Downlink Shared Channel):规定了待搬运货物的传送格式。用于传送业务数据。
- 寻呼信道(PCH,Paging Channel):用于传输寻呼信息。
上行:
- 上行共享信道(UL-SCH,Uplink Shared Channel):规定了待搬运货物的传送格式。用于传送业务数据。方向为从终端到网络。
- 随机接入信道(RACH,Random Access Channel):规定了终端接入网络时的初始协调信息格式。
第3章 MAC层PDU(MAC传输块TB)格式
3.1 概述
MAC层支持多个逻辑信道到一个传输信道的映射,因此MAC层PDU包的格式, 又称为传输块TB包格式,可以容纳多个逻辑信道的数据。
传递的数据类型包括:
(1)终端与基站的L2 MAC层间的控制消息。本层的控制消息。
(2)终端与基站在L3 RRC层的控制信令。上层的控制信道。
(2)终端与基站核心网之间的数据。上层的数据信道。
3.2 MAC层PDU的包格式
MAC 层帧具有一个头部 + 1或多个MAC层控制信息单元1-n + 1个或多个服务数据净荷SDU + 填充位。
MAC层帧头部与MAC SDU都是可变长度的。
3.3 MAC PDU头部格式
一个MAC层帧头部,MAC PDU头部可能有一个或多个子头部(subheader),每一个子头部对应一个SDU、控制信息单元(control element)或者填充位。
一个MAC帧子头部又由六个域(R/R/E/LCID/F/L)组成,如下图所示:
但是对于最后一个子头部、固定长度的MAC控制信息单元以及填充位对应的子头部,它们只包含四个域(R/R/E/LCID)
MAC子头部是可变长的,它包含以下参数:
-
R:预留比特位,设为“0”
-
E:指示MAC 头部是否有多个域,当E=1时,意味着接下来存在另外一组R/R/E/LCID 域,如果是0,那么接下来就是payload了;该域的作用是用于连接多个MAC层的子头部,用于物理层一次传送多个逻辑信道的数据。
-
LCID:用于指示MAC PDU中的数据净荷SDU是什么类型。每一个子头,对应一个SDU。
-
F:如果SDU或者控制消息的长度大于128byte,那么设置F=1,否则设为0。通过F的值,我们就可以知道对应的L值的大小了,是1个字节还是2个字节的长度域。
-
L:指示对应的SDU或者控制消息的长度,除了最后一个子头以及固定长度的控制消息对应的字头,每一个子头都有一个L域,它的长度由F域指示;
3.4 MAC SDU的类型
(1)RRC层控制信道
00000:CCCH,公共控制信道,用于RRC层发送小区公共信息。
(2)RRC业务信道
01011-11001:业务逻辑信道,每个id号,代表一个逻辑信道号,用于传递UE终端业务数据。
(3)MAC层控制信息单元:用于在终端与基站的对等MAC层实体之间传递控制信息。
110110:功率余量报告PHR
11011:C-RNTI, 对应的SDU传递的是C-RNTI。
11100、11101、11110:缓冲状态报告控制信息单元(BSR),用于传递终端向基站申请MAC层内存资源。
3.5 控制信息单元---PHR功率余量报告
(1)数据格式
每个PH值,对应一个Power Headroom等级值,如图上图所示。
每个Power Headroom等级值,对应一定范围的功率值,如下图所示。
比如UE需要上报的PH值为-22dB,那么只需要在MAC PDU的PHR控制单元中填写数值1即可。
(2)PH功率余量的意义
PH,全称Power Headroom,中文为功率余量,即UE允许的最大传输功率与当前评估得到的PUSCH传输功率之间的差值,用公式可以简单的表示为:PH = UEAllowedMaxTransPower - PuschPower。
它表示的是除了当前PUSCH传输所使用的传输功率之外,UE还有多少传输功率可以使用。
PH的单位是dB,范围是[-23dB,+40dB],如果是负值则表示网侧给UE调度了一个高于其当时可用发送功率所能支持的数据传输速率。
由于PH的计算需要用到PUSCH的传输功率,因此也只在PUSCH的发送子帧计算功率余量。
之所以定义PH值,原因之一在于它可以作为eNB分配上行RB资源的一个参考依据,不过这种参考依据的算法设计,或者说PH值怎么影响eNB的调度,是由各个设备厂家的算法决定的,
如果PH值为负,表示当前的PUSCH传输功率已经超过UE允许的最大传输功率,在下次调度时可以考虑减少该UE的RB资源分配;
如果PH值为正,那么后续分配的RB数目还可以继续增加。
有人可能会奇怪:为什么PH会有负数?
(3)PHR功率余量报告?
PHR,全称是Power Headroom Report,中文为功率余量报告,即UE向网侧报告功率余量的过程。
这个功率余量的值是通过MAC层的控制单元发送的,所以与这个过程相关的MAC控制单元也被称作PHR控制单元。
PHR控制单元固定占一个字节,其中高2位是R位即保留位,暂时不用,仅使用低6位存放0~63这64个PH等级值。
(4)什么时候触发PHR?
只要满足下面几个条件中的任何一个,UE就会触发一个PHR(注意“触发”和“发送”的区别)
- 当UE有传输新数据的上行资源,prohibitPHR-Timer定时器超时或已经超时,并且在上一次传输功率余量报告之后,路径损耗的变化值已经超过了dl-PathlossChange dB。这个条件需要留意两个地方:第一,这里用的是路损的“变化值”,即不区分当前路损是变大还是变小,考虑的是路损的绝对差值。第二,如果定时器prohibitPHR-Timer仍然在运行,是不能触发PHR的,无论路损变化多大都没用。prohibitPHR-Timer的存在,是为了防止因路损变动频繁或者路损门限设置过低,导致UE频繁发送PHR的情况发生。
- periodicPHR-Timer 定时器超时。
- 当RRC层配置或重配置PHR功能或参数,且这种配置或重配置并不是禁止PHR。比如说RRC重新配置了定时器的值。
上面几个条件提到的参数prohibitPHR-Timer、dl-PathlossChange、periodicPHR-Timer,均由RRC在RadioResourceConfigDedicated -> MAC-MainConfig -> phr-Config中配置,
prohibitPHR-Timer和periodicPHR-Timer的取值单位都是子帧,比如sf500表示500个子帧,如果是infinity表示不启动该定时器。
dl-PathlossChange的取值单位是dB,比如dB3表示路径损耗的判断门限为3dB。
3.6 控制信息单元---C-RNTI
C-RNTI(Cell-RadioNetworkTemporaryIdentifier):小区内终端的无线网络临时标识,是由基站分配给UE的动态标识。
C-RNTI唯一标识了接入一个小区内的UE,且只有处于连接态下的UE,C-RNTI才有效。
3.7 控制信息单元---BSR(缓冲状态报告控制信息单元)
这个控制信息单元,对于上行调度是至关重要的,UE通过该信息,告诉基站,有多少数据要发送,基站需要按照该指示准备好内存空间等资源。
BSR有两种:
(1)短BSR和截断BSR格式:
- 一个LCG ID:(逻辑信道标识)域
逻辑信道组标识域指示了上报的缓冲区状态对于的逻辑信道组,它的长度为两个比特,也就意味着系统只设置了4个逻辑信道组;
- 缓冲区大小域:
指示终端请求的上行接收缓冲区的大小。基站收到这个消息后,就知道对应的UE的这个上行逻辑信道组有多少业务数据要发送、每个业务信道需要多大的缓冲区。
由于基站是对一个逻辑信道组分配资源,那么就意味着这些资源可以被这个组的逻辑信道共享,每一个逻辑信道能够获得多少资源这就取决于MAC层对UE的调度了,因此UE必须按照业务属性来请求分配资源,否则无法保证对应的业务的服务质量QoS。
它指示了在构造了这个BSR控制信息单元之后的逻辑信道组内所有逻辑信道总的可以发送的数据量,数据量大小的单位是字节数。
它应该包含在RLC层以及PDCP层可以传输的数据,这里的含义是指应该包含从PDCP发送到RLC的业务数据部分以及由RLC产生的RLC控制信息部分。
值得注意的是:这里不包含RLC以及MAC的头部信息所要占用的字节数,因此我们在给这个逻辑信道组分配资源的时候需要考虑到这一点,可以适当的多分配一点,这样就可以减少BSR的数量,从而也就节约了空口资源。
这个域由六个比特位来指示,MAC层对不同的缓冲大小区间进行了量化,量化成为64个等级(可以用六比特表示),
因此只需要传索引值而不是实际的大小,这样可以节约控制信息的长度,同时也是为了方便的管理缓冲区资源。
如下图所示
索引 |
缓冲区大小 (BS) 值 [字节] |
索引 |
缓冲区大小 (BS) 值 [字节] |
0 |
BS = 0 |
32 |
1132 < BS <= 1326 |
1 |
0 < BS <= 10 |
33 |
1326 < BS <= 1552 |
2 |
10 < BS <= 12 |
34 |
1552 < BS <= 1817 |
3 |
12 < BS <= 14 |
35 |
1817 < BS <= 2127 |
4 |
14 < BS <= 17 |
36 |
2127 < BS <= 2490 |
5 |
17 < BS <= 19 |
37 |
2490 < BS <= 2915 |
6 |
19 < BS <= 22 |
38 |
2915 < BS <= 3413 |
7 |
22 < BS <= 26 |
39 |
3413 < BS <= 3995 |
8 |
26 < BS <= 31 |
40 |
3995 < BS <= 4677 |
9 |
31 < BS <= 36 |
41 |
4677 < BS <= 5476 |
10 |
36 < BS <= 42 |
42 |
5476 < BS <= 6411 |
11 |
42 < BS <= 49 |
43 |
6411 < BS <= 7505 |
12 |
49 < BS <= 57 |
44 |
7505 < BS <= 8787 |
13 |
57 < BS <= 67 |
45 |
8787 < BS <= 10287 |
14 |
67 < BS <= 78 |
46 |
10287 < BS <= 12043 |
15 |
78 < BS <= 91 |
47 |
12043 < BS <= 14099 |
16 |
91 < BS <= 107 |
48 |
14099 < BS <= 16507 |
17 |
107 < BS <= 125 |
49 |
16507 < BS <= 19325 |
18 |
125 < BS <= 146 |
50 |
19325 < BS <= 22624 |
19 |
146 < BS <= 171 |
51 |
22624 < BS <= 26487 |
20 |
171 < BS <= 200 |
52 |
26487 < BS <= 31009 |
21 |
200 < BS <= 234 |
53 |
31009 < BS <= 36304 |
22 |
234 < BS <= 274 |
54 |
36304 < BS <= 42502 |
23 |
274 < BS <= 321 |
55 |
42502 < BS <= 49759 |
24 |
321 < BS <= 376 |
56 |
49759 < BS <= 58255 |
25 |
376 < BS <= 440 |
57 |
58255 < BS <= 68201 |
26 |
440 < BS <= 515 |
58 |
68201 < BS <= 79846 |
27 |
515 < BS <= 603 |
59 |
79846 < BS <= 93479 |
28 |
603 < BS <= 706 |
60 |
93479 < BS <= 109439 |
29 |
706 < BS <= 826 |
61 |
109439 < BS <= 128125 |
30 |
826 < BS <= 967 |
62 |
128125 < BS <= 150000 |
31 |
967 < BS <=1132 |
63 |
BS > 150000 |
(2)长BSR格式:四个缓冲区大小域,对应于LCG IDs #0 到#3
3.8 控制信息单元---RAR (随机接入响应)
(1)MAC帧结构
随机接入响应对于的PDU遵循MAC PDU的规则,只是里面的内容有所不同而已,它可以包含多个随机接入响应。
(2)MAC头部以及子头部
一个MAC PDU 子头部由三个头部域组成(E/T/RAPID),如下图所示:
但是对于BACKOFF 指示的子头部包含五个域(E/T/R/R/BI)如图下图所示:
RAR消息对应的MAC头部是可变长度的,定义如下:
- E: 扩展域用于指示MAC头部还有其它域(例如其它RAR消息对于的子头部),如果E被置为“1”,也就是说随后至少还有一个(E/T/RAPID)域,否则,就指示随后是RAR消息或者填充部分,这里我们会发现对于RAR的填充部分它是紧随MAC头部的;
- T: 类型域,用于指示这个MAC子头部包含的是随机接入ID(前导序列ID)还是BACKOFF指示,T置为“0”,也就是说这个子头部包含的是BI值, 如果是“1”,就意味着在这个子头部出现的是随机接入前导ID域;
- R: 预留比特,置为"0";
- BI: BACKOFF指示,通常是在小区过载的情况下,指示UE延后发送随机接入过程。4比特位表示;
- RAPID: 随机接入前导与指示发送的随机接入前导序列,6比特位表示。
(3)MAC SDU数据净荷
A MAC RAR数据净荷包含四个域R/Timing Advance Command/UL Grant/Temporary C-RNTI