RLC协议学习总结资料.docx
- 文档编号:15232724
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:29
- 大小:203.41KB
RLC协议学习总结资料.docx
《RLC协议学习总结资料.docx》由会员分享,可在线阅读,更多相关《RLC协议学习总结资料.docx(29页珍藏版)》请在冰点文库上搜索。
RLC协议学习总结资料
RLC协议学习总结
1、RLC构架
图1RLC架构
2、RLC实体
(1)TMRLC实体:
适用于不需要RLC配置的RRC消息使用TMRLC
(BCCH、DL/ULCCCH、PCCH)
业务类型:
广播消息的固定部分、寻呼消息、RRC消息等
图2TM模式两个对等实体
发送实体:
不对RLCSDU进行串联、分段
没有RLC头
对RLCSDU不做任何改动,向下层发送
接收实体:
不做任何修改,一脚RLCSDU到上层协议实体
(2)UMRLC实体:
适用于延时敏感和容忍差错的实时应用
(DL/ULDTCH)RLCSDU分块、串联、重排序、重复检测、重组
业务类型:
VoIP、MBMS
图3UM模式两个对等实体
发送实体:
在获得特定的发送机会时,要根据MAC层指示期待的RLCPDU大小进行分段或者串接RLCSDU
添加相应的RLC头
接收实体:
检测收到的UMDPDU是否重复,重复则丢弃
重排失序的UMDPDU
能够检测出UMDPDU在MAC是否丢失,避免过长的重排序时延
若发现某RLCSDU的UMDPDU丢失,则丢弃其他同RLCSDU的PDU
(3)AMRLC实体:
适用于错误敏感、时延容忍的非实时应用
(DL/ULDCCH/DTCH)UMRLC功能+RLC数据PDU重传、重传RLC数据PDU再分快、轮询、状态报告、状态禁止
业务类型:
FTP、WWW、RRC消息等
图4AM模式实体
3、RLC层服务
RLC层向上层提供的服务:
(RLC层向PDCP层提供服务)
(1)TM数据传输:
分段和重组、用户数据的传输
(2)UM数据传输:
分段和重组、串联、填充、用户数据的传输、加密、序号检查
(3)AM数据传输:
分段和重组、串联、填充、用户数据的传输、纠错、按序传送高层PDU、副本检测、流量控制、协议错误检测和恢复、加密
RLC层从下层得到的服务
(1)数据传输
(2)通知发送时机,同时提供当次传输时发送RLCPDU的总大小
(3)通知HARQ重传失败
4、RLC层功能
(1)高层PDU传输
(2)通过ARQ进行纠错(AM)
(3)RLCSDU的分段、串接和重组(UM、AM)
(4)RLC数据PDU的再分段(AM)
(5)高层PDU的按序递交(UM、TM)
(6)重复检测(UM、AM)
(7)RLCSDU丢弃(UM、AM)
(8)RLC重建
(9)协议错误及恢复
5、RLC过程(具体过程见page6)
(1)数据传输过程
TM:
UM:
AM:
(2)ARQ过程(AM)
重传:
轮询:
(防止发送端buffer溢出)
AMDPDU或AMDPDU片段重传、接收状态报告、t-PollRetransmit超时
状态报告:
接收侧向对等段发送侧反馈,那些PDU或PDU分段已经正确接收,那些没有。
(3)SDU丢弃过程:
来自PDCP的指示,若被指示的RLCSDU没有任何分段映射到一个RLCDataPDU,AMRLC实体发送侧或者发送UMRLC实体丢弃该RLCPDU
(4)重建过程:
由RRC请求触发,应用于AM、UM、TM
丢弃、重组、提交、停止、复位、初始化
(5)对于未知的、意外的以及错误的协议数据的处理:
丢弃
6、RLC协议数据单元及格式
(1)TMDPDU:
仅有数据域组成,没有任何RLC头
(2)UMDPDU:
UMDPDU头(固定部分、扩展部分)+数据域(可对RLCSUD进行分段、串接、重组)
(3)AMDPDU:
AMDPDU头(固定部分、数据部分)+数据域(可对RCLSDU进行分段、串接、重组)
7、参数
(1)SN:
RLCPDU序号,增量为1(保证按序接收)
(2)FI:
指示在数据域的开始和最后是否饱饭RLCSDU分段
(3)E:
指示数据域或LI域和E域的集合
(4)LI:
对应数据域长度
(5)R1:
保留域,置0
(6)D/C:
控制PDU/数据PDU
(7)RFAMDPDU/AMDPDU分段
(8)LSF:
是否原始AMDPDU的最后一个分段
(9)SO:
AMDPDU分段数据域中第一个字节在原始AMDPDU数据域中的位置
(10)CPT:
RLC控制PDU类型:
STATUAPDU
(11)ACK_SN:
第一个没有收到且在STATUSPDU中报告丢失的RLCdataPDU的SN
(12)E1:
其后是否包括一组NACK_SN
(13)E2:
其后是否包括一组SOStart和SOend域
(14)NACK_SN:
AMRLC实体接收侧已检测到丢失AMDPDU(或其一部分)的SN
(15)SOstart、SOend:
相关SN=NACK_SN的AMDPDU的丢失部分
8、变量
(1)UM发送端
1)VT(US):
给出下一个要传送的UMDPDU的序列号。
UMDPDU没传送一次,该变量就更新一次,其初值为0.
(2)UM接收端
1)VR(US):
接受者发送顺序状态变量
被接收的下一个PDU的序列号,初始值为0。
当接收到一个PDU,其值设置为SN+1。
2)VR(UR):
UM接收状态变量
记录等待重排序的最早的UMDPDU的序列号。
在重排序窗口之内,序列号低于该变量的UMDPDU,其接收状态为已确定,放弃对此范围内的接收空隙处PDU的等待,将其余正确接收到的PDU重组形成SDU,顺序递交到高层,后续即使正确接收到此范围内序列空隙处的PDU也采取删除数据包的操作。
该状态变量的初始值为0。
3)VR(UX):
UM重排序计时器状态变量
记录触发重排序计时器的UMDPDU紧接着的下一个序列号。
当重排序计时器启动时,该变量与VR(UR)分别记录当前重排序计时器对应的序列号范围内的上边界和下边界。
当该范围内全部接收序列空隙处的PDU都正确接收后,终止当前重排序计时器。
当重排序计时器不存在时,该变量无意义。
4)VR(UH):
UM最高期望状态变量
记录接收到的PDU中最高序列号紧接着的下一个序列号,作为重排序窗口的上边界。
其初始值为0。
(3)AM发送端
1)VT(A):
确认状态变量
记录已经收到肯定确认的连续PDU中最高序列号紧接着下一个序列号,座位发送窗口的下边界。
其初始值为0,只有当RMELC实体发送端收到序列号等于当前VT(A)变量值的PDU的肯定确认时,该变量才会更新(SN=VT(A))。
序列号小于该变量的PDU全部经过接收端肯定确认,表明已经全部正确接收。
2)VT(MS):
最大发送状态变量
VT(MS)=VT(A)+AM_Window_Size,座位发送窗口的上边界。
任何序列号发出超出该变量的PDU都不允许发送。
当窗口溢出时,AMRLC实体发送端不能发送任何新产生的PDU。
3)VT(S):
发送状态变量
记录下一个新产生的AMDPDU的序列号,初始值为0。
在当前VT(S)值被赋予一个新产生的AMDPDU后,该变量做+1操作。
4)POLL_SN_Pollsend:
发送状态变量
(4)AM接收端
1)VR(R):
接收状态变量
记录最新完整接收到的连续AMDPDU紧接着的下一个序列号,座位接收窗口的下边界。
该变量初始值为0,仅当当前R变量值对应的PDU被正确接收后才会更新。
低于该变量。
2)VR(MR):
最大可接收状态变量
VR(R)=VR(R)+AM_Window_Size,座位接收窗口的上边界且是第一个长处接收窗口的AMDPDU的序列号,序列号超出该变量的PDU不能被AMRLC实体接收端接收。
3)VR(X):
重排序计时状态变量
记录发出重排序计时器的AMDPDU紧接着的下一个序列号。
当冲排序计时器启动时,fai变量与MS分别记录当前重排序计时器对应的序列号范围的上边界与下边界,当该范围内全部接受序列号空隙处的PDI都正确接收后,终止当前重排序计时器。
4)VR(MS)最大状态发送状态变量
记录作为状态报告中的ACK_SN的最高序列号值,初始值为0。
处于接收窗口中,序列号低于该状态变量的AMDPDU,要么确认接收,要么已经经过重排序计时器检测认定为丢失的PDU;高于该状态变量的接收序列号空隙处为没有完成的重排序计时器检测的,仍旧等待HARQ重传的AMDPDU
9、常量
(1)AM_Window_Size:
发送侧为VT(A)到VT(MS);接收侧为VR(R)到VR(MR)
(2)UM_Window_Size:
可排序的SN范围
10、计数器
(1)t-PollRetransmit:
接收侧AMRLC实体在进行重传轮询时使用
(2)t-Reordering:
接收侧AMRLC实体和UMRLC实体检查下层传送的RLCPDU是否丢失时使用。
如果t-Reordering正在运行,其他的t-Reordering计时器不能被启动,在一个给定的时间内,每个RLC实体只能运行一个t-Reordering计时器。
(3)t-StatusProhibit:
只有在使用了基于计时器的状态发送时,使用该计时器。
当RLC实体建立时,该计时器启动,每次计时器超时,就发送一个状态报告并且计时器重启。
其值由RRC告知。
11、可配置参数
(1)maxRetxThreshold:
AMRLC实体用于限制每个AMDPDU重传次数。
(2)pollPDU:
AMRLC实体发送端用于触发一次轮询
(3)pollByte:
每个AMRLC实体在触发一个轮询
(4)sn-RieldLength:
UMSN域的大小
1、数据传输过程
1.1TM数据传输
(1)发送:
当向下层发送一个新的TMDPDU时
接收端TMRLC实体应当给下层发送一个没有经过任何处理的RLCSDU
(2)接收:
当从下层接收到一个新的TMDPDU时
发送端TMRLC实体应当向上层提交一个没有经过任何处理的TMDPDU
1.2UM数据传输
(1)发送:
当向下层发送一个新的UMDPDU时
发送端UMRLC应当将该UMDPDU的SN置为VT(US),并将VT(US)加1
(2)接收:
一、概述:
UMRLC实体接收端需要根据状态变量VR(UH)来维护重排序窗口
1)当接收到的PDUSN满足VR(UH)-UM_Window_size=SN SN落入重排序窗内 2)否则,该SN落在重排序窗口之外 当从下层接收到UMDPUD时 1)UMRLC实体接收端应当丢弃接收到的UMDPDU或将其存储在接收缓存中 2)如果接受到UMDPDU并将其存储在接受缓存器中 UMRLC实体接收端应当更新状态变量、重组并向上层传送RLCSDUs,在需要的 时候,开始或停止t-Reordering计数器。 当t-Reordering计数器超时 UMRLC接受端实体应更新状态变量、重组并向上层传送RLCSDUs,在需要的时候开始 t-Reordering计数器。 二、当从下层接受到UMDPDU时: 当从下层接收到一个SN=x的UMDPDU时: 如果VR(UR) (VR(UH)-UM_Window_Size)≦x UMRLC接收实体丢弃该UMDPDU 否则: UMRLC接收实体应把这个UMDPDU存入接收缓存器中 三、当一个UMDPDU被存储到接收缓存器时: 当一个SN=x的UMDPDU呗存入接收缓存器中时: (1)如果x落在重排序窗口之外 1)UMRLC接收实体应更新VR(UH)为x+1 2)UMRLC接收实体应从UMDPDU中重组所有SN落在重排序窗口之外的RLCSDU,去掉RLC头并且按照RLCSN的升序方式向上层发送重组完成的RLCSDU。 3)如果VR(UR)落在重排序窗口之外: UMRLC接收实体应将VR(UR)置为(VR(UH)-UM_Window_Size) (2)如果接收缓存器中有一个SN=VR(UR)的UMDPDU: 1)UMRLC接收实体应将VR(UR)更新为第一个没有被接收的UMDPDUSN>当前VR(UR)的PDU 2)UMRLC接收实体应从UMDPDU中重组所有SN<更新后的VR(UR)的RLCSDU,去掉RLC头并按照RLCSN的升序方式向上层发送重组后的RLCSDU。 (3)如果t-Reordering计时器正在运行: 1)如果VR(UX)≤VR(UR),或者 2)如果VR(UX)落在重排序窗口之外且VR(UX)≠VR(UH) UMDPDU接收实体应停止并重启t-Reordering计时器 (4)如果t-Reordering计数器没有运行 1)如果VR(UH)>VR(UR) UMDPDU接收实体应启动该t-Reordering计时器 UMDPDU接收实体应将VR(UX)置为VR(UH) 四、当t-Reordering计数器超时 当t-Reordering计数器超时: (1)UMRLC接收实体应更新RLCSDU为第一个没有被接收的UMDPDU的SN(SN≥VR(UX)) (2)UMRLC接收实体应重组所有SN<更新后的VR(UR)的UMDPDU (3)如果VR(UH)>VR(UR) 1)UMRLC接收实体应启动t-Reordering计数器 2)UMRLC接收实体应将VR(UX)置为VR(UH) 1.3AM数据传输 (1)发送: 1)AMRLC实体接收端应比RLC数据PDU优先发送RLC控制PDU; 2)AMRLC实体接收端应比新的AMDPDU优先发送重传的RLC数据PDU; 3)发送端AMRLC实体应根据状态变量VT(A)和VT(MS)维护发送窗口: 如果VT(A)≤SN<VT(MS),则SN落入发送窗口之内 否则,SN落在发送窗口之外 4)发送端SMRLC实体不应将任何SN落在传送窗口之外的RLC数据PDU传送给下层 5)当传送一个新的AMDPDU给下层时,发送端AMRLC实体应将该AMDPDU的SN置为VT(S),并将VT(S)加1; 6)AMRLC实体接收端可以通过如下方式接收一个RLC数据PDU的确认: AMRCL实体的发送端可以通过每个AMRLC实体的STATUSPDU来确认 7)当接收到一个SN=VT(A)的AMDPDU的确认时: a.接收端AMRLC实体应将VT(A)置为还没有被确认的最小SN的AMDPDU的SN值,且该SN满足VT(A)≤SN≤VT(S) b.如果属于同一个RLCSDU的PDU都收到了确认,则AMRLC实体接收端应向上层发送RLCSDU成功发送的通知 (2)接收: 一、概述 (1)AMRLC实体接收端应根据状态变量VR(R)和VR(MR)维护接收窗口: 1)如果VR(R)≤SN<VR(MR),则SN落入接收窗口之内 2)否则,SN落在接收窗口之外 (2)当从下层接收到一个RLC数据PDU时: 1)AMRLC实体接收端或者丢弃该接收到的RLC数据PDU,或者将其存入接收缓存器 2)如果接收到的RLC数据PDU被存入接收缓存器: AMRLC实体接收端应更新状态变量、重组并向上层传送RLCSDU,且在需要的时候启动或停止t-Reordering计数器 3)当t-Reordering计数器超时,AMRLC实体接收端应更新状态变量,并在需要的时候启动t-Reordering计数器 二、当从下层接收到RLC数据PDU时: 当从下层接收到一个RLC数据PDU时,当它包含SN=x的AMDPDU分段字节为y到z时 (1)如果x落在接收窗口之外,或者 (2)SN=x的AMDPDU的分段字节为y到z已经被接收时: AMRLC实体接收端应丢弃该RLC数据PDU (3)否则: 1)接收AMRLC实体应将接收到的RLC数据PDU存入接收缓存器中 2)如果AMDPDU的有些字节分段包含之前已经接收到的RLC数据PDU: AMRLC实体接收端应丢弃该重复的字节段 三、当已给RLC数据PDU被存入接收缓存器中时: 当一个SN=x的RLC数据PDU被存入接收缓存器中时: (1)如果x≥VR(H) 接收AMRLC实体应更新VR(H)为x+1 (2)如果SN=VR(MS)的AMDPDU的字节段已经接收: 接收AMRLC实体应更新VR(MS)为第一个不是所有字节段都被接收的AMDPDU的SN,且该SN大于当前VR(MS) (3)如果x=VR(R): 1)如果AMDPDU的所有SN=VR(R)的字节段都被接收: a.接收AMRLC实体应更新VR(R)为第一个不是所有字节段都被接收的AMDPDU的SN,且该SN大于当前VR(R) b.接收AMRLC实体应更新VR(MR)为已更新的VR(R)+AM_Window_Size 2)从所有SN落在接收窗口之外的AMDPDU以及的字节段中重组RLCSDU,如果之前 没有提交过,则去掉RLC头并将重组的RLCSDU按顺序发送给上层。 (4)如果t-Reordering计数器正在运行: 1)如果VR(X)=VR(R);或者 2)如果VR(X)落在接收窗口之外,且VR(X)≠VR(MR) 接收AMRLC实体应停止并重置t-Reordering计数器 (5)如果t-Reordering计数器没有运行(包含因上述过程而停止的情况): 1)如果VR(H)>VR(R) a.接收AMRLC实体应启动t-Reordering计数器 b.接收AMRLC实体应置VR(X)为VR(H) 四、当t-Reordering计数器超时: 当t-Reordering计数器超时: (1)接收AMRLC实体应更新VR(MS)为第一个不是所有字节段都被接收的AMDPDU的SN,且该SN≥VR(X) (2)如果VR(H)>VR(MS): 1)接收AMRLC实体应启动t-Reordering计数器 2)接收AMRLC实体应置VR(X)为VR(H) 2、ARQ过程(ARQ过程只在AMRLC实体执行) 2.1重传 (1)AMRLC实体接收端可以通过如下方式收到AMDPDU或AMDPDU部分的确认(其对等端AMRLC实体通知接收失败): 由对等端的AMRLC实体发送的STATUSPDU (2)当接收到从对等端AMRLC实体发送的STATUSPDU所获取的AMDPDU或AMDPDU部分的否认: 1)如果对应的AMDPDU的SN落入VT(A)≤SN<VT(S)的范围内: 则认为这个AMDPDU或AMDPDU的一部分要求重传 (3)当一个AMDPDU或AMDPDU的部分被认为需要重传时: 1)如果该AMDPDU被认为是第一次重传 接收AMRLC实体应将与该AMDPDU关联的RETX_COUNT置0 2)否则,如果它或者它的一部分重传没有被挂起: 接收AMRLC实体应递增RETX_COUNT 3)如果RETX_COUNT=maxRetxThreshold: 接收AMRLC实体应通知上层已经达到最大重传次数 (4)当重传一个AMDPDU时 1)如果该AMDPDU的大小能够完全容纳在由下层指示的RLCPDU重传机会中: 接收AMRLC实体应传输这个AMDPDU(除了P域) 2)否则: 接收AMRLC将这个AMDPDU进行分段,使得分段后的AMDPDU片段大小可以完全被容纳在有下层指示的传输机会中 (5)当传输一个AMDPDU的一部分时: 1)AMRLC实体接收端应在需要的情况下对该AMDPDU部分进行分段,使得分段后 的心AMDPDU片段可以完全被容纳在下层指示的重传机会中。 (6)当形成一个新的AMDPDU片段时 1)只要把原来的AMDPDU数据字段映射到新的AMDPDU分段的数据部分 2)设置新的AMDPDU分段包头 3)设置P域 2.2轮询 一个AMRLC实体可以轮询它的对等端实体来触发对等端的发送状态报告 一、发送一个AMDPDU或AMDPDU分段 (1)当产生一个新的AMDPDU时 1)AMRLC实体接收端应对PDU_WITHOUT_POLL加1 2)对于每一个映射到RLC数据PDU数据域的新数据单元,AMRLC实体接收端应将BYTE_WITHOUT_POLL增加相应的字节数 3)如果PDU_WITHOUT_POLL≥pollPDU;或者 4)如果BYTE_WITHOUT_POLL≥pollBYTE AMRLC实体发送端应按照如下所述在RLC数据PDU中包含一个POLL (2)当组成一个AMDPDU或者AMDPDU分段时 1)如果在传送了RLC数据PDU之后,发送缓存器和接收缓存器同时为空(不包括还没有被确认的RLC数据PDU);或者 2)如果在传送了RLC数据PDU之后没有新的RLC数据PDU需要被传送 AMRLC发送实体应按照如下所述在RLC数据PDU中包含一个POLL (3)要在RLC数据PDU中包含一个POLL 1)AMRLC实体发送端应设置RLC数据PDU的P域为1 2)AMRLC实体发送端应设置PDU_WITHOUT_POLL为0 3)AMRLC试题发送端应设置BYTE_WITHOUT_POLL为0 (4)在根据需要轻狂对VT(S)进行增值后,当向下层发送一个含poll的RLC数据PDU时 1)AMRLC实体发送端应设置POLL_SN为VT(S)-1 2)如果t-PollRetransmit没有运行 AMRLC实体发送端应启动t-PollRetransmit计数器 3)否则 AMRLC实体发送端应重启t-Pollretransmit计数器 二、接收一个STATUS报告 当从接收端RLCAM实体接收到一个STATUS报告时 (1)如果状态报告包含的RLC数据PDU的确认或否认序号等于POLL_SN 1)如果t-Pollretransmit计数器正在运行 AMRLC实体接收端应停止并重置t-Pollretransmit计数器 三、t-Pollretransmit计数器超时 (1)如果发送缓存器和接收缓存器同时为空(不包括还没有被确认的RLC数据PDU);或者 (2)如果没有新的RLC数据PDU能够传输(如,窗口溢出)、 1)AMRLC实体发送端认为SN=VT(S)-1的AMDPDU需要重传;或者 2)AMRLC实体发送端认为没有被确认的AMDPDU需要重传 (3)AMRLC实体发送端在RLC数据PDU中包含一个poll 2.3状态报告 (1)AMRLC实体向它的对等端AMRLC实体发送STATUS来提供RLCPDU的确认或否认 (2)RRC层可以配置RLC是否启动状态报告禁止功能 (3)初始化STATUS报告触发包括: 1)从对等端AMRLC实体发起的轮询 当从下层接收到一个SN=x且P域被置为1的RLC数据PDU时 a.如果该PDU要被丢弃;或者 b.如果x<VR(MS)或x≥VR(MR) 触发STATUS报告 c.否则 延迟触发STATUS直到x<VR(MS) (基于此可以确保RLC状态报告是在HARQ重排序之后发送)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RLC 协议 学习 总结 资料
![提示](https://static.bingdoc.com/images/bang_tan.gif)