无线网络概览
无线网络技术:Wi-Fi、蓝牙、ZigBee、NFC、WiMAX、LTE、HSPA、EVDO、3G、卫星服务。
从地理范围角度对无线网络技术加以分类
类型 | 范围 | 应用 | 标准 |
---|---|---|---|
个人局域网,PAN | 个人活动范围内 | 替代周边设备的线缆 | 蓝牙、ZigBee、NFC |
局域网,LAN | 一栋楼或校园内 | 有线网络的无线扩展 | Wi-Fi,IEEE 802.11 |
城域网,MAN | 一座城市内 | 无线内联网 | WiMAX,IEEE 802.15 |
广域网,WAN | 世界范围内 | 无线网络 | 蜂窝(UMTS、LTE等) |
这种分类方式既不全面,也不精确。
基础
无论使用哪种无线技术,所有通信方法都有一个最大信道容量,这个容量是由相同的底层原理决定的。信息论之父克劳德·香农给出一个确切的与技术无关的数学模型(公式),信道容量即最大信息速率:
C
=
B
W
∗
l
o
g
2
(
1
+
S
N
)
C=BW*log_2(1+\frac{S}{N})
C=BW∗log2(1+NS),
其中:
- C是信道容量,单位是bit/s;
- BW是可用带宽,单位是Hz;
- S是信号,N是噪声,单位是W。
在美国,频带分配权掌握在FCC(Federal Communication Commission,联邦通信委员会)手中。带宽可以被拍卖,是一种稀缺、极度昂贵的资源。
不同国家也经常会给相同的无线技术分配不同的频率范围。
除带宽外,无线通信的第二个限制因素是收发两端之间的信号强度,也叫信噪比(SNR,Signal Noise Ratio)。信噪比衡量的是预期信号强度与背景噪声及干扰之间的比值。背景噪声越大,携带信息的信号就必须越强。
本质上,所有无线电通信使用的都是共享媒体,因此别的设备很可能在这个媒体中产生干扰信号。如果想在存在干扰的情况下达到预期的数据传输速度,要么增大发射功率即提高信号强度,要么缩短收发两端的距离,要么双管齐下。
路径损耗,或叫通路衰减,指的是信号强度随距离降低。
用于编码信号的算法对无线性能同样有显著影响。数字信号(1和0)需要转换成模拟信号(无线电波)。调制指的就是这个数模转换过程,不同调制算法的转换效率不一样。不同的字母数字组合与符号率决定信道的最终吞吐量。
总结,影响无线信道容量的三个因素:可用带宽、SNR、调制算法。
测量
关于信号理论的简明教程总结如下:任何无线网络,无论它叫什么名字,缩写是什么或者修订版本是多少,其性能归根结底都受限于几个众所周知的因素。特别是分配给它的带宽大小和收发两端的信噪比。另外,所有利用无线电的通信都:
- 通过共享的通信媒体(无线电波)实现;
- 在管制下使用特定频率范围;
- 在管制下使用特定的发射功率;
- 受限于不断变化的背景噪声和干扰;
- 受限于所选无线技术的技术约束;
- 受限于设备本身的限制,如形状、电源等。
理想的无线网络:带宽最大、频段独有、噪声最小、调制算法最优、多无线流并行发射(MIMO,Multiple Input Multiple Output,多输入多输出)。
影响无线网络性能的因素:
- 收发端的距离;
- 当前位置的背景噪声大小;
- 来自同一网络(小区)其他用户的干扰大小;
- 来自相邻网络(小区)其他用户的干扰大小;
- 两端发射功率大小;
- 处理能力及调制算法。
无线网络的性能具有高度不稳定性。
Wi-Fi
Wi-Fi工作于免许可的ISM频段,任何人在任何地方都可以轻易部署,必要的硬件便宜且简单。
从以太网到无线局域网
802.11无线标准主要是作为既有以太网标准(802.3)的扩展来设计的。以太网协议很大程度上借鉴ALOHAnet协议,而后者是第一个关于无线网络的协议。
以太网标准过去依赖于概率访问的CSMA(Carrier Sense Multiple Access,载波监听多路访问)协议,可理解为一种先听后说
算法,如果你想发送数据:
- 那么先要检查是否有人正在发送;
- 如果信道忙,监听并等待信道空闲;
- 信道空闲后,立即发送数据。
任何信号传播都需要花时间,冲突也时有发生。为此,以太网标准也增加冲突检测机制(CSMA/CD,Collision Detection):如果检测到冲突,则双方都立即停止发送数据并小睡一段随机的时间(后续时间以指数级增长),从而保证发生冲突的发送端不会同步,且不会同时重新开始发送数据。
Wi-Fi处理冲突的方式很类似,但稍有不同:由于收发无线电的硬件所限,它不能在发送数据期间检测到冲突。采用的是冲突避免(CSMA/CA,Collision Avoidance)机制,即每个发送方都会在自己认为信道空闲时发送数据,以避免冲突。为此,每个Wi-Fi数据帧必须明确得到接收方的确认,以确保不发生冲突。
实践中,概率访问模型在轻负载网络中表现很好。但要保证良好的信道利用率(冲突最小化),则信道负载必须低于10%。保持低负载的情况下,不用太多协调和调度就能获得理想的吞吐能力。但随着负载增长,冲突次数也会迅速增加,造成整个网络性能不稳定。
Wi-Fi标准及功能
测量和优化Wi-Fi性能
WMM,Wi-Fi Multimedia,Wi-Fi多媒体。WMM扩展会在无线电接口中对需要低延迟的应用(语音、视频等)启用基本的QoS(Quality of Service,服务质量),但能识别的路由器很少,能识别的客户端就更少。与此同时,网络内部和附近的Wi-Fi网络一定会争用共享的无线电资源。
inSSIDer:一款查看重叠的Wi-Fi网络的可视化工具。
影响Wi-Fi性能的重要因素:
- Wi-Fi不保证用户的带宽和延迟时间。
- Wi-Fi的信噪比不同,带宽也随之不同。
- Wi-Fi的发射功率被限制在200mW以内。
- Wi-Fi在2.4GHz和较新的5GHz频段中的频谱有限。
- Wi-Fi信道分配决定了接入点信号会重叠。
- Wi-Fi接入点与客户端争用同一个无线信道。
Wi-Fi中的丢包
Wi-Fi网络的设计天然会导致多个客户端的大量冲突。所有Wi-Fi协议的数据和物理层实现都有自己的重发和纠错机制,这些机制向上层隐藏重发操作。但,WiFi不一定有更高的丢包率。
TCP丢包在Wi-Fi网络中同样存在,因而其TCP层的传输速度不及大多数有线网络。Wi-Fi网络更突出的问题是分组到达时间差异极大,这一切都要归咎于数据链路层和物理层的冲突及重发。
针对Wi-Fi的优化建议
利用不计流量的带宽
很多移动运营商都推荐大数据应用“把流量转移到Wi-Fi上”,要么提醒用户切换到Wi-Fi,要么在可能的情况下利用Wi-Fi在后台进行数据同步或大数据转移。
适应可变带宽
Wi-Fi不保证带宽和延迟时间。用户的路由器如果设置应用级别的QoS策略,那可能会为同一无线网络中的客户端提供一个公平的环境。
但是,Wi-Fi无线接口自身对QoS的支持非常有限,在多个重叠的Wi-Fi网络中根本没有QoS策略。
自适应比特流适合视频和音频这样的长时间流服务。对视频而言,资源可能会使用多种比特率编码和存储,然后切割为多个部分。在客户端下载视频流期间,客户端或服务器可以监控每个视频块的下载速度,必要时根据带宽的变化调整要下载的下一个视频块的比特率。事实上,现实中的视频服务,开始一般是低比特率的视频块,以便视频播放能更快开始。然后,再根据可用带宽的动态变化调整后续视频块的比特率。
适应可变的延迟时间
有时,可考虑使用提供不可靠UDP传输的WebRTC。传输方式的切换不能挽救无线网络,但却有助于降低协议和应用导致的延迟时间。
移动网络
移动上网设备数量持续直线式增长,各种蜂窝通信技术,包括:CDMA、GSM、HSPA和LTE。
G字号移动网络简介
四代移动网络
代 | 峰值数据速率 | 数据速率 | 延迟时间 | 说明 |
---|---|---|---|---|
1G | 无数据 | - | - | 模拟系统 |
2G | Kbit/s | 100~400Kbit/s | 300~1000ms | 第一代数字系统,作为对模拟系统的替代或与之并存 |
3G | Mbit/s | 0.5~5Mbit/s | 100~500ms | 专用数字网络,与模拟系统并行部署 |
4G | Gbit/s | 1~50Mbit/s | <100ms | 数字及分组网络 |
最早的商业1G网络于1979年部署于日本,模拟系统,没有数据传输能力。
1991年,芬兰基于新兴的GSM(Global System for Mobile communications,全球移动通信系统)标准建设第一个2G网络,最早在无线电网络中引入数字信令。支持基于电路交换的移动数据服务,如短信(SMS)。
GPRS(General Packet Radio Service,通用无线分组业务)被引入GSM标准,无线互联网才真正走向实用。GPRS与早期2G语音技术的结合通常被称为2.5G。加入EDGE(Enhanced Data rates for GSM Evolution,GSM增强数据率演进)功能后,速率得以提升,被称为2.75G。
3GPP,3rd Generation Partnership Project,第三代合作伙伴项目。
移动无线产业的演进总结:
- 世界上部署两个主导的移动网络;
- 3GPP和3GPP2共同管理每种技术的演进;
- 3GPP和3GPP2标准不支持设备互操作。
3G网络存在两个主导且互不兼容的标准:UMTS(Universal Mobile Telecommunication System,通用移动通信系统)和CDMA,分别由3GPP和3GPP2制定。
4G的无线电接口及基础设备完全不同于3G。
4G,背后是一组ITU(International Telecommunication Union,国际电信联盟)在2008年就制定和公布的具体要求(IMT-Advanced),任何达到这些要求的技术,都可看作是4G技术:
- 以IP分组交换网络为基础;
- 与之前的无线标准(3G和2G)兼容;
- 移动客户端的速率达到100Mbit/s,静止时的速率达到Gbit/s以上;
- 100ms控制面延迟,10ms用户面延迟;
- 资源在用户间动态分配和共享;
- 可变带宽分配,5~20Mhz。
为弥补UMTS技术设计上的内在局限性,3GPP计划重新设计核心及无线网络,于是LTE(Long Term Evolution,长期演进)标准应运而生。LTE与前代标准的主要区别和特点如下:
- 核心网络全部为IP分组交换网;
- 简化网络架构,降低建设成本;
- 用户面和控制面的低延迟时间(分别为<10ms和<100ms);
- 新无线接口及调制算法实现高吞吐量(100Mbit/s);
- 可用于较大的带宽配置及运营商集群;
- 要求所有设备支持MIMO。
每个设备需要单独的无线接口以兼容早期的3G和2G网络。所有支持LTE的设备必须支持多射频,以满足MIMO要求。为实现LTE的高速率,甚至需要4x MIMO,从而使射频总数达到5~6个。这也是手机电池不耐用的原因。
HSPA+、LTE及LTE-Advanced的对比
对必项 | HSPA+ | LTE | LTE-Advanced |
---|---|---|---|
下载峰值(Mbit/s) | 168 | 300 | 3000 |
上传峰值(Mbit/s) | 22 | 75 | 1500 |
最大MIMO流 | 2 | 4 | 8 |
空闲到连接的延迟(ms) | <100 | <100 | <50 |
休眠到活动的延迟(ms) | <50 | <50 | <10 |
用户面单向延迟(ms) | <10 | <5 | <5 |
设备特性及能力
用户设备,UE,User Equipment,千千万万,千差万别。
给移动开发者的建议:警惕UE成为性能瓶颈。
RRC
无线电资源控制器,Radio Resource Controller,RRC,负责调度协调移动设备与无线电基站之间所有的通信连接,直接影响延迟、吞吐量和设备电池的使用时间。
Wi-Fi标准的一个优化策略,即无线接入点在向某个客户端发送数据之前,会先通过一个周期性的信号帧广播DTIM(Delivery Traffic Indication Message,发送数据指示消息)。相应地,客户端会收听这些DTIM帧,以便做好接收数据的准备。其他时间,无线电装置可以处于休眠状态。优点是省电,但增加延迟时间。
WMM标准会进一步提升Wi-Fi设备的电源使用效率,采用新的PowerSave机制,如NoAck和APSD(Automatic Power Save Delivery,自动省电传输)。
3G和4G网络也存在同样的问题:平衡网络传输效率与电源使用效率。
对电源的要求
无线电在任何手持设备中都是最耗电的组件之一。
在传输大量数据时,如果信号强度足够大,Wi-Fi通常效率更高。不过,如果设备经常空闲,则3G/4G网络的效率更高。最理想的做法就是能够在不同类型的连接之间动态切换。
LTE RRC状态机
所有LTE设备的无线电状态都由当前为用户提供服务的无线信号塔控制。3GPP标准定义一个完备的状态机:
描述连接到网络的每个设备的功率状态:
- RRC空闲:设备的无线电模块处于低功率状态(<15mW),只监听来自网络的控制信号。运营商网络中的客户端没有无线电资源。
- RRC连接设备的无线电模块处于高功率状态(1000~3500mW),要么传输数据,要么等待数据。运营商网络中指定数据承载方式,也分配专用的无线电资源。
简单来说,设备要么处于空闲状态,要么处于连接状态。处于空闲状态时,设备只监听控制信道的广播,比如准备接收数据的通知;处于连接状态时,网络通信环境就绪,相应资源也将分配给客户端。
由于连接状态需要的功率很高,为了更有效地完成操作,就有了多个子状态:
- 连续接收:最高功率状态,网络环境就绪,已分配网络资源。
- 短不连续接收(短DRX):网络环境就绪,未分配网络资源。
- 长不连续接收(长DRX):网络环境就绪,未分配网络资源。
HSPA与HSPA+(UMTS)RRC状态机
EV-DO(CDMA) RRC状态机
CDMA网络同样具有RRC状态机,用于控制每部设备的无线电模块的状态。
- 空闲:与3GPP标准类似。设备的无线电模块处于低功率状态,只监听来自网络的控制信号。运营商网络中的客户端没有无线电资源。
- 连接:与LTE的连接和HSPA中的DCH状态类似。设备的无线电模块处于高功率状态,为上下行数据流的传输分配网络资源。
没有中间状态,而且向空闲状态过渡也由运营商配置的超时时间控制。
低效率的周期性传输
每一次无线电传输,不管数据量有多么少,都会切换到高功率状态。传输完成,必须等待计时器超时才能切换回低功率状态(图7-9)。传输的数据量大小不影响计时器的超时时长。而且,设备在切换到空闲状态前,可能必须先经过几个中间状态。
HSPA+存在能量尾,因为存在DCH > FACH > IDLE切换。
计时器控制的状态切换导致能量尾(Energy Tail),能量尾导致移动设备在网络访问中低效的周期性传输。首先,状态切换有一个延迟时间,然后传输开始,最终无线电模块空闲,白白地耗电,直到所有计时器超时,设备才切换到低功率状态。
端到端的运营商架构
移动网络中的分组流
HetNet
现有4G无线及调制技术已经接近无线信道的理论极限。改进无线性能的研究方向不在无线接口,而在智能无线网络拓扑。通过广泛部署多层异质网络(Heterogeneous Network,HetNet),可以促进小区内协调、转移和干扰管理等多方面的改进。
HetNet的核心思想:覆盖较大地理区域的无线网络容易导致用户竞争,因此不如用更小的小区来覆盖这些区域(图7-14),实现每个小区的路径损失最小、传输功率最低,从而让所有用户享受到更高的性能。
通过部署层叠式无线网络,HetNet能够提供更高的网络容量,覆盖更广泛的地理区域。HetNet面临的挑战是如何降低干扰,提供足够的上行容量,以及制定和改进在不同网络层之间无缝迁移的协议。
给移动应用开发者带来的挑战:不同小区之间的迁移次数会明显增多,由此带来的延迟及吞吐量性能变动也会非常明显。
TamoGraph Site Survey:建模软件,通常用于对物理环境、活跃用户数量,以及可用的无线技术建模,以辅助确定网络热点的必要数量、位置和配置。
真实的3G、4G和Wi-Fi性能
事实上,4G在网络延迟、吞吐量和容量等这些关键指标上都胜过Wi-Fi!
开源测量客户端MobiPerf。
移动网络优化建议
移动应用的三个方面的限制:延迟时间和吞吐量、电池使用时间。
节约用电
关于无线电模块的几个事实:
- 全功率打开无线电模块只消几小时就可耗尽电量;
- 对无线电功率的需求随着无线标准演进与代俱增;
- 无线电模块的耗电量仅次于设备的屏幕;
- 数据传输时无线电通信的耗电过程是非线性的。
在开发移动应用时,就该尽量少用无线电接口。尽最大可能在无线电开启时传输数据,而尽量把唤醒无线电以传输数据的次数减到最少。
ARO
Application Resource Optimizer:ARO,应用资源优化器,AT&T提供的免费工具,包含两个组件:
- 收集器:后台Android应用(可以在手机或模拟器中运行),用于捕获传输的数据分组、无线模块活动信息及其他与手机的交互行为。要想记录用电情况,可以打开收集器,点击记录,使用应用,然后将记录结果复制到系统中。
- 分析器:分析记录结果,从而得知无线电状态、电量消耗、应用的通信模式等信息。还能针对常见的性能陷阱提供建议,如没有压缩、重复传输数据等。
电量消耗和无线电状态是通过设备及无线网络类型的特殊模型生成的。即,生成的数值并不是设备在使用时的真实值,而是根据特定模型参数得到的估计值。因此,可以利用它导入不同的设备和网络模型,比较不同模型(如3G、4G)下的电量消耗。
收集器只能在Android平台运行,而ARO分析器则可以接收任何常规的分组跟踪记录(pcap)文件,可以使用tcpdump或其他兼容工具生成;iOS用户可以使用tcpdump。
消除周期性及无效的数据传输
规则:
- 轮询在移动网络中代价极高,少用;
- 尽可能使用推送和通知;
- 出站和入站请求应该合并和汇总;
- 非关键性请求应该推迟到无线模块活动时进行。
推送比轮询效果更好。但频率过高的推送与轮询也不相上下。如果碰到实时更新的需求,应该考虑下列问题:
- 最佳更新间隔多长,是否符合用户预期?
- 除了固定的更新间隔,能否因地因时制宜?
- 入站或出站请求能否集合为更少的网络调用?
- 入站或出站请求能否推迟到以后发送?
间歇的信标(beacon)请求(比如周期性的听众评测和实时分析请求)很容易破坏电池电量优化策略。
渐进增强和增量加载等技术依赖的间歇性网络访问,会带来较长的延迟,因为RRC状态需要切换!
消除不必要的长连接
TCP或UDP连接的连接状态及生命期与设备的无线状态是相互独立的。也就是说,应用不必让无线模块保持活动(active)状态,也可以保持连接不被断开。
大多数移动运营商的NAT连接超时时间为5~30分钟。因此,为了在空闲状态下保持连接,可能需要周期性(如每5分钟)发送一次Keep-Alive。
Nagle
内格尔算法,尝试将多个TCP消息组合为一个分组,以期减少协议消耗和需要传输的分组数量。
可以在服务器上根据时间、数量或大小来聚合消息,而不是每个消息都单独推送一次。更进一步,只在客户端的无线模块活动期间推送更新。比如,把消息推迟到客户端发送请求之后再发送,可以利用那些能够监控客户端无线状态的服务。
GCM,Google Cloud Messaging,谷歌云消息,一个可以在Android和Chrome平台中使用的消息发送API,能聚合消息,并只在设备活动时发送更新。只要把消息发送给GCM,GCM就能作出最优的推送时间安排。
W3C Push API,GCM的开源实现。
预测网络延迟上限
防御式编程,预估移动网络的延迟上限,心里有个谱。
项目 | 3G | 4G |
---|---|---|
控制面 | 200~2500ms | 50~100ms |
DNS查询 | 200ms | 100ms |
TCP握手 | 200ms | 100ms |
TLS握手 | 200~400ms | 100~200ms |
HTTP请求 | 200ms | 100ms |
总延迟 | 200~3500ms | 100~600ms |
考虑RRC状态切换
关于RRC的一些常识:
- RRC状态机因无线标准不同而不同;
- RRC状态机由无线网络为每部设备分别管理;
- RRC在必须传输数据时会切换到高功率状态;
- RRC在网络配置的时间超出后会切换到低功率状态;
- 4G LTE状态切换可能花10~100ms;
- 4G HSPA+状态切换与LTE相差无几;
- 3G HSPA和CDMA状态切换可能花几秒钟;
- 每次网络传输,无论数据多少,都会导致能量尾。
能量尾
解耦用户交互与网络通信
如果移动应用确实慢,且一时半会解决不了,那就增加UI交互,提供即时反馈吧。
面对多网络接口并存的现实
移动应用必须足以应对各种常见的网络错误:无法访问的主机、吞吐量突然下降或延迟突然上升,甚至连接彻底断开。
在浏览器中,可以使用navigator.onLine接收连接状态通知,也可以利用NetInfo(Network Information API,网络信息API)查询和监听连接属性的变化。
iPhone 4的天线门
是无法准确预测无线性能的一个典型事例:信号质量会受到握持手机的手与天线距离的影响。
知道移动网络属于哪一代或是什么类型,不能保证任何端到端的性能,但却能知道无线网络第一跳的延迟数据,以及运营商网络中端到端的数据。
移动应用应该:
- 不要缓存或试图猜测网络状态;
- 调度请求、监听并诊断错误;
- 瞬态错误总会发生,不可忽视,可以采取重试策略;
- 监听连接状态,以便采用最佳请求方式;
- 对重试请求采用补偿算法,不要永远循环;
- 离线时,尽可能记录并在将来发送请求;
- 利用HTML5的AppCache和localStorage实现离线应用。
爆发传输数据并转为空闲
移动无线接口专门为爆发性传输做过优化。
要想快,就要简单:批量请求,预先下载尽可能多的数据,然后让网络空闲。
渐进加载资源在移动网络中弊大于利。要尽可能预先下载数据,尽量让无线模块空闲:
- 如果需要大型音频或视频文件,考虑提前下载整个文件,而不要以比特为单位地流式下载;
- 预先取得应用内容,通过测量和统计工具来辨别什么内容适合提前下载;
- 预先取得第三方内容如广告,通过应用逻辑提前显示并更新它们的状态;
- 允许设备关闭无线模块,保持其空闲,不要忘了优化和消除间歇性传输。
构建和评估预取模型
最低限度,要做到三个变量的平衡:传输的字节数、对电池的影响,还有网络吞吐量及延迟的变动。对于能准确预测使用模式的应用,可以采取激进的预取策略,将电量消耗降到最低,提升用户体验,同时避免大下载量的开销。
把负载转移到Wi-Fi网络
移动上网按量计费且价格不菲,流量往往都有上限。Wi-Fi连接下的大数据量传输更省电。
遵从协议和应用最佳实践
给移动应用开发者的建议:不能一叶障目,性能优化有一整套体系,从网络基础设施,到移动端,到应用层协议。