1、LTERLC学习报告1 RLC架构RLC实体从/向上层(RRC for CCCH, PDCP otherwise)接收/发送RLC SDUs,向/从底层发送/接收与对等RLC实体间的RLC PDUs。RLC PDU包括RLC数据PDU和控制PDU两类。如果一个RLC实体从与上层间的一个独立的SAP中接收到RLC SDUs后,RLC将其转化为RLC数据PDUs,然后通过一个独立的逻辑信道递交给底层。如果一个RLC实体从底层某个独立的逻辑信道上接收到RLC数据PDUs,然后将其转化为RLC SDUs,并通过与上层间某个独立的SAP递交给上层。如果一个RLC实体向/从底层发送/接收到RLC控制PDU
2、s,则通过的通道发送/接收RLC数据PDU相同。 RLC实体可以以下列三种模式实现数据的传输:TM(透明模式),UM(非确认模式)或者AM(确认模式)。根据这三类传输模式,RLC实体可以分为TM RLC实体,UM RLC实体或者AM RLC实体。图1 RLC子层模型对于所有RLC实体(包括TM、UM、AM RLC实体):1) 支持字节对齐的可变尺寸的RLC SDUs2) 只有当底层(MAC)通知可以发送,RLC才会组成RLC PDUs递交给底层1.1 TM RLC实体TM RLC实体用于发送/接收逻辑信道BCCH, DL/UL CCCH和PCCH上的RLC PDUs。图2 双TM实体模型TM实
3、体发送/接收TM模式的RLC数据PDU:TMD PDUTM RLC发送实体:当一个发送TM RLC实体将RLC SDUs组成TMD PDUs时,不会分段也不会级联,且不会在TMD PDUs中包含任何的RLC头。TM RLC接收实体:当一个TM RLC接收实体收到TMD PDUs,将其(即RLC SDUs)递交给上层1.2 UM RLC实体UM RLC实体用于发送/接收逻辑信道DL/UL DTCH上的RLC PDUs。图3 双UM实体模型UM实体发送/接收UM模式的RLC数据PDU:UMD PDUUM RLC发送实体:UM RLC实体将RLC SDUs形成UMD PDUs时,需要:1) 分段和/
4、或级联RLC SDUs,这样UMD PDUs就可以和某个发送时机内底层指示的RLC PDU(s)大小相匹配了2) 需要在UMD PDU里包含相关的RLC头UM RLC接收实体:当UM RLC接收实体收到UMD PDUs后,将:1) 检查UMD PDUs是否重复接收,如果重复则丢弃2) 如果接收是乱序的,则需要重排序3) 在底层检测UMD PDUs是否丢失,避免额外的重排序时延4) 将重排序过的UMD PDUs重组为RLC SDUs(不包括已经检测到丢失的)5) 丢弃接收到的无法重组为一个RLC SDU(由于某些相关的UMD PDU丢失)的 6) UMD PDUsRLC重建的时,UM RLC接收
5、实体将:7) 将乱序接收到的UMD PDUs重组后递交给上层8) 丢弃剩余的无法重组为RLC SDUs的UMD PDUs9) 初始化相关的状态变量,停止相关的定时器1.3 AM RLC实体AM RLC实体用于发送/接收逻辑信道DL/UL DCCH or DL/UL DTCH上的RLC PDUs。图4 一个AM RLC实体模型 AM RLC实体发送/接收RLC数据PDU:AMD PDU;AMD PDU分段 AM RLC实体发送/接收RLC控制PDU:STATUS PDU发送侧:当发送侧将RLC SDUs转换为AMD PDUs时,需要:分段和/或级联RLC SDUs,这样AMD PDUs就可以和底
6、层指示的RLC PDU(s)总大小相匹配发送侧支持RLC数据PDUs的重传(ARQ):1) 如果重传的RLC数据PDU和某个发送时机内底层指示的总大小不匹配,则将RLC数据PDU重分段为AMD PDU segments2) 重分段的格式不受限制在发送AMD PDUs或者重AMD PDU segments时都需要在RLC数据PDU里添加相关的RLC头接收侧:收到RLC数据PDUs后,将1) 检测接收到的RLC数据PDUs是否重复,如果重复则丢弃2) 如果接收到的数据包乱序,则重排序3) 底层检测是否有丢失的RLC数据PDUs,如果有则请求对等RLC实体进行重传4) 将乱序的RLC数据PDUs重组
7、为RLC SDUs,并将其按序递交给上层当RLC重建时,接收侧的AM RLC实体将:1)将乱序的RLC数据PDUs重组为RLC SDUs,并将其按序递交给上层2)丢弃剩余的无法重组为RLC SDUs的RLC数据PDUs3)初始化相关的状态变量,停止相关定时器2RLC提供的服务提供给上层(即RRC或者PDCP)的服务:1) TM数据传输2) UM数据传输3) AM数据传输,包括指示上层发送成功期望底层提供的服务:1) 数据传输2) 发送时机通知,以及在该发送时机内能够发送的RLC PDU(s)的总大小3RLC实体的功能1)上层PDUs传输2)AM数据传输时,通过ARQ进行错误检查3)UM和AM数
8、据传输时,进行级联、分段和重组4)AM数据传输时,重组RLC数据PDUs5)UM和AM数据传输时,对RLC数据PDUs进行重排序6)UM和AM数据传输时,重复检查7)UM和AM数据传输时,RLC SDU丢弃8)RLC重建9)协议错误检查和恢复4可以进行发送的数据1)还没有包含在一个RLC数据PDU内的RLC SDUs或者分段2)pending住待重传的AM模式RLC data PDUs, or portions如果需要发送一个STATUS PDU,且status prohibit timer没有运行或者已经超时,则UE将在下个发送时机内估算STATUS PDU的大小,并认为是一个可以发送的数据
9、。5数据传输流程 TM数据传输发送操作当发送一个新TMD PDU给底层时,RLC TM发送实体将不做任何修改把该RLC SDU发送给底层;接收操作从底层接收到一个新的TMD PDU时,TM RLC接收实体也将不做任何修改把该PDU递交给上层。 UM数据传输UM RLC实体相关变量发送实体1) VT(US)下次将要生成的UMD PDU的SN。初始值为0,当UM RLC实体发送了一个SN = VT(US)的UMD PDU后该参数被更新接收实体1)VR(UR):UM接收状态变量 被考虑重排序的UMD PDU中最早的一个SN,初始值为02)VR(UX):UM t-Reordering状态变量 触发t-
10、Reordering的UMD PDU之后的UMD PDU的SN3)VR(UH):UM最高已接收的状态变量 在所有已经接收的UMD PDUs中SN最高的UMD PDU之后的UMD PDU的SN,该值为重排序窗口的最高边界。初始值为04)UM_Window_Size定义了可以被接收的SNsThis constant is used by the receiving UM RLC entity to define SNs of those UMD PDUs that can be received without causing an advancement of the receiving win
11、dow. UM_Window_Size = 16 when a 5 bit SN is configured and UM_Window_Size = 512 when a 10 bit SN is configured.发送操作 当发送一个新的UMD PDU给底层时,UM RLC发送实体把该UMD PDU的SN置为VT(US),然后把VT(US)加1接收操作UM RLC接收实体将根据状态变量VR(UH)维护一个重排序窗:1) 如果(VR(UH) UM_Window_Size) = SN VR(UH)则该SN将落入重排序窗2) 否则SN落入窗口外当UM RLC接收实体从底层接收到一个UMD P
12、DU后,1) 要么丢弃接收到的PDU,要么将它放在接收缓存里2) 如果该PDU放入接收缓存,则需要更新状态变量,重组并将RLC SDUs递交给上层,如果需要的话开启/停止t-Reordering当t-Reordering超时后,则UM RLC接收实体将更新状态变量,重组并递交RLC SDUs给上层,需要的话开启t-Reordering具体:当UM RLC接收实体从底层接收到一个SN = x的UMD PDU,则1)如果VR(UR) x VR(UH),且SN = x的UMD PDU在之前已经接收过,或者如果(VR(UH) UM_Window_Size) = x current VR(UR)(还没有
13、接收到的)第一个UMD PDU的SN2)将SN updated VR(UR)的UMD PDUs重组,去掉RLC头,并按照RLC SN升序把重组成的RLC SDUs递交给上层3如果t-Reordering正在运行,则1)如果VR(UX) VR(UR),开启start t-Reordering;将VR(UH)设置为VR(UX)t-Reordering超时后的处理1)更新VR(UR)为SN = VR(UX)(还没有被接收)的第一个UMD PDU的SN2)将SN VR(UR): 开启t-Reordering 把VR(UH)设置为VR(UX) AM数据传输相关参数发送侧1)VT(A):确认状态变量 下一
14、个需要被正确确认的AMD PDU的SN,作为发送窗口的最低边界。初始值为0,当收到一个SN = VT(A)的AMD PDU的正确确认后更新该参数2)VT(MS):最大发送状态参数 该参数值等于VT(A) + AM_Window_Size,为发送窗口的最高边界3)VT(S):发送状态参数 分配给下一个将要生成的AMD PDU的SN,初始值为0,只要发送了一个SN= VT(S)的AMD PDU后,该值便会更新4)POLL_SN:轮询发送状态变量 该变量值等于最近一次发送的P位置1的RLC数据PDU的SN,初始值为0接收侧1)VR(R):接收状态变量 变量值为最后一个顺序接收到的AMD PDU的下一
15、个PDU的SN,作为接收窗口的最低边界。初始值为0,当收到SN= VR(R)的AMD PDU时,该值更新2)VR(MR):最大可接收状态变量 等于VR(R) + AM_Window_Size,接收窗外第一个PDU的SN,作为接收窗的最高边界3)VR(X):t-Reordering状态变量 等于触发t-Reordering的RLC数据PDU的下一个PDU的SN4)VR(MS):最大STATUS发送状态变量 当需要构造一个STATUS PDU的时候,该值等于可以被“ACK_SN”指示的SN的最大值5)VR(H):最高接收状态变量 已经接收到的RLC数据PDUs中的SN最高值,初始值为06)POLL
16、_SN:轮询发送状态参数等于最近一次发送的P位指示为1的RLC数据PDU时的VT(S)-1,初始值为0发送操作AM RLC实体优先发送RLC控制PDUs,其次才是RLC数据PDUs;优先发送重传RLC数据PDUs,其次才是新的AMD PDUs。AM RLC实体的发送侧根据状态变量VT(A)和VT(MS)维护一个发送窗口:- 如果VT(A) = SN VT(MS),则该PDU落入发送窗口- 否则,落在窗口外发送侧不会把落在发送窗外的RLC数据PDU递交给底层当把一个新的AMD PDU递交给底层后,发送侧将把VT(S)设置为该PDU的SN,然后把VT(S)加1AM RLC发送侧可以获得对等AM R
17、LC实体对某个RLC数据PDU的正确确认,即收到STATUS PDU当收到对SN= VT(A)的AMD PDU的确认后,发送侧将:- 设置VT(A)为,满足VT(A) = SN = VT(S)中,且没有收到正确确认的PDU中最小的SN- 如果一个发送实体发送和某个发送RLC SDU相关的所有AMD PDUs都已经被正确确认了,则RLC需要指示给上层该RLC SDU发送成功接收操作接收侧将根据状态变量VR(R)和VR(MR)维护一个接收窗:- 当VR(R) = SN current VR(MS)(没有接收完所有分段)的AMD PDU中的第一个PDU的SN- 如果x = VR(R) - 如果SN=
18、VR(R)的所有分段都已经接收到则 - 更新VR(R)为没有接收到所有分段(SN current VR(R))的第一个AMD PDU的SN - 将VR(MR)更新为VR(R) + AM_Window_Size - 重组落在接收窗外的AMD PDU的任意分段以及SN = VR(R)的按序分段,取掉RLC头,按序将重组后的且之前没有递交过的RLC SDUs递交给上层- 如果x = VR(H)更新VR(H)为x+ 1- 如果t-Reordering正在运行 如果VR(X) = VR(R)或者VR(X)落在接收窗外,则停止并复位t-Reordering- 如果t-Reordering不在运行(包括因上
19、述原因而被停止)如果VR (H) VR(R) 开启t-Reordering 设置VR(X)为VR(H)当t-Reordering超时后,AM RLC实体的接收侧将- 将VR(MS)更新为SN current VR(MS)(没有接收完所有分段)的AMD PDU中的第一个PDU的SN- 如果VR(H) VR(MS)- 停止t-Reordering- 设置VR(X)为VR(H)6ARQ过程 该过程仅用于AM模式 重传AM RLC实体的发送侧可能收到对等AM RLC实体发送的非确认包(STATUS PDU),错误确认一个AMD PDU或者一个AMD PDU的一部分当收到一个非确认包后,如果相关PDU的
20、SN在VT(A) = SN = pollPDU或者BYTE_WITHOUT_POLL = pollByte则在RLC数据PDU里包含一个poll 当重组了一个新的AMD PDU或者AMD PDU分段,则发送侧将:- 如果在发送了RLC数据PDU后,发送缓存和重传缓存就变空了(不包含已经发送出去正在等待确认的数据包),或者- 如果发送了RLC数据PDU后没有新的RLC数据PDU可以被发送(例如窗停止)则在RLC数据PDU里包含一个poll 当在一个RLC数据PDU里包含一个poll时,发送侧将:- 将RLC数据PDU的P域置为1- 将PDU_WITHOUT_POLL设置为0- 将BYTE_WIT
21、HOUT_POLL设置为0 当把一个带P位的数据包递交给底层后,如果需要的话增加VT(S),发送侧将:- 设置POLL_SN为VT(S) 1- 如果t-PollRetransmit没有运行,则开启t-PollRetransmit- 否则,重新开启t-PollRetransmit6.2.2 收到状态报告当RLC AM实体收到发送侧的一个状态报告后,如果状态报告中包含对SN等于POLL_SN的PDU的正确或者错误确认,则如果t-PollRetransmit正在运行,则停止t-PollRetransmit.6.2.3 t-PollRetransmit超时t-PollRetransmit超时后,发送侧
22、:- 如果在发送了RLC数据PDU后,发送缓存和重传缓存就变空了(不包含已经发送出去正在等待确认的数据包),或者- 如果发送了RLC数据PDU后没有新的RLC数据PDU可以被发送(例如窗停止)则将SN = VT(S) 1的AMD PDU认为是重传或者认为被重传的PDU没有被正确确认- 在这个PDU中包含一个poll,之后的处理同6.2.1 状态报告为了对RLC PDUs或者其中的一部分进行正确或者错误确认,AM RLC实体将给它的对等AM RLC实体发送STATUS PDUs。RRC配置是否使用状态禁止功能,触发状态报告:- 当从底层收到一个SN=x,且P位设置为1的数据PDU后,接收侧将:-
23、 如果满足丢弃条件,则丢弃该数据PDU- 如果x = VR(MR) 则触发状态报告- 否则,延迟触发时间,直到x = VR(MR).状态包在HARQ重排序后发送当发现一个RLC数据PDU接收失败后,t-Reordering超时时,接收侧将触发状态报告T_reordering超时后会触发VR(MS)更新、发送一个状态报告,当状态报告的发送要在VR(MS)更新之后如果触发了状态报告,接收侧将:- 如果t-StatusProhibit没有在运行,在第一个收到底层指示发送时机时,构造一个STATUS PDU,并递交给底层- 否则,t-StatusProhibit超时后,当底层第一次指示发送时机时,构造
24、一个STATUS PDU(即使在t-StatusProhibit运行期间已经触发过多次),并递交给底层当一个STATUS PDU已经递交给底层后,接收侧将开启t-StatusProhibit当构造了一个STATUS PDU时:- 对于VR(R) = SN VR(MS),且还没有接收全的PDU,按照SN递增的顺序以及字节分段递增的顺序,从SN = VR(R)开始,到 对于没有接收到任意字节分段的AMD PDU,在STATUS PDU中包含一个设置为该PDU SN的NACK_SN对于由连续字节分段组成,但是还没有接收到的PDU,在STATUS PDU中包含NACK_SN、SOstart、SOend
25、- 将ACK_SN设置为下一个还没有收到的、且没有在状态包中被指示丢失的RLC数据PDU7SDU丢弃过程当上层(PDCP)指示丢弃一个特殊的RLC SDU时,AM RLC发送实体或者UM RLC发送实体将丢弃指示的RLC SDU(如果该SDU中没有映射到已经接收到的PDU中的分段)8重建过程 RLC重建由RRC请求,该功能可以应用到AM、UM以及TM RLC实体当RRC指示RLC实体需要进行重建时,RLC实体将:如果是一个TM RLC发送实体,则丢弃所有的RLC SDUs如果是一个UM RLC接收实体,则如果可以的话,将SN VR(UH)的UMD PDUs重组为RLC SDUs,去掉RLC头,将所有已经重组的且之前还没有递交的RLC SDUs,按照RLC SN的升序递交给上层;丢弃所有剩余的UMD PDUs如果是发送UM RLC实体,则丢弃所有RLC SDUs如果是AM实体:- 在接收侧将SN VR(MR)的AMD PDUs重组为RLC SDUs,去掉RLC头,将所有已经重组的且之前还没有递交的RLC SDUs,按照RLC SN的升序递交给上层- 接收侧丢弃剩余的AMD PDUs和字节分段- 发送侧丢弃所有的RLC SDUs和AMD PDUs- 丢弃所有的RLC控制PDUs 停止并复位所有定时器,将所有状态变量复位为初始值
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1