我是靠谱客的博主 奋斗诺言,最近开发中收集的这篇文章主要介绍修改 连接层_NR的RLC层,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

与LTE类似,RLC层也是三种传输模式,分别是:

  • TM : No RLC Header, Buffering at Tx only, No Segmentation/Reassembly, No feedback (i.e, No ACK/NACK)
  • UM : RLC Header, Buffering at both Tx and Rx, Segmentation/Reassembly, No feedback(i.e, No ACK/NACK)
  • AM : RLC Header, Buffering at both Tx and Rx, Segmentation/Reassembly, Feedback(i.e, ACK/NACK)

每种模式都可以发送和接收数据。在TM和UM中,单独的实体用于发送和接收,但在AM中,单个RLC实体执行发送和接收,如下所示。

需要注意的一件重要事情是,每个逻辑通道都使用如下所示的特定RLC模式。

  • BCCH, PCCH, CCCH use RLC TM only.
  • DCCH use RLC AM only.
  • DTCH use RLC UM or AM. (通过RRC消息来决定用UM还是AM).

211b98885fda9779afe864a3c3f67f96.png

现在让我们进一步了解一下如何通过每个RLC模式处理数据。由于每个RLC模式都与特定的逻辑信道集相关联,建议将此RLC模式过程与这些信道的RLC层处理机制相关联。

TM模式/程序

如下图所示。TM模式意味着“几乎不处理RLC数据”。它所做的唯一一件事就是在发送缓冲数据。这一层没有RLC报头,没有重新排序,没有分割,没有重组。由于TM模式的这种“无数据处理”性质,如果比较TM模式的RLC输入和RLC输出数据,您将看到两者之间没有区别。

需要记住的一件重要事情是,需要注意MAC/PHY资源分配。即使MAC/PHY资源的分配小于RLC包,RLC也不会在意。它会把它所拥有的一切转发给MAC/PHY。因此,那些大于MAC/PHY资源的RLC数据可能被切断或丢弃。

另一个需要注意的是,本地信道BCCH/PCCH/CCCH数据由该RLC模式处理。

dc829b6b0e91c9c1369749005a6b53fc.png

UM模式/过程

接下来,看看UM模式。代表“未确认模式”,“未确认模式”表示“不需要另一方的任何接收响应”,“接收响应”只是指来自另一方的“ACK”或“NACK”。(UM模式类似于TM模式,它不需要来自另一方的任何ACK/NACK,但它不同于TM,因为有自己的头)

先看发射端的操作。

i) 缓冲数据并生成RLC报头。

ii)分割(将一个大的块分割成多个小的块)并修改RLC头(RLC头中的某些字段应根据分割状态进行更改)

iii)添加RLC标题

注意:如果在LTE进程中对此进行比较,则UM RLC似乎不执行任何“连接”。根据38.322中的以下语句,“连接”进程被移动到MAC层。

然后,阅读接收端的操作

i) 缓冲

ii)重新排序(有时从发送器发送的数据块可能延迟到达接收器。在这种情况下,必须将传入的块重新排序为正确的顺序,以便重新组装)。

iii)移除RLC报头(发送器将报头放在每个块上。因此,在重新组装数据之前,必须删除此项)。

iv)重新组装

905a900f577018e63fa23d76dcfa2bc5.png

连接(Concatenation)放到Mac层了

f89cf9afdb74132336c0049f30655fa0.png

AM模式/程序

现在看看AM模式,它是最复杂的RLC类型,AM代表“确认模式”。顾名思义,它需要对方的ACK/NACK。它更像IP世界中的TCP数据包,而RLC-UM更像IP世界中的UDP。

每次传输都需要ACK/NACK吗?如果是这样,是不是开销太大了?对,开销太大了。这就是为什么我们有RLC窗口概念(如IP流量中的TCP窗口)和轮询位概念以及各种ACK/NACK调度机制,这使得很难理解RLC AM操作的全部细节。

与UM模式不同的是中间列,即“重传缓冲区”和“RLC控制”过程。

在RLC发送器进行分段/级联处理后,添加RLC报头,然后创建两个相同的副本,并将数据的一个副本发送到较低层(MAC)并将另一个副本发送到重传缓冲器。

如果RLC获取Nack或在一定时间内未从另一方获得任何响应,则重传缓冲器中的RLC分组,再次被发送。如果RLC得到ACK,则重传缓冲区中的那些将被丢弃。

13071d22e4bba2053cacb3b282d008fb.png

6970ea16eb1e9643a087625326101e17.png

RLC数据结构

914bf5e4fb9fbdd2d84df8b37e88c0bd.png

558284c0f0224ecded6fcf9221144743.png

SI代表段信息。下表定义了每个可能的SI字段值的含义

1d0ce5c610bac7d1a0db38f0af342db8.png

SO : SO stands for Segment Offset. It indicates the position of the RLC SDU segment in bytes within the original RLC SDU

D/C : This field indicate whether the RLC PDU is for Data or Control.

0fefda0f7a10ae90559cc367fb05c9c0.png

P : P stands for Polling bit. This indicates whether it requires RLC ACK or NACK from the other party.

c482928c08c00a322b168d9fce0f1a88.png

SI : SI stands for Segment Information. 下表是SI自动可能的取值及意义。

1dc4d70484a738958f703ce1727fe0bf.png

dce59ace3f21d29c7ce1af4baf49a658.png

最后

以上就是奋斗诺言为你收集整理的修改 连接层_NR的RLC层的全部内容,希望文章能够帮你解决修改 连接层_NR的RLC层所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部