Based on 36.322 R10
5.1 数据传输过程
5.1.1 TM数据传输
不管是发送还是接收,都不对数据包做任何修改,透传给上层或下层,且不做任何流控或错误检测等。
5.1.2 UM数据传输
5.1.2.1 发送
当发送一个新的UMD PDU给下层时,发送者RLC实体应该:
- 设置VT(US)为UMD PDU的SN,然后将VT(US)增加1
5.1.2.2 接收
5.1.2.2.1 一般
接收者UM RLC实体应根据状态变量VR(UH)维护一个重排序窗口,如下:
- 若满足(VR(UH) - UM_Window_Size) <= SN < VR(UH),则SN落在窗口内
- 否则SN落于窗口外
当从底层收到UMD PDU,接收者UM RLC实体应该:
- 要么丢弃这个UMD PDU,要么将其放入接收缓冲区内(5.1.2.2.2)
- 如果将其放入接收缓冲区,那么:
- 更新状态变量,重新组装并传送给上层,根据需要开始/停止t_Reordering(5.1.2.2.3)
当t_Reordering超时,接收者UM RLC实体应该:
- 更新状态变量,重新组装并传送给上层,根据需要开始t_Reordering(5.1.2.2.4)
5.1.2.2.2 从下层收到UMD PDU时的行动
当SN=x的UMD PDU从下层收到,接收者UM RLC实体应该:
- 如果 VR(UR) < x < VR(UH) 且 SN=x的PDU已经收到过;或者
- 如果 VR(UH) - UM_Window_Size) <= x < VR(UR)
- 丢弃这个UMD PDU
- 否则
- 将收到的UMD PDU放入接收缓冲区
5.1.2.2.3 当UMD PDU放入接收缓冲区时的行动
当SN=x的UMD PDU放入到接收缓冲区,接收者UM RLC实体应该:
- 如果x落于重排序窗口之外
- 更新VR(UH)=VR(UH)+1
- 重组任何没有落入重排序窗口的PDU,这个过程包括去除RLC包头,并按照升序方式递交到上层实体
- 如果VR(UR)没有落入排序窗口,那么:
- 更新VR(UR) = VR(UH) -UM_window_size
如果接收缓冲里存有一个PDU,它的SN=VR(UR),那么:
- 更新VR(UR)为第一个没有接收到的PDU,它的SN大于当前的VR(UR),
- 然后重组所有SN < 更新后的VR(UR)的PDU,这个过程包括去除RLC包头,并按照升序方式递交到上层实体
如果T_ordering正在运行:
- 如果VR(UX) <= VR(UR),或则,
- 如果VR(UX)没有落入排序窗口,并且VR(UX)不等于VR(UH),则
- 停止并重启T_ordering计时器
如果T_ordering没有运行:
- 如果VR(UH) > VR(UR):
- 启动该计时器
- 设置VR(UX) = VR (UH)
5.1.2.2.4 t_Reordering超时后的动作
当T_ordering计时器超时,接收者UM RLC实体应该:
- 更新VR(UR)为SN > VR(UX)的第一个没有收到的UMD PDU
- 重组所有SN小于更新后的VR(UR)的UMD PDU,这个过程包括去除RLC包头,并按照升序方式递交到上层实体
- 如果VR(UH) > VR(UR):
- 启动该计时器
- 设置VR(UX) = VR (UH)
eg for UM receiving:
1. If SN=31 or SN= 5 arrives,discard it.
2. If SN=3 arrives,reassemble SN=3 to 5, update VR(UR)=6, VR(UX)=7, VR(UH)=11.
3. If SN=3 and 6 arrives, reassemble SN=3 to 8, update VR(UR)=9. Since VR(UR)>VR(UX), stop the timer. Since VR(R) 4. If Timer expires,VR(UR)= 9, reassemble SN=4 to 8, then then start the timer, VR(UX)=11. 5. If SN=22 arrives,update VR(UH)=23, reassemble from SN=4 to 8, update VR(UR)=9, VR(UX)=23.