很庆幸,您在读了上一页中大学课本一样的原理之后还能留在这里继续看下去。真正看懂了上一页的读者很多估计现在脑 子里都有一样的问题:“既然TOE技术这么好,为什么没有早点在我们的PC里安家呢?”别着急,我们前面所说的都是在×××量的服务器上的情况。 TNIC大都被设计用来解决网络负载大于8Kbps的情况,当负载低于这一界限时,甚至会带来更低的吞吐量和更高的延迟。而我们我们在PC上使用的网络程 序正常负载都在1Kbps到4Kbps之间,使用TNIC反而会造成性能下降。并且,TNIC主要应用于优化TCP协议,而在如今的网络游戏中,大部分使 用UDP(user datagram protocol)用户数据报协议。
同TCP协议相比,UDP协议是面向无连接的,非可靠的协议。使用UDP协议的网络程序,并不能保证接收数据包的 完整和按序。那么为什么还要使用它呢?答案很简单:UDP更快,在诸如网络游戏等对响应时间敏感的程序中更加有效。说起来荒唐,但我们在网游中其实并不需 要每一个数据包都完好送达。比如,你没有接收到玩家A在(10,10,5)坐标的数据,但是你接到了后来他已经跑到坐标(12,11,15)的数据包,这 从大局上来讲不会影响到你继续游戏,只是可能你没有打中在之前那个坐标上的他,或是被他打中了。正是这个简单的道理启发了BigFoot网络公司,继承 TOE技术的精髓,设计了一款专门针对UDP协议和降低延迟的TNIC。
BigFoot把他们的主打技术称为LLR(Lag and Latency Reduction,减少延迟和响应时间)。普通网卡在在收发数据包时需要进行排序和缓存,而使用LLR技术的Killer NIC则秉承“1个数据包1中断”的原则,完全省掉了整个排序和缓存的时间。在游戏中,Killer NIC还可以完全绕过Windows系统的网络堆栈,最大限度的降低网络游戏Ping值。他们所宣传的降低游戏Ping值完全不是在于提升网络状况,或是 改善你和服务器的连接,而是全部在你的机器内部实现。依照不同的程序和数据包大小,Windows网络堆栈中的系统缓存会造成1到3ms的延迟,而排序又 会带来3到10ms的延迟,Killer关注的正是这一细微的时间差别。
TOE_2_职场
Killer网卡上的网络处理器NPU把网络处理工作从游戏的图像生产线上搬了出来。正常情况下,在每一帧图像被 渲染之前,都要询问服务器是否有新的数据包到达,或是需要发送,这些都要占用处理器的时钟,而显卡就在这个时间里等待,这也就相当于拖慢了渲染的速度。而 Killer则独立负责了这些工作,有它特别的方法,在数据包到达时,直接产生中断,提醒游戏程序作响应。也就是说,它并没有增大你的网络吞吐量,却降低 了延迟,甚至提高了游戏帧速(FPS)。
这看起来十分激动人心,但最后我们还要浇一盆冷水。游戏的设计并非完全相同,有些游戏并不会在渲染每帧画面前检查 网络数据,在这种情况下FPS的提升并不会明显。甚至,有些旧一点的游戏并不使用UDP协议,这时Killer绕过网络堆栈的功能就完全不能发挥,只能和 标准网卡一样工作。在测试中我们还发现,许多游戏的Ping值显示并不准确,无法正确衡量网络延迟性能的提升,虽然能够被玩家“感觉”出来。不过至少,被 服务器领域验证有效的TOE和TNIC技术在这块网卡上都被继承了下来。而这些优秀的技术在我们的应用环境中工作是否依然出色,还要看下面的测试。