@ fnii.cn

登录邮箱

谢高岗 构建高性能网络系统探讨

发表日期:2015年12月11日      共浏览 674 次      编辑:


很高兴有一起交流的机会。最近发现东西特别重要就是网络的性能,太慢,下手老是晚,永远抢不到红包,每次看到抢红包的时候都是红包已经抢完了。有没有可能把网络做快点,最好有和腾讯的离计算平台是最近的。

有很多报告说,网络性能是特别重要的,当增加500毫秒的时候,整个会减少3%的流量,亚马逊说延迟增加100个毫秒的时候,会丢掉1%左右的下单,下单量丢了1%。其实很多的代理公司的下达的计算机都会有处理加速的反卡,第一个作用就是下单策略,FPA做网络处理,IO加快的速度,的确可以看这个是非常重要的。

大家都在讲,有没有可能在互联网+的时候把更多的应用搬到互联网上,把业务搬到互联网上做这个业务。这个绿色圈是我们现在互联网的应用,现在互联网的应用是受我们网络,我达到这个极限总量,目前的网络提供的吞吐量都可以加载到应用上。有没有把这个互联网性能,比如它的延迟吞吐量把减少,吞吐量减少,会有极限,就是光速再怎么传输,也达不到这种光速速度。为什么这一块也是很重要的?我们都讲远程医疗,如果在远程真正操刀做一个手术,人反应时间大概100毫秒左右,如果延迟端到端,比较大的高清视频的传输,如果说我们有这么大延迟,可以控制这个机器下刀,切伤口的时候,这个延迟控制不了刀下的位置。假如说我们有更多的理论都加载到互联网上,一定要想办法把互联网的延迟减少,我们绿色的圈就会增加一圈。

实际的情况是怎么样呢?做视频会议要100毫秒的延迟,人的反应时间是100毫秒。实际网络场景是怎么样呢?我们团队做了一个实际的网络测量,我们在当前互联网上布了很多测量的探针,来探测互联网端到端的延迟,比如说在南京部署了大概十几个节点。我们选择四组数据,选择一组北京的,北京有一台机器,四川成都选择一台机器,在法国选择一台机器,在美国选择一台机器,然后测不同的ICP的服务器,要测百度的,测并的,测网易的,京东的,易贝的,国内和国外的ISP服务器的网站,这个服务器的网站买了很多的CDN加速的东西,我们测量的时候可以看到具体是去哪个CDM。我们可以看看测量的实际结果情况。不同的柱子到不同的服务器,包括国外的延迟都在200个毫秒以上,我们看四川的同样的是这样的情况。如果达到100个毫秒的延迟,这实际上是挺困难的,绕地球一圈也要100多毫秒,所以这是非常困难的。测试结果大概就不是好的量级,都是秒的量级了。我们实际的报道结果说多了500毫秒就会丢多少流量或者定单。因此可以看出来,这个加载时间在广域网上是非常多的时间。我们再测它的吞吐量,在北京设一台服务器,科技网上面我们有一台服务器,不同的地方访问这个服务器,延迟它的吞吐量,我们100兆的文件,我们可以看到大概最多3.9BPS,明显的从这个图可以看出来,其实这种网络的性能,如果要承载很多的应用知识很困难做这个东西。我每个服务器都有非常高寿的光线。我的用户和这个服务电都有连通的网络,在现实中肯定是行不通,物理资源会占的很多。

我们看看现有的网络大概是一个什么样的状态。现有的网络基本结构是这样,端到端的路径可以看到一个端网云,不同的接入方式,接到我们运营商的驻地网,然后到骨干网。在这中间有可能会加很多功能的盒子,比如防火墙,有很多的功能盒子,目前的网络状态就是这样。可能再过个十年,有可能真正能把物联网,做互联网,整个用户数接书的终端流量会增加一千倍。

怎么满足这种挑战呢?怎么来减少每一个路径,每一套都会延迟。我们看整的延迟,每个设备的延迟,这个数据包从这一套收到以后,有转发的延迟,整个端到端的延迟就会增加,如果转发的套数增加,它是一个求和的过程,明显RTT增加,要减少RTT,很明显的一个方法,我要把这个跳数减少,跳数越少,可能延迟就会越少。每个设备的转发延迟减少,性能肯定就会提高。我们知道TCP的吞吐量,RTT减少了,肯定就会减少吞吐量。如果数据包丢包,我们有没有可能给它改了,改变这个传输的策略,这也是一种方法。

如果说要把整个网络的负载降低,肯定性能会提高。负载降低,需求的数据确定了。对网络负载的产生,这个数据都会在这里传输,会占用网络资源,还是减少RTT的问题。比方说P2P有一个例子,有可能会选择一个最近的跳点,这是一个减少跳数的方法,RTT会减少。我有没有可能用内容的路由和物理的结合,我把这个内容迁移到就近的地方,就是ICMNDN的思想,新的结构也是减少转发的跳数。

用服务来做这样的定制网络,能不能把用户请求的服务切换到虚拟化的方法,来迁移到就近的网络来做,可能说它的核心是IP的,这个主要的想法怎么做互通,来做端到端,怎么做联通的想法。

减少设备的转发延迟,因为我们可以看一个设备的模型,它自己在里面怎么转发,肯定有一个排队等待的窗口,等待的队列,等待队列以后,在每个设备上面做服务。有两种方法可以减少设备的延迟,任何设备不管是它的WIFI设备,还是防火墙这样的设备,我控制平面,把它调度的非常好,队列很短。在数据平面,我有没有可能把这个数据转发的特别快。想法是这样,如果要用普通的服务器做架构,其实是非常理想的状态,但实际做起来是非常困难的,也是我们同华为一起做的测试的实验。用网络处理器和普通的CPU做这样的转发,做数据包的查找转发,我们测它的功率和转发的性能。我们用普通的CPU软件来做,它的能效大概用NDN来做的二十分之一我们进一步把网络的设备做处理,我们可以看到数据包进来也要分类,队列调度,出去的时候再队列管理。有很多工作是可以做的,一个做数据的处理,资源调度,并行化机制怎么样,异构硬件加速。单个的处理,有没有可能做的速度特别快呢?

如果要这样来做,可能有两个问题,一个就是有没有可能把通用的CPU或者通用的软件把处理了。有没有可能把处理的逻辑到一级芯片设备上去,又变的非常领航。我们在做一个实验,用IPS套在一个36核的模型上。整个会比整个流水线的模型提高13倍的吞吐量。尽管处理器目前得到的性能很差,但是还有很多的研究或者提升的空间,不管是算法上,处理的模型上有很多的提升空间。

如果跳数也决定了,延迟也确定的情况下,我跳出去,每个转发的设备尽量的提高,主要和访问是相关的,如果这个都确定,怎么提高网络的系统吞吐量呢,还有端到端传输的策略,最近在一个国内非常大的ICP上做了一个测试实验,发现有很多的数据包诠释,也没有任何的状态。根据这个决策,具体是哪种状态造成的这个数据包发送比较慢,我们还改变这个传输的速率。实验的结果发现,测试的4K高清的传输,我们想把它尽快传输完大的文件,发现比普通的TTP提高七倍。

如果用户定制防火墙,如果用传统的方式和我们的方式比较,随着吞吐量的增加,我们可以保持延迟基本稳定。

我觉得性能是一个非常永久的问题,也是对研有的互联网想进一步扩展下一步互联网怎么来走,我觉得只有把性能提高了,更多的互联网的应用才可以加载在上面。在数据平面的提高,我觉得更多的来做系统的改进,更多的系统的实现需要系统的视角,来考虑设备的实现。控制平面更多的是要跟自己的业务,和网络的系统相结合,做很多实际系统的测量才有用。我们把一个非常好的论文,在实验室上做了测试,设定100个毫秒的RTT,性能非常的好。但是实际在第三网络里面下载上去以后,几乎对吞吐量的提高没有什么变化。假设的模型和我们的实际根本是不一样的。如果要把这两个结合起来,最主要的是需要工业界和学术界的合作,学术界把一些想法真正运用到工业界里面来。

谢谢大家。