LTE 切换过程中的数据切换
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 切换过程中的数据切换的更多相关文章
- Oracle 过程中检查数据表存在与否
在过程中,尤其是每天执行的任务,通常要检查查询的数据表存在不存在,如果不存在则等待一段时间在进行执行,以下代码实现了这个功能,如果表不存在,抛出异常,交给异常处理代码,确保数据完整性 使用方法:p_C ...
- vue 移动端,页面左右页面切换效果(切换过程中会出现白屏效果,布吉岛怎么优化,后来就发布前就弃用了)
<transition name="left"> <router-view v-if="getCms" class="Router& ...
- jq 构造函数,然后再表单提交过程中对数据进行修改
先贴代码 <script type="text/javascript"> function appendText(){ var content = $("#t ...
- map在遍历数据的过程中删除数据不出错
// Iterator<Map.Entry<String,Long>> entries = Map.entrySet().iterator(); ...
- ViewPager中Fragment切换过程不被销毁的方法
背景:最近在写一个音乐播放器,然后一个ViewPager里面加载了四个Fragment,但是在切换过程中发现,Fragment总是被销毁,在网上查了一下,发现有两种办法可以保证Fragment不被销毁 ...
- iOS7中的ViewController切换
转自:https://onevcat.com/2013/10/vc-transition-in-ios7/ iOS 7 SDK之前的VC切换解决方案 在深入iOS 7的VC切换效果的新API实现之前, ...
- RT3070 USB WIFI 在连接socket编程过程中问题总结
最近耗时多天,成功的将RT3070驱动.并解决了socket的网络编程,成功的在BA9G10上面实现了USB wif.连上家里的无线路由器,通过ubuntu下面建立的服务端程序,将BA9G10中的数据 ...
- vue及Eelement使用过程中遇到的一些问题
在做项目的过程中,目前主要遇到了以下几个问题: 一.样式问题 1.样式中使用scoped的问题: 主要表现在从一个页面跳到另一个页面时,第二个页面的样式不能正确显示,通过刷新才能恢复页面的预定样式. ...
- SAP CRM 通过调试观察CL_CRM_BOL_ENTITY中的数据
这个(BOL里面)最重要的类值得一看. BOL中的每条记录都会在CL_CRM_BOL_ENTIT中表示.至今,我们已经写过一些事件处理器,并且我们已经直接或间接的通过这个类工作.在业务场景中,我们也许 ...
随机推荐
- PHYLIP linux安装
PHYLIP的安装: http://download.chinaunix.net/download.php?id=29483&ResourceID=8135下载 gunzip phylip-3 ...
- ADO.net 实体类 、数据访问类
程序分三层:界面层.业务逻辑层.数据访问层 比较规范的写程序方法,要把业务逻辑层和数据访问层分开,此时需要创建实体类和数据访问类 实体类: 例 using System; using System.C ...
- 转:python webdriver API 之 验证码问题
对于 web 应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来说使用验证码可以有效果的防止采用机器猜测 ...
- PHP判断手机号码是否合法
<html> <head> <script language="JavaScript"> function checkMobile(input) ...
- Java基础(60):Java打包生成Jar和Javadoc说明文档,以及在另外的工程中导入和使用自己的Jar
一.Jar包的导出 1.在Package Explorer中选中项目,右键,点击“Export” 2.在弹出框一次选择Java-->JAR file,点击Next 3.在新弹出的窗口选择 ...
- monkey测试(转)
一.Monkey测试简介Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动Trackball.按键等操作来对设备上的程序进行压力测试,检测程序多久的时 ...
- jquery on 动态添加的元素,神奇的bug
$(document.body).on("click", ".comments-item .link-comment", function () { 平时用 d ...
- shell 命令
- js 获取select 中option 的个数
//document.writeln(document.getElementById("sel").options.length); //document.writeln(docu ...
- 安装Elasticsearch,Logstash,Kibana(5.0.1-mac版)
安装Elasticsearch 1.下载https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.0.1.tar.gz包 ...