1998年至2008年是公认的互联网飞速发展的十年,无论是传输速率、网络规模、关键技术还是应用领域都经历了大幅的增长。如今又一个十年过去,互联网迎来了诞生50周年的重要时期。回顾最近一个十年,互联网同样发生了很大的变化:移动互联网数据速率的大幅提高和智能手机应用的快速普及、主干网传输速率达到100Gbps、IPv4地址分配完毕、IPv6网络快速发展、新型传输协议QUIC的诞生、云计算的广泛部署等,但也有很多未发生显著改变的方面,例如网络体系结构和分组格式、域内域间路由协议、基于SNMP的网络管理、DDoS攻击防范技术的部署等。这些快速发展的方面与相对稳定的方面结合起来,给互联网带来了新的挑战和机遇。在此背景下,本文旨在对互联网2008-2018十年的发展进行回顾和分析,尝试总结技术发展的趋势和影响发展趋势的要素,结合中国互联网的建设和发展历程,指出未来互联网技术可能的发展方向和应当重点关注的领域,为我国互联网关键技术争取国际领先地位提出建议。
值得注意的是,互联网是一个物理上覆盖全球、逻辑上覆盖人类生产生活方方面面的复杂巨系统,它所涉及的技术领域非常广泛,其中任何一部分都有着丰富的技术积累和研究成果。限于篇幅,本文不可能对所有相关领域的研究进行详细介绍和分析,而是将重点放在实际互联网中广泛部署的技术的发展和演进,力争突出其中最显著的特征,因为任何技术研发的终极目标都是应用。
本文接下来的安排如下。本节先简要介绍互联网的历史和2008年之前的主要技术发展。第2节回顾互联网2008年至2018年发展的历程,按照互联网体系结构自下而上的顺序,依次从物理和数据链路层、网络层与网络管理、端到端传输、应用层回顾互联网发生的重大变革、增量式演进和基本保持不变的方面。第3节介绍中国互联网2008-2018年的发展情况。第4节分析总结互联网近两个十年所呈现出的发展现象背后潜在的规律和给互联网所带来的挑战,提出未来可能的发展方向和应当重点关注的领域。第5节为结束语。
1.1互联网历史简介
1969年,在美国国防部组建的高级研究计划局(Advanced Research Projects Agency,ARPA)的推动下,世界上首个基于分组交换的试验网络ARPANET开始建设。同年10月,斯坦福大学和加州大学洛杉矶分校的计算机通过ARPANET首次连接了起来,成为了世界上最早的互联网主机。随后,越来越多的节点和网络都连接进入互联网,到1987年,接入互联网的主机约3万台。1990年诞生了第一个提供拨号上网服务的服务提供商,而1995年被认为是互联网商业化的第一年。从1969年至1990年代中期的这段时间内,诞生了很多决定互联网命运的关键技术。
1971年,电子邮件被发明出来。1974年,TCP/IP协议诞生。1978年,BBS诞生。1983年,ARPANET开始使用TCP/IP协议交换数据。1984年,DNS系统诞生。1986年,开放系统互联(Open System Interconnect,OSI)体系结构被提出来,虽然这一体系结构没有取得最后的成功,但是它为互联网提供了重要的参考模型。1990年,以HTML、HTTP和URL为基础的万维网完成,1991年,互联网上出现了第一个网页。互联网发展历程中每一次突破都有一定偶然性,产生的新技术都存在不完美之处,而最终留下来的都是那些功能实用、实现简单、成本低廉的技术。
1.2互联网2008年前概况
在1990年代,人们便已经认识到互联网不再是一个研究和实验网络,也不再是验证OSI体系结构可行性的中间产物。当时已经不再有人怀疑互联网将取得巨大的发展和成功。除了互联网,已经没有其他东西能够满足人们对于数据通信的需求。
在物理与数据链路层,互联网主流的用户接入方式从拨号上网变为了多种更高速率的接入方式。拨号上网调制解调器的数据速率从9600bps逐步发展到56kbps,已经将3KHz语音线路这块海绵里的最后一滴水挤了出来,不再适应用户对数据通信速率的需求。其他一些组网方式如帧中继、X.25等也逐渐减少。以太网和数字用户线路迅速得到了广泛的部署,光通信系统之上的IP网络开始发展。在2008年的时候,10Gbps光纤链路已经得到了普遍的支持。
在网络层,很多新兴的技术在2008年前被提出来,掀起了研究的热潮,然而最终真正获得广泛部署的却寥寥无几。1998年提出的服务质量(Quality of Service,QoS)推动了区分服务、队列管理、分组分类等一系列算法和机制的研究。然而,实际的网络运营商通常还是选择扩大网络容量这一简单的方法来满足用户的需求,使得QoS并没有得到广泛使用。IP组播技术和IPSec技术也经历了类似的遭遇。除此之外,2008年前的互联网网络层的确发生了一些变化:为了应对IPv4地址空间不足问题,IPv6被提出来并开始初步建设,同时NAT技术的应用也越来越广泛;BGP成为互联网标准的域间路由协议,OSPF和IS-IS为互联网标准的域内路由协议;MPLS和VPN技术出现并得到应用。然而总的来说,2008年之前互联网网络层最大的特征在于IP协议一直占据了主导和核心地位而没有变化。
在传输层,TCP与UDP协议成为了互联网广泛采用的协议,各占据了网络流量的95%和5%。尽管研究人员开发了数据报拥塞控制协议(Datagram Congestion Control Protocol,DCCP)与流控制传输协议(Stream Control Transmission Protocol,SCTP)来作为TCP协议的改进版本,然而都没有得到广泛使用。与此同时,研究人员对TCP拥塞控制机制作出的改进提高了TCP在不断发展的网络中的传输性能,如具有更高带宽或无线通信的网络。
在应用层,一大批新兴的互联网应用在2008年之前的十年里涌现出来,包括搜索引擎、网络视频、网络电视、图片分享等等。Google、Youtube、Flickr、Joost、Wikipedia对于当时的人们来说就已经是耳熟能详的名字。P2P流量曾一度占据了互联网总流量的40%至80%。Web 2.0技术也发展起来。到了2008年,网络电话技术已经逐渐成熟起来。
『2 互联网2008-2018年发展回顾』
总体上,2008-2018年互联网的发展与2008年之前有所不同。如果说2008年之前互联网迎来了爆发式的增长,那么2008-2018年互联网则进入了一个相对稳定发展的阶段,已经增长到巨大规模的互联网在进一步发展时,其巨大的惯性起到了显著的作用。接下来的几个小节将大体按照互联网体系结构自下而上的顺序进行回顾和分析。
2.1 物理与数据链路层
2.1.1 光传输与光交换
光学系统在过去十年中持续地发展变化。十多年前,光学系统的产品使用简单的开关键将信号编码到光信道中。对于这一代光学系统而言,速度的增加依赖于硅控制系统和激光驱动芯片的改进。1990年代后期引入的波分复用(Wavelength Division Multiplexing,WDM)允许运营商大大增加其光缆基础设施的承载能力。而在过去的十年中,光学系统中的极化和相位调制已经发展为有效提升每波特信号位数的方式,相关研究领域得到了充分的发展。2008年,运营商干线主要还是采用10Gbps WDM以及少量的40Gbps WDM传输系统。2009年Verizon部署了全球第一条商用100Gbps WDM链路。2013年100Gbps技术在全球市场迎来爆发性增长,同时更高速率的400Gbps WDM系统从2014年起在欧洲、北美、亚太等多家运营商也开始了现网试点和小范围部署,光层组网规模进一步扩大。截至2018年,400Gbps相关的ITU-T G.709系列、IEEE 802.3系列接口国际标准已基本完成,基于城域应用的400Gbps标准化工作仍在ITU-T、IEEE和OIF等标准组织或论坛中开展。这种系统将使用多种更快的基本波特率和更高水平的相位幅度调制的组合。更高速率和更大容量的传输技术仍持续研究和试验,1Tbps的光通信服务也可能会在近期出现。此外,无缘光网络(Passive Optical Network)技术已成为高速接入主流技术,高精度时间同步技术也随着网络数据速率的提高得到迅速发展。
传统通信网络和光纤网络并存时存在光电交换的过程,光电交换速度取决于电路交换的工作速度,本来带宽较大的光纤网络在进行光电交换时就变得狭窄了,这降低了整个网络的带宽。过去的十年中,数据传输带宽容量的急剧增长,网络节点处的数据交换压力不断增大,电交换技术网络节点的成本和能耗随交换容量的增加呈增长趋势。网络节点的带宽和能耗将会成为网络带宽容量的瓶颈。采用全光交换的技术是突破带宽能耗瓶颈的有效途径。然而现有全光电路交换还不能够适用于IP网络。全光电路交换目前只能够提供波长级的粒度,远大于现有IP网络中的业务粒度。这种不匹配会造导致网络容量无法增加,使得光网络巨大的带宽资源难以得到充分利用。全光分组交换和全光突发交换可以提供更细的业务粒度,这些技术所依赖的全光缓存及全光逻辑器件目前尚不成熟,这些技术的应用前景目前来看并不乐观。适合IP网络业务粒度、仅依赖成熟器件的光交换技术亟待突破。目前国际上这个领域的研究还处于初始的阶段。
可见光通信是光传输领域一项新兴技术。2008年,日本可见光通信实验系统达到100Mbps速率。2010年,德国弗劳恩霍夫研究所的团队将通信速率提高至513Mbps。2015年,英国斯克莱德大学又把离线速率提高到1.5Gbps;2014年,复旦大学研发出3.75Gbps离线数据传输的速率;2015年,中国解放军信息工程大学通过多路并行系统将通信速率提高至50Gbps。可见光通信作为新技术研究热点,十年间取得了很多重要突破,但应用上存在明显短板,例如端节点缺少上行传输手段、接入节点回传能力不足、接收机灵敏度不高等,因此需求不甚强烈,缺乏相关产业链支撑,截止到目前并没有真正完成从技术到商用的转化
2.1.2 移动无线网络
移动无线网络技术在过去的十年里发生了巨大的进步,从3G时代彻底迈入了4G时代,也让人们从互联网时代进入了移动互联网时代。移动无线网络技术的革新深刻的改变了人们的生活。近两年,随着5G标准的逐步完善,一些国家也开始了5G网络的初步部署。
从移动通信技术的角度讲,无线电系统的总体带宽容量在过去的十年中实现了飞速增长。与光学系统中的变化类似,信号处理技术通过改进相位调制来提升无线电承载的数据速率。大规模多输入多输出(Multiple-Input and Multiple-Output,MIMO)技术的使用以及更高的载波频率的使用,使得移动数据服务能够在当今的4G网络中支持高达100Mbps的数据速率。在不久的将来,随着5G技术的部署,移动系统可以获得最高达1Gbps的速度。
MIMO技术是支撑移动无线网络在过去十年中发展的重要技术。它是指在移动无线网络中的发射端和接收端上分别使用多个发射天线和接收天线,使信号通过发射端与接收端的多个天线传送和接收,从而改善通信质量。MIMO通过多个天线实现多发多收,在不增加频谱资源和每个天线发射功率的情况下成倍的提高信道容量。除了MIMO技术以外,正交频分复用(Orthogonal Frequency Division Multiplexing,OFDM)技术也属于4G时代的核心技术。OFDM是一种多载波传输技术,其多载波之间相互正交,可以高效地利用频谱资源。OFDM将总带宽分割为若干个窄带子载波,可以有效地抵抗频率的选择性衰落。MIMO和OFDM等新技术提供了更高效的无线连接性能,提升网络带宽容量,解决了过去十年中4G数据流量激增而带来的新需求。
从近两年发布的5G标准[1]中可以看到,相对于4G技术,5G将以一种全新的网络架构,提供峰值1Gbps以上的带宽、毫秒级时延和超高密度连接,实现网络性能新的跃升。5G的愿景包括三方面。1)增强移动带宽。5G将为用户提供超高清视频、下一代社交网络、增强现实等更加身临其境的业务体验,促进人们交流方式再度升级。2)海量机器类通信。5G将支持海量的机器通信,以智慧城市、智能家居等为代表的典型物联网的应用场景与移动通信深度融合,预计有海量的设备将通过5G网络开展服务。3)超高可靠低时延通信。5G还将提供超高可靠性、超低时延的网络通信,促进如工业互联网、车联网、移动医疗等相关行业的应用,拓展大市场,带来新机遇,有力支撑数字经济蓬勃发展。
在全球范围内,5G部署的频段有两种。一种是6GHz以下的频段,被称作sub-6GHz。另一种是毫米波,即波长在1至10毫米的电磁波,对应频率为30至300GHz。目前,毫米波的主要应用场景还仅仅是卫星通信、雷达和一些军事应用。5G需要大量的带宽,即大量的频谱资源,而30GHz以上有丰富的频谱资源。过去没有开发毫米波的主要原因有两点,其一是商业需求不大,其二是技术不成熟。在5G商用的初步阶段,中国、欧洲、日本、韩国、澳大利亚等多个国家都计划使用6GHz以下频段做试验频段。
2.1.3 移动互联网终端
提到移动无线网络,就不得不提移动互联网终端,虽然它并不单纯属于物理与数据链路层,但出于它与移动无线通信密不可分的关系,还是在这一部分进行简要介绍。随着移动无线网络的带宽越来越高,在过去的十年中以智能手机为代表的移动互联网终端发生了飞速变革。
2007年1月,苹果正式发布采用触屏控制的iPhone,开创了一个全新的手机交互模式。2008年第一台安卓手机诞生,最早的安卓系统Android 1.0安装在HTC公司生产的T-Mobile G1手机上。值得注意的是,虽然相比于iPhone出现的更晚,但是T-Mobile G1保守的没有使用触控屏。
2010年,苹果iPhone 4发布,它的设计理念远远领先业界:视频通话功能、玻璃机身、500万像素摄像头、视网膜级别显示屏、主动降噪麦克风。在过去的十年中,随着各个厂家之间的竞争越来越激烈,智能手机支持的功能也越来越多,远远超越了通话本身。大浪淘沙,从操作系统上看,微软的Windows Mobile和诺基亚的塞班系统已经退出了移动互联网舞台。安卓与苹果的iOS是手机操作系统领域竞争的胜利者。在智能手机市场,中国厂商(华为,OPPO,小米等)在近几年里的份额越来越多,成为了三星苹果之后强劲的竞争对手。如今,在5G时代的大门前,各家手机厂商又蓄势待发,进行下一轮的竞争。
2.1.4 其他方面
除了上述几个方面,互联网物理与数据链路层的其他一些方面却基本保持了十年前的样子。虽然光纤的速度正在不断增加,黄色同轴电缆也已经消失,但是以太网分组帧的格式却意外的保留了下来。更加令人惊奇的是,以太网定义的64字节和1500字节的最小和最大数据包大小仍然被现在的设备广泛使用。在过去十年中,这一基本不变分组大小必然促使网络设备处理分组能力上限的增加。在这段时间里,分组的处理速度增加了大约100倍,这与设备的传输速度从2.5Gbps增加到400Gbps的倍数一致。然而在过去十年中,处理器的时钟频率和内存的周期时间却并没有改变。因此,为了使路由交换设备获得更高的分组处理速率,人们越来越依赖于并行处理。现在网络设备使用多核处理器和高度并行存储系统来实现单线程处理模型中不可能实现的性能。
2.2 网络层与网络管理
2.2.1 IPv4与IPv6
为每台联网设备分配一个全球唯一的IPv4地址,将这一基本逻辑称为互联网的支柱也毫不过分。这根支柱拥有232个(约43亿)IPv4地址的巨大空间,过去绝大多数人都未曾想过这根支柱会有折断的一天,然而在互联网诞生不到50年的时间里,这件事的确发生了。2011年2月3日,互联网地址分配机构(The Internet Assigned Numbers Authority,IANA)宣布IPv4地址空间段的最后2个“/8”前缀已经分配出去。尽管当时各地区的分配机构还保留着一些IPv4地址库存,但从全球意义上讲,这正式宣告了IPv4地址空间的耗尽。目前,全球五大地区分配机构的IPv4地址库存也已基本用完。2011年4月,亚太互联网信息中心(Asia-Pacific Network Information Center,APNIC)所拥有的IPv4地址资源除少量保留地址外全部耗尽。2014年4月,负责美洲及非洲撒哈拉地区IPv4地址分配的美国互联网号码注册机构(American Registry for Internet Numbers,ARIN)开始分配其最后的“/8”前缀。
然而在过去的十年中,可以认为互联网最显著的特征就是仍然运行着IPv4。尽管IPv4受到了来自于多方的质疑与压力,也经历了地址空间不足的严重问题,但它还是顽强地坚持了下来。根据统计,截止至2019年3月底,全球互联网的用户人数大约为44亿[3]。2018年底,全球联网的设备数量约为220亿台[4]。令人感到震惊的是,支撑这一庞大数量的仅仅是30亿个全球IPv4地址(不包括私有地址)。实现这一奇迹的关键技术主要有两个:IPv6和网络地址翻译器(Network Address Translators,NAT)。
早在1990年代,人们就意识到IPv4地址不足的问题,并提出了IPv6的构想。IPv6地址128比特的长度提供了IPv4地址数量296倍大小的空间,使得人们再也不用担心地址耗尽问题。然而从IPv4互联网过渡到IPv6互联网是一件极具挑战的任务。IPv6不具备向后兼容性[5],所有的端设备(主机、手机)和网络设备(路由器、交换机)都需要支持IPv6,所有的相关协议、基础设施都要进行全面的更新,必然带来巨大的开销。为了节约开销,多数人选择了使用NAT。NAT对IPv4地址进行了时分复用,即一台设备只有在需要联网的时候才占用一个地址。互联网中广泛使用的一种NAT变体是网络地址端口翻译(NetworkAddress Port Translation,NAPT),NAPT使网络内部的多个设备通过同一个公共IP地址访问互联网。NAT广泛部署于互联网边缘,其作用甚至对互联网体系结构产生了影响。例如,考虑到不同NAT内部的用户之间建立连接较为困难,更多的互联网应用选择了客户端-服务器(client/server)模式以取代对等(peer-to-peer)模式。
在IPv6方面,当前部署了IPv6的网络相比十年前已经有了很大的增长。目前互联网用户的大约五分之一都可以通过IPv6上网,占了全球总人口数的约十分之一。这一增长主要都发生在过去的十年里[6]。然而与十年前一样,人们在是否应当立即部署IPv6这一问题上的争议仍然没有定论,互联网何时才能全面部署IPv6也还没有得出答案。为了回答为什么剩下的五分之四的互联网用户没有部署IPv6,文献[7]基于统计数据和经济学原理进行分析,发现了一个有趣的现象:IPv6在某种意义上是“富人的游戏”。一般的服务提供商(Internet ServiceProvider,ISP)在面临多种选择时,更愿意把有限的预算用于比部署IPv6更加紧迫的需求,主要是提升用户体验,例如带宽扩容、购置更多内容和服务等,因此IPv6的部署就被无限期延后了,直到IPv4地址的紧缺成为不得不解决的问题。
2.2.2 域间路由与域内路由
在过去十年中,互联网几乎没有发生变化的一个部分就是路由系统。十年前,人们预测边界网关协议(Border Gateway Protocol,BGP)很快就会发生严重的可扩展性问题,但是事实上,BGP仍然一直坚持着为互联网的域间路由服务。在这十年里,IPv4核心路由表增长为原来的三倍,由2008年的约25万条增长到2019年的约75万条[8]。IPv6的路由表数量增长更为惊人,从十年前的1100条增长到如今的5万多条。然而,BGP作为全球互联网唯一的边界网关协议仍然有效、高效地工作至今。谁都没有想到当初为数百网络的几千条路由设计的协议能够有效支持数十万网络的近百万条前缀。即使如此,由于BGP采用的路由技术与十年前并没有差别,BGP仍然面临着一系列问题,时常发生的管理员误配置和恶意前缀劫持导致的问题仍然危害着互联网。研究人员一直在致力于解决BGP面临的可扩展性、稳定性、收敛性和安全性问题,例如BGPsec[9]通过资源公钥基础设施(Resource Public Key Infrastructure,RPKI)来确保BGP路径的真实性,过滤虚假路由,防止路由劫持。BGPsec从2011年起经历了多年的探讨,终于在2017年成为了标准,在今后互联网的发展中或将得到广泛部署
另一方面,互联网域内路由协议也没有进行大的改动。规模较大的网络通常根据它们的设备环境选用OSPF[10]或ISIS[11]协议,而较小的网络可能会选择距离向量协议,如RIPv2甚至EIGRP。随着IPv6的发展,OSPF协议也进一步扩展为OSPFv3[12],然而基本的技术原理并没有发生变化,各个路由器仍然采用链路状态信息数据库来保持一致的全网拓扑视图,并通过Dijkstra最短路径算法计算路由。过去十年中,IETF中路由领域的工作组也提出了一些新的域内路由协议。例如为了解决IP地址同时具有位置和身份标识这二重语义的问题,提出了位置/身份分离协议(Locator/IDseparation protocol,LISP)[13];为了解决距离向量协议中的路由环路问题,提出了Babel路由协议[14],可用于有线网络或无线mesh网络。尽管这些新的协议在路由管理方面具备一些有趣的特性,然而它们所具备的能量和能够带来的好处还不足以改变传统网络设计与运行惯性,因此它们都没有得到大规模的使用。从过去十年的互联网路由,可以看到互联网巨大规模所具有的惯性给技术发展和变革所带来的阻力。
2.2.3 网络管理与配置
在网络管理方面,大约25年前提出的简单网络管理协议(Simple Network Management Protocol,SNMP)仍然是目前广泛使用的工具。SNMP存在很多问题,包括安全性较弱,处理效率较低,ASN.1标准复杂而难以使用等。另一方面,SNMP更加适用于网络监控,但并不适用于网络配置,网络管理员需要人为手动进行大量繁杂的网络配置任务,不仅效率低下而且容易出错。为了解决这一问题,自动化的网络配置管理方法和工具是过去十年里研究人员努力的方向之一。
早在2003年,IETF就成立了Netconf工作组,目标是提出全新的网络配置协议NETCONF[15]。NETCONF采用可扩展标记语言(eXtensible Markup Langrage,XML)来传递配置数据和协议消息,并采用基于连接的可靠传输和SSH等安全协议来提高安全性。2010年,IETF提出了YANG(Yet Another NextGeneration)语言[16]用于对NETCONF协议中涉及的各类数据建立模型,随后的一系列标准为路由、传输、安全、服务相关的管理数据建立了YANG模型。近年来提出的RESTCONF协议[17]对YANG模型数据库提供了基于HTTP协议的可编程访问接口。网络管理数据仓库(Network Management Datastore Architecture,NMDA)[18]提供了连接网络管理数据模型与网络管理协议的框架。另一方面,一批的自动化配置工具涌现出来,可以对大规模网络设备或服务器进行更高效的管理,包括Ansible[19]、Chef[20]、NAPALM[21]、SALTSTACK[22]等。这些自动化、批量处理的工具逐渐取代原始的基于命令行和脚本的配置方式。但总的来说,过去十年里互联网网络管理方面发生的变革仍在继续,距离实现自动化、智能化的网络监控和配置还需要时间。
2.3 端到端传输
2.3.1 TCP
TCP协议是互联网端到端协议的核心。许多其他传输协议要求较低级别的网络协议栈为传输协议提供可靠的流接口。这些传输协议需要由网络层及以下的部分来创建这种可靠性,并且执行数据完整性检查,数据流控制,在网络内部恢复丢失的数据等等。TCP免除了所有这些对网络层的要求,并简单地假设网络仅仅可以提供不可靠数据报传送服务,并让TCP传输层协议负责数据完整性和流量控制。
在TCP领域,过去十年似乎没有太大变化。TCP的内部机制(拥塞控制)有一些细微的改进,主要是速率增加和降低过程中细节上的改进,但没有改变这个协议的基本行为。TCP仍然倾向于使用分组丢失作为拥塞的信号并且基于“加法增加,乘法减少”(Additive Increase Multiplicative Decrease,AIMD)[23]的规则在较低速率和能够触发丢失的较高速率之间振荡其流速。
在过去十年中一个与TCP协议密切相关的协议,多路径TCP(Multipath TCP, MPTCP)在IETF(Internet Engineering Task Force)被提出[24-25]并且逐渐的正在被标准化[26]。如图2所示,它主要有两个应用场景,一个是数据中心网络,还有一个是多种无线接入网络。在这两个场景中端到端之间存在多条路径,即端到端之间存在多个带宽来源,但是TCP协议只能够让端系统的一个连接使用一条路径。
多路径TCP则可以满足这个需求,MPTCP重新定义了连接的概念,一个连接不再是一个四元组组成,而是由一组四元组组成。每一个四元组定义了一条子流,一个连接的数据可以使用所有的子流进行传输。对于网络层,每一个子流就像是一个传统的TCP连接一样。在数据中心网络中,MPTCP可以和ECMP(Equal-Cost Multi-Path)同时使用,ECMP会把每个子流当成传统的TCP连接进行负载均衡,这样一个连接的数据就能够在多个路径上传输,从而实现一个连接可以同时使用多条路径。在多种无线接入的场景中,一个连接不再唯一的绑定一个IP地址。一个具有多个网卡的移动设备,可以使用所有的网卡获取IP地址与远端服务器建立若干个子流的连接。
多路径TCP的拥塞控制算法得到了重新的设计并且它有以下三个目标[27]:
提高吞吐率:多路径的流的吞吐量应当至少达到,在最好的路径上一条单流(TCP流)能达到的吞吐量。
公平性:多路径的流在任意一条共享链路上占用的带宽不会超过传统 TCP模式占用的带宽。这样就保证了多路径TCP不会过度影响到其他的流。
平衡拥塞:多路径的流应当尽可能的把数据从拥塞的路径上移开。
遵循这些原则,目前已经有若干个多路径TCP拥塞控制算法被设计出来(LIA[28],OLIA[29],BALIA[30], wVegas[31]。)并被实现到了Linux网络协议栈中。
2.3.2 BBR
近年来,谷歌公司提出了新的拥塞控制算法:Bottleneck Bandwidth and Round-trip time control algorithm(BBR)[32]。BBR与现有的TCP拥塞控制算法很不相同。BBR试图保持恰好位于发送方和接收方之间的端到端路径的带宽延迟积的速度。通过这种方式,它试图避免网络中数据缓冲的累积(当发送速率超过路径容量时),并且还试图避免在网络中留下空闲时间(发送速率小于路径容量)。BBR能够显著提高传输层使用端到端之间带宽的效率。
TCP的标准拥塞控制算法Reno[33]以及Linux使用的拥塞控制算法Cubic[34]有一个共同的特点。它们都会试图不停的提高发送速率,直到路径上出现丢包。丢包的出现是因为路径上的分组队列的长度超过了设备能够提供的存储空间,而队列的出现是由于对应设备出网口处的带宽资源小于进入流量的总速度。Reno和Cubic不停地增大拥塞控制窗口,直到瓶颈链路排队然后丢包。与此不同的是,BBR尝试的估计端到端的带宽延迟积,尽可能的不去排队。
BBR将周期性地在一个RTT间隔的时间内,发送一定量的数据,数据量是带宽延迟乘积的1.25倍(增益因子)。这个速率不是非常具有侵略性,但是在RTT间隔内足以完全占用链路并使之进入排队的状态。如果可用的瓶颈带宽没有改变,那么增加的发送速率将导致在瓶颈处形成队列。这将导致ACK显示RTT被增大,但瓶颈带宽估计不变。如果是这种情况,则发送方随后将在一个RTT内以降低的发送速率发送数据,从而使得瓶颈队列耗尽。如果由于此探测而可用的瓶颈带宽估计已增加,则发送方将根据此新的瓶颈带宽估计进行操作。
BBR连续的带宽探测操作将继续以相同的增益因子增加发送速率,直到由于这些探测而估计的瓶颈带宽不再变化。这种通过定期的探测路径以揭示路径特征的变化是从基于丢弃的拥塞控制算法借用的技术。拥塞控制算法通过每8个RTT间隔将数据发送速率提高25%,在路径上增加流量压力。如果这导致相应的排队负载,如增加的RTT,则算法将降低速率使得队列能够耗尽。然后在估计的路径带宽和延迟处以稳定状态发送数据。
2.3.3 QUIC
QUIC是近年来出现的具有广泛影响力的新传输协议,是在UDP之上开发的控制协议。它采用多路复用提高效率,采用加密避免网络中间节点对端到端流量的干预。QUIC的体系结构如图4所示。QUIC[36]跨越传输层与应用层,它的功能兼具TCP、TLS和HTTP/2等协议的功能:类似于TCP,QUIC内置拥塞控制、丢包恢复的模块;类似于TLS,QUIC进行数据包传输加密,支持端到端传输,避免中间节点的干扰;类似于HTTP/2,QUIC支持多路流复用的数据传输。在此基础上,QUIC的更上层只需要完成HTTP协议解析即可。
QUIC的多路复用机制是指通过单个传输连接发送多个数据流。在访问HTTP服务器时,由于HTTP/1.1一次只能请求一个资源,客户端通常需要建立多个并发的TCP连接,这种方式导致了复杂的连接管理以及低效的端到端资源的使用(每个连接都要从慢启动开始增加拥塞窗口)。HTTP/2则通过在一个TCP连接上进行多路复用来解决该问题。然而即使不同流(stream)的数据内容是相互独立的,如图5(a)所示,某条stream上的数据丢失仍然可能导致队头阻塞,因为TCP连接要求所有数据按照发送顺序传送到应用程序。在QUIC的设计中,如图5(b)所示,QUIC也支持在单个连接上复用并发的HTTP stream,一个QUIC连接可以携带相同或不同stream的多个帧,属于同一stream的所有帧按顺序传送。与HTTP/2不同的是其中一条stream中的丢包不影响其他stream的数据传输。
为了提供安全传输,QUIC集成了TLS的安全功能,并强制加密所有传输数据。在连接建立的过程中,QUIC采用了Diffie-Hellman密钥交换算法,在服务器与客户端分别生成随机数用以生成密钥,再利用密钥加密后续所发送的数据。在防止用户隐私泄露的同时,也可以避免中间设备对流量造成干扰。服务器、客户端均使用数据包编号作为标识,该编号位于未加密的包头,故而在乱序接收数据包的情况下也可以进行解密。
除了以上两个特征外,QUIC还有以下特点:
1)0-RTT时间的安全连接建立;
2)实现于应用层,可快速迭代和部署;
每一个连接由唯一的标识符标识。
2.4 应用层与网络安全
2.4.1 云计算与CDN
2006年云计算的概念被提出,从2008年到2018年这十年里得到了快速的发展和部署。与此同时,互联网的内容提供和服务模式也发生了巨大变化,随着越来越多的数字服务迁移至内容分发网络(Content Delivery Network,CDN)中,互联网应用的主流已经从过去的面向PC的下载服务,演变为各种各样的在线服务、APP服务等。
随着云计算的兴起,个人用户的计算机不再是具有处理和计算资源的独立系统,而是越来越像一个窗口,通过它可以看到存储在公共服务器上的数据。在云计算的模型中,本地设备实际上是存在于互联网中更大的后备存储的本地缓存。当一个用户可能拥有多个设备的时候,云计算模型极其有意义,因为无论用户使用哪个设备访问数据,在云计算的支持下,他访问的公共后备存储的内容都是一致的。这些云服务还能够更容易地支持具有数据共享功能或者协同工作功能的应用。在支持这些应用时,云模型不是去创建原始文档的一组副本,然后把所有用户编辑过的文档整合成一个,而是通过简单地更改文档的访问权限来共享文档。该文档只有一个副本,所有用户都可以访问它,并且用户可以根据自身的权限看到该文档的相关的编辑和注释。
与云服务紧密相关的是互联网的内容提供和服务模式。在过去的十年里,CDN深刻影响了互联网的应用。在这之前的一段时期里,互联网中的数据传送和内容之间虽然互相依赖,但是属于不同的业务领域。传送的任务是让用户能够访问内容,这意味着传送对于内容十分重要。类似的,内容对于传送也很重要,基于客户端/服务器模型的互联网失去了内容也是没有意义的。二者之中的内容产业更加有利可图,并且更少地受到监管和约束。许多内容提供商向公众提供免费服务,如免费电子邮件,免费内容托管,免费存储等,然后通过另一项交易为这些服务提供资金,主要是将消费者资料销售给出价最高的广告客户。在这个过程中并没有出现比较明显的监管。最后,内容产业使用自己的能力和资本消除了对数据传送产业的依赖,促成这个转变的就是CDN技术。在CDN的模型中,互联网不再需要将用户引导到不同的内容资源上,这些内容已经由CDN迁移到了用户附近。一旦所有类型的数据服务都迁移进入了CDN,并且CDN将这些服务部署到了临近具有商业价值的用户的地方。互联网中传统的传送业务又还能扮演什么角色呢?这些传统的传送业务提供者的前景并不乐观。