| 
1.       LTE协议RLC简介 在LTE中,为了给数据传输提供足够的可靠性,层2使用了双重传机制。ARQ位于RLC层,HARQ位于MAC层中。ARQ与HARQ的交互更有利地保证了数据的无差错传输,在HARQ的某个数据包重传失败后,ARQ将发起RLC PDU的重传,RLC层传输失败后,则会有更上层(如TCP/IP协议层)保障数据的可靠性。 层2的RLC子层为用户和控制数据提供分段和重传服务,RLC实体有3种工作模式:透明模式(TM),非确认模式(UM)),确认模式(AM)。如下图所示:   图1-1 RLC协议层简图(参照协议36系列36.322)   RLC子层主要功能列表: 表1-1 RLC子层主要功能表   ARQ功能只在AM模式使用,ARQ方式有3种基本类型:SAW(Stop and Wait)重传、退N步(GBN:Go back N)重传和选择重传(SR:Selective Retransmission)。 l         SAW重传是指发端发送每个分组数据后都要等待收端的回执,收到NACK就重传,收到ACK后则准备发送下一个分组数据。 l         GBN重传可持续发送多个分组数据,发端发送第一个分组数据后不必等待回执,经过网络延迟后回执到达发端,若收端反馈的是NACK,则发端重传该分组数据及其后在延迟期间发送的分组数据。 l         SR重传中发端按固定顺序发送分组数据,只重传收到NACK所对应的分组数据。 在3种重传方式中,SR重传的效率是最高的,但由于需要保证分组数据的传送顺序,收发两端必须占用较大的缓冲区。   目前的LTE标准采用的是SR重传方式,保证数据传输效率更高。    如上表1所示,AM模式功能最完备,如下章节以AM模式为例说明RLC参数配置对LTE性能影响。 AM模式需要考虑的关键参数如下: 表1-2 RLC子层AM模式关键参数  |   |  | 窗长:和SN序列号(10bits)有关,目前协议固定为512。  |   |  |   |  |   |  |   |  |   |  | 窗长:和SN序列号(10bits)有关,目前协议固定为512。  |   |  |   |  |  
      参照协议36系列36.331中RLC-Config说明,RLC层AM模式各参数对应字段取值范围如下: RLC-Config information element -- ASN1START   RLC-Config ::=            CHOICE {     am                               SEQUENCE {        ul-AM-RLC                        UL-AM-RLC,        dl-AM-RLC                        DL-AM-RLC     },     um-Bi-Directional                SEQUENCE {        ul-UM-RLC                        UL-UM-RLC,        dl-UM-RLC                        DL-UM-RLC     },     um-Uni-Directional-UL            SEQUENCE {        ul-UM-RLC                        UL-UM-RLC     },     um-Uni-Directional-DL            SEQUENCE {        dl-UM-RLC                        DL-UM-RLC     },     ... }   UL-AM-RLC ::=                    SEQUENCE {     t-PollRetransmit                 T-PollRetransmit,     pollPDU                          PollPDU,     pollByte                         PollByte,     maxRetxThreshold                 ENUMERATED {                                         t1, t2, t3, t4, t6, t8, t16, t32} }   DL-AM-RLC ::=                    SEQUENCE {     t-Reordering                     T-Reordering,     t-StatusProhibit                 T-StatusProhibit }   UL-UM-RLC ::=                    SEQUENCE {     sn-FieldLength                   SN-FieldLength }   DL-UM-RLC ::=                    SEQUENCE {     sn-FieldLength                   SN-FieldLength,     t-Reordering                     T-Reordering }   SN-FieldLength ::=               ENUMERATED {size5, size10}   T-PollRetransmit ::=             ENUMERATED {                                      ms5, ms10, ms15, ms20, ms25, ms30, ms35,                                      ms40, ms45, ms50, ms55, ms60, ms65, ms70,                                      ms75, ms80, ms85, ms90, ms95, ms100, ms105,                                      ms110, ms115, ms120, ms125, ms130, ms135,                                     ms140, ms145, ms150, ms155, ms160, ms165,                                      ms170, ms175, ms180, ms185, ms190, ms195,                                      ms200, ms205, ms210, ms215, ms220, ms225,                                      ms230, ms235, ms240, ms245, ms250, ms300,                                      ms350, ms400, ms450, ms500, spare9, spare8,                                      spare7, spare6, spare5, spare4, spare3,                                      spare2, spare1}   PollPDU ::=                          ENUMERATED {                                      p4, p8, p16, p32, p64, p128, p256, pInfinity}   PollByte ::=                     ENUMERATED {                                      kB25, kB50, kB75, kB100, kB125, kB250, kB375,                                      kB500, kB750, kB1000, kB1250, kB1500, kB2000,                                      kB3000, kBinfinity, spare1}   T-Reordering ::=                 ENUMERATED {                                      ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35,                                      ms40, ms45, ms50, ms55, ms60, ms65, ms70,                                      ms75, ms80, ms85, ms90, ms95, ms100, ms110,                                      ms120, ms130, ms140, ms150, ms160, ms170,                                      ms180, ms190, ms200, spare1}   T-StatusProhibit ::=             ENUMERATED {                                      ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35,                                      ms40, ms45, ms50, ms55, ms60, ms65, ms70,                                      ms75, ms80, ms85, ms90, ms95, ms100, ms105,                                      ms110, ms115, ms120, ms125, ms130, ms135,                                      ms140, ms145, ms150, ms155, ms160, ms165,                                      ms170, ms175, ms180, ms185, ms190, ms195,                                      ms200, ms205, ms210, ms215, ms220, ms225,                                      ms230, ms235, ms240, ms245, ms250, ms300,                                      ms350, ms400, ms450, ms500, spare8, spare7,                                      spare6, spare5, spare4, spare3, spare2,                                      spare1} -- ASN1STOP   另外,AM模式其它的中间状态变量,不在这里重复考虑和描述,请参考协议,主要状态变量如下: l         AM实体发送端 1)        VT(A):确认状态变量 Ø         下一个需要被正确确认的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;   l         AM实体接收端 1)        VR(R):接收状态变量 Ø         变量值为最后一个顺序接收到的AMD PDU的下一个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的SN; 4)        VR(MS):最大STATUS发送状态变量 Ø         当需要构造一个STATUS PDU的时候,该值等于可以被“ACK_SN”指示的SN的最大值; 5)        VR(H):最高接收状态变量 Ø         已经接收到的RLC数据PDUs中的SN最高值,初始值为0; 6)        POLL_SN:轮询发送状态参数 Ø         等于最近一次发送的P位指示为1的RLC数据PDU时的VT(S)-1,初始值为0;          后续各章节将从包时延,吞吐量性能指标角度分别对发送端参数和接收端参数做重点分析,其中AM_Window_Size参数发送端和接收端共有参数,在发送端一并说明。 
 |