【重量级】揭秘移动网络的性能(在)--移动网络组件具体解释

简单介绍

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

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

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

你在等待的是什么?

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

因为非常多因素。移动网络会使已经存在于大多数网络通信中的延迟更高,这当中包含网络类型(如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. 很多其它文章请扫码:

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

时间: 2024-10-17 13:54:13

【重量级】揭秘移动网络的性能(在)--移动网络组件具体解释的相关文章

[转]前端网络(性能)监测工具berserkJS

berserkJS 是基于 Qt (C++跨平台库)开发的前端网络(性能)监测工具. 它的核心功能是通过内置 webkit 收集由页面实际网络请求相关数据. 偏重于页面上线前检测与评估. 页面性能分析工具,可用 JS 编写自己的检测.分析规则. 基于 Qt 开发,可跨平台编译,部署.内置基于 QtWebkit 的浏览器环境. 源码需在目标系统中编译后,可产生运行于 Windows / Linux / Mac 系统的可执行文件. 工程中自带 Window 系统中动态编译的可执行文件,此文件位于 b

【转】一文掌握 Linux 性能分析之网络篇

比较宽泛地讲,网络方向的性能分析既包括主机测的网络配置查看.监控,又包括网络链路上的包转发时延.吞吐量.带宽等指标分析.包括但不限于以下分析工具: ping:测试网络连通性 ifconfig:接口配置 ip:网络接口统计信息 netsat:多种网络栈和接口统计信息 ifstat:接口网络流量监控工具 netcat:快速构建网络连接 tcpdump:抓包工具 sar:统计信息历史 traceroute:测试网络路由 pathchar:确定网络路径特征 dtrace:TCP/IP 栈跟踪 iperf

思考:网络性能优化:网络 -- cpu -- 线程数 -- 单个任务耗时 --- qps --- 并发

思考:网络性能优化:网络 -- cpu -- 线程数 -- 单个任务耗时 --- qps --- 并发如果没有理清楚上述概念和它们之间的关系,那么优化会毫无章法:线程越多,利用上的线程越多,cpu的idle会约低,只到cpu低得不能再低,一般情况下,可以可劲用(idle为10%你遇到过吗?),但是要注意你的下游能否能扛得住你转嫁给他们的并发压力呢:单个任务处理越快,qps和并发会越高:两个线程的并发一定是一个线程的两倍,10个线程的并发一定是2个线程的5倍:qps是一秒处理的任务数,这个换算逻辑

Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析

Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析 说明:Java生鲜电商平台中,由于服务进行了拆分,很多的业务服务导致了请求的网络延迟与性能消耗,对应的这些问题,我们应该如何进行网络请求的优化与处理呢? 到底有没有一些好的建议与方案呢? 下面这个文章将揭晓上面的问题,让你对SpringCloud微服务网络请求性能有一个全新的认识. 目录简介 01.网络请求异常分类 02.开发中注意问题 03.原始的处理方式 04.如何减少代码耦合性 05.异常统一处理步骤 06

网络编程01---计算机网络基础

1.为什么要学习网络编程 1.在移动互联网时代,移动应用的特征有 几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力 如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 2.移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据 新闻:网易新闻.新浪新闻.搜狐新闻.腾讯新闻 视频:优酷.百度视频.搜狐视频.爱奇艺视频 音乐:QQ音乐.百度音乐.酷狗音乐.酷我音乐 LBS:百度地图

PGM:贝叶斯网络与朴素贝叶斯网络

http://blog.csdn.net/pipisorry/article/details/51471222 贝叶斯与频率派思想 频率派思想 长久以来,人们对一件事情发生或不发生,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大.而且事情发生或不发生的概率虽然未知,但最起码是一个确定的值. 比如如果问那时的人们一个问题:"有一个袋子,里面装着若干个白球和黑球,请问从袋子中取得白球的概率是多少?"他们会立马告诉你,取出白球的概率就是

网络虚拟化之FlowVisor:网络虚拟层(下)

在前面两篇文章:网络虚拟化之FlowVisor:网络虚拟层(上)和网络虚拟化之FlowVisor:网络虚拟层(中)中分别介绍了FLowVisor的特性和实现,三连载的最后一篇介绍虚拟网络的隔离机制. 虚拟化的一个重要元素是切片之间的隔离,因为不同资源的隔离机制是不相同的,接下来将分别描述. 1. 带宽隔离 FLowVisor可以通过标记数据包的VLAN优先级比特位来利用现存的交换机带宽隔离特性.VLAN标签拥有三个比特域,PCP(VLAN Priority Code Point)有一个将数据包映

Linux系统管理-网络基础集锦及Linux网络配置、高级使用

1.网络通信术语 1.1.三种通信模式     单播:         多播:     广播: 1.2.LAN 组成     Computers             PCs         Servers     Interconnections         NICs         Media     Network devices         Hubs         Switches         Routers     Protocols         Ethernet

Docker网络之部署跨主机网络overlay

dcoker网络: none网络:什么都没有的网络.它的是使用常见:封闭空间意味着隔离,安全,比如生成随机码.host网络:网络配置与dockerhost完全相同.应用场景:性能好,但是没有灵活性,容易出现端口冲突问题.brigde网络: 默认的网络驱动默认,用以实现主机网络接口与虚拟网络接口间的通信. 部署网络的基本操作命令: //查看docker服务器中的网络:[[email protected] ~]# docker network ls//查看桥接网络:[[email protected