破冰广域网困局

现代通讯网络的发展速度令人印象深刻,局域网络从过去的10M、 100M到1000M乃至 万兆,将近20年的时间里,网络速度提高了数千倍,网络能够承载的通讯能力、处理的应用的复杂度和并发能力都已经进入出神入化的状态。同样的,广域网络技术现在也已经经历了数千倍的速率提升,甚至有几 M 几十 M 的链路进入普通的商用。然而,相比局域网络的技术发展,广域网络通常仍然很难到达令人满意的效果。

究其原因,究竟问题何在呢?

本文试图从技术应用角度来审视广域网络部署的诸多值得关注的因素。

1、 时延和抖动

广域网的时延由于传输距离以及经过更多的交换、路由等设备,加之线路编码等因素,就DDN/FR/MPLS 等各类广域网络,其时延普遍达到了毫秒级甚至数十毫秒,对于网络部署过程中就必须考虑到时延带来的影响。大多数应用系统实际上都设计在比较理想的环境中实施,但如果结合时延带来的 RTT 的延长以及伴随的时延不稳定的所谓抖动现象的产生,相当多的应用系统会进入无法高效运作的状态。

2、 拥塞与QoS

通常在一条链路两端的通讯并非对称的,在具有足够带宽的局域网络中可能并没有实际的感受,然而在广域网链路上,这样的非对称的特点会引起拥塞的现象。即在客户机端的广域网络相对占用率较小,诸多客户机更多的请求被连续发送到服务器端。然而服务器的回应由于消耗更多带宽,因此很容易造成拥塞局面,使广域网路由设备心有余而力不足,无法将数据及时传输。

对此,相当多的设计里提到了 QoS,设计了优先发送队列等机制,但这一设计在带宽够用与勉强够用的情况下,也许还有有效工作的可能,在发生严重拥塞时,其不得不丢弃部分数据,以便保障其他的通讯。相对于那些被丢弃的数据相关联的通讯或主机而言,经过 QoS策略以后,他们的通讯情况更差了,而不是更好了。而即使是受保障的通讯,也只是勉强维持拥塞前的感受,并不能带来所谓革命性的可靠质量的体验。

3、 TCP/IP 本身的限制

TCP/IP在最初被设计出来时,被设计为保障可靠的通讯而非卓越的性能。然而随着网络应用的发展,TCP/IP 协议不得不承担起现代网络通讯整体基础架构。而过去 TCP/IP 协议中考虑较少的性能环节,逐渐通过各种扩展(例如 SACK)或者窗口调整的算法等进行优化。而为了这些优化扩展能够兼容各类环境,类似于 TCP 慢启动、自动发现 MTU 等技术被进一步应用。为了对抗由传输拥塞等原因造成的丢包、网络本身或主机性能引起的延迟等现象, TCP/IP里的重传、确认以及计时器的调整也成为非常重要的环节。可惜的是,在默认情况下,主流操作系统上的TCP/IP 通讯参数相对于广域网的相对较大的延迟、较差的通讯质量并不非常协调,这对于广域网上的应用而言,显然不是好消息。


而相当多的协议实际实现也不尽如人意,例如上图所示的SACK 选择性确认机制按道理可以减少往返和数据传输的数量,在实际中可以看到,往返确实减少了,但是应答的数据包数量一个也没有少掉,真是一个很差的实现方式。

4、 应用使然

在广域网上传输比较多的公开应用包括了文件传输(CIFS/SMB)、邮件通讯 Exchange/Notes、HTTP/Web 访问等通讯协议。这些常见的协议在广域网上的通讯效率令人非常担心。CIFS/SMB 采用了大量的确认和小数据包进行信息交互,而在微软的操作系统上的实现更是增加了更多的反复确认的机制,这样的通讯机理在广域网上简直就是灾难,引入时延带来的影响后,仅仅为了浏览到一个文件夹中,都可能会花费超过 200 个往返数据。这些数据由于是具有应用关联性的交互,因此也无法采用滑动窗口等技术优化。

在这种情况下,仅仅打开共享、进行浏览的这类操作,就会引起数百毫秒甚至数秒钟的等待,更不要说如果在此之间发生了丢包重传等现象了。相应的 Microsoft Exchange 的通讯也是这样,大量的数据封装为 300 字节到 500 字节之间的中小数据包中,两端的往返确认。仅仅打开Outlook,尚未进行任何操作的情况下,200 多个往返的数据包已经被产生,而之后更多的浏览访问、邮件接收发送更是意味着更多的往返数据通讯。而加密技术的应用还会带来更多的握手、校验、交换密钥、状态维护、密钥修改、身份认证等更多的数据内容。微软公司自身也意识到了这一类问题,推出了 SMB2等具备优化广域网通讯的协议,然而目前仍然在非常早期的应用阶段,没有办法为现有的广域网上的通讯问题带来立竿见影的效果。

广域网的部署和应用始终是 IT 部署中的困局,受限于电信价格和部署的技术限制,成倍扩展带宽的愿望恐怕也很难实现,即便能够扩展带宽,时延、抖动、拥塞等情况恐怕仍然很难解决。当越来越多的关键应用在广域网上通行,而大集中化的部署成为进一步的 IT 发展方向,广域网建设势必要先解决这一困局,这才能帮助我们走向 IT 建设应用的康庄大道。

William