NR RLC Protocol General and Procedure(part) 中文翻译

1. General

1.1 RLC Archetecture

RLC entities

RRC控制RLC的配置

RLC子层的功能主要由RLC实体(entities)表现。 在通信过程中,gNB和UE端各有一个RLC entity。

RLC PDU既可以是 RLC data PDU,也可以是 RLC control PDU

RLC entity有3种mode:

  1. AM
  2. UM
  3. TM

在UM和TM mode下,RLC entity既是发送实体也是接收实体。
在AM mode下,RLC entity有发送端和接收端。

发送部分的功能为:接收上层的SDU,通过下层将PDU传给另一设备上的对等实体。
接收部分反之。

将RLC SDU构造成RLC PDU不需要下层的通知就可以直接进行。
在AM和UM mode下,根据下层的通知,RLC SDU可能会被分段,用多个RLC PDU来传输。

先将SDU组装成PDU,与之后可能将SDU分段再用PDU传输,这两者并不冲突。
在实际的组装PDU实现中,PDU数据域并不是简单的copy SDU数据并组装(这样buffer不够用),而是通过指针引用内存中的数据。如果之后要分段,只需要改一下offset即可。

仅当收到下层的通知(transmission opportunity)时,RLC PDU才会被传送到下层。

TM RLC entity

TM mode 下的 RLC entity 可在BCCH, CCCH, PCCH逻辑信道上收/发 RLC PDU。

TM RLC entity 只会在遇到以 TMD PDU 为内容的 RLC data PDU时,才会进行收/发。

UM RLC entity

可在 DTCH上收/发消息

  • 发:
    • 为每个 RLC SDU 生成 UMD PDU,在其中加上 RLC header.
    • 当收到下层关于传输机会(transmission opportunity)的通知时,若需要,会将 RLC SDU 分段以满足下层对于PDU大小的规定。
  • 收:
    • 检查传输损失
    • 重组SDU,若重组好则尽快发往上层。
    • 当由于传输问题无法被正常重组进某个SDU时,丢弃PDU

AM RLC entity

可在 DCCH 或 DTCH 上收/发消息。
AM RLC 是唯一收/发 RLC control PDU 的,其内容为: STATUS PDU

  • 发:
    • 支持重传
      • 若对SDU的分段不符合下层在一传输机会下对于PDU传输大小的规定,则AM RLC entity可对SDU重新分段。
      • 重新分段的次数不受限制。
    • 为每个RLC SDU(或段)生成 AMD PDU,在其中加上RLC header
  • 收:
    • 检查是否重复接收,若是,丢弃重复的。
    • 检查在下层传输时是否有丢失,若是,向对等实体请求重传。
    • 重组SDU,若重组好则马上传给上层 (RLC实体的接收端不会缓存完整的SDU)。

1.2 Services

RLC向上层提供的服务: TM, UM, AM mode下的data transfer。
RLC向下层请求的服务:

  • data transfer
  • 关于传输机会的通知,以及在传输机会中RLC PDU大小的限制。

1.3 Functions

RLC子层支持的功能有:

  • 上层PDU的传输
  • AM mode下,用ARQ纠错
  • AM, UM mode下,对RLC SDU的分段和重组。
  • AM mode下,对RLC SDU段的重新分段。
  • AM mode下,发现重复数据。
  • AM, UM mode下,RLC SDU的丢弃
  • RLC 重新建立
  • AM mode下,对协议检错。

2. Procedures

2.1 RLC entity handling

RLC entity establishment

当上层请求RLC entity建立,则UE需要:

  • 建立RLC entity;
  • 将RLC entity的状态变量初始化;
  • 按照2.2小节的流程进行。

RLC entity re-establishment

当上层请求RLC entity的重建立,则UE需要:

  • 丢弃所有RLC SDU和段,RLC PDU;
  • reset timers;
    按照2.2小节的流程进行

RLC entity release

当上层请求RLC entity释放,则UE需要:

  • 丢弃所有RLC SDU和段,RLC PDU;
  • 释放RLC entity

2.2 Data transfer procedures

TM data transfer

  • 发送:当发送一个新的TMD PDU到下层时,负责发送的TM RLC entity应该:
    • 发送RLC SDU到下层,不做任何修改。
  • 接收:当从下层接收一个新的TMD PDU时,负责接收的TM RLC entity应该:
    • 传递TMD PDU到上层,不做任何修改

UM data transfer

Transmit

当发送一个UMD PDU到下层时,负责发送的RLC entity应该:

  • 若UMD PDU包含RLC SDU的一个段,设SN(sequence number)为TX_Next;
  • 若UMD PDU包含的段映射到RLC SDU的最后一byte,则TX_Next+1。

Receive

概述
UM RLC实体应该根据状态变量 RX_Next_Highest维护一个重组窗口,范围为 [RX_Next_Highest - UM_Window_Size , RX_Next_Highest)

当从下层接收到一个UMD PDU时,UM RLC实体应:

  • 要么将UMD PDU去掉RLC header后传到上层,要么丢弃UMD PDU,要么将其放入reception buffer
  • 若接收的UMD PDU被放入reception buffer,则
    更新状态变量,重组并传递RLC SDU给上层,并根据需要 start/stop t-Reassembly
  • 若t-Reassembly超时,则UM RLC 实体应:
    更新状态变量,丢弃RLC SDU段并根据需要启动t-Reassembly
  • RX_Next_Reassembly:当前等待重组的最早一个PDU的SN值。接收端默认SN小于该值的包都已被成功接收了。
  • RX_Time_Trigger:保存了触发t-Reassembly的PDU的SN值的下一个SN。当启动t-Reassembly时,说明有小于该SN的PDU还未收到,此时需要等待这些PDU以便进行重排序。
  • RX_Next_Highest:保存所有已接收的PDU中,最高的SN+1。该值对应reassembly window的上边界。

当一个UMD PDU从下层被接收,则UM RLC实体应:

  • 若该UMD PDU不包含SN(说明这是个完整包),则去掉RLC header,将RLC SDU发给上层
  • 若SN值落在 [ RX_Next_Highest - UM_Window_Size , RX_Next_Reassembly) 范围内,则出窗,将PDU丢弃
  • 否则,将PDU放入reception buffer

为什么UM敢把落在特定范围内叫做“出窗”?因为UM没有重传,sn永远是向前走的,不可能落在窗口的左侧。
落在窗口左侧的pdu会被视为正常包接收,并移动窗口。

当一个SN = x 的 UMD PDU 放入 Reception buffer时,接收端会按照下列步骤操作:

  1. 若至此SN = x 的SDU的所有byte都已收到,则去掉RLC header,并将SDU重组传给上层。

  2. 若x = RX_Next_Reassembly,则更新RX_Next_Reassembly为目前下一个最早的SN值。

  3. 若x大于RX_Next_Highest,则RX_Next_Highest设为x+1,相应地 reassembly window也向前移。 因为前移而落到reassembly window之外的PDU,将被丢弃。
    若前移后RX_Next_Reassembly也落到重组窗口外,则将其值更新为 大于等于RX_Next_Highest - UM_Window_Size,但还未被重组并传往上层的最早一个SN值。

  4. 若t-Reassembly正在运行

    • 如果RX_Timer_Trigger <= RX_Next_Reassembly,或者;
    • RX_Timer_Trigger落在reassembly window之外并且不等于RX_Next_Highest;
    • RX_Next_Highest = RX_Next_Reassembly + 1,且SN = RX_Next_Reassembly的SDU已收齐;
      则停止并重置t-Reassembly
  5. 若t-Reassembly没有运行(包括因为前面步骤导致的停止运行),且

    • RX_Next_Highest > RX_Next_Reassembly+1(即至少还有一个 SN < RX_Next_Highest没收到,应启动定时器等待未接收的PDU)
    • RX_Next_Highest = RX_Next_Reassembly + 1,且SN = RX_Next_Reassembly的SDU没收齐;
      则启动t-Reassembly,并将RX_Timer_Trigger设置为RX_Next_Highest。

当t-Reassembly超时,则:

  • 将RX_Next_Reassembly更新为不小于RX_Timer_Trigger,且未重组的第一个SN值。
  • 丢弃所有SN < 新RX_Next_Reassembly的PDU。
  • 若此时RX_Next_Highest >= RX_Next_Reassembly+1,且SN = RX_Next_Reassembly的SDU没收齐;
    则启动t-Reassembly,并将RX_Timer_Trigger设置为 RX_Next_Highest
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341