觉得很振奋!新技术出现了,今后刷机就没那么必要了。
来源:计算机世界实验室 作者:韩勖
上行带宽、P2P与宽带路由器的三角矛盾
近年来,电信运营商下大力气改造与建设数据网络,宽带接入的速度与服务质量都有了较大提高。以我国最流行的ADSL接入方式为例,许多城市都可以申请2Mbps或者4Mbps的接入速度,有些地方甚至已经开始提供8Mbps的高速接入服务。与之相应的,基于互联网的应用模式也有了很大转变。有了充足的带宽保障,网络游戏、在线视频、VoIP、P2P等应用逐渐流行开来,互联网用户有了更加丰富多彩的应用体验。带宽的提高也使多机共享具有实际意义,个人或小型企业对宽带路由器的需求让这类产品在市场上持续热卖。
与下行速度的突飞猛进不同,宽带的上行速度提高相对缓慢。很多地方ADSL的下行带宽达到4Mpbs或8Mbps,上行带宽却依旧维持在512kbps的水平。事实上,这种情况在拨号上网时代就存在,那时最快的调制解调器可以提供56kbps的下行带宽与33.6kbps或48kbps的上行带宽。互联网研究人员通过对各类应用模式的整理分析,得出一个结论,即绝大多数情况下,用户对下行带宽的需求远远超过上行带宽。举个例子,我们用尽所有下行带宽从Web或FTP服务器下载文件时,上行带宽可能只被占用了几KB。这个结论日后被广泛应用在各类标准制定与网络建设中,目前的ADSL标准即提供了最大8Mbps的下行带宽与1.5Mbps的上行带宽。
而现在基于网络的应用模式在改变,新应用对上行带宽提出了更高要求,这个理论正在失效。P2P是目前最受个人用户喜爱的一类应用,它的理念是在从他人处获取的同时也为他人分享。从技术角度看,此类应用会建立数倍于从前的连接数,占用所有的上下行带宽。连接数对现在的宽带路由器不是大问题,3月份我们进行的针对P2P应用的横向评测可以证实这一点;带宽占用是致命伤,尤其是现阶段比下行带宽更容易达到饱和的上行带宽,它被占满就意味着用户请求或确认很难发出,宽带路由器对此无能为力。
一个简单的实验可以证明上面的推断:分别用HTTP和BT下载任务占满下行带宽,同时Ping新浪网站,前者响应及时无丢包,后者响应极慢大量丢包。由此可见,罪魁祸首在于延迟,是它造就了不同的应用体验。相信很多人都对开BT时浏览网页的速度有刻骨铭心的回忆,在此我们就不做验证了。
分析一下P2P应用造成较大延迟的原因。首先,宽带路由器的CPU性能有限,在处理大量新建连接请求或维持、查找较大的并发连接表时会消耗很多资源,造成一定延迟。这方面新产品(如支持11n的无线宽带路由器)因为应用了较强的CPU,受到的影响有限;老产品就很难说了,轻则在高延迟的情况下勉强维持运行,重则死机或重启。其次,P2P应用导致宽带路由器维持了庞大的出栈队列,新的连接请求必须排队等待发送,延迟无法预料。如果出栈队列中的数据报多或大到占满了所有上行带宽,那么连接请求很可能因为传输超时而被丢弃,这样的网络几乎就没有可用性了。
再做一个实验,来证明上行带宽被占满是造成网络延迟与丢包的主要原因。将BT上行带宽限制为理论值得2/3,下行带宽不限,再进行下载时的Ping测试,响应时间马上恢复到与HTTP同一数量级。那么为P2P类应用限带宽就是有效的解决方法么?也不尽然,这种做法实际操作起来局限性太大。首先,某些软件并不能进行这样的限制,尤其是那些基于P2P理念的视频应用。其次,买宽带路由器就是为了多机共享,大多数情况下让所有使用者都对P2P应用进行限制是个不现实的想法。
某些厂商尝试将传统的QoS理念引入宽带路由器,可效果并不好。此类产品的性能并不足以实现基于应用层协议的QoS特性,2-4层的优先级设定对P2P应用的限制效果又很有限。最关键的,QoS策略的设定对于宽带路由器用户来说显得太复杂了。
Ubicom的前卫解决方案
前段时间我们测试过一款来自SMC的无线宽带路由器,它采用Ubicom的IP5160U作为CPU,在同类产品中很少见。我们并不熟悉这家公司与这款产品,仔细研究一下,发现别有洞天。Ubicom提供了一套软硬结合的解决方案,宣称可以有效改善上行链路拥塞造成的延迟与丢包。尽管所有工程师都对此表示怀疑,我们还是以最快的速度开始征集产品。最后,D-Link为我们送来了DIR-655,这也是截至到目前为止唯一一款在国内零售的采用Ubicom解决方案的千兆有线/11n无线产品。在此向D-Link表示感谢。 Ubicom作为芯片与解决方案提供商,并没有公开提供很多技术资料,我们只能从官方网站上的少量文档与网络上搜索到的信息推断出一些技术细节。根据白皮书所示,这套名为StreamEngine的解决方案包括一系列的功能步骤。它先对来往数据流进行识别分类,自动判断哪些是需要保持流量或延迟敏感型应用,然后将出栈队列中大小超过阀值设定的数据报分片,并根据前面的判断,为相应的出栈数据报自动设定最多256个优先级。
从应用的角度判断优先级,这算是QoS的理念。如果应用优先级判断的命中率令人满意,应该可以起到比较好的优化效果。我们无法得知这部分具体的技术细节,想必厂商也不便公开,权且将效果作为测试重点之一。分片,这是很聪明的做法,虽然出栈队列因此变得更深,但队列中不会再有大包。高优先级的数据报可以尽可能快地被发送,降低了延迟与抖动。从理论上分析,这些手段确实有助于解决上行链路拥塞的问题,抖动的降低也可以提高VoIP应用的通信效果。
要保证宽带路由器不成为瓶颈,还要实现StreamEngine提供的特性,CPU的性能非常关键。Ubicom IP5K系列CPU很有意思,竟然采用了10线程设计,流水线数量虽未公开,理论上总要与线程数有个匹配关系,应该也不会太少。多核多线程处理器已逐渐成为网络产品的主流选择,某种程度上这是应用需求决定的。以StreamEngine为例,CPU在对应用流量建模与分类时一定有不少预测未命中的情况,10线程并行处理可以保证资源调用的合理性与连贯性,避免出现过高延迟。
[ 本帖最后由 asiaeagle 于 2008-6-3 00:49 编辑 ] |