zoukankan      html  css  js  c++  java
  • 【重量级】揭秘移动网络的性能(在)--移动网络组件具体解释

    简单介绍

    在过去的几年里我们在移动蜂窝网络性能方面取得了重大进展。可是因为网络延迟的膨胀导致很多应用并没有得到改善。

    延迟问题长期以来一直制约着移动网络。虽然近年来已取得一些进展,但降低网络延迟没有跟上延迟的增长速度。正是因为这样的不正确等导致了延迟,而不是吞吐量,成为影响网络性能的最大因素。

    这篇文章逻辑上主要包括两章。第一部分将讨论导致移动网络延迟的细节。第二部分介绍提高网络性能减少延迟的软件技术。

     

    你在等待的是什么?

    延迟表示一个数据包通过一个或一系列网络所须要的时间。

    因为非常多因素。移动网络会使已经存在于大多数网络通信中的延迟更高,这当中包含网络类型(如HSPA+与 LTE)、运营商(AT&T与Verizon)或环境因素(如:站立、开车、地理以及一天中的不同一时候间点等)。

    因此。非常难去准确预计移动网络的延迟。可是我们能够发现它的延迟在几十到几百毫秒不等。

    往返时间(RTT)是一种測试延迟的方式,即通过測试数据包从发送源server到目的地的往返时间。并且RTT的大小对多数网络性能的影响很明显。这样的原因能够用乒乓球运动来说明。

    在通常的乒乓球运动中,乒乓球在玩的人之间运动所花的时间差点儿不会引人注意。然而,假设运动员之间站的越远。他们等球的时间也就越长,并且在等待的过程中不能做其它事情。

    运动员在正常距离下。5分钟的乒乓球比赛,假设距离换为一千英尺。那么就须要几个小时才干完毕。尽管这听起来比較可笑。

    但假设把源server和目的server看作是乒乓球运动中的两个运动员、往返时间表示往返两个运动员之间所需时间。那么你就会開始明确这个问题。

    大部分网络协议的部分常规操作就像打乒乓球一样。这些“出球”,假设你愿意,是建立和保持一个网络链接会话(session)所须要的双向交换信息(如TCP)或者是运行一个服务请求(如HTTP)。这些消息在交换过程中非常少或没有传输数据且网络带宽非常大程度上未使用。

    由此可知。延迟在非常大程度上并没有充分利用带宽。这也导致每次信息交换至少有一个RTT的延迟;这样不断累积导致对性能的影响非常指的注意。

    试想一下。一个HTTP请求去下载10K的东西将有4次信息交换。

    假设每一个RTT为100毫秒(对移动网络来说已经很合理了)。将4次交换所有考虑在内的话。那么吞吐量为10k/400ms或者25k/s。

    注意,上述样例全然和带宽没有关系--不论网络有多快结果都是一样的,都是25k/s。可是以上的操作的性能。或者不论什么类似的操作,都能够通过一个简单的、明白的策略来提升:避免网络client和服务端进行信息交换。

     

    移动蜂窝网络

    接下来会对移动蜂窝网络中影响延迟问题的组件和约定做一个简单的介绍。

    移动蜂窝网络是一些具有高度专业化功能的相互关联的组件的代表。这些组件每一个都会对延迟有影响,可是各个组件的影响程度不同。

    并且在移动网络中独有的,如对无线电资源的管理,都成为移动蜂窝网络延迟的因素之中的一个。

    图1:移动蜂窝网络组件

     

    基带处理器

    在大多数移动设备实际上是两个很复杂的电脑。应用程序处理器负责管理操作系统和应用程序,与电脑以及笔记本电脑比較相似;基带处理器负责全部无线网络功能,相当于是电脑的调制解调器(Modem)。仅仅只是这个调制解调器使用的是无线电波而不是电话线。

    基带处理器是一个一致但通常存在延迟的资源。而快速无线网络是一个惊人复杂的事情,而且它所须要的复杂信号处理导致了一个固定的必定延迟,对大多数网络通信来说在微秒到毫秒级。

     

    蜂窝基站

    蜂窝基站,和收发基站或发射塔同义,作为移动网络的接入点。而蜂窝基站的责任是提供一个地区的网络覆盖,也被称作蜂窝。

    蜂窝基站就像移动设备一样,处理复杂的快速无线网络。有同样的大多是微不足道的延迟;可是一个蜂窝基站必须同一时候服务于成百上千的移动设备,而系统负载量的不同也将导致吞吐量和延迟不同。

    同一时候,缓慢的、不可靠的网络性能在拥挤的公共活动中往往导致蜂窝基站的处理送达率受到限制。

    最新一代的移动网络已经扩大了蜂窝基站的职责。包含管理它的移动设备。非常多曾经无限网络控制器的功能都已经交给了蜂窝基站处理,如:网络注冊和传输调度。这么做的原因在本章后面解释,这样的角色转换使得新一代的移动蜂窝网络的延迟得到非常大程度的改善。

     

    回程网络

    回程网络是蜂窝基站、基站的控制器以及核心网络之间的专用广域网(WAN)连接。回程网络一直而且继续在延迟方面臭名昭著。

    回程网络是从经典的电路切换或者说是从基于帧的老的移动网络(如GSM,EV-DO)传输协议中诞生的。这样的协议会有延迟,主要是由于它的同步特性。而逻辑连接表示一个channel在简短的、预先分配的时间段里只接受或发送数据。相比之下,最新一代的移动网络採用基于ip分组交换的回程网络,并且支持异步传输数据。这样的切换大幅降低了回程延迟。

    物理设施的带宽限制一直是一个瓶颈。

    很多回程并不旨在处理峰值流量负载,因此现代快速移动网络在出现网络拥堵时在延迟和吞吐量方面都会表现出巨大差异。虽然运营商正在努力尽快升级这些网络,但该组件在很多网络基础设施仍然是一个弱点。



    无线网络控制器

    一般来说,无线网络控制器管理邻近蜂窝基站和他们服务的移动设备。

    无线网络控制器直接通过一个被称作信令的基于消息的管理方案来协调移动设备。而因为移动网络的拓扑结构。移动设备和控制器的全部消息都必须通过高延迟的回程网络来发送。这本身已经不是非常理想了,可是因为很多网络操作,比方网络注冊和传输调度,这样的须要来来回回多次交换信息的操作使延迟情况变的更糟。典型的是,无限网络控制器也因为这个原因称为造成延迟的重要因素。

    如前所述,控制器在最新一代的移动网络摆脱了设备管理的职责;这么多的任务如今由蜂窝基站自己来处理。这样的设计也决定了大多数网络中的回程网络延迟被消除。



    核心网络

    核心为运营商的内部网络和公共网络之间的网关;也正是在这里运营商使用内联网络设备来实施网络服务质量策略或者是作带宽计量。作为一个规则,不论什么针对网络流量的拦截都将产生延迟。

    并且在实际情况中这样的延迟普遍存在。可是这也是须要注意的。



    电源保护

    移动网络延迟最重要的来源之中的一个直接和手机电池的用量限制有关。

    快速移动设备的网络电台的功耗为3瓦。这个功耗太大以至于iphone5的电池仅仅能支持一个小时,也正是这个原因,移动设备抓住每一个机会来移除或者降低无线电路。

    这样的做法不仅能够延长电池寿命并且还能够延迟启动无线电路,仅仅有在接收或者数据传输时才又一次为无线电路提供能量。

    全部的移动手机网络都採用标准形式化无线资源管理(RRM)计划来节省能量。大部分RRM约定定义3个状态--激活、空暇、未链接--每一个状态都代表某些启动延迟和功耗之间的折中。

     

    图2:无线资源管理状态转换

     

    激活(Active)

    激活状态代表数据或许以最小的延迟在告诉传输或接收。

    这个状态即使在空暇情况下耗电量也会非常大。这个状态下短时间的网络空暇,通常小于1秒,会出发状态转换为空暇状态。

    这对性能的影响非常值得注意:在网络处理中过长的暂停会导致设备在激活和空暇状态之间来回切换,这也会导致延迟添加。

    空暇(Idle)

    空暇状态是低功耗使用和适当延迟载入的折中。

    在这样的状态下移动设备的网络仍然处于连接状态,无法发送或接收数据,但能够接收网络请求来满足转换至激活状态的需求(如输入数据)。经过一个合理的时间段后若网络仍未激活。同一时候为一分钟或者更短,移动设备则切换至未连接状态。

    空暇状态在双方面会造成延迟。首先,它须要一些时间来为无限通信设备又一次提供能量以及同步模拟电路;其次,为了节省很多其它电量。无线通信设备不过间断的监听网络通知,而且对通知的响应会稍有延迟。

    未连接(Disconnected)

    未连接状态的功耗最低但启动延迟最高。

    这样的状态下设备的网络处于未连接状态,无线设备处于非活动状态。无线通信设备会被激活而且通过一个特殊的广播通道来监听网络请求的到达,但这样的激活不是非常频繁

    未连接的延迟和空暇状态的延迟同样,可是不同的是,未连接状态还得算上又一次连接网络的延迟。连接到移动网络是一个复杂的过程,这当中包含多个来回的信息交换(也就是发信号)。

    恢复网络连接至少须要几百毫秒,并且链接时间在几秒也是常常有的事。

     

    (未完待续,下篇更精彩。。。)

     

    1. 本文由程序猿学架构翻译

    2. 本文译自The Performance of Open Source Software | Secrets of Mobile Network Performance

    3. 转载请务必注明本文出自程序猿学架构(微信号:archleaner )

    4. 很多其它文章请扫码:

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    选择排序
    迭代器使用过程中为什么抛出ConcurrentModificationException
    自定义实现的ArrayList以及自定义实现的Iterator迭代器
    单链表
    collections方法记录
    JDK1.9中关于集合的新方法
    请使用时间相关的API,计算一个人从出生到现在一共活了多少天?
    java中对象的向上转型和向下转型
    异常相关知识整理
    可变参数相关知识
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4850096.html
Copyright © 2011-2022 走看看