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. devexpress13学习系列(一)PDFViewer(2)

    DevExpress.XtraPdfViewer Namespace 该命名空间下,保留着pdfviewer组件需要的类,主要有:   Class Description   PdfCurrentPa ...

  2. 30个最常用css选择器解析(zz)

    你也许已经掌握了id.class.后台选择器这些基本的css选择器.但这远远不是css的全部.下面向大家系统的解析css中30个最常用的选择器,包括我们最头痛的浏览器兼容性问题.掌握了它们,才能真正领 ...

  3. 转:Curl详解

    用途说明 curl命令是一个功能强大的网络工具,它能够通过http.ftp等方式下载文件,也能够上传文件.其实curl远不止前面所说的那些功能,大家可以通过man curl阅读手册页获取更多的信息.类 ...

  4. Android Preview显示

    Android Studio的功能包含preview窗口, 可以查看布局(layout)的样式; 位置: app->src->main->res(资源)->layout(布局) ...

  5. node.js http.get 和http.post 数据

    http.get('http://codestudy.sinaapp.com', function (response) {}); node.js http post 样例: var reqData= ...

  6. php session memcache

    ini_set("session.save_handler", "memcache"); ini_set("session.save_path&quo ...

  7. Mysql存储过程总结

    1.     关于MySQL的存储过程 存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.好在MySQL 5.0终于开始已经支持存储过 ...

  8. 仅支持webkit浏览器的多行内容超出显示省略号

    .box { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; ...

  9. 全志A20芯片用于启动的SD卡的布局

    起始 大小 内容 0 8KB 存放分区表等 8 24KB SPL loader 32 512KB u-boot 544 128KB environment 672 352KB 保留 1024 - 用于 ...

  10. 关于wxwidgets图形界面的关闭窗口的按钮无效的解决办法

    这是使用wxsmith设计界面时的情况,如果用纯代码写的界面,关闭按钮就很奇怪地有效 道听途说,窗口的关闭是由一个方法控制着.大概是这样的: void PlainFrame::OnClose(wxCl ...