RLC
包括有TM,UM,AM模式,
TM模式即是不做任何修改,广播消息,寻呼消息等,比如SIB消息直接从RRC,通过RLC透传到MAC往下发;
UM模式与TM不同,主要在于UM需要对报文做处理再往下发,可以分段,串接,有RLC头,支持的业务包括VoIP等;
AM模式较UM增加的是有RLC的ARQ重传,并且可以支持RLC PDU的再分段。复杂的主要是AM模式;重分段的意思是当重传AM PDU的大小大于本次MAC的允许的SDU的大小时,进行重分段;分段也只是对数据域的分段。
[if !supportLists]1.1 [endif]RLC参数
[if !supportLists]1.1 [endif]UM模式
发射就只有看VT(US),一直发送。
主要看接收,其中的一些参数是这么看的:
重排序计时器范围是0-200ms,值太小的话导致超时过快而常有丢包就重组递交给上层,但是VOIP业务是不能等的,先保证快速递交。
当SN长度是5bit时,重排序窗口大小是16,SN长度是10bit时,重排序窗口大小512
[if !supportLists]1.1 [endif]AM模式
首先是发送端参数VT(A),VT(MS),VT(S),Poll_SN:
触发轮询的目的:
防止发送侧Buffr溢出
触发轮询的条件:
[if !supportLists]l [endif]PDU_without_Poll >= pollPDU
[if !supportLists]l [endif]BYTE_without_Poll >= pollByte
[if !supportLists]l [endif]发送区和重传缓冲区都为空
[if !supportLists]l [endif]没有新的RLC数据PDU能发送(发送窗口堵塞)
触发轮询后的操作:
[if !supportLists]l [endif]RLC data PDU的P字段设置为1;
[if !supportLists]l [endif]PDU_without_Poll和BYTE_without_Poll设置为0;
[if !supportLists]l [endif]VT(S) = VT(S) + 1, POLL_SN = VT(S) – 1;
[if !supportLists]l [endif]启动或者重启t-PollRetransmit。
发生重传的条件:
[if !supportLists]l [endif]t-PollRetransmit超时,轮训后未得到响应
[if !supportLists]l [endif]status报告含有NACK
接收端状态报告
状态报告的目的:
接收端向发送端反馈哪些PDU已经正确接收,哪些还没有收到
状态报告的触发条件:
[if !supportLists]l [endif]发送端polling:该PDU前所有的数据都收到
[if !supportLists]l [endif]重排序定时器超时
状态报告禁止定时器:
[if !supportLists]l [endif]当一个状态报告发送给底层,启动t_status_prohibit
[if !supportLists]l [endif]当状态PDU被触发时,如果t_status_prohibit没有运行,那么就在底层指示的第一个发送机会,发状态报告;如果t_status_prohibit正在运行,那么就在t_status_prohibit超时后底层指示的第一个发送机会,发状态报告
接收端参数:VR(R),VR(MR),VR(X),VR(MS),VR(H),t-Reordering,t-StatusProhibit
t-PollRetransmit值过小会导致频繁超时触发重传,接收方收到大量重复PDU,值过大可能因无法及时进行重传导致吞吐量降低
pollPDU和pollByte,值过小会频繁触发轮询,值过大可能导致发送窗口堵塞
t-Reordering,值过小会频繁触发NACK状态报告,导致发送端频繁重传
t-StatusProhibit,值过大会延缓状态报告发送,导致发送端频繁t-PollRetransmit超时
重传的触发条件:
对等端AM RLC实体的状态报告(必选),来自MAC实体的HARQ发送失败(可选)
当对AMD PDU或AMD PDU分段进行重传时,AM RLC实体发送侧应进行如下操作:如果该AMD PDU大小可以完全适合此发送时机的TB块大小,发送该AMD PDU,除P域外;否则,根据TB大小,对AMD PDU进行必要的分割,形成新的AMD PDU分段
如果满足则将关联RETX_COUNT置为0;
否则:
如果上次递增或者RETX_COUNT值为0相对应的AMD PDU或者AMD PDU部分已经递交给低层,则将RETX_COUNT加1。
如果RETX_COUNT = Max_Retx_Threshold:
向高层指示已达到最大重传次数,可以出发RLF流程
以上就是简要归纳了一下接收端的处理
状态报告的目的
接收端向发送端反馈哪些PDU或PDU分段已经正确接收到,哪些还没有收到;
状态报告的触发条件
发送侧polling:该PDU前所有数据都收到
重排序定时器超时
状态报告的大小
已经触发一个状态PDU,且状态禁止定时器没有运行或者已经超时,该UE将估计在下一个传输时机被传输的状态PDU的大小
状态报告禁止
当一个状态报告递交给低层,启动T_status_prohibit。
当状态PDU被触发时,如果T_status_prohibit没有运行,AM RLC实体接收侧将在随后低层指示的第一个发送机会,组织一个状态报告发送;
当状态PDU被触发时,如果T_status_prohibit在运行,在T_status_prohibit超时后低层指示的第一个发送机会,组织一个状态报告发送
从一个文档中得到的结果:
[if !supportLists]1. [endif]T-Reordering,当数值小于MAC的时延,系统性能指标会出现剧烈变化,当大于MAC的时延,系统性能指标趋于稳定;因此T-Reordering取值要大于MAC时延
[if !supportLists]2. [endif]T-StatusProhibit, t-pollRetransmit作用基本相同,计数器值增大,反向带宽减小,PDU平均重传次数减少,时延增大,吞吐量减小;推荐T-StatusProhibit区间【ms50-ms300】,推荐t-pollRetransmit区间【ms50-ms120】;不能t-pollRetransmit很小而T-StatusProhibit很大
[if !supportLists]3. [endif]pollPDU,pollByte作用基本相同,计数器值增大,反向带宽减小,PDU平均重传次数减少,时延增大,吞吐量减小;推荐pollPDU区间【p32-p128】,推荐pollByte区间【kB500-kB1500】