http://blog.sina.com.cn/s/blog_673b30dd0100j4p4.html

LTE中的切换,根据无线承载(Radio Bearer)的QoS要求的不同,可以分为无缝切换(Seamless handover)和无损切换(lossless handover)。

无缝切换,应用于对于时间延迟有严格要求,而对误包率(丢包率)具有相对容忍度的一些应用(比如,语音 VoIP)。无缝切换在LTE中可以降低切换的复杂度和时间延迟,但同时可能引起某些数据包的丢失。无缝切换主要应用于控制面的无线承载 (SRB)以及用户数据面RLC  UM 模式的无线承载。

在无缝切换的模式下,对于下行的数据传输,源eNodeB将尚未进行传输的PDCP SDU转发给目标eNodeB,对于经S1接口转发下来,尚未进行PDCP处理的下行数据,源eNodeB也同样转发给目标eNodeB。已经完成PDCP SDU传输的下行数据, 则无需转发给目标eNodeB。对于已经进行了部分PDCP SDU的传输,但尚存部分RLC PDU的数据,源eNodeB会将剩余的RLC PDU丢弃,也就是说,在无缝切换模式下,源eNodeB不会将下行数据的RLC 上下文 (RLC Context)转发给目标eNodeB,这样,这部分PDCP SDU的数据将会丢失。目标eNodeB侧,会将PDCP的SN和HFN重新置为零。同时,目标eNodeB在传输经由S1接口的下行数据之前,会优先传输源eNodeB通过X2接口转发过来的下行数据。我们知道,SGW在将下行通道切换到目标eNodeB之前会向源eNodeB发送“End Marker ”数据包。源eNodeB会将此数据包转发给目标eNodeB。目标eNodeB据此可以获知源eNodeB转发数据的结束。(基于X2的切换过程中,SGW发生变化时,是否会发送“End Marker”数据包?)

在无缝切换的模式下,对于上行的PDCP SDU数据, 同样,对于已经在源eNodeB中完成传输的数据,UE不会在目标eNodeB中重新发送。相反, 在目标eNodeB中,UE 将传输那些尚未在源eNodeB中传输的PDCP SDU数据 (对于已经完成了部分RLC PDU传输的 PDCP SDU数据,UE会在目标eNodeB中传输剩余部分的RLC PDU吗?RLC层在LTE中切换过程中的角色是什么?个人认为不会)。源eNodeB将所有接收到的PDCP SDU上行数据转发给SGW,其中可能包括有失序的PDCP SDU。对于无法组装成PDCP SDU的部分RLC PDU ,源eNodeB将把他们丢弃。也就是说, 源eNodeB并不将上行数据的RLC 上下文转发给目标eNodeB,这部分对应的PDCP SDU上行数据将会丢失。

无损切换主要用于RLC- AM模式的无线承载,典型的例子如FTP上下载,PDCP SDU传输的丢失可能对上层协议(TCP)的吞吐量有较大的影响,相反,对于时间延迟不象实时应用那样敏感。

在正常的工作模式下(即未发生切换时),UE和eNodeB上的RLC层保证了数据的有序传输,对于由于RLC的重传或者由于MAC层的HARQ引起的RLC层的失序,RLC层可以根据其头部的序列号来重新加以排序。LTE中, PDCP的头部也标有序列号, 可以以此来保证切换过程中数据的有序传输和重复检测,也可以用来保证切换过程中数据的无损传输。(为什么由PDCP层而不是RLC层来保证切换后数据的无损呢?)

在无损切换中,对于上行数据,切换到目标eNodeB后,UE会从第一个尚未在源eNodeB中得到确认的PDCP SDU开始,重传以后的PDCP SDU包(其中可能包括源eNodeB收到,但UE没有收到确认的PDCP SDU或UE虽收到确认,但失序的PDCP SDU),除非目标eNodeB通过PDCP 状态报告包确认收到其中的某些SDU(源eNodeB转发给目标eNodeB)。

如下图所示:

对于上行的数据,UE已经传输了SN号为1到5 的PDCP PDU,切换发生时(源eNodeB发送SN Status Transfer消息给目标eNodeB),源eNodeB只收到了SN号为1,2和4 的PDCP PDU 并向UE做了确认,对于序号为3和5的PDCP PDU,源eNodeB只收到了部分RLC PDU。UE会将SN标号为3,4和5的PDCP PDU放到PDCP的重传序列中,因为3是UE没有收到确认的第一个包,尽管源eNodeB已经收到了包4并且UE也得到了确认。

源eNodeB发送SN Status Transfer消息给目标eNodeB后,会将收到的连续PDCP SDU转发给SGW,图中,对应的是SN号为1和2的PDCP PDU。而对于收到的部分RLC PDU数据(对应SN号为3和5 的PDCP PDU),源eNodeB会将其丢弃,也就是说,源eNodeB并不向目标eNodeB转发上行数据的RLC 上下文 (Context)。如果源eNodeB和目标eNodeB双方协商同意要进行上行的失序PDCP SDU的转发,则源eNodeB将SN号为4 的PDCP PDU转发给目标eNodeB。否则,源eNodeB也会将相应的PDCP包丢弃。图中,包4 被源eNodeB转发给目标eNodeB。

切换发生,UE接入到目标eNodeB,与目标eNodeB之间建立了数据连接,由于包1,2已经在源eNodeB中得到确认,因而UE不会在目标eNodeB中重复发送,而将PDCP SN号为3,4,5,6的包依次向目标eNodeB发送。目标eNodeB依据SN号来对PDCP的PDU进行排序和重复检测。在此例中,包4属于重复的数据包。目标eNodeB将排序好的无重复的PDCP SDU发送给SGW。

目标eNodeB也会向UE发送基于PDCP 的控制包,报告当前eNodeB侧PDCP SN号的状态。如果在UE在重传3,4,5上行数据包之前接收到目标eNodeB下发的PDCP状态报告,获知目标eNodeB已经收到包4,则UE无需重传包4, 只需重传包3和5以及新包6等即可。但规范中并未强制目标eNodeB发送PDCP状态报告的时间,UE也无需等到收到目标eNodeB的PDCP状态报告后,才重新开始上行数据的传输。图中,包4被UE在目标eNodeB中重复传输,目标eNodeB中的PDCP层会根据PDCP的SN号进行PDCP包的重复检测。

在无损切换的过程中,对于下行的PDCP SDU,如果UE已经在源eNodeB中完成PDCP SDU的确认, 源eNodeB无需将它们转发给目标eNodeB (包括连续的和失序的PDCP SDU)。源eNodeB需要将尚未传输完毕(包括已有部分传输和尚未进行传输的。注意,与无缝切换中不同,无缝切换中转发的是尚未进行传输的SDU)的PDCP SDU转发给目标eNodeB,包括经S1接口转发下来,尚未进行PDCP处理的下行数据。对于已经进行了部分PDCP SDU的传输,但尚存部分RLC PDU的数据,源eNodeB会将RLC PDU丢弃,也就是说,在无缝切换模式下,源eNodeB不会将RLC 上下文 (RLC Context)转发给目标eNodeB(源eNodeB丢弃的只是RLC的上下文,并非是PDCP SDU的数据,PDCP SDU的数据仍会转发给目标eNodeB,因为他们属于尚未传输完毕的PDCP SDU)。如下图所示:

在切换过程发生时,源eNodeB已经传输了SN号为1至4的PDCP PDU,编号为5的PDCP PDU还未开始传输。而在UE侧,SN号为3的PDCP PDU 没有收到,UE已经向源eNodeB发送了1,2和4的确认,但是源eNodeB只收到了1和2的确认。因此,源eNodeB会将除了1,2 之外的PDCP SDU(这里是解压后的数据,因此是SDU,其对应的PDU的SN号会在GTP-U扩展头部的“PDCP PDU Number”域中给出)转发给目标eNodeB,包括SN号为3,4和5的PDCP SDU。源eNodeB会从SGW收到“End Marker”包,表明下行数据承载将由源eNodeB切换到目标eNodeB,不会再有数据通过源eNodeB的通道下发下来。源eNodeB会将此“End Marker”数据包转发给目标eNodeB,表明到目标eNodeB数据转发的结束。

和图中表示的不同,如果UE已经向源eNodeB发送了包1,2和4的确认,并且源eNodeB都已经收到,包括对包4的确认。那么源eNodeB将只转发3,5等数据包给目标eNodeB而不会转发包4,因为确认UE已经收到包4。这点和上行的数据转发有些不同。在上行数据传送中,UE虽然可以确定某失序的数据包在源eNodeB中已经收到,但不知道源和目标eNodeB之间是否会转发此失序数据(依赖于两eNodeB之间的协商),因此,UE需要准备在目标eNodeB中的重传。

目标eNodeB在接收源eNodeB转发的数据的同时,也可能收到SGW发送过来的下行数据。在这种情况下,目标eNodeB会优先发送源eNodeB通过X2接口发送过来的数据,直到“End Marker”标志。目标eNodeB也会依次分配下一个PDCP SN号给新的数据包(这个数据包,可能来自SGW,也可能来自源eNodeB)。图中,目标eNodeB会将包3,4,5依次下发给UE,而后,生成序号为6的PDCP PDU包,发送给UE。此时,UE上的PDCP层就会检测到重复的包4,在去除重复的包和排序后,将PDCP SDU提交给上层应用。

3GPP规范(36.300)中建议UE在接入到目标eNodeB,获得上行授权以后,应首先发送PDCP层的状态报告给目标eNodeB。在这种情况下,目标eNodeB就会获知UE已经收到了包4,就不会向UE重复发送包4了

LTE 切换过程中的数据切换的更多相关文章

  1. Oracle 过程中检查数据表存在与否

    在过程中,尤其是每天执行的任务,通常要检查查询的数据表存在不存在,如果不存在则等待一段时间在进行执行,以下代码实现了这个功能,如果表不存在,抛出异常,交给异常处理代码,确保数据完整性 使用方法:p_C ...

  2. vue 移动端,页面左右页面切换效果(切换过程中会出现白屏效果,布吉岛怎么优化,后来就发布前就弃用了)

    <transition name="left"> <router-view v-if="getCms" class="Router& ...

  3. jq 构造函数,然后再表单提交过程中对数据进行修改

    先贴代码 <script type="text/javascript"> function appendText(){ var content = $("#t ...

  4. map在遍历数据的过程中删除数据不出错

    // Iterator<Map.Entry<String,Long>> entries = Map.entrySet().iterator();                 ...

  5. ViewPager中Fragment切换过程不被销毁的方法

    背景:最近在写一个音乐播放器,然后一个ViewPager里面加载了四个Fragment,但是在切换过程中发现,Fragment总是被销毁,在网上查了一下,发现有两种办法可以保证Fragment不被销毁 ...

  6. iOS7中的ViewController切换

    转自:https://onevcat.com/2013/10/vc-transition-in-ios7/ iOS 7 SDK之前的VC切换解决方案 在深入iOS 7的VC切换效果的新API实现之前, ...

  7. RT3070 USB WIFI 在连接socket编程过程中问题总结

    最近耗时多天,成功的将RT3070驱动.并解决了socket的网络编程,成功的在BA9G10上面实现了USB wif.连上家里的无线路由器,通过ubuntu下面建立的服务端程序,将BA9G10中的数据 ...

  8. vue及Eelement使用过程中遇到的一些问题

    在做项目的过程中,目前主要遇到了以下几个问题: 一.样式问题 1.样式中使用scoped的问题: 主要表现在从一个页面跳到另一个页面时,第二个页面的样式不能正确显示,通过刷新才能恢复页面的预定样式. ...

  9. SAP CRM 通过调试观察CL_CRM_BOL_ENTITY中的数据

    这个(BOL里面)最重要的类值得一看. BOL中的每条记录都会在CL_CRM_BOL_ENTIT中表示.至今,我们已经写过一些事件处理器,并且我们已经直接或间接的通过这个类工作.在业务场景中,我们也许 ...

随机推荐

  1. Spring shiro使用

    maven依赖: <dependency> <groupId>commons-collections</groupId> <artifactId>com ...

  2. G面经prepare: Data Stream Average

    给一个datastream和一个fixed window size, 让我design一个class可以完成add number还有find average in the window. 就是不能用v ...

  3. FileInputStream and FileOutputStream

    Java FileOutputStream class Java FileOutputStream is an output stream for writing data to a file. If ...

  4. 数据库SQL 查询

    查询 1.简单查询 select * from info(表名)   --查所有数据 select  code(列名),name(列名)  from 表名        --查指定列的数据 selec ...

  5. C++之路进阶——codevs4416(FFF的后宫)

    4416 FFF 团卧底的后宫  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold       题目描述 Description 你在某日收到了 FFF 团卧底的求 ...

  6. paper 36 :[教程] 基于GridSearch的svm参数寻优

    尊重原创~~~ 转载出处:http://www.matlabsky.com/thread-12411-1-1.html 交叉验证(Cross Validation)方法思想简介http://www.m ...

  7. Linux mail 命令参数

    linux mail 命令参数: 使用mail发邮件时,必须先将sendmail服务启动. mail –s “邮件主题” –c”抄送地址” –b “密送地址” -- -f 发送人邮件地址 –F 发件人 ...

  8. 关于VS 中 HttpHandler 的设置 500.23

    前一段时间在讲 HttpHandler 的过程中遇到一些问题,在此分享一下. 使用VS2012 添加HttpHandler后,在web.config配置的节点如下: <?xml version= ...

  9. JAVA 集合List,数组,Set,Map,直接的相互转换

    Java集合转换[List<-->数组.List<-->Set.数组<-->Set.Map-->Set.Map-->List] //List--> ...

  10. Objective-C代码的文件扩展名与数据类型

    Objective-C数据类型可以分为:基本数据类型.对象类型和id类型. 基本数据类型有:int.float.double和char类型. 对象类型就是类或协议所声明的指针类型,例如:SAutore ...