万亿级流量转发:BFE核心技术与实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4 网络前端接入技术的发展趋势

BFE的技术研发基于对网络前端接入技术发展趋势的观察和思考。本节对网络前端接入技术的发展趋势进行讨论,涉及内容包括以下几方面。

(1)网络传输的加密化。

(2)网络协议的技术门槛提高。

(3)移动化对网络前端接入的影响。

(4)网络安全防护的重要性提高。

(5)数据驱动的运营。

(6)自动化/智能化的控制。

(7)网络前端接入的软件化/服务化/开源化。

(8)网络前端接入的云原生化。

1.网络传输的加密化

作为一种对网络访问进行加密的技术,早在2000年 HTTPS就已经在RFC2818中被定义。但是在之后的十多年间,HTTPS在业界并没有被普遍使用。

近年来,随着互联网在人们生活中的快速渗透,互联网所承载的经济利益越来越高,HTTP明文传输所导致的安全风险也越来越大。对于未使用HTTPS技术的网站,可能会存在以下威胁。

(1)配合 DNS劫持技术,网站可能被伪造。对于包含具有经济利益的账户的网站(如银行、电商),黑客可以通过这样的方式得到用户的账户名和密码。

(2)用户获得的访问内容可能被篡改。例如,对于一些具有高质量内容的网站,黑客可能在网站主没有感知的情况下通过广告内容获取非法利益。

(3)用户的访问信息可能被嗅探。例如,通过嗅探用户对搜索、电商等网站的访问情况,黑客可以将这些信息转卖给第三方公司并用于广告投放的优化。

从保护搜索流量不被劫持和窃听的角度来说,Google从2014年起大力推动自身的 HTTPS优化改造。2014年至2021年,Google产品和服务的HTTPS流量覆盖率从50%提升至95%,如图2.3所示。同时,Google也通过 Chrome浏览器的巨大影响力,推动第三方网站升级到 HTTPS,对于未使用 HTTPS的网站,在 Chrome浏览器中会显示为“不安全”。几乎在同一时期,国内的各大互联网公司也都开始全站 HTTPS优化改造的工作。

图2.3 Google产品和服务的HTTPS流量覆盖率(源自Google官网)

必须说明的是,HTTPS优化绝对不是“将 HTTP访问加密”这么简单,HTTPS优化给使用这项技术的公司带来了一系列挑战。

(1)对网络资源管理的要求提高。在 HTTPS优化中涉及 HTTPS证书的问题,而证书和域名紧密相关。在 HTTPS优化改造过程中,部分企业可能发现之前无序申请的大量域名可能会在证书的使用和成本方面带来很大问题。

(2)对于外部的依赖增强。在使用 HTTPS后,由于技术更加复杂,服务器一侧对于客户端的兼容性难度增加。在服务端程序升级时,有可能由于部分客户端程序/代码库不兼容导致服务访问的异常。另外,在使用HTTPS后,对 CA(Certificate Authority,证书授权机构)产生了很大的依赖,CA成为网站保持稳定性和安全性的一个新的隐患。

(3)对性能方面的影响。在 HTTPS中由于使用加解密技术,肯定会对性能产生一定的影响,尤其是其中使用的非对称加解密计算,会消耗大量的 CPU计算资源,这会导致网站成本的提升,并增加了 DDoS攻击的风险。

(4)对延迟方面的影响。和 HTTP相比,HTTPS会增加1到2轮的协议报文交互,从而增加用户的访问延迟。在用户和网站之间,对于网络延迟本身就是比较大的场景,HTTPS会加倍地“放大”这种延迟。

对于以上这些挑战,都需要在技术和机制上采取一些措施来解决。

2.网络协议的技术门槛提高

在大约20年前,搭建一个网站可能是一个相对简单的事情。HTTP就是主流的网络协议,一个对网络可能没有过多了解的技术人员,根据一些简单说明,下载一个 Apache(后来是 Nginx)软件,安装并运行就可以了。

最近几年,随着安全技术的升级,以及针对移动互联网的网络协议的升级,HTTPS、SPDY、HTTP/2、QUIC等协议不断出现,有些已被广泛使用。相比 HTTP,这些协议的复杂性提高了很多,并不是所有人都能够快速掌握这些协议。技术人员如果对相关协议技术没有深入了解,可能会遇到在安全性、稳定性和性能等方面的很多问题。这种情况推动了网络前端接入人员的专业化的提升,很多公司尤其是规模较大的互联网公司,都建立了专门的网络前端接入团队。

3.移动化对网络前端接入的影响

网络访问移动化体现在两个方面:一方面,从网络传输的介质来说,已经有相当大比例的流量来自无线互联网(如 WIFI、3G/4G/5G);另一方面,相当大比例的用户通过移动终端/移动客户端来访问,而不是通过 PC端。早在2014年10月,百度搜索在移动客户端上的流量就超过了 PC端。

网络访问的移动化,对网络前端接入产生了重要的影响,表现在以下几方面。

(1)传输协议的快速升级。互联网上经常使用的 TCP(Transmission Control Protocol,传输控制协议),其设计中包含的很多重要假设都是基于有线网络。例如报文的丢失,发生报文丢失的主要原因是网络中出现了拥塞,所以报文丢失可以作为发生拥塞的一个信号;端到端的延迟和带宽在一定时间内是相对稳定的,通过超时时钟的机制来发现丢失。在无线互联网场景下,以上很多假设被打破了。由于无线链路的特点,很多报表的丢失并不是由于拥塞,而端到端的延迟和带宽也是不稳定的。这种变化引发了业界对互联网协议的升级。

(2)传输协议的私有化。众所周知,TCP位于操作系统的网络协议栈中。全世界只有3家公司可以对移动端的操作系统进行修改,它们分别是:Google(Android系统)、苹果(iOS系统、macOS系统)和微软(Windows系统)。对于其他公司,在客户端一侧对 TCP进行持续优化的可能性很低,而之前的大量优化都只能让技术人员从服务端想办法。移动端尤其是 Native APP的广泛使用,改变了这种状况。QUIC就是一个例子,它基于 UDP(User Datagram Protocol,用户数据报协议)并运行在 APP中,任何公司都可以根据自己的需要对其进行修改和优化。

(3)HTTPDNS的兴起。DNS是互联网的三大基础机制之一(另外两个分别是 IP路由和 TCP拥塞控制),如前所述,DNS具有容易被劫持、生效速度慢、解析准确性低等固有问题,但在移动互联网时代,这些固有问题有可能得到解决。

4.网络安全防护的重要性提高

由于互联网服务能带来一定的经济利益,这也引来了各种攻击,如通过大压力导致网站无法服务的 DDoS攻击,或者利用网站的各种漏洞所实施的应用层攻击。网络攻击是被业务的价值吸引的,公司的营收越大,受到攻击的可能性就越大。如果没有足够的安全防护能力,想平平安安地利用互联网从事经济活动或客户服务几乎是不可能的事情。

我们经常看到类似这样的新闻:某个游戏公司的游戏产品做得很好,玩家非常喜欢,用户量不断上升,但突然被恶意 DDoS攻击,造成用户无法正常使用,导致大量用户流失,甚至公司倒闭;某个公司由于存在安全漏洞,黑客从数据库中窃取了客户的隐私信息,从而影响公司在市场中的声誉。

对于一般的公司来说,DDoS防护和 WAF防护等安全机制已经成为普遍需要的基础能力。在 DDoS攻击的防御方面,有以下两种可能的思路。

(1)对攻击流量进行过滤。这适用于攻击流量小于带宽容量,或者攻击流量小于负载均衡系统的场景。

(2)通过调度进行应对。当攻击流量大于带宽容量或负载均衡系统时,需要将流量调度到其他空闲的网络接入点。

在应用层攻击防御方面,要做的重点工作是以下两方面。

(1)检查规则的完备程度。WAF的有效性对检查规则的依赖度很高,0Day场景仍然是对 WAF的巨大挑战。

(2)执行检查规则所需要的计算资源。执行检查规则所需要的计算资源会随着规则数的增加而增加。在资源消耗和安全性之间,需要做权衡。

对攻击的防御,本质上是一种基于资源(包括带宽、计算能力等)的对抗。防攻击的能力部分取决于资源动员的能力,在被攻击的时候,是否可以灵活调用所有的带宽资源、服务器资源参与对抗,决定了攻击防御的结果。建设强大的资源调度能力,对于提升攻击的防御能力非常重要。

5.数据驱动的运营

在互联网最初出现的时候,业内存在这样一种说法:互联网是“尽力而为(Best Effort)”。和电信网络相比,无法保证非常高的稳定性。但是,目前很多互联网服务已经成为生活所必需的基础服务,其重要性类似于生活中的“水”和“电”,这就对互联网服务的稳定性提出了极高要求。

对应于网络前端接入,以前可能对服务、流量、故障的情况并没有持续和精确的数据报表及完备的监控。在很多公司,对于公司整体的每秒请求数、并发连接数、HTTPS握手成功率等是缺乏准确数据的,更不要说按照服务、域名、地域等维度对这些数据进行深入分析了。

要实现提升服务可靠性这一目标(如从99.9%提升到99.999%),肯定不能仅依靠人工运营的方式,而必须依靠技术手段。因此,转向基于数据的运营是必由之路。

前端接入网络数据方面的建设工作包括以下3方面。

(1)建立相关的报表体系。

(2)建立关键的监控。

(3)为自动化/智能化控制提供所需要的数据。

从数据内容的角度来说,可以考虑在以下3方面建立报表和监控体系。

(1)网络前端接入的业务的用户流量数据。

(2)各服务的后端服务的状况。网络前端接入作为调用方,可以发现后端服务在延迟、错误率等方面的异常。

(3)外部网络的状况。对于网络前端接入来说,外部网络是最难以控制的,需要尽可能对 Local DNS(本地域名系统)的解析情况、各地区到接入点的连通性等情况进行监控。

6.自动化/智能化的控制

前端网络接入中有很多需要决策的地方,如流量的调度、止损的处理等。在很多公司,这些问题仍然是依靠人工来处理的。

对于从人工升级到自动控制这一目标,很多人的认识仍然停留在“节省人力成本”上。其实,这还不是最重要的。在提升服务的可靠性方面,很多自动控制的能力是人工根本无法实现的。比如,在外网流量调度方面,百度的自动调度程序可以持续根据带宽资源、服务容量、网络连通性等信息,持续进行计算;在出现故障的情况下,在2min内实现自动切换。这样的效果是人工完全无法完成的(即使一个人可以持续7×24h的工作)。

从自动化控制的角度来说,可以优化的方向包括以下几点。

(1)将以前靠人来执行的策略,固化为系统中的策略,从而减少对个人的依赖。

(2)在建立模型的基础上,不断优化模型和策略。

(3)从定性的控制升级为定量的控制。在这方面,人是很难做到的。

这里必须要说明的是,实现自动化的控制并不是那么容易,这对系统设计提出了很高的要求。和基于人工控制的系统相比,自动控制的系统有以下两个基本前提。

(1)清晰的模型。自动化系统的难点不是系统和编码,而是模型的设计和优化。模型设计的质量决定了系统最终的质量,而对很多软件工程师来说,模型的设计能力是一个亟待弥补的短板。

(2)完备、可靠、可量化的数据。对算法的执行效果的控制严重依赖于所输入的数据。在可靠性要求方面,用于控制的数据远高于报表数据。如果数据系统出现了故障,也会导致最终控制的失败。在自动控制的系统设计中,需要在数据采集和控制方面做出很多容错的设计。

7.网络前端接入的软件化/服务化/开源化

之前大部分的网络前端接入功能都是由硬件设备提供的。使用者需要购置相关的设备,并部署在自己的数据中心。最近这些年,这方面已经发生了很大变化,具体表现为以下3点。

(1)软件化。基于标准服务器部署软件来实现网络前端接入的功能,如负载均衡、DNS。这不仅能降低设备采购成本,而且增强了这些功能的弹性扩缩容能力。

(2)服务化。对于某些功能而言,甚至不需要部署软件就可以直接使用服务,包括公有云中的各种负载均衡服务、DNS、CDN(Content Delivery Network,内容分发网络)及网络代理接入等,可以购买相关服务。

(3)开源化。在云计算领域,开源是重要的驱动力,在网络前端接入领域也是如此。开源增强了使用者对于软件的控制力,也增强了软件的进化能力。

8.网络前端接入的云原生化

云原生(Cloud Native)是目前云计算的重要方向。

一方面,网络前端接入系统要支持业务的云原生化,支持业务的微服务化、多租户、弹性扩缩容等能力;另一方面,也要实现自身的云原生化,自身需要具备微服务化、弹性扩缩容的特性。