2006年11月14日星期二

用Vista进行网络连接更有信心(之二)

写在前面:网络连接技术,并不同于层出不穷的应用软件,大部分都必须遵守国际标准,比如IETF。就算如微软、思科这样的公司,在自己开发出新的网络技术之后,也会力争将其变为标准,例如L2TP发展史就说明了这一点。Vista中加入了很多新的网络功能,不过很多都源于已有的网络标准,同时也有很多其他厂商的软件可以实现这些功能。笔者的这一系列文章,力图说明Vista相对于XP的进步,同时也希望能够通过思考这些功能背后的原理,起到举一反三的效果。有不足之处希望大家指正。

难度:Level 200

上一次我谈到了下一代TCP/IP堆栈,实际上也偷懒了,没有说完整。:)这个功能无论对于家庭用户还是企业用户都是受益的。这一次我来谈谈一个企业功能——QoS,把一点心得和大家分享下。

QoS的全称是Quality of Service(服务质量),它的主要目标是解决在暂时性拥塞的网络中,关键服务不能得到保障的问题。举个例子,在下面的图中,一个公司的分公司自己并没有Internet连接,它通过和总公司的连接来访问Internet,同时访问总公司的服务器。也就是说在这个内部连接上既有Internet上的流量也有公司内部的流量。由于远程连接的价格比较昂贵,所以内部连接上的带宽永远是有限的,于是就可能出现这种情况:当分公司的用户通过访问总公司的邮件服务器收发公司内部的邮件时,因为网络暂时性的拥塞,造成连接速度慢或者干脆不能访问。造成拥塞的原因有很多,例如有人从网上下载Windows Vista的镜像,抢占了带宽。:)
如果图片缩小请点击以放大查看

这时,就可以通过QoS技术来优化网络流量。我们可以赋予通向邮件服务器的数据包更高的优先级,然后在网关处进行检测,让电子邮件的数据优先通过,这样就提高了电子邮件服务的服务质量,这就是QoS。

实现QoS的手段有很多种,比如说我们可以通过在网关路由器上对网络上的数据包进行分类,然后分别赋予不同的优先级。这里我们来看看怎么使用Windows Vista和Windows Longhorn Server来实现QoS时,会有怎样的特点。

实际上,在Windows XP中就已经有QoS的踪影了:
如果图片缩小请点击以放大查看

大家如果仔细的话就会在网络连接的属性中看到过相应的协议支持。Windows XP和Windows Server 2003为应用程序提供了一组QoS的API,同时还在组策略中提供了相应的配置选项(在windows XP中运行gpedit.msc可以进行设置):
如果图片缩小请点击以放大查看

不过,这些个QoS选项功能并不完全,必须配合专门设计的应用程序才能完成QoS功能。比如上面的“Limit reservable bandwidth”可以在带宽中指定一个百分比保留给需求QoS的应用程序使用。而在Windows Vista和Windows Longhorn Server里提供了一套完整的工具来解决QoS的问题,管理企业的网络通信。

Windows Server Longhorn和Windows Vista中的QoS策略,使得IT人员可以对出方向上的网络通信数据进行优先排序或管理,并可针对特定应用程序、特定源IP地址和目标IP地址以及特定的源和目标TCP或UDP端口。这里,需要大家有一些组策略方面的知识了,MS将QoS融入了组策略之中,为企业的部署带来了不少的便利性。在上面的例子中,我只需要在企业的域控制器上设置所有到邮件服务器的通信有较高的优先级,然后通过组策略发布到子公司的所有用户计算机。这时,用户计算机出方向上的数据包中,所有发往邮件服务器的数据包会被标记为具有较高的优先级。当数据包到达网关路由器后,路由器就可以根据这些标记优先让邮件服务的数据包通过。记住,Windows Vista中的QoS是三位一体的:服务器、网关和客户端。

大家可以在组策略的Windows Setting中找到Policy-based QoS的内容。
如果图片缩小请点击以放大查看

通过向导,我们可以很方便的建立或者修改QoS组策略条目。在向导中,我们需要指定该条策略对于特定的应用程序或者IP地址,如何修改其IP头部的DSCP值或者速率。这里会涉及到一个概念,即DSCP(差分服务代码点)数值,其实这就是我上面提到过的优先级,其数值范围为0-63,简单的说数字越大则优先级越高。不过,DSCP值在大多数系统中并不是随意选取的,默认情况下不同的数字都有特定的意义,比如数字0表示Best Effort(尽力而为),这也是所有的IP数据包中默认的数值。在这种情况下,所有的数据包会遵循FIFO(先入先出)的策略,哪个数据包先到达网关就会排在前面,这样体积大的数据报往往就会占用更多的时间。又好比数字46,表示Express Fowarding(急速转发),标记为46的IP数据包在路由器处会具备有相当高的优先级,特别适合于VOIP这样对延迟要求很敏感的业务。
如果图片缩小请点击以放大查看
如果图片缩小请点击以放大查看

与此同时,你还需要指定是针对特定的应用程序或者发往(来自)特定IP地址的数据包进行QoS控制,你甚至还可以指定特定的协议以及端口号。假设在上面的例子中,企业的邮件服务器IP地址是172.16.11.1,那么我们编辑发往172.16.11.1的所有IP数据包的头部,将其中的DSCP数值改为36,这样相比于DSCP为0的普通数据包,就具备有更高的优先级。

同XP中的QoS相比,Vista的QoS策略对应用程序是透明的,也就是说不需要应用程序进行专门的设计。同时,我们还可以通过QoS管理带宽的使用,通过QoS策略配置一个出站通信节流率,QoS策略会将聚合的传出网络通信限制在一个指定的速率内。诚然,Vista的QoS策略还必须会同网关路由器一起才能完整的实现,但是相比于单纯通过路由器实现QoS,优势在于对数据包的分类和标记是在客户端计算机上进行的,路由器仅仅需要检查6个bit的固定字段,这很大程度上减少了QoS带来的延迟,而且在路由环境中,使用核心路由器对数据包进行分类是不被推荐的。

Windows Vista中的QoS并非是独立存在的,也不会和其他厂商的QoS技术产生冲突,应该说这样的实现更有利于QoS体系的延伸。在原有的QoS体系中,往往需要通过专门设计的应用程序为IP数据进行标识,或者直接在边缘网络的网关路由器上对IP进行标识,然后核心路由网络仅仅通过检测DSCP来控制QoS,或者是将DSCP映射到MPLS(多协议链路交换)来进行控制。这样的缺点在于,专门设计的应用程序提高了系统复杂度,同时利用边缘路由器对IP数据分类会降低路由器的性能并增加延迟。在企业中部署了Windows Longhorn Server和Windows Vista后,QoS域就得到了延伸,将一些集中的功能分散开来,提高了系统的可用程度。同时,如果结合2层交换技术,还可以进一步在企业内部局域网中实现QoS,通过集成Windows上的应用服务,将会给用户带来更好的体验。
如果图片缩小请点击以放大查看

总而言之,Windows Vista的这一项功能,就我而言感到对企业部署QoS有很大的意义,相信对于QoS技术的普及会有推动。据说微软明年将进军VOIP市场,我想操作系统的这个功能肯定是为其铺路吧。(zarthur)

Windows Vista技术博客授权转载,网址http://vista.itecn.net,旨在研究和推广Windows Vista技术,由多位Microsoft MVP和其他技术爱好者组成。大部分成员接受过微软中国组织的Windows Vista讲师培训,其中四位MVP还在新加坡接受过微软Windows Vista部门的专门培训。

没有评论: