第一篇:RLC协议学习总结
RLC协议学习总结
1、RLC构架
图1 RLC架构
2、RLC实体
(1)TM RLC实体:适用于不需要RLC配置的RRC消息使用TM RLC(BCCH、DL/UL CCCH、PCCH)
业务类型:广播消息的固定部分、寻呼消息、RRC消息等
图2 TM模式两个对等实体
发送实体:不对RLC SDU进行串联、分段
没有RLC头
对RLC SDU不做任何改动,向下层发送
接收实体:不做任何修改,一脚RLC SDU到上层协议实体
(2)UM RLC实体:适用于延时敏感和容忍差错的实时应用
(DL/UL DTCH)RLC SDU分块、串联、重排序、重复检测、重组
业务类型:VoIP、MBMS
图3 UM模式两个对等实体
发送实体:在获得特定的发送机会时,要根据MAC层指示期待的RLC PDU大小进行分段或者串接RLC SDU
添加相应的RLC头
接收实体:检测收到的UMD PDU是否重复,重复则丢弃
重排失序的UMD PDU
能够检测出UMD PDU在MAC是否丢失,避免过长的重排序时延
若发现某RLC SDU的UMD PDU丢失,则丢弃其他同RLC SDU的PDU(3)AM RLC实体:适用于错误敏感、时延容忍的非实时应用
(DL/UL DCCH/DTCH)UM RLC功能+RLC数据PDU重传、重传RLC数据PDU再分快、轮询、状态报告、状态禁止
业务类型:FTP、WWW、RRC消息等
图4 AM模式实体
3、RLC层服务
RLC层向上层提供的服务:(RLC层向PDCP层提供服务)(1)TM数据传输:分段和重组、用户数据的传输
(2)UM数据传输:分段和重组、串联、填充、用户数据的传输、加密、序号检查
(3)AM数据传输:分段和重组、串联、填充、用户数据的传输、纠错、按序传送高层PDU、副本检测、流量控制、协议错误检测和恢复、加密 RLC层从下层得到的服务(1)数据传输
(2)通知发送时机,同时提供当次传输时发送RLC PDU的总大小(3)通知HARQ重传失败
4、RLC层功能
(1)高层PDU传输
(2)通过ARQ进行纠错(AM)
(3)RLC SDU的分段、串接和重组(UM、AM)(4)RLC数据PDU的再分段(AM)(5)高层PDU的按序递交(UM、TM)(6)重复检测(UM、AM)(7)RLC SDU丢弃(UM、AM)(8)RLC重建
(9)协议错误及恢复
5、RLC过程(具体过程见page 6)(1)数据传输过程 TM: UM: AM:
(2)ARQ过程(AM)重传: 轮询:(防止发送端buffer溢出)
AMD PDU或AMD PDU片段重传、接收状态报告、t-PollRetransmit超时
状态报告:接收侧向对等段发送侧反馈,那些PDU或PDU分段已经正确接收,那些没有。(3)SDU丢弃过程:来自PDCP的指示,若被指示的RLC SDU没有任何分段映射到一个RLC Data PDU,AM RLC实体发送侧或者发送UM RLC实体丢弃该RLC PDU(4)重建过程:由RRC请求触发,应用于AM、UM、TM
丢弃、重组、提交、停止、复位、初始化(5)对于未知的、意外的以及错误的协议数据的处理:丢弃
6、RLC协议数据单元及格式
(1)TMD PDU:仅有数据域组成,没有任何RLC头
(2)UMD PDU:UMDPDU头(固定部分、扩展部分)+数据域(可对RLC SUD进行分段、串接、重组)
(3)AMD PDU:AMD PDU头(固定部分、数据部分)+数据域(可对RCL SDU进行分段、串接、重组)
7、参数
(1)SN:RLC PDU序号,增量为1(保证按序接收)
(2)FI:指示在数据域的开始和最后是否饱饭RLC SDU分段(3)E:指示数据域或LI域和E域的集合(4)LI:对应数据域长度(5)R1:保留域,置0(6)D/C:控制PDU/数据PDU(7)RFAMD PDU/AMD PDU分段
(8)LSF:是否原始AMD PDU的最后一个分段
(9)SO:AMD PDU分段数据域中第一个字节在原始AMD PDU数据域中的位置(10)CPT:RLC控制PDU类型:STATUA PDU(11)ACK_SN:第一个没有收到且在STATUS PDU中报告丢失的RLC data PDU的SN(12)E1:其后是否包括一组NACK_SN(13)E2:其后是否包括一组SOStart和SOend域
(14)NACK_SN:AM RLC实体接收侧已检测到丢失AMD PDU(或其一部分)的SN(15)SOstart、SOend:相关SN=NACK_SN的AMD PDU的丢失部分
8、变量
(1)UM发送端 1)VT(US):
给出下一个要传送的UMD PDU的序列号。UMD PDU没传送一次,该变量就更新一次,其初值为0.(2)UM接收端 1)VR(US):接受者发送顺序状态变量
被接收的下一个PDU的序列号,初始值为0。当接收到一个PDU,其值设置为SN+1。2)VR(UR):UM接收状态变量
记录等待重排序的最早的UMD PDU的序列号。在重排序窗口之内,序列号低于该变量的UMD PDU,其接收状态为已确定,放弃对此范围内的接收空隙处PDU的等待,将其余正确接收到的PDU重组形成SDU,顺序递交到高层,后续即使正确接收到此范围内序列空隙处的PDU也采取删除数据包的操作。该状态变量的初始值为0。3)VR(UX):UM重排序计时器状态变量
记录触发重排序计时器的UMD PDU紧接着的下一个序列号。当重排序计时器启动时,该变量与VR(UR)分别记录当前重排序计时器对应的序列号范围内的上边界和下边界。当该范围内全部接收序列空隙处的PDU都正确接收后,终止当前重排序计时器。当重排序计时器不存在时,该变量无意义。4)VR(UH):UM最高期望状态变量
记录接收到的PDU中最高序列号紧接着的下一个序列号,作为重排序窗口的上边界。其初始值为0。(3)AM发送端 1)VT(A):确认状态变量
记录已经收到肯定确认的连续PDU中最高序列号紧接着下一个序列号,座位发送窗口的下边界。其初始值为0,只有当RM ELC实体发送端收到序列号等于当前VT(A)变量值的PDU的肯定确认时,该变量才会更新(SN=VT(A))。序列号小于该变量的PDU全部经过接收端肯定确认,表明已经全部正确接收。2)VT(MS):最大发送状态变量
VT(MS)=VT(A)+AM_Window_Size,座位发送窗口的上边界。任何序列号发出超出该变量的PDU都不允许发送。当窗口溢出时,AM RLC实体发送端不能发送任何新产生的PDU。3)VT(S):发送状态变量
记录下一个新产生的AMD PDU的序列号,初始值为0。在当前VT(S)值被赋予一个新产生的AMD PDU后,该变量做+1操作。4)POLL_SN_Pollsend :发送状态变量(4)AM接收端 1)VR(R):接收状态变量
记录最新完整接收到的连续AMD PDU紧接着的下一个序列号,座位接收窗口的下边界。该变量初始值为0,仅当当前R变量值对应的PDU被正确接收后才会更新。低于该变量。2)VR(MR):最大可接收状态变量
VR(R)=VR(R)+AM_Window_Size,座位接收窗口的上边界且是第一个长处接收窗口的AMD PDU的序列号,序列号超出该变量的PDU不能被AM RLC实体接收端接收。3)VR(X):重排序计时状态变量
记录发出重排序计时器的AMD PDU紧接着的下一个序列号。当冲排序计时器启动时,fai变量与MS分别记录当前重排序计时器对应的序列号范围的上边界与下边界,当该范围内全部接受序列号空隙处的PDI都正确接收后,终止当前重排序计时器。4)VR(MS)最大状态发送状态变量
记录作为状态报告中的ACK_SN的最高序列号值,初始值为0。处于接收窗口中,序列号低于该状态变量的AMD PDU,要么确认接收,要么已经经过重排序计时器检测认定为丢失的PDU;高于该状态变量的接收序列号空隙处为没有完成的重排序计时器检测的,仍旧等待HARQ重传的AMD PDU
9、常量
(1)AM_Window_Size:发送侧为VT(A)到VT(MS);接收侧为VR(R)到VR(MR)(2)UM_Window_Size:可排序的SN范围
10、计数器
(1)t-PollRetransmit:接收侧AM RLC实体在进行重传轮询时使用(2)t-Reordering:接收侧AM RLC实体和UM RLC实体检查下层传送的RLC PDU是否丢失时使用。如果t-Reordering正在运行,其他的t-Reordering计时器不能被启动,在一个给定的时间内,每个RLC实体只能运行一个t-Reordering计时器。
(3)t-StatusProhibit:只有在使用了基于计时器的状态发送时,使用该计时器。当RLC实体建立时,该计时器 启动,每次计时器超时,就发送一个状态报告并且计时器重启。其值由RRC告知。
11、可配置参数(1)maxRetxThreshold:AM RLC实体用于限制每个AMD PDU重传次数。(2)pollPDU:AM RLC实体发送端用于触发一次轮询(3)pollByte:每个AM RLC实体在触发一个轮询(4)sn-RieldLength:UM SN域的大小
1、数据传输过程
1.1 TM数据传输
(1)发送:当向下层发送一个新的TMD PDU时
接收端TM RLC实体应当给下层发送一个没有经过任何处理的RLC SDU(2)接收:当从下层接收到一个新的TMD PDU时
发送端TM RLC实体应当向上层提交一个没有经过任何处理的TMD PDU 1.2 UM数据传输
(1)发送:当向下层发送一个新的UMD PDU时
发送端UM RLC应当将该UMD PDU的SN置为VT(US),并将VT(US)加1(2)接收:
一、概述:
UM RLC实体接收端需要根据状态变量VR(UH)来维护重排序窗口
1)当接收到的PDU SN满足VR(UH)-UM_Window_size=SN SN落入重排序窗内 2)否则,该SN落在重排序窗口之外 当从下层接收到UMD PUD时 1)UM RLC实体接收端应当丢弃接收到的UMD PDU或将其存储在接收缓存中 2)如果接受到UMD PDU并将其存储在接受缓存器中 UM RLC实体接收端应当更新状态变量、重组并向上层传送RLC SDUs,在需要的 时候,开始或停止t-Reordering计数器。 当t-Reordering计数器超时 UM RLC接受端实体应更新状态变量、重组并向上层传送RLC SDUs,在需要的时候开始 t-Reordering计数器。 二、当从下层接受到UMD PDU时: 当从下层接收到一个SN=x的UMD PDU时: 如果VR(UR) UM RLC接收实体丢弃该UMD PDU 否则: UM RLC接收实体应把这个UMD PDU存入接收缓存器中 三、当一个UMD PDU被存储到接收缓存器时: 当一个SN=x的UMD PDU呗存入接收缓存器中时:(1)如果x落在重排序窗口之外 1)UM RLC接收实体应更新VR(UH)为x+1 2)UM RLC接收实体应从UMD PDU中重组所有SN落在重排序窗口之外的RLC SDU,去掉RLC头并且按照RLC SN的升序方式向上层发送重组完成的RLC SDU。 3)如果VR(UR)落在重排序窗口之外: UM RLC接收实体应将VR(UR)置为(VR(UH)-UM_Window_Size)(2)如果接收缓存器中有一个SN=VR(UR)的UMD PDU: 1)UM RLC接收实体应将VR(UR)更新为第一个没有被接收的UMD PDU SN>当前VR(UR)的PDU 2)UM RLC接收实体应从UMD PDU中重组所有SN<更新后的VR(UR)的RLC SDU,去掉RLC头并按照RLC SN的升序方式向上层发送重组后的RLC SDU。(3)如果t-Reordering计时器正在运行: 1)如果VR(UX)≤VR(UR),或者 2)如果VR(UX)落在重排序窗口之外且VR(UX)≠VR(UH) UMD PDU接收实体应停止并重启t-Reordering计时器(4)如果t-Reordering计数器没有运行 1)如果VR(UH)>VR(UR) UMD PDU接收实体应启动该t-Reordering计时器 UMD PDU接收实体应将VR(UX)置为VR(UH) 四、当t-Reordering计数器超时 当t-Reordering计数器超时:(1)UM RLC接收实体应更新RLC SDU为第一个没有被接收的UMD PDU的SN(SN≥VR(UX))(2)UM RLC接收实体应重组所有SN<更新后的VR(UR)的UMD PDU(3)如果VR(UH)>VR(UR) 1)UM RLC接收实体应启动t-Reordering计数器 2)UM RLC接收实体应将VR(UX)置为VR(UH)1.3 AM数据传输(1)发送: 1)AM RLC实体接收端应比RLC数据PDU优先发送RLC控制PDU; 2)AM RLC实体接收端应比新的AMD PDU优先发送重传的RLC数据PDU; 3)发送端AM RLC实体应根据状态变量VT(A)和VT(MS)维护发送窗口: 如果VT(A)≤SN<VT(MS),则SN落入发送窗口之内 否则,SN落在发送窗口之外 4)发送端SM RLC实体不应将任何SN落在传送窗口之外的RLC数据PDU传送给下层 5)当传送一个新的AMD PDU给下层时,发送端AM RLC实体应将该AMD PDU的SN置为VT(S),并将VT(S)加1; 6)AM RLC实体接收端可以通过如下方式接收一个RLC数据PDU的确认: AM RCL实体的发送端可以通过每个AM RLC实体的STATUS PDU来确认 7)当接收到一个SN=VT(A)的AMD PDU的确认时: a.接收端AM RLC 实体应将VT(A)置为还没有被确认的最小SN的AMD PDU的SN值,且该SN满足VT(A)≤SN≤VT(S) b.如果属于同一个RLC SDU的PDU都收到了确认,则AM RLC实体接收端应向上层发送RLC SDU成功发送的通知 (2)接收: 一、概述 (1)AM RLC实体接收端应根据状态变量VR(R)和VR(MR)维护接收窗口: 1)如果VR(R)≤SN<VR(MR),则SN落入接收窗口之内 2)否则,SN落在接收窗口之外 (2)当从下层接收到一个RLC数据PDU时: 1)AM RLC实体接收端或者丢弃该接收到的RLC数据PDU,或者将其存入接收缓存器 2)如果接收到的RLC数据PDU被存入接收缓存器: AM RLC实体接收端应更新状态变量、重组并向上层传送RLC SDU,且在需要的时候启动或停止t-Reordering计数器 3)当t-Reordering计数器超时,AM RLC实体接收端应更新状态变量,并在需要的时候启动t-Reordering计数器 二、当从下层接收到RLC数据PDU时: 当从下层接收到一个RLC数据PDU时,当它包含SN=x的AMD PDU分段字节为y到z时(1)如果x落在接收窗口之外,或者 (2)SN=x的AMD PDU的分段字节为y到z已经被接收时: AM RLC实体接收端应丢弃该RLC数据PDU(3)否则: 1)接收AM RLC实体应将接收到的RLC数据PDU存入接收缓存器中 2)如果AMD PDU的有些字节分段包含之前已经接收到的RLC数据PDU: AM RLC实体接收端应丢弃该重复的字节段 三、当已给RLC数据PDU被存入接收缓存器中时: 当一个SN=x的RLC数据PDU被存入接收缓存器中时:(1)如果x≥VR(H) 接收AM RLC实体应更新VR(H)为x+1(2)如果SN=VR(MS)的AMD PDU的字节段已经接收: 接收AM RLC实体应更新VR(MS)为第一个不是所有字节段都被接收的AMD PDU的SN,且该SN大于当前VR(MS) (3)如果x=VR(R): 1)如果AMD PDU的所有SN=VR(R)的字节段都被接收: a.接收AM RLC实体应更新VR(R)为第一个不是所有字节段都被接收的AMD PDU的SN,且该SN大于当前VR(R) b.接收AM RLC实体应更新VR(MR)为已更新的VR(R)+AM_Window_Size 2)从所有SN落在接收窗口之外的AMD PDU以及的字节段中重组RLC SDU,如果之前 没有提交过,则去掉RLC头并将重组的RLC SDU按顺序发送给上层。 (4)如果t-Reordering计数器正在运行: 1)如果VR(X)=VR(R);或者 2)如果VR(X)落在接收窗口之外,且VR(X)≠VR(MR) 接收AM RLC实体应停止并重置t-Reordering计数器 (5)如果t-Reordering计数器没有运行(包含因上述过程而停止的情况): 1)如果VR(H)>VR(R) a.接收AM RLC实体应启动t-Reordering计数器 b.接收AM RLC实体应置VR(X)为VR(H) 四、当t-Reordering计数器超时: 当t-Reordering计数器超时: (1)接收AM RLC实体应更新VR(MS)为第一个不是所有字节段都被接收的AMD PDU的SN,且该SN≥VR(X) (2)如果VR(H)>VR(MS): 1)接收AM RLC实体应启动t-Reordering计数器 2)接收AM RLC实体应置VR(X)为VR(H) 2、ARQ过程(ARQ过程只在AM RLC实体执行)2.1 重传(1)AM RLC实体接收端可以通过如下方式收到AMD PDU或AMD PDU部分的确认(其对等端AM RLC实体通知接收失败): 由对等端的AM RLC实体发送的STATUS PDU(2)当接收到从对等端AM RLC实体发送的STATUS PDU所获取的AMD PDU或AMD PDU部分的否认: 1)如果对应的AMD PDU的SN落入VT(A)≤SN<VT(S)的范围内: 则认为这个AMD PDU或AMD PDU的一部分要求重传 (3)当一个AMD PDU或AMD PDU的部分被认为需要重传时: 1)如果该AMD PDU被认为是第一次重传 接收AM RLC实体应将与该AMD PDU关联的RETX_COUNT置0 2)否则,如果它或者它的一部分重传没有被挂起: 接收AM RLC实体应递增RETX_COUNT 3)如果RETX_COUNT=maxRetxThreshold: 接收AM RLC实体应通知上层已经达到最大重传次数(4)当重传一个AMD PDU时 1)如果该AMD PDU的大小能够完全容纳在由下层指示的RLC PDU重传机会中: 接收AM RLC实体应传输这个AMD PDU(除了P域)2)否则: 接收AM RLC将这个AMD PDU进行分段,使得分段后的AMD PDU片段大小可以完全被容纳在有下层指示的传输机会中 (5)当传输一个AMD PDU的一部分时: 1)AM RLC实体接收端应在需要的情况下对该AMD PDU部分进行分段,使得分段后 的心AMD PDU片段可以完全被容纳在下层指示的重传机会中。 (6)当形成一个新的AMD PDU片段时 1)只要把原来的AMD PDU数据字段映射到新的AMD PDU分段的数据部分 2)设置新的AMD PDU分段包头 3)设置P域 2.2 轮询 一个AM RLC实体可以轮询它的对等端实体来触发对等端的发送状态报告 一、发送一个AMD PDU或AMD PDU分段(1)当产生一个新的AMD PDU时 1)AM RLC实体接收端应对PDU_WITHOUT_POLL加1 2)对于每一个映射到RLC数据PDU数据域的新数据单元,AM RLC实体接收端应将BYTE_WITHOUT_POLL增加相应的字节数 3)如果PDU_WITHOUT_POLL≥pollPDU;或者 4)如果BYTE_WITHOUT_POLL≥pollBYTE AM RLC实体发送端应按照如下所述在RLC数据PDU中包含一个POLL(2)当组成一个AMD PDU或者AMD PDU分段时 1)如果在传送了RLC数据PDU之后,发送缓存器和接收缓存器同时为空(不包括还没有被确认的RLC数据PDU);或者 2)如果在传送了RLC数据PDU之后没有新的RLC数据PDU需要被传送 AM RLC发送实体应按照如下所述在RLC数据PDU中包含一个POLL(3)要在RLC数据PDU中包含一个POLL 1)AM RLC实体发送端应设置RLC数据PDU的P域为1 2)AM RLC实体发送端应设置PDU_WITHOUT_POLL为0 3)AM RLC试题发送端应设置BYTE_WITHOUT_POLL为0(4)在根据需要轻狂对VT(S)进行增值后,当向下层发送一个含poll的RLC数据PDU时 1)AM RLC实体发送端应设置POLL_SN为VT(S)-1 2)如果t-PollRetransmit没有运行 AM RLC实体发送端应启动t-PollRetransmit计数器 3)否则 AM RLC实体发送端应重启t-Pollretransmit计数器 二、接收一个STATUS报告 当从接收端RLC AM实体接收到一个STATUS报告时 (1)如果状态报告包含的RLC数据PDU的确认或否认序号等于POLL_SN 1)如果t-Pollretransmit计数器正在运行 AM RLC实体接收端应停止并重置t-Pollretransmit计数器 三、t-Pollretransmit计数器超时 (1)如果发送缓存器和接收缓存器同时为空(不包括还没有被确认的RLC数据PDU);或者(2)如果没有新的RLC数据PDU能够传输(如,窗口溢出)、1)AM RLC实体发送端认为SN=VT(S)-1的AMD PDU需要重传;或者 2)AMRLC实体发送端认为没有被确认的AMD PDU需要重传(3)AM RLC实体发送端在RLC数据PDU中包含一个poll 2.3 状态报告 (1)AM RLC实体向它的对等端AM RLC实体发送STATUS来提供RLC PDU的确认或否认(2)RRC层可以配置RLC是否启动状态报告禁止功能(3)初始化STATUS报告触发包括: 1)从对等端AM RLC实体发起的轮询 当从下层接收到一个SN=x且P域被置为1的RLC数据PDU时 a.如果该PDU要被丢弃;或者 b.如果x<VR(MS)或x≥VR(MR) 触发STATUS报告 c.否则 延迟触发STATUS直到x<VR(MS) (基于此可以确保RLC状态报告是在HARQ重排序之后发送)2)检测到一个RLC数据PDU接收失败 AM RLC实体接收端应在t-Reordering计数器超时时触发一次STATUS报告 (t-Reordering计数器的超同时触发了VR(MS)的更新和STATUS报告的触发。但STATUS报告的触发应该在VR(MS)更新触发之后)(2)当STATUS报告被触发: 1)如果t-StatusProhibit计数器没有运行 在下层指示的第一次重传机会中,构建一个STATUS PDU并将其传给下层 2)否则 在t-StatusProhibit计数器超时后,在下层指示的第一次重传机会中,构建一个STATUS PDU即使在t-StatusProhibit计数器运行时已经触发过很多次,并将此传送给下层 (3)当一个STATUS PDU被传送给下层时 1)AM RLC实体接收端应启动t-StatusProhibit计数器(4)当构建一个STATUS PDU时 1)对于满足VR(R)≤SN<VR(MS)的还没有被完全接收到的AMD PDU,按照SN的升序和PDU字节段升序的方式,从SN=VR(R)开始知道这个STATUS PDU的大小已经达到下层只是发送机会的大小为止。 a.对于一个还没有被接收到任何字节分段的AMD PDU AM RLC实体接收端应在STATUS PDU中包含一个NACK_SN,并将其设为该AMD PDU的SN值 b.对于一个部分接收到的AMD PDU,它的一个还没有被接收到的连续的字节分段 AM RLC实体接收端应在STATUS PDU中包含NACK_SN、SOstart及SOend 2)将ACK_SN设为下一个没有被接收到的RLC数据PDU的SN,且其在STATUS PDU中 并不是丢失状态 3、SDU丢弃过程 当上层指示丢弃一个特定的RLC SDU时,AM RLC实体发送端或UM RLC实体接收端应将还没有任何分段映射到RLC AMD PDU的RLC SDU直接丢弃。 4、重建过程 RLC重建是在RRC层的请求下执行,这个功能为AM、UM和TM RLC实体均适用(1)当RRC层指示一个RLC实体需要一次重建时 1)如果该实体为TM RLC发送实体 则丢弃所有RLC SDU 2)如果该实体为UM RLC接收实体 a.在可能的情况下,在接收侧从所有没有被传送的SN<VT(MR)的AMD PDU中重组RLC SDU,并将所有重组完成的RLC SDU按照RLC SN的升序传送给上层。 b.丢弃所有剩余的RLC SDU 3)如果该实体为UM RLC发送实体 丢弃所有的RLC SDU 4)如果该实体为AM RLC实体 a.在可能的情况下,在接收侧将所有没有被传送的SN<VR(MR)的UMD PDU重组为RLC SDU,去掉RLC头,并将所有重组完成的RLC SDU按照RLC SN的升序传送给上层。 b.丢弃接收侧剩余的AMD PDU和AMD PDU字节分段 c.丢弃发送侧所有的RLC SDU和AMD PDU d.丢弃所有的RLC控制PDU 5)RLC实体应停止并重置所有计数器 6)RLC实体应重置所有状态变量为初始值 5、对未知的、意外的以及错误的协议数据的处理 当一个RLC实体接收到包含着保留值或无效值的RLC PDU时 RLC实体应丢弃该接收到的PDU 零碎:(不在总结的整体结构之中但觉得应该对以后也有用的零散东西) 1、UM 传输解析 已提交的PDU 重排序窗口 还未接收 到PDU 丢失的PDU 丢失的PDU VR(UH)-UM_window_size VR(UR)需要 重排序PDU 的下边界 VR(UH)接收到的 PDU最大序列号加1 已丢失PDU 已提交的PDU 还未收到的PDU 待组包的PDU其中重排序窗口的上边界为当前收到的所有UMD PDU中序列号中最高的序列号加一获得:用VR(UH)表示;重排序窗口的下边界是由上边界减去重排序窗口大小而得到的一个数值。如果新接收到的UMD PDU其序列号位于重排序窗口之外,则接收UM RLC实体认为其为新数据,相应更新重排序窗口的上边界,并将该数据放入接收缓存,等待进一步处理。如果接收到的UMD PDU其序列号位于重排序窗口之内,则需要进一步判断该序列号的 PDU 是否属于重复接收或则已经超过了重排序等待时间,如果是这两类PDU,则UM RLC接收实体直接采取删除这个PDU;否则,这个UMD PDU是一个正常接收到的PDU,则放入接收缓存,等待进一步处理。 UM RLC接收实体基于重排序计时器进行重排序操作,重排序计时器的具体取值由高层配置。UM RLC 接收实体对未接收到的PDU对应的序列号启动重排序计时器,在重排序计时器超时后,如果该PDU仍然没有收到,则放弃对该PDU的等待并相应的更新重排序等待的下边界;在重排序计时器超时前,收到了该PDU,则按照正常接收处理,将PDU放入接收缓存。UM RLC 接收实体并对每一个还没有接收到的PDU对应序列号都启动一个重排序计时器,而是整个接收UM RLC实体最多维护一个重排序计时器,以相应的变量记录每一次启动重排序计时器对应的序列号上边界和下边界,对该范围内的所有序列号空缺统一处理,当该范围内所有序列号空缺中的PDU都正确接收,则停止该重排序计时器;当该重排序计时器超时后,如果仍然有新的接收序列号空隙,则对后续所有新的空隙重启重排序计时器,并记录相应的重排序等待的序列号上边界和下边界。 对于UM RLC接收实体中放置于接收缓存中的PDU,一旦该PDU序列号超出了重排序窗口或者超出了目前重排序等待的下边界,则将该UMD PDU去掉RLC头部,重组成为RLC SDU并按照序列号的升序顺序递交到高层。 2、AM传输解析 已经收到的肯 VT(A)下一个将收到 确认的PDU序列号 已提交PDU后 请求重传的PDU VT(S)下一个将传输的PDU序列号 VT(MS)=VT(A)+ AM_Window_Size 定确认的PDU 发送窗口 AM RLC实体发送端优先发送重传的RLC PDU,AM RLC实体发送端维护状态变量VT(S),含义为分配给下一个新生成的RLC PDU的序列号数值。该变量初始值为零,当生成一个新的 AMD PDU 时,将该变量作为该PDU的序列号,然后将该变量的数值加一。 AM RLC 实体发送端维护一个发送窗口,如图所示,发送窗口的下边界定义为收到接收端肯定确认且连续的最高PDU紧接着的下一个序列号的数值。发送窗口的上边界为下边界的数值加上窗口的大小。窗口大小为常数值 512,即为AM序列号空间长度 1024的一半。AM RLC实体发送端不会发送任何序列号位于发送窗口之外的AMD PDU到底层。AM RLC实体发送端根据对端发来的状态PDU中包含的肯定确认来更新发送窗口变量,发送窗口的下边界总是更新为当前发送窗口内的最小需要收到肯定确认的PDU的序列号。 AM RLC实体发送端根据对端发来的状态PDU中包含的肯定确认来更新发送窗口变量,发送窗口的下边界总是更新为当前发送窗口内的最小需要收到肯定确认的PDU的序列号。 AM RLC 实体接收端基于AMD PDU的序列号来完成窗口维护和更新,重复接收检测、重排序和状态报告等功能。AMD PDU的序列号10比特,窗口大小为512在进行序列号比较和判断等操作时,需要考虑序列号翻转问题。序列号实际取值范围为[0,1023],在对序列号进行比较判断是需要进行模1024。 AM RLC实体接收端维护一个接收窗口,如图所示,其中接收窗口的下边界为当前接收到的连续AMD PDU中序列号最高的紧接着的一个序列号数值VR(R);接收窗口的上边界是由下边界加上窗口大小而得到的数值。如果新接收到的AMD PDU其序列号位于接收窗口之外或者该PDU分段已经收到过,则AM RLC实体接收端删除收到的数据;否则放入接收缓存,等待进一步处理,对已经收到的PDU分段,删除其重复接收部分。 AM RLC实体接收端基于重排序计时器来进行重排序操作,重排序进行重排序操作,重排序计时器的具体取值由高层配置。在重排序计时器时后,该空隙处的 PDU 仍旧没有收到,则认为检测到RLC PDU接收失败,根据情况发起状态报告过程;在重排序计时器超时前,收到了空隙出的 PDU,则按照正常接受处理,将PDU放入接收缓存中,AM RLC实体接收端并不是对每一处序列号空隙都启动一个重排序计时器,而是整个AM RLC实体接收端仅维护最多一个重排序计时器,以相应变量记录每次启动的重排序计时器对应的序列号上边界和下边界,对该范围内的序列号空隙统一对待;该范围内所有序列号空隙处的PDU都正确接收后,停止该重排序计时器;当该重排序计时器超时后,如果后续仍旧有新的接收序列号空隙,则对后续的空隙重启重排序计时器,并记录相应的重排序等待的序列号上边界和下边界。位于AM RLC实体接收端接收缓存中的PDU,一旦它们的序列号超出了接收窗口,则将该AMD PDU去掉RLC头部,重组成为了RLC SDU并按照序列号的升序顺序发送到高层。 ARQ过程 AMRLC实体发送端收到接收端的STATUS PDU有关AMD PDU或AMD PDU分段的否定确VR(R) 下一个完整接收的连续PDU的序列号 VR(MS)经过重排序检测的PDU序列号上边界 VR(H)接收到的PDU最大序列号加1 已提交的PDU 接收窗口 重排序以及状态报告操作的时间窗 丢失的PDU 未成功接收 未成功接收 认,对于AMDPDU序列号位于发送窗口内的已发送部分,认为该确认的AMD PDU或AMD PDU分段需要重传,记录该AMD PDU或AMD PDU分段的重传次数,初次重传计数器为0,以后每次重传计数器加1,当计数器大于重传次数是,向上层报告。 重传AMD PDU或AMD PDU分段式其轮询比特需根据当前需要重新设置,当下层指示的传输机会中RLC PDU的大小足够容纳需要重传的AMD PDU时,则直接发送该AMD PDU至下层,否则需要根据下层传输机会中指示的大小重新对需要重传的AMD PDU进行分段,如果需要重传数据本身为AMD PDU分段式,则根据需要切断原始的AMD PDU的相应数据在和部分组成新的AMD PDU分段一适应下层指示的传输机会中RLC PDU的大小。在构造AMD PDU分段式,仅对原始AMD PDU的数据部分进行新的映射并按照实际分段和串接情况组织新的包头,最终形成新的AMD PDU分段。 POLLING过程 Polling实现的方式为将RLC PDU中的P域(轮询比特)置为1,发送携带Polling的RLC PDU后,记录当前已经发送的PDU中最高的序列号为Polling序列号,并启动或重启动Polling重传计数器。 当收到记录的Polling序列号相关的肯定火否定确认后,停止并复位轮询重传计数器,此次轮询过程结束。 当Polling计数器超时,则发起一次新的Polling过程。如果此时发送缓存和重传缓存均为空或者没有新的RLC PDU传输,则将当前已经传输过的序列号最高的AMD PDU或者任意没有收到肯定确认的AMD PDU进行重传,用以携带Polling比特。 3、状态报告解析 AMD RLC 实体向对等端发送状态报告,用以告知其 RLC PDU 的是否成功接收。触发状态报告的条件包括: (1)接收到来自 AM RLC 实体对等端的探询; (2)检测到 RLC PDU 的接收失败。 需要注意的是,如果相关携带探询的RLC PDU仍旧处于重排序计时器检测的阶段,则需要延迟到该 PDU 的接收状态明确后再触发状态报告。 RRC 层可以配置RLC是否启动状态报告禁止功能。该功能主要是为了避免频繁发送状态报告。当状态报告禁止功能开启,则对于触发的状态报告只能延迟到状态报告禁止计时器超时后的第一次传输机会才能根据最新的接收状态发送;在状态PDU发往底层之后,启动状态报告禁止计时器。状态报告的内容包括两部分:肯定确认部分(ACK_SN)和否定确认部分(NACK_SN)。其中否定确认部分为当前接收窗口中已经检测到接收失败的RLC PDU的序列号列表,并按照序列号和字节分段升序排列。当存在一个AMD PDU中部分字节而非全部接收失败的情况,除了需要用序列号指示,还需要携带接收失败部分的起始与终止字节位置。肯定确认部分设置为未在此状态报告中包含并且紧接着的下一个没有收到的RLC PDU的序列号。简单来讲,状态报告的含义为除了在本状态报告明确列出的接收失败的RLC PDU或分段以外,其余所有已肯定确认指示(ACK SN)为上限的PDU均已经正确接收。 4、三种实体比较: (1)对于TM/UM,各有一个发送与接收实体(2)AM接收发送同属于一个实体 由于AM支持ARQ,发送端需要接收端提供确认信息来决定是否需要重传,因此AM接收发送同属于一个实体 5、RLC PDU: (1)RLC数据PDU: 1)TMD PDU:因为透明传输,所以不需要做任何处理直接透传到MAC 2)UMD PDU: 3)AMD PDU:第一次发送的RLC SDU的一部分生成的PDU,或者在重传的时候不需要分段的PDU 4)AMD PDU segment:重传的PDU需要分段,从而产生(2)RLC控制PDU:(3)STATUS PDU: 格式的选取取决于: (1)对分段的支持(2)上层所使用的业务(3)针对AM实体的重传机制的支持 6、ARQ与HARQ HARQ和ARQ都可以通过冲传来纠正传输过程中的错误,因此看起来在RLC上的ARQ事多余的,但是在某些情况下HARQ并不能够纠正所有的错误:(1)NACK重传过程出错被理解成ACK(2)HARQ重传次数超过门限值 虽然上述错误概率很低,但TCP业务仍旧无法接受,在告诉移动数据业务室会导致性能降低。 PDCP协议学习总结 1、PDCP架构 UE/E-UTRANPDCP entiy Radio BearersPDCP-SAPPDCP-SAPC-SAPPDCP entityPDCP entity...PDCP sublayerPDCPSDU...RLC UM-SAPRLC AM-SAPRLC sublayer 2、PDCP实体: UE/E-UTRANTransmitting PDCP entityReceiving PDCP entityE-UTRAN/UESequence numberingHeader Compression(u-plane only)Packets associated to a PDCP SDU Integrity Protection(c-plane only)Ciphering Packets not associated to a PDCP SDUIn order delivery and duplicate detection(u-plane only)Header Decompression(u-plane only)Packets associated to a PDCP SDUIntegrity Verification(c-plane only)DecipheringPackets not associated to a PDCP SDUAdd PDCP headerRemove PDCP HeaderRadio Interface(Uu)一个UE可以定义多个PDCP实体,可以对携带用户面数据的每个PDCP实体进行配置,来使用头压缩。每个PDCP实体携带一个无线承载的数据。根据无线承载所携带的数据,PDCP实体对应于控制平面或者用户平面 3、PCDP层服务 向上层提供的服务:(PDCP提供服务给UE的RRC层和用户面高层)(1)数据传输(2)头压缩(3)加密(4)完整性保护 从下层得到的服务:(RLC层向PDCP层提供服务) (1)确认的数据传输业务,包括PDCP PDU成功传输的指示(2)非确认的数据传输业务 (3)有序传送,除了在切换时的情况(4)重复丢弃,除了在切换时的情况 4、PDCP层功能 (1)发送和接收实体利用ROHC协议对IP数据流进行相应的头压缩和解压缩(2)用户面数据或者控制面数据的传输 (3)维护RLC AM模式下的映射的无线承载的PDCP SN(4)下层重建时,上层PDU的有序传送 (5)下层重建时,RLC AM模式下的映射的无线承载的下层SDU重复消除(6)用户面数据和控制面数据的加密和解密(7)控制面数据的完整性保护与完整性验证(8)基于计时器的丢弃(9)重复丢弃 5、PDCP过程(具体过程见page 3)(1)PDCP数据传输过程 上行数据传输过程:每一个PDCP SDU对应一个Discard Timer,一旦由高层接收到一个PDCP SDU,即启动该SDU对应的Discard Timer。同时,进行发送相关的状态变量更新及加密、完整性保护等,具体过程如图2所示。 下行数据传输过程:在不需重建的情况下,PDCP实体在接收到RLC AM实体提交的PDCP PDU时,不需执行重排序过程,因为RLC AM在向PDCP实体提交PDCP PDU时,已保证顺序递交。若UE先从源eNodeB收到一些PDCP SDU,重建开始后从目的eNodeB接收PDCP SDU(其中部分是源eNodeB转给目的eNodeB的,并且有一些是源eNodeB已发给UE但尚未得到确认的),因此,UE的PDCP实体收到的PDCP SDU可能是乱序并且有重复的,因此对于RLC AM模式,在重建情况下,PDCP接收实体需对接收的PDCP SDU进行重排序和重复检测。 (2)重建过程 上行数据传输过程:映射到RLC AM的DRB过程 映射到RLC UM的DRB过程 SRB过程 下行数据传输过程:映射到RLC AM的DRB过程 映射到RLC UM的DRB过程 SRB过程(3)PDCP状态报告 传输: 接收: (4)PDCP丢弃:PDCP SDU的Discard_Timer超时或PDCP SDU的成功传输有PDCp状态报告确认,UE丢弃PDCP SDU及相应的PDCP PDU(5)头压缩与解压缩: (6)加密和解密:加密不用于PDCP控制PDU 控制面:PDCP PDU中数据部分及MAC-I 用户面:PDCP PDU的数据部分 (对消息和加密流做异或(XOR)运算来实现的,这里加密流是由基于接入层(AS)导出密钥、无线承载ID、传输方向(上行或下行)以及COUNT值的加密算法所生成的。) (7)完整性保护及确认:该功能仅用于SRB(8)未知的、意外的以及错误的协议数据的处理 6、PDCP协议数据单元及格式 PDCP数据PDU传送:一个PDU SDU SN、包含一个基于非压缩的PDCP SDU用户面数据、包含一个基于压缩的PDCP SDU用户面数据、控制平面数据、只有SRB的MAC-I域 PDCP控制PDU传送:PDCP状态报告、头压缩信息 7、参数 (1)PDCP SN: (2)DATA:未压缩PDCP SDU(用户面或控制面数据)/压缩PDCP SDU(用户面数据)(3)MAC-I:消息认证码、未经过完整性保护的控制面数据MAC-I用0填充(4)COUNT:HFN+PDCP SN(5)R:保留位 (6)D/C:控制PDU或数据PDU(7)PDU type:status/ROHC/received(8)FMS:第一个丢失的PDCP SDU的PDCP SN值 (9)Bitmap:PDCP SDU是否被接收并正确的进行选择性解压 8、变量 PDCP实体发送端 (1)Next_PDCP_TX_SN:给定PDCP实体的下一个PDCP SDU的PDCP SN,实体重建时置0(2)TX_HFN:sehngcheng COUNT值的HFN值(COUNT值用于一个给定的PDCP实体的PDCP PDU),实体重建时置0 PDCP实体接收端 (1)Next_PDCP_RX_SN:下一个期望的PDCP SN,有一个给定PDCP实体的接收方给出,实体重建时置0(2)RX_HFN:生成COUNT值的HFN值,实体重建时置0(3)Last_Submitted_PDCP_RX_SN:传输到上层的最后一个PDCP SDU的SN,实体重建4095 9、常量 (1)Reordering_Window:2048,PDCP SN的一半,用于无线承载应设在RLC AM上的情况(2)Maximum_PDCP_SN: 10、定时器 (1)Discard_Timer丢弃定时器(2)Flush_Timer清空定时器 5.1 数据传输过程 5.1.1 上行 从上层接收到PDCP SDU后 UE启动与此PDCP相关量的discardTimer 对于从上层接收到的PDCP SDU UE应关联相应于Next_PDCP_TX_SN的PDCP SN到PDCP SDU UE应执行PDCP SDU头压缩 UE应执行完整性保密 UE应使用基于TX_HFN的COUNT以及关联于PDCP SDU的PDCP SN值进行加密 UE将Next_PDCP_TX_SN加1 若果Next_PDCP_TX_SN﹥Maximum_PDCP_SN UE应将Next_PDCP_TX_SN置0 UE应将TX_HFN加1 UE应将最后产生的PDCP Data PDU传送给低层 5.1.2 下行 一、DRB过程 1、映射到RLC AM的DRB过程 对于映射到 RLC AM的DRB,在接收到低层的PDCP Data PDU时 (1)如果接收到的PDCP SN-Last_Submitted_PDCP_RX_SN>reordering_Window 或0≤Last_Submitted_PDCP_RX_SN-接收到的PDCP SN<Reordering_Window Last_Submitted_PDCP_RX_SN0Maximum_PDCP_SNReordering_WindowNext_PDCP_RX_SNReceived PDCP SNRX_HFN-1 图5.1 Received PDCP SN-Last_Submitted_PDCP_RX_SN>reordering_Window 1)如果接收到的PDCP SN>Next_PDCP_RX_SN 0Last_Submitted_PDCP_RX_SNMaximum_PDCP_SNNext_PDCP_RX_SNReceived PDCP SNRX_HFN-1且received PDCP SN>Next_PDCP_RX_SN 图5.2 0≤Last_Submitted_PDCP_RX_SN-received PDCP SN<Reordering_Window UE应使用基于RX_HFN-1的COUNT与接收到的PDCP SN值,解密此PDCP 2)否则 0Last_Submitted_PDCP_RX_SNMaximum_PDCP_SNReceived PDCP SNNext_PDCP_RX_SNRX_HFN图5.3 0≤Last_Submitted_PDCP_RX_SN-received PDCP SN<Reordering_Window 且Next_PDCP_RX_SN >received PDCP SN UE应使用基于RX_HFN的COUNT与接收到的PDCP SN值,解密此PDCP PDU 3)UE应执行头压缩 4)UE应丢弃此PDCP SDU(2)否则,如果Next_PDCP_RX_SN-接收到的PDCP SN>Reordering_Window 0Last_Submitted_PDCP_RX_SNMaximum_PDCP_SNReceived PDCP SNRX_HFNNext_PDCP_RX_SN 图5.4 Next_PDCP_RX_SN -received PDCP SN>Reordering_Window 1)UE应将Next_HFN加1 2)UE应使用基于RX_HFN的COUNT与接收到的PDCP SN解密此PDCP PDU 3)UE应将Next_PDCP_RX_SN置为刚接收到的PDCP SN+1(4)否则,如果接收到的PDCP SN-Next_PDCP_RX_SN≥Reordering_Window 0Last_Submitted_PDCP_RX_SNMaximum_PDCP_SNNext_PDCP_RX_SNReceived PDCP SNRX_HFN-1 图5.5 received PDCP SN-Next_PDCP_RX_SN>Reordering_Window 1)UE应使用基于RX_HFN-1的COUNT与接收到的PDCP SN解密此PDCP PDU(5)否则,如果接收到的PDCP SN≥Next_PDCP_RX_SN Last_Submitted_PDCP_RX_SN0Maximum_PDCP_Reordering_WindowNext_PDCP_RX_SNReceived PDCP SNRX_HFN 图5.6 Received PDU SN≥Next_PDCP_RX_SN(1) Last_0Submitted_PDCP_RX_SNMaximum_PDCP_SNNext_PDCP_RX_SNReceived PDCP SNRX_HFN 图5.7 Received PDU SN≥Next_PDCP_RX_SN(2) Last_0Submitted_PDCP_RX_SNMaximum_PDCP_SNNext_PDCP_RX_SNReceived PDCP SNRX_HFN 图5.8 Received PDU SN≥Next_PDCP_RX_SN(3) 1)UE应使用基于RX_HFN的COUNT与接收到的PDCP SN解密此PDCP PDU 2)UE应将Next_PDCP_RX_SN置为接收到的PDCP SN+1 3)如果Next_PDCP_RX_SN>Maximum_PDCP_SN UE应将Next_PDCP_RX_SN置0 UE应将RX_HFN加1(6)否则,如果接收到的PDCP SN<Next_PDCP_RX_SN Last_Submitted_PDCP_RX_SN0Maximum_PDCP_SNReordering_WindowReceived PDCP SNRX_HFNNext_PDCP_RX_SN 图5.9 Received PDU SN<Next_PDCP_RX_SN(1) 0Last_Submitted_PDCP_RX_SNMaximum_PDCP_SNReceived PDCP SNRX_HFN Next_PDCP_RX_ 图5.10 Received PDU SN<Next_PDCP_RX_SN(2)0Last_Submitted_PDCP_RX_SNMaximum_PDCP_SNReceived PDCP SNNext_PDCP_RX_SNRX_HFN图5.11 Received PDU SN<Next_PDCP_RX_SN(3) 1)UE应使用基于RX_HFN的COUNT值域接收到的PDCP SN值解密此PDCP PDU(7)如果上面没有丢弃此PDCP PDU 1)UE应执行PDCP PDU的解密与头压缩 2)如果一个具有相同PDCP SN值的PDCP PDU被存储 UE应丢弃此PDU 3)否则 UE应存储此PDCP SDU 4)如果由于下层重建导致PDCP没有接收到此PDCP PDU UE应把相关的COUNT值按照升序传递给上层: a.所有存储的,相关COUNT值小于接收PDCP SDU的COUNT值的PDCP SDU b.所有存储的,从接收到的PDCP SDU的COUNT值开始,连续COUNT值对应的PDCPSDU UE应将Last_Submitted_PDCP_RX_SN置为最后递交给高层的PDCP SDU的PDCP SN值 5)否则,如果接收到的PDCP SN=Last_Submitted_PDCP_RX_SN﹢1,6)或者接收到的PDCP SN=Last_Submitted_PDCP_RX_SN-Maximum_PDCP_SN UE应把相关COUNT值按照升序传递给上层 a.所有存储的,从接收到的PDCP SDU的COUNT值开始,连续COUNT值对应的PDCP SDU UE应将Last_Submitted_PDCP_RX_SN置为最后递交给高层的PDCP SDU的 PDCP SN值 2、映射到RLC UM的DRB过程 对于映射到RLC UM的DRN,在接收到低层的PDCP Data PDU以后(1)如果接收到的PDCP SN<Next_PDCP_RX_SN 1)UE应将RX_HFN加1(2)UE应使用基于RX_HFN的COUNT值与接收到的PDCP SN值来解密此PDCP Data PDU(3)如果Next_PDCP_RX_SN>Maximum_PDCP_SN 1)UE应将Next_PDCP_RX_SN置0 2)UE应将RX_HFN﹢1(4)执行已解密的PDCP Data PDU的头压缩(5)UE应将最后产生的PDCP SDU递交给上层 二、SRB过程 对于SRB,在接收到低层的PDCP Data PDU后(1)如果接收的PDCP SN<Next_PDCP_RX_SN 1)UE应使用基于RX_HFN﹢1的COUNT与接收到的PDCP SN值来解密此PDU以及确认其完整性 (2)否则 1)UE应使用基于RX_HFN的COUNT与接收到的PDCP SN值来解密此PDU以及确认其完整性 (3)如果完整性确认使用并成功通过,或 (4)如果完整性确认不适用 1)如果接收的PDCP SN<Next_PDCP_RX_SN UE应将RX_HFN加1 2)UE应将Next_PDCP_RX_SN置为接收到的PDCP SN﹢1 3)如果Next_PDCP_RX_SN>Maximum_PDCP_SN UE应将Next_PDCP_RX_SN置0 UE应将RX_HFN加1 4)UE应将最后产生的PDCP SDU递交给上层(5)否则,如果完整性确认适用,但失败 1)UE应丢弃接收到的PDCP Data PDU 2)UE应将完整性确认失败报告递交给上层 5.2 重建过程 5.2.1 上行 1、映射到RLC AM的DRB过程 当上层请求一次PDCP重建时 (1)UE应重置上行链路的头压缩协议 (2)重建过程期间,UE应使用加密算法及上层提供的密钥加密 (3)从第一个对应的PDCP PDU成功传递但没有被下层确认的PDCP SDU开始,在如PDCP重建之前,执行所有由与此PDCP SDU对应的COUNT开始的,按照COUNT升序排列的PDCP SN值对应的PDCP SDU的重传或传输(4)UE应执行DCP SDU的头压缩 (5)UE应使用与此PDCP SDU关联的COUNT值来加密此PDCP SDU(6)UE应将最后产生的PDCP Data PDU传递给下层 2、映射到RLC UM的DRB过程 当上层请求一次PDCP重建时 (1)UE应重置上行链路的头压缩协议 (2)UE应置Next_PDCP_TX_SN以及TX_HFN为0(3)重建过程期间,UE应使用加密算法及上层提供的密钥加密 (4)对于每一个已经对应于一个PDCP SN,但相应的PDU没有事先传递给低层的PDCP SDU 1)UE认为此PDCP SDU是从上层接收而来 2)在PDCP重建之前,在不重启discardTimer的情况下,UE应按照与PDCP SDU关联的COUNT值的升序传输PDCP SDU 3、SRB过程 当上层请求一次PDCP重建时 (1)UE应置Next_PDCP_TX_SN及TX_HFN为0(2)UE应丢弃所有存储的PDCP SDU和PDCP PDU(3)重建过程期间,UE应使用加密和完整性保护算法,以及使用上层提供的密钥进行加密 5.2.2 下行 1、映射到RLC AM的DRB过程 当上层请求一次PDCP重建时 (1)UE应处理由于下层重建而从下层接收到的PDCP Data PDU(2)UE应重置下行链路的头压缩协议 (3)重建过程期间,UE应使用加密算法和上层提供的密钥进行加密 2、映射到RLC UM的DRB过程 当上层请求一次PDCP重建时 (1)UE应处理由于下层重建而从下层接收到的PDCP Data PDU(2)UE 应重置下行链路的头压缩协议 (3)UE应将Next_PDCP_RX_SN及RX_HFN置0(4)重建过程奇迹,UE应使用加密算法和上层提供的密钥进行加密 3、SRB过程 当上层请求一次PDCP重建时 (1)UE应丢弃由于下层重建而从下层接收来的PDCP Data PDU(2)UE应将Next_PDCP_RX_SN及RX_HFN置0(3)UE应丢弃所有存储的PDCP SDU和PDCP PDU(4)重建过程期间,UE 应使用加密和完整性保护算法,以及使用上层提供的密钥进行加密 5.3 PDCP状态报告 5.3.1 传输 对于映射到RLC AM的RB当上层请求一次PDCP重建时 如果此RB被上层配置用于在上行链路发送一个PDCP状态报告,在处理完因下层重建而从下层接收来的PDCP Data PCU以后,UE应按下述指示进行状态报告:(1)UE应将FMS置为第一个丢失的PDCP SDU的PDCP SN值 (2)如果至少有一个失序PDCP SDU被存储,则UE分配一个Bitmap field,长度等于从第一个丢失的PDCP SDU开始知道最后一个失序的PDCP SDU结束的PDCP SN的个数,四舍五入到下一个8的倍数 (3)UE将所有低层指示还未接受到的PDCP SDU以及任意解压缩失败的PDCP SDU在Bitmap field中对应的区域置0(4)对于其他的PDCP SDU,对应区域置1 5.3.2 接收 当在下行链路接收到一个PDCP状态报告时,对已映射到RLC AM的RB 对于每个PDCP SDU,如果在Bitmap中对应的bit位为1,或者相关联的COUNT值小于FMS字段确定的PDCP SDU的COUNT值,则相应PDCP SDU的成功传输将被确认,且UE应按照PDCP丢弃过程的规定来处理此PDCP。 5.4 PDCP丢弃 当用于PDCP SDU的discardTimer终止,或PDCP SDU的成功传输被PDCP状态报告确认,UE应就其此PDCP SDU及其对应的PDCP PDU。如果对应的PDCP PDU已经成功传递给下层,则丢弃需要指示给下层。 5.5 头压缩与解压缩 5.5.1 协议与简表 头压缩协议基于可靠性头压缩(ROHC)框架,存在多种头压缩算法,成为简表,定义用于ROHC框架。每个简表为特定的网络层、传输层或上层集合所专用。5.5.2 头压缩配置 与DRB关联的PDCP实体可被上层配置来使用头压缩 5.5.3 协议参数 压缩与解压缩端之间定义了必须有上层配置的强制配置参数,定义ROHC信道(单行信道,上行或下行),属于同一个PDCP实体的信道使用相同的配置。M、N/A、LARGE_CIDs、PROFILES(M)、FEEDBACK_FOR(N/A)、MRRU(N/A)5.5.4 头压缩 生成两种类型的输出数据包: (1)压缩包,各自关联于一个PDCP SDU(与相关PDCP SDU相同的PDCP SN和COUNT关联)(2)独立数据包,为关联于PDCP SDU,即零散的ROHC反馈包(不与PDCP SDU关联,不与PDCP SN关联,不加密) 5.5.5 头解压缩 如果上层为关联与用户平面数据的PDCP实体配置了头解压缩,则PDCP PDU将在执行解密程序后由头解压协议进行解压缩 5.6 加密和解密 1、对于控制平面,加密的数据单元是PDCP PDU以及MAC-I的部分数据 2、对于用户平面,加密的数据单元是PDCP PDU的部分数据 3、加密不适用与PDCP控制PDU 4、加密算法和密钥由上层配置 5、加密功能由上层激活,激活后,应用于所有上层指示的上下行PDCP PDU 6、加密功能请求的输入:COUNT、DIRECTION 7、PDCP请求的,由上层提供的参数:BEARER、KEY(控制面/用户面)(1)BEARER:承载的标识,用于RB身份的标识 (2)DIRECTION:标识传输的方向,0用于上行、1用于下行(3)KEY:控制平面和用户平面的加密密钥分别为KRRCenc与KUPenc 5.7 完整性保护及确认 1、完整性保护+完整性确认 2、用于与SRB关联的PDCP 3、受完整性保护的数据单元为:PDU头和加密前的PDU部分数据 4、完整性保护算法和密钥由上层提供 5、完整性保护功能由上层激活,激活后,应用于从上层指定的PDU之后的上下行PDCP PDU 6、完整性保护算法的输入:COUNT、DIRECTION 7、PDCP请求的,由上层提供的数:BEARER、KEY 8、传输时,UE计算MAC-I字段的值 接收时,UE通过基于以上指定的输入参数计算X-MAX来确认PDCP PDU的完整性。如果计算得到的X-MAC与接收的MAC-I值相对应,则完整性保护确认成功 5.8 未知的、意外的以及错误的协议数据的处理 PDCP收到一个包括保留至或非法值的PDCP PDU时,PDCP实体应丢弃收到的PDU 补充PDCP实现LTE 接入层安全性过程 PDCP层通过接受高层的安全配置信令,进入相应的状态后才能对数据和信令进行加密及完整性保护,在正常的RRC连接建立完成并且通过层三的鉴权完成后,启动接入层的安全模式命令。网络端首先获得由非介入层的AKA(Authentication and Key Agreement)过程产生密钥KASME,然后RRC由该参数计算得到KeNB,再由KeNB计算得到控制平面的完整性保护密钥KRRCint,以及用户平面和控制平面需要的密钥KUPenc、KRRCenc,在组装成安全模式命令(SecurityModiCommand),发送给终端,配置中端的安全性参数。当网络端发出SecurityModeCommand消息后开始对下行数据进行加密,终端的PDCP层接收到SecurityModeCommand消息后,先将其发送到RRC进行解码操作,得出网络端配给终端的完整性保护算法,再将完整性保护算法和相应的密钥发给PDCP层,PDCP就可以对SecurityModeCommand消息进行完整性校验。如果没有通过完整性校验,则向网络端发送安全模式失败(SecurityModeFailure);如果通过,则取出里面包含的加密算法,并向网络发送安全模式完成(SecurityModeComplete)消息,对其进行完整性保护但是不加密,自此后开始对上行数据加密,下行数据解密。网络端收到该消息后开始对上行数据解密,安全性建好后,开始对信令进行完整性保护。 接入层的安全性是通过加密算法和完整性保护算法来实现的。 接收时,UE通过基于以上指定的输入参数计算X-MAX来确认PDCP PDU的完整性。如果计算得到的X-MAC与接收的MAC-I值相对应,则完整性保护确认成功 Coap协议学习总结 1、Coap协议介绍 在2010年3月,CoRE工作组开始制定CoAP协议,到目前为止,该协议还没有定稿。CoAP协议是为物联网中资源受限设备制定的应用层协议。CoAP 是受限制的应用协议(Constrained Application Protocol)的代名词。在最近几年的时间中,专家们预测会有更多的设备相互连接,而这些设备的数量将远超人类的数量。在这种大背景下,物联网和 M2M技术应运而生。虽然对人而言,连接入互联网显得方便容易,但是对于那些微型设备而言接入互联网非常困难。在当前由PC机组成的世界,信息交换是通过 TCP和应用层协议HTTP实现的。但是对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网,CoAP协议被 设计出来。CoAP是一种应用层协议,它运行于UDP协议之上而不是像HTTP那样运行于TCP之上。CoAP协议非常的小巧,最小的数据包仅为4字节。 为了克服HTTP对于受限环境的劣势,CoAP既考虑到数据报长度的最优化,又考虑到提供可靠通信。一方面,CoAP提供URI,REST 式的方法如GET,POST,PUT和DELETE,以及可以独立定义的头选项提供的可扩展性。另一方面,CoAP基于轻量级的UDP协议,并且允许IP 多播。而组通信是物联网最重要的需求之一,比如说用于自动化应用中。为了弥补UDP传输的不可靠性,CoAP定义了带有重传机制的事务处理机制。并且提供 资源发现机制,并带有资源描述。 CoAP协议不是盲目的压缩了HTTP协议,考虑到资源受限设备的低处理能力和低功耗限制,CoAP重新设计了HTTP的部分功能以适应设备的约束条件。另外,为了使协议适应物联网和M2M应用,CoAP协议改进了一些机制,同时增加了一些功能。下图1显示了HTTP和CoAP的协议栈。CoAP和HTTP在传输层有明显的区别。HTTP协议的传输层采用了TCP协议,而CoAP协议的传输层使用UDP 协议,开销明显降低,并支持多播。 事务层(Transaction layer)用于处理节点之间的信息交换,同时提供组播和拥塞控制等功能。请求/响应层(Request/Responselayer)用于传输对资源进行操作的请求和响应信息。CoAP协议的REST构架是基于该层的通信。CoAP的双层处理方式,使得CoAP没有采用TCP协议,也可以提供可靠的传输 机制。利用默认的定时器和指数增长的重传间隔时间实现CON(Confirmable)消息的重传,直到接收方发出确认消息。另外,CoAP的双层处理方 式支持异步通信,这是物联网和M2M应用的关键需求之一。 2、CoAP协议是否可以替换HTTP协议? CoAP并不能替代HTTP协议,但是对于那些小设备(256KB Flash 32KB RAM 20MHz主频)而言CoAP的确是一个好的解决方案。 3、CoAP的交互模型和消息类型 CoAP使用类似于HTTP的请求/响应模型:CoAP终端节点作为客户端向服务器发送一个或多个请求,服务器端回复客户端的CoAP请求。不同于 HTTP,CoAP的请求和响应在发送之前不需要事先建立连接,而是通过CoAP信息来进行异步信息交换。CoAP协议使用UDP进行传输。这是通过信息层选项的可靠性来实现的。CoAP采用和HTTP协议相同的请求响应工作模式。CoAP协议共有4中不同的消息类型。 CON——需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。NON——不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。ACK——应答消息,如果接受到CON消息的响应。 RST——复位消息,当接收者接受到的消息包含一个错误,接受者解析消息或者不再关心发送者发送的内容,那么复位消息将会被发送。虽然CoAP协议目前还在制定当中,但Contiki和TinyOS嵌入式操作系统已经支持CoAP协议。Contiki是一个多任务操作系统,并带有uIPv6协议栈,适用于嵌入式系统和无线传感器网络,它占用系统资源小,适用于资源受限的网络和设备。目前,火狐浏览器已经集成了Copper插件,从而实现了CoAP协议。但是这种方式只能读取传感器节点上的实时数据,而不能查看各种历史数据。为此,在Contiki系统的基础上,基于uIPv6START KIT无线网络开发套件,用自己编写的客户端程序实现了和数据库的交互,把历史数据存入数据库中,从而在Web浏览器端不仅可以访问传感器节点上的实时数 据,还能查看历史数据,以便于分析问题。 4、CoAP消息结构 一个CoAP消息最小为4个字节,以下是CoAP协议不同部分的描述。【版本Version】:类似于IPv6和IPv6,仅仅是一个版本号。 【消息类型Message Type】:CON,NON,ACK,RST。这些消息类型相当于HTTP协议的PUTGET等 【消息ID Message ID】:每个CoAP消息都有一个ID,在一次会话中ID总是保持不变。但是在这个会话之后该ID会被回收利用。【标记 Token】:标记是ID的另一种表现、【选项 Options】:CoAP选项类似于HTTP请求头,它包括CoAP消息本身,例如CoAP端口号,CoAP主机和CoAP查询字符串等。【负载Payload】:真正有用的被交互的数据。 图 CoAP消息结构 5、CoAP的URL 在 HTTP的世界中,正式RESTFul协议由于其简单性和适用性,在WEB应用中越来越受欢迎,这样的道理同样适用于CoAP。一个CoAP资源可以被一 个URI所描述,例如一个设备可以测量温度,那么这个温度传感器的URI被描述为:CoAP://machine.address:5683 /sensors/temperature。请注意,CoAP的默认UDP端口号为5683。 6、CoAP观察模式 在物联网的世界中,你需要去监控某个传感器例如温度或湿度等。在这种情况下,CoAP客户端并不需要不停的查询CoAP服务器端的数据变化情况。CoAP客 户端可以发送一个观察请求到服务器端。从该时间点开始计算,服务器便会记住客户端的连接信息,一旦温度发生变化,服务器将会把新结果发送给客户端。如果客 户端不在希望获得温度检测结果,那么客户端将会发送一个RST复位请求,此时服务器便会清除与客户端的连接信息。 7、CoAP块传输 CoAP协议的特点是传输的内容小巧精简,但是在某些情况下不得不传输较大的数据。在这种情况下可以使用CoAP协议中的某个选项设定分块传输的大小,那么无论是服务器或客户端可完成分片和组装这两个动作。 8、CoAP协议的特点: (1)报头压缩:CoAP包含一个紧凑的二进制报头和扩展报头。它只有短短的4 B的基本报头,基本报头后面跟扩展选项。一个典型的请求报头为10~20B。 报头部分各字段的含义如下:V(Version)表示CoAP协议的版本号;T(Type)表示消息的信息类型;OC(Option Count)表示头后面的可选的选项数量;Code表示消息的类型:请求消息、响应消息,或者是空消息;Message ID表示消息编号,用于重复消息检测、匹配消息类型等。 (2)方法和URIs:为了实现客户端访问服务器上的资源,CoAP支持GET、PUT、POST和DELETE等方法。CoAP还支持URIs,这是Web架构的主要特点。(3)传输层使用UDP协议:CoAP协议是建立在UDP协议之上,以减少开销和支持组播功能。它也支持一个简单的停止和等待的可靠性传输机制。 (4)支持异步通信:HTTP对M2M(Machine-to-Machine)通信不适用,这是由于事务总是由客户端发起。而CoAP协议支持异步通信,这对M2M通信应用来说是常见的休眠/唤醒机制。 (5)支持资源发现:为了自主的发现和使用资源,它支持内置的资源发现格式,用于发现设备上的资源列表,或者用于设备向服务目录公告自己的资源。它支持RFC5785中的格式,在CoRE中用/.well—known/core的路径表示资源描述。 (6)支持缓存:CoAP协议支持资源描述的缓存以优化其性能。 (7)订阅机制:CoAP使用异步通信方式,用订阅机制实现从服务器到客户端的消息推送。实现CoAP的发布,订阅机制,它是请求成功后自动注册的 一种资源后处理程序。是由默认的EVENT_和PERIODIC_RESOURCEs来进行配置的。它们的事件和轮询处理程序用 EST.notify_subscri bers()函数来发布。 9、CoAP协议的火狐浏览器实现(B/S架构) B/S架构的系统结构如图9所示 系统由用户浏览器、Web服务器、IPv6智能网关、MX231CC节点组成。用户浏览器通过HTTP协议访问Web服务器,MX231CC节点通 过CoAP协议和IPv6智能网关进行通信,从而实现用户浏览器访问节点上资源的功能。图9中实线表示有线连接,虚线表示无线连接。 在当前的Contiki 2.5中,集成了CoAP 03和CoAP06这两个版本。这两个文件在Contiki 2.5的apps目录下,关于CoAP的核心内容都在这两个文件中。程序的主要部分为: AUTOSTART_PROCESSES(PERIODIC_RESOURCE()为进程的主体部分。 然后进行编译,编译成.elf文件,用JTAG下载器下载到节点上。节点地址设置为:2001:2::11:22ff::fe33:4499.这时,用火狐浏览器访问节点,因为火狐浏览器自带coap插件,如果用其他浏览器,那么需要进行coap的代理设置。以控制节点上的三色LED灯反转为例,用下 面的请求格式:GETcoap://[]: /readings其中mote_ip_address是节点的IPv6地址,port_number是节点的端口号,readings是客户端请求的资源(温度)。 所以在浏览器地址栏输入:coap://[2001:2::11:22ff:fe33:4499]:61616/toggle,作用是让节点上的三色LED灯进行反转。服务器端的响应信息如图10所示。 从浏览器端可以看出,CoAP协议支持Discover和Observe功能,具有GET、POST、PUT和DELETE等方法。Type表示信 息类型为ACK,Code为200,表示成功完成客户端的请求。事务ID为38 264,它用于重复信息检测,options为1表示有一个可选项,内容类型为text表示文本类型。 由此可以看出,通过火狐浏览器的CoAP协议,可以访问节点上的传感器资源。 10、CoAP协议的客户端实现(C/S架构) 通过火狐浏览器可以实现COAP协议,但是只能查看实时数据,不能查看历史数据。为此,这里搭建了一个C/S架构的环境。如图11所示。 图11中客户端软件是用基于。NET架构的C#语言编写的,数据库使用SQL Server 2008.通过此程序,可以每隔10 s读取一次数据,存入到数据库中。并可以通过前台的Web界面查看各种历史数据,包括温度、湿度、亮度等。 插入数据库中的数据如图12所示,图中显示的是室内的亮度值。 在Web浏览器端可以查看实时和历史数据,页面显示效果如图13所示。 由此看出,基于C/S架构的方式,不仅可以显示实时数据,还可以查看历史数据,以便及时发现问题,更加具有实用性。 PDCP协议学习总结 1、PDCP架构 UE/E-UTRANPDCP entiy Radio BearersPDCP-SAPPDCP-SAPC-SAPPDCP entityPDCP entity...PDCP sublayerPDCPSDU...RLC UM-SAPRLC AM-SAPRLC sublayer 2、PDCP实体: 一个UE可以定义多个PDCP实体,可以对携带用户面数据的每个PDCP实体进行配置,来使用头压缩。每个PDCP实体携带一个无线承载的数据(复用为2个)。根据无线承载所携带的数据,PDCP实体对应于控制平面DCCH或者用户平面DTCH 3、PCDP层服务 向上层提供的服务:(PDCP提供服务给UE的RRC层和用户面高层)(1)数据传输 (2)头压缩:IP包头压缩(3)加密 (4)完整性保护 从下层得到的服务:(RLC层向PDCP层提供服务) (1)确认的数据传输业务,包括PDCP PDU成功传输的指示(2)非确认的数据传输业务 (3)有序传送,除了在切换时的情况(4)重复丢弃,除了在切换时的情况 4、PDCP层功能 (1)发送和接收实体利用ROHC(ROBUST HEADER COMPRESSION)协议对IP数据流进行相应的头压缩和解压缩 (2)用户面数据或者控制面数据的传输 (3)维护RLC AM模式下的映射的无线承载的PDCP SN(4)下层重建时,上层PDU的有序传送 (5)下层重建时,RLC AM模式下的映射的无线承载的下层SDU重复消除(6)用户面数据和控制面数据的加密和解密 (7)控制面数据的完整性保护与完整性验证(RRC层和NAS层)(8)基于计时器的丢弃(9)重复丢弃 5、PDCP过程 (1)PDCP数据传输过程 上行数据传输过程:每一个PDCP SDU对应一个Discard Timer,一旦由高层接收到一个PDCP SDU,即启动该SDU对应的Discard Timer。同时,进行发送相关的状态变量更新及加密、完整性保护等,PDCP SDU的Discard_Timer超时或PDCP SDU的成功传输有PDCp状态报告确认,UE丢弃PDCP SDU及相应的PDCP PDU 下行数据传输过程:在不需重建的情况下,PDCP实体在接收到RLC AM实体提交的PDCP PDU时,不需执行重排序过程,因为RLC AM在向PDCP实体提交PDCP PDU时,已保证顺序递交。若UE先从源eNodeB收到一些PDCP SDU,重建开始后从目的eNodeB接收PDCP SDU(其中部分是源eNodeB转给目的eNodeB的,并且有一些是源eNodeB已发给UE但尚未得到确认的),因此,UE的PDCP实体收到的PDCP SDU可能是乱序并且有重复的,因此对于RLC AM模式,在重建情况下,PDCP接收实体需对接收的PDCP SDU进行重排序和重复检测。 (2)重建过程 上行数据传输过程:映射到RLC AM的DRB过程 映射到RLC UM的DRB过程 SRB过程 下行数据传输过程:映射到RLC AM的DRB过程 映射到RLC UM的DRB过程 SRB过程(4)PDCP丢弃:PDCP SDU的Discard_Timer超时或PDCP SDU的成功传输有PDCp状态报告确认,UE丢弃PDCP SDU及相应的PDCP PDU(5)头压缩与解压缩: (6)加密和解密:加密不用于PDCP控制PDU 控制面:PDCP PDU中数据部分及MAC-I 用户面:PDCP PDU的数据部分 (对消息和加密流做异或(XOR)运算来实现的,这里加密流是由基于接入层(AS)导出密钥、无线承载ID、传输方向(上行或下行)以及COUNT值的加密算法所生成的。) (7)完整性保护及确认:该功能仅用于SRB(8)未知的、意外的以及错误的协议数据的处理 6、PDCP协议数据单元及格式 PDCP数据PDU传送:一个PDU SDU SN、包含一个基于非压缩的PDCP SDU用户面数据、包含一个基于压缩的PDCP SDU用户面数据、控制平面数据、只有SRB的MAC-I域 PDCP控制PDU传送:PDCP状态报告、头压缩信息 5.5 头压缩与解压缩 5.5.1 协议与简表 头压缩协议基于可靠性头压缩(ROHC)框架,存在多种头压缩算法,成为简表,定义用于ROHC框架。每个简表为特定的网络层、传输层或上层集合所专用。5.5.2 头压缩配置 与DRB关联的PDCP实体可被上层配置来使用头压缩 5.5.3 协议参数 压缩与解压缩端之间定义了必须有上层配置的强制配置参数,定义ROHC信道(单行信道,上行或下行),属于同一个PDCP实体的信道使用相同的配置。M、N/A、LARGE_CIDs、PROFILES(M)、FEEDBACK_FOR(N/A)、MRRU(N/A)5.5.4 头压缩 生成两种类型的输出数据包: (1)压缩包,各自关联于一个PDCP SDU(与相关PDCP SDU相同的PDCP SN和COUNT关联)(2)独立数据包,为关联于PDCP SDU,即零散的ROHC反馈包(不与PDCP SDU关联,不与PDCP SN关联,不加密)5.5.5 头解压缩 如果上层为关联与用户平面数据的PDCP实体配置了头解压缩,则PDCP PDU将在执行解密程序后由头解压协议进行解压缩 5.6 加密和解密 1、对于控制平面,加密的数据单元是PDCP PDU以及MAC-I的部分数据 2、对于用户平面,加密的数据单元是PDCP PDU的部分数据 3、加密不适用于PDCP控制PDU 4、加密算法和密钥由上层配置 5、加密功能由上层激活,激活后,应用于所有上层指示的上下行PDCP PDU 7、PDCP请求的,由上层提供的参数:BEARER、KEY(控制面/用户面)(1)BEARER:承载的标识,用于RB身份的标识 (2)DIRECTION:标识传输的方向,0用于上行、1用于下行 (3)KEY:控制平面和用户平面的加密密钥分别为KRRCenc与KUPenc 5.7 完整性保护及确认 1、完整性保护+完整性确认 2、用于与SRB关联的PDCP 3、受完整性保护的数据单元为:PDU头和加密前的PDU部分数据 4、完整性保护算法和密钥由上层提供 5、完整性保护功能由上层激活,激活后,应用于从上层指定的PDU之后的上下行PDCP PDU 7、PDCP请求的,由上层提供的数:BEARER、KEY 8、传输时,UE计算MAC-I字段的值 接收时,UE通过基于以上指定的输入参数计算X-MAX来确认PDCP PDU的完整性。如果计算得到的X-MAC与接收的MAC-I值相对应,则完整性保护确认成功 5.8 未知的、意外的以及错误的协议数据的处理 PDCP收到一个包括保留值或非法值的PDCP PDU时,PDCP实体应丢弃收到的PDU 补充PDCP实现LTE 接入层安全性过程 PDCP层通过接受高层的安全配置信令,进入相应的状态后才能对数据和信令进行加密及完整性保护,在正常的RRC连接建立完成并且通过层三的鉴权完成后,启动接入层的安全模式命令。网络端首先获得由非接入层的AKA(Authentication and Key Agreement)过程产生密钥KASME,然后RRC由该参数计算得到KeNB,再由KeNB计算得到控制平面的完整性保护密钥KRRCint,以及用户平面和控制平面需要的密钥KUPenc、KRRCenc,在组装成安全模式命令(SecurityModiCommand),发送给终端,配置终端的安全性参数。当网络端发出SecurityModeCommand消息后开始对下行数据进行加密,终端的PDCP层接收到SecurityModeCommand消息后,先将其发送到RRC进行解码操作,得出网络端配给终端的完整性保护算法,再将完整性保护算法和相应的密钥发给PDCP层,PDCP就可以对SecurityModeCommand消息进行完整性校验。如果没有通过完整性校验,则向网络端发送安全模式失败(SecurityModeFailure);如果通过,则取出里面包含的加密算法,并向网络发送安全模式完成(SecurityModeComplete)消息,对其进行完整性保护但是不加密,自此后开始对上行数据加密,下行数据解密。网络端收到该消息后开始对上行数据解密,安全性建好后,开始对信令进行完整性保护。 接入层的安全性是通过加密算法和完整性保护算法来实现的。接收时,UE通过基于以上指定的输入参数计算X-MAX来确认PDCP PDU的完整性。如果计算得到的X-MAC与接收的MAC-I值相对应,则完整性保护确认成功 MODBUS通讯协议学习总结 1、协议分3个层次看: 协议应用函数层,如读写coil,寄存器; RTU或者ASCII传输层 硬件底层 2、比如上位机发来:01 06 00 01 02 D5 00 55 含义:表示上午12点05分开始采集,12*60+5=725=0X02D5 01地址 06表示功能码 00 01寄存器地址 02 D5数据 00 55 crc 3、就当是一个简单的协议看。其它的都是格式。比如:上位机发送A,下位机知道这个是>90分 按照他给的框架,自己再自由定义 比如:从机地址,可以写01-FF 255个这个是从机先固定好的。比如从机是01。上位机发了一串16进制数据,如果第一个字节是01,说明是在和自己通信。每台从机地址都不一样 再判断功能码。如03。这个看你写程序是怎么定义的。比如我这里是要读下位机采集到的数据,我这里就是设置了一个数组,把数据存了起来,等判断03的时候就把数据给上位机。 4、寄存器地址。自己定义,我这边是随便写的一个固定值 5、还有一个crc判断。读数据的时候,判断下。如果上位机发过来的crc,和自己计算出来的crc一样,才给返回数据 6、那个CRC怎么计算呢? 有固定的计算格式,只需调用即可。crc 在通过modbus串口传数据的时候用,网络上不用。第二篇:PDCP协议学习总结
第三篇:Coap协议学习总结
第四篇:PDCP协议学习总结
第五篇:MODBUS通讯协议学习总结