数据中心应用的不断增加和用户数量的迅速增长,使得数据中心正面临着一个严重的性能问题,而其中尤为严重的现象就是网络拥塞。当网络中存在过多的数据包时,性能就会下降,这种现象称为拥塞。拥塞是一种持续过载的网络状态,此时用户对网络资源的需求超过了固有的容量。近些年随着云计算、大数据、搜索技术本身要消耗大量的网络带宽,所以在数据中心里网络拥塞现象时有发生。
网络拥塞对数据中心带来的危害有几点:一是导致包丢包率增加,端到端的延迟增长。如果是交换机设备,由于缓存较小,拥塞出现时将会进行报文丢弃。而很多业务都是TCP连接,出现丢包后将会引起重传,反而更加加重了拥塞的状况。如果是路由器设备,缓冲队列长度增加,分组等待排队输出的时间变长,进而导致延迟的增加。在这种情况下,对业务的影响是显而易见的。轻者访问应用缓慢、掉线,严重者则长时间无法访问,用户的体验感大大下降。我们平时上网时,在打开一个网页页面时,时有打不开或者链接弹出缓慢的情况,多半是网络拥塞所致。二是导致资源利用率降低,无效利用率增加。拥塞发生后,网络设备通往链路的分组报文都被丢弃,造成这些链路得不到充分利用,降低了资源的**利用率。三是导致拥塞崩溃的发生,这是最严重的后果,当网络处于拥塞崩溃状态时,微小的负载增量都将使网络的**吞吐量急剧下降,此时的数据中心网络无任何**的数据传输。出现这种情况的可能是维护路由邻居状态、环网状态的报文被丢弃,引发了路由震荡长时间无法收敛,环网阻塞点放开,形成二层环路,导致整个网络处于无序状态,整个数据中心陷入瘫痪之中。可见网络拥塞的问题应该引起高度重视,当数据中心时有发生拥塞情况时,就应该及时排查,**隐患,以免造成系统瘫痪。
既然网络拥塞问题影响如此严重,就没有什么办法缓解吗?网络拥塞控制技术就是为了解决数据中心网络出现拥塞时的问题。拥塞控制技术也有很多,在此仅从实现机理上做以阐述。打个形象的比喻,国家若遇到了洪涝灾害,江河涨水,江河附近的城市与村庄就面临被淹的危险,那么接下来国家会做什么呢?一定是抓紧时间将沿途的堤坝加固、修高,同时在上游关闸,减少洪水向下游冲击。在下游开渠引流,进行泄洪。其实对于网络拥塞,也是这样的一些技术。通过在网络入口进行限速(LR或CAR),同时启动优先级调度,将不重要的业务进行丢弃,保证在网络拥塞时高优先级的业务得到传输。增加网络带宽,将原来的千兆端口换为万兆,将单端口换为聚合端口,将路由切换为等价路由,这样就可以大大提升网络带宽。在端口上开启流控功能,当端口发生拥塞时,可以进行反压,通知流量的入端口,这样入端口将报文进行缓存,当流量实在太大,缓存不了时,再进行丢弃。这样可以提升网络设备的缓存能力,就可以增加对网络拥塞的防御。这样看这些网络拥塞机制和生活中处理洪涝灾害、交通拥塞都是一样的。不管拥塞控制技术如何发展,根本点都是如上描述的几条,再好的控制技术也只不过是将上面的方法做精做细而已。当我们看到一些晦涩难懂的拥塞控制技术概念时,令牌桶是做什么用的,FLOW-ConTROL 会什么特征,GTS只能基于队列限速吗?要把这些概念都当成是解决拥塞的工具而已,然后遵循着上面的说明机理就不难理解了,令牌桶就像我们车辆限行时的交警,滞留车辆多了就让后面的车辆多等等,少了就让更多的车辆行驶通过。FLOW-CONTROL就通告拥塞的消息,以便网络设备知道哪里有了拥塞,怎么处理。GTS是基于某一特征流量进行限速的技术,我们对车辆进行分类,救护车,救火车可以优先过,对别的车辆限行,在网络世界里GTS就可以做到。
显然以上提到的这些技术都是在拥塞发生后起作用的,俗话说“一份预防抵得上十分治疗”,在数据中心网络中应该努力通过各种方法来避免或减少网络拥塞情况的发生。首先合理设计网络拓扑结构,对于某些重要节点,设计成网状拓扑,增加冗余度。数据中心承载的应用业务要做精细划分,避免过于集中于某些局部网络环境中,均匀分布。其次合理设计网络设备缓冲区大小,网络拥塞并不是一个长时间持续的,是阶段性的,具有突发性的特点,适当地提升网络设备的缓存就可以减少拥塞。对于长时间的拥塞,比如淘宝网,在每年的双11都会迎来流量的喷井,而平时流量是比较均匀平稳的,这就需要在双11期间增加网络带宽,启用备份设备,单纯靠增加网络设备缓存是无济于事的。再次增加负载均衡设备,将突发流量引到负载均衡设备上进行整形,减少突发流量对网络设备的冲击,让网络设备接收到的流量都是平稳、均匀的。
网络拥塞问题的产生主要原因是网络带宽不足,网络处理能力不够造成的。还有存储空间、服务器性能限制也会造成网络的拥塞,这些都是现实情况,无法改变,网络的带宽和处理能力并不能无限制地增加,所以网络拥塞是不可避免的,我们通过各种各样的技术手段无非是希望将拥塞发生的概率最小化,未来的网络拥塞控制技术会越来越多,更加精细和多样,什么RED算法、PI算法、AVQ算法、AQM-REM算法等等,在网络拥塞时,通过这些算法来决策丢包的选择,诸多的算法让人看得眼花缭乱,但这些算法归根结底都肯定会遵循一条:就是想办法按照数据中心的意图去丢包,其遵循的基本原理不会改变,就和我们生活中解决交通拥塞、洪涝灾害是一样的。 |