分享

是谁偷走了你的网速?揭秘网络时延的真相

 nzpeach 2015-06-08



你打过乒乓球吧?


你和你的对手正在乒乓台上激烈厮杀,对攻不断,你一定不会注意乒乓球每个来回花了多长时间。


假如,你和你的对手相距几百米,你优雅的完成一个扣球之后,不得不再花上几分钟时间等对方的来球,结果是,这场比赛打了几个小时。真是场该死的比赛,该死的假设,你发誓再也不玩这卵球了!


现在把你和你的对手换成网络的接收端和发送端,那么这个乒乓球的往返时间(RTT)就叫网络时延。


有些测试软件上面叫“ping”,我不知道是不是和乒乓球有关!




大部分网络协议的动作其实就像打乒乓球一样。


你要建立一个网络连接,你得先“出球”,向网络发出服务请求,获得网络的同意… 而通常这个“请求”<->“同意”会花上好几个来回。更让人泄气的是,这一番寒暄客套通常只有很少的数据传送,换个角度讲,网络延迟在很多时候并没有充分利用带宽。


试想一下,HTTP请求下载10K的东西,建立这个网络连接前,需要进行4次请求-同意一番寒暄客套。如果每一次往返时间(RTT)为100ms,4次信息交换花的时间为400ms,这时网络速率为10k/400ms,是的,25k/s,我发誓再也不想用这破网络!




到底是什么影响了这该死的网络时延?


在揭秘网络时延前,我们首先来了解一下移动通信网络的组成。移动通信网络是由大量相互连接的设备组成的一个网络,而其中每个设备都可能带来网络时延。当然,为了建立、维持通信,这些设备之间是要相互对话的,这也会带来网络时延。




1. 手机的基带处理器


智能手机里有两个处理器,一个叫应用处理器,一个叫基带处理器。应用处理器负责处理操作系统和应用软件,而基带处理器负责勾搭上无线网络,就像是电脑的cpu和modem。


它不同于modem的是,它得处理复杂的无线信号,正因如此,基带处理器存在一个处理延时。是的,你根本不知道那该死的无线信号有多么复杂,基带处理器必须得花点时间来处理。


2. 基站


基站作为无线通信网络的接入点,也就是通信网络这个社团里最小的一个分支机构,它要负责管理旗下成百上千的小弟—-手机。不过,基站的能力是有限的,小弟太多就管理不过来,承受了它这个角色不该有的帅气与机智,很累!过多手机接入,就会导致拥塞、处理能力下降,影响网络时延。


不过,最近社团改组,完成扁平化组织结构改造,基站的权力越来越大。在LTE网络里,直接取消无线网络控制器这个机构,直接将其权力下放到基站,很多重要的功能,比如,网络注册和资源调度,都直接在基站里实现。事实上,这一角色的转换使得新一代无线通信网络的时延得到大大改善。


3. 回程


回程,就是从基站到核心网的那一段网络连接。

对时延来讲,回程,简直是个臭名昭著的家伙。

传统网络的电路交换是一种同步传输模式,通信双方要交换信息,需要高度的协同工作。网络得先建一条链路,建好之后告诉双方,以后只能在这条链路里发送和接收信息,直到这条链路拆除。然后,网络又要为下一次连接建立一条链路.... 真够折腾的!


相比之下,最新一代的移动网络——LTE,采用基于ip分组交换的回程网络,支持异步数据传输,这大幅减少了回程延迟。


当然,回程带宽限制也是一个瓶颈。


这里插个广告,告诉你这10几年来移动通信网络在时延上进步有多大?




4. 无线网络控制器(RNC)


刚才说了,LTE网络已经没有这个了。

刚才也说了,回程是个臭名昭著的家伙。


传统网络的RNC通过信令来管理手机,协调无线资源。有了RNC,回程就多了一个节点(基站—RNC—核心网)。手机的每一个动作都需要先经过基站,再转发到RNC,由RNC来统一完成调度协调。比如,网络注册和资源调度。这需要来来回回多次交换信息,使延迟情况变的更糟。所以,LTE网络已经没有RNC了。


再插个广告,告诉你这些年移动通信网络结构是如何演进的?




5. 核心网


核心网就好比是移动通信网络和外部internet之间的一个网关,在这里,要完成一些Qos策略和流量计费管理,而这些动作都会带来一定时延,不过通常很小。


6. 手机电池


严格的说,这事真的只能怪手机电池太low了!

你的手机待机时长可以几天,而通话或上网时长最多几个小时就over了。为什么?

真正影响你手机耗电的不是你的手机,是你手机里的那块SIM卡。

手机只有和网络连接时,耗电才厉害!


所以,为了省电,手机千方百计的抓住一切机会逃离网络。


不过,不管滚得有多远,手机总是会回来的!每次回来的时候,又得重新建立无线链路,正如刚才我们讲的,向网络跪舔发个请求什么的,然后网络高冷的点头回应什么的,这样来回好几次,终于滚回来了!欧耶!不过,这就带来额外的时延。


现在来看看这个伟大的省电计划吧!


通信汪们把这个叫做无线资源控制(RRC),以WCDMA网络为例,我们把手机状态大致分为三个状态:IDLE - CELL_DCH - CELL_FACH。


你用手机上网,无非就几个步骤:掏出手机—>刷微信—>浏览。而在网络侧,要响应你的每一步动作,要完成三种RRC状态的转移:IDLE—>CELL_DCH—>CELL_FACH—>IDLE。


是的,你的手机其实是不断的在这三种状态下迁移。


下面这张图是WCDMA RRC状态转移图的例子。



1)IDLE状态下,手机关闭无线发射,省电。当开始传送数据时,手机会开启无线发射,手机状态从IDLE转移到CELL_DCH状态,这一状态转移是有时延的。


2)手机处于CELL_DCH状态时,表示手机正在传送或接收数据。当数据传送结束,手机会保留CELL_DCH状态一段时间,以备还有后续数据要传。假如一段时间内没有续传数据,手机会转移至共享信道FACH,这叫CELL_FACH状态,这时候相对CELL_DCH模式更省电。CELL_FACH状态下,手机只传送信令或少量数据,如果有更多数据内容需要传送,手机会重新迁移至CELL_DCH状态,不过这个迁移过程同样有时延,只是这个时延相对于IDLE迁移至CELL_DCH要短。


3)在进入CELL_FACH状态一段时间后,如果没有数据传送,手机将迁移至IDLE状态,关闭无线发射,进入最省电的模式。如果又有数据传送,这时需要重新迁移至CELL_DCH状态。


需要告诉你的是,LTE的RRC状态相对简化,只有两种:RRC_IDLE和RRC_CONNECTED。


最后,综合以上的因素,我们来简单计算一下LTE网络用户面时延:




文/网优雇佣军 微信订阅号:hr_opt

通信路上,一起走!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多