关注于下一代网络的 Windows 2008

  • 王翔

2007 年 11 月 10 日

话题:微软架构DevOps语言 & 开发

在各种繁富的 Web 应用之上,人们似乎对诸如 Socket、ICMP 等一系列传统意义上的“网络”开发渐渐淡忘。但随着富客户端应用、多核技术和 IP V6 & IP V4 混合时代的到来,如何充分利用网络继 P2P 之后设计下一代网络应用成为新的挑战,适时与此,微软在 Windows 2008 的网络协议栈和网络接口上已经作了很多调整。

随着处理器多核技术的推出,平台软件似乎也在向着双核、甚至多核的方向发展。05 年,各数据库厂商分别提供了面向 XML 和关系的混合数据库引擎,而 06 年开始各操作系统厂商也开始在产品中增加 IP V4 & V6 TCP/IP 协议统一 API 的支持,Windows 2008 作为即将发布的下一代系统也提供了双 TCP / IP 协议栈支持。下图是 Windows 2008 中的栈结构:

不难看出,其中 IP 层被两个并行的体系实现,区别于 Windows 2003 和 Windows XP 两个完全独立的协议栈不同,Windows 2008 的栈除 IP 层以外是一套统一的整体,因此开发人员无须自己再隔离一个协议无关层。这么做最大的一个好处在于帮助应用设计者更好的适应正在升级的 TCP/IP 环境,毕竟世界被拉平之后,我们的用户可能位于网络实施条件较好的北美、西欧和亚太地区,但也可能位于黑色大陆和南美,此外随着创新型网络应用技术的出现,信道部分的路由情况也会更加动态,因此采用增加了动态路由试探的统一双堆栈基础上的统一 API,可以大大简化架构师设计应用底层通信机制的工作。

另外,以往 Windows 2000、Windows XP 平台上普遍使用的用于开发网络核心态驱动的 TDI(Transport Driver Interface)网络访问 API 也被建议切换到 WSK(Winsock Kerne),原因是它是完全 Native 面向 Windows 新 TCP/IP 栈设计的接口,隔离了 IP V4 & V6 TCP/IP 之外,还将各种监控、信息筛选、网络设备负载动态调整等功能作了封装,无需开发人员另外实现类似特性支持。

(比较类似 COM+ 对 COM 技术的封装,除了实现组件二进制重用外,还提供了远程调用、基于角色的安全性、监控、池化等能力,而 COM+ 的开发人员只需用 COM+ 新的接口实现 COM 对象的功能逻辑部分即可,尤其用 Visual Basic 开发的 COM+ 更是如此。)

新增的“接收窗口自动调整”和“接收端负载均衡”(RSS:receive-side scaling)特性,也为更充分使用服务器资源提供便利。前者可以根据网络情况以类似“变形金刚”的方式(在畅通路段采用大货车方式、在拥堵路段采用“甲壳虫”方式)提交网络请求;后者则是面向以往操作系统网络协议栈计算的诟病——“网络协议栈的计算往往集中在一个处理器上(/ 一个核上),即便技术发展到服务器可以安装多个处理器、每个处理器也多核的时代之后,还主要继续让一个核担当过重的网络计算,而其他核闲置”。

微软架构DevOps语言 & 开发