|
楼主 |
发表于 2008-10-30 12:39:09
|
显示全部楼层
第一部分 qos的定义
拥塞产生的原因
* 以太网络速度不匹配:当速度不同的网络设备进行通信的时候,就可能导致网络的拥塞。例如,吉比特以太网上的服务器将数据发送给10m以太网上的服务器的时候,由于交换机的缓冲空间限制,可能导致10m以太网上的服务器出战接口发生拥塞。
* 多对一交换:当采用多对一的方式聚集交换机时,就可能导致网络的拥塞。例如,多台接入层交换机连接到同一台分布层交换机的时候,这些接入层交换机的交换矩阵的的带宽总和通常超过了分布层交换机的交换机矩阵的能力
* 聚集:当多台以太网设备通过一台以太网连接进行通信或与单台网络设备/服务器通信的时候,就可能导致网络的拥塞
* 异常行为:网络设备的硬件/软件故障可能导致广播风暴或其它类型的网络风暴,进而使多个接口发生拥塞。软件故障包括计算机蠕虫和病毒,导致数据包风暴,进而拥塞企业或isp的网络。
以上情况下都有可能会导致数据包在传输的过程中丢失或延迟。拥塞不是唯一影响网络可用性和稳定性的因素,即使在有足够带宽的多层交换网络中,也存在延迟(delay)、抖动(jitter)和丢包(packet less)
,对于一些对延迟很敏感的应用(如语音)就需要有服务质量保障(qos)。
qos的定义
qos可从多个不同途径来定义,将所有这些定以结合在一起将会得到所有定义中最好的一个。从技术角度而言,qos是网络中管理数据流的可用带宽、延迟、抖动以及分组丢失的技术集合。所有的qos机制的目的就是影响这4个特征中的至少一个,某些情况下甚至是全部。
1. 可用的带宽
带宽本身的定义是在特定的网络介质或者协议中额定的吞吐量。带宽的本身缺乏的吞吐量,在多个流量在一个受限的带宽上传送的过程时,就会产生对带宽的竞争来抢占发送自己的数据。
带宽的使用
最大的带宽:从主机到服务器所经过的所有链路带宽中最小的带宽值
如:(10m、256k、512k、100m)中最小的带宽256k,作为最大的带宽
可用的带宽:最大的带宽/流量的个数
当服务器发送一个大文件(如视频),为了保证文件的流畅型就必须保证一个大的可用的带宽来支持。
如何保证可用的带宽?
1. 增加链路的带宽(不现实)
2. 对数据帧进行压缩(compress)来增大链路的带宽,但也会增加一个延迟时间。堆栈(stacker)和预测(predidctor)是ios软件提供的压缩方法。payload压缩是端对端的压缩
3. 对第3层包进行头部压缩,可以将数据包变小,tcp和rtp(real-time transport protocol)的头部压缩方式,是逐跳压缩
4. qos处理,比如wfq、cbwfq、llq
延迟
延迟是数据包到达目标所需要的时间,在qos中延迟有几个方面:
* 处理延迟(processing delay)是指从设备接收到数据帧,将其放入到输出端口的输出队列,到该帧由输出端口转发出去的时间间隔
* 串行延迟(serialization delay)是指实际传输一个分组或数据帧所需的时间,将封装在数据帧中的数据包中的比特放到物理介质上所需的时间
* 排队延迟(queuing delay)是指数据包在接口的输出队列等待的时间
* 传播延迟(propagation delay)是指数据包通过物理介质的一端到其他一端的所需要的时间
只有排队延迟可通过使用CISCO ios中的qos来进行控制;其它类型的延迟不受qos的直接影响。
* 端对端延迟(end-to-end delay)是指分组从源端口发送到达目的端口所有处理延迟、串行延迟、排队延迟的总和。
抖动
抖动是指分组间到达和离开时的差异,也就是不同分组之间在延迟上的偏差。数据包在网络中传输经过每一跳设备时,这个设备可能设置了自己的处理延迟和排队延迟,这样就造成了抖动。所有终端和cisco 设备都使用抖动缓冲区来消除数据包(包含数据、语音和视频)在到达时间上的差别。然而,抖动缓冲区只能补偿数据包的细微延迟差异。如果后续数据包得到达时间超过了特定阀值,将导致抖动缓冲区欠载(undeerrun)。当抖动缓冲区为空的时候,缓冲区中没有可供处理的数据包。例如,当用户使用音频应用收听网上广播的时候,如果发生了抖动缓冲区欠载的情况,音频应用将停止播放音乐,直到其他数据包进入抖动缓冲区为止。相反,如果大量数据包以过快的速度到达,那么就可能填满抖动缓冲区,进而无法处理后续的数据包。这被称为缓冲区超载(overrun)。在这种情况下,音频应用将跳过部分音频文件:音频播放器始终有需要播放的数据包,但漏掉音频流中的一些数据包。
数据包丢失(packet loss)
丢包(packet loss)指数据包沿转发路径转发的途中所产生的数据包丢失。导致数据包丢失的原因很多,比如缓冲器拥塞、线路出错等。
导致丢包的一种常见原因是输出队列中填满了等待传输的数据包,没有更多的空间来存储入站数据包,这种情况被称为输出队列已满。在这种情况下,对数据包进行排队的网络设备别无选择,只能丢弃数据包。 s#rGwl9'U~!0DU)Fz [ 本 资 料 来 源 于 贵 州 学 习 网 IT[url=http://www.baidu.com/s?tn=lu333&ct=2097152&si=gzu521.com&s=on&word=认证]认证思科认证 http://Www.gzU521.com[/url]] s#rGwl9'U~!0DU)Fz
解决方法:
1. 更新链路
2. 提高带宽
3. 采用一些qos,比如早期监测的qos(wrd),在发生尾丢弃出现之前早期监测并提供机制。
qos的作用
qos能够通过cisco网络设备的支持,使用以下的组件或特性,能够解决延迟、抖动、带宽和丢包等问题
* 通过对通信流进行标记和分类,能够使得网络设备区分不同的通信流
* 通过流量调节(策略),能够使得通信流适应特定的行为和吞吐量
* 将超过特定阀值的通信流标记为优先级(策略)
* 当通信流速率达到特定阀值的时候,丢弃数据包(拥塞避免)
* 通过对数据包进行调度,输出队列中先传输优先级别高的数据包,然后再传输优先级别低的数据包(拥塞管理)
* 通过对输出队列进行管理,避免等待传输的低优先级数据包独占缓冲空间(拥塞管理)
通过启用qos,将能够:
* 预测端到端数据包传输、i/o操作、数据操作、事务处理等的响应时间
* 正确地管理和判断对抖动敏感的应用(例如音频和视频应用)的能力
* 对延迟敏感的应用(例如voip)进行流处理
* 控制用塞发生时的丢包率
* 在整个网络中配置通信流的优先级
* 支持需要专用带宽的应用或网络需求
* 监控和避免网络拥塞
* 限制异常行为并维护网络稳定性(在发生恶意攻击的情况下)
具体事例:
下图是发生拥塞的一个接口没有采用任何qos的流量发送的情况:因为缺省状态下,接口都是先进先出的策略对待接口上等待的流量,结果最紧急的报文按照先进先出的原则而在最后出队。
而下图中,采用了qos机制,在报文发送时,按照优先级总是在所有优先级较高的队列中的报文,发送完毕后再发送低优先级队列中的报文。这样在每次发送报文时总是将优先级高的报文先发出去。保证了属于较高优先级队列的报文有较低的时延报文的丢失率和时延。这两个性能指标在网络拥塞时也可以有一定的保障。将紧急的报文优先级提高,使得其能够最先被发送出去。
qos的执行
1. 鉴别流量和它的需求:了解网络确定现行传输流量的不同类型,并且确定针对不同类型的网络流量对qos的需求,那些是语音流量,那些是关键的数据流量,那些是尽力而为的数据流量
2. 将不同类型的流量根据对qos的不同需求进行分类
3. 针对流量的不同分类,定义响应的策略来保障
第二部分 qos服务模型
网络应用是端到端的通讯结构,比如两个不同网络的主机进行通讯,中间可能跨越各种 router 和核心switch,那么想整体的实现所谓的qos,就必须全局考虑,qos的服务模型的概念就是采用通过什么模式全局实现服务质量保证,一共分成三种。
* best-effort service 尽力而为服务模型
* integrated service 综合服务模型 简称intserv
* differentiated service 区分服务模型 简称diffserv
1.尽力而为的服务模式
best-effort 是一个单一的服务模型,也是最简单的服务模型,应用程序可以在任何时候,发出任意数量的报文,而且不需要事先获得批准,也不需要通知网络,对 best-effort 服务,网络尽最大的可能性来发送报文,但对时延、可靠性等性能不提供任何保证 best-effort服务是现在internet的缺省服务模型,它适用于绝大多数网络应用,如 Ftp、 e-mail 等。其实 best-effort 并非是什么 qos,就是互联网的简单数据传输方式而已,有什么传什么,阻塞也就阻塞了,丢且也就丢弃了。
2.集成服务模式(intserv)
集成服务模型,它可以满足多种 qos 需求。这种服务模型在发送报文前,需要向网络申请特定的服务。应用程序首先通知网络它自己的流量参数和需要的特定服务质量请求:包括带宽、时延等。应用程序一般在收到网络的确认信息,即确认网络已经为这个应用程序的报文预留了资源后,才开始发送报文,同时应用程序发出的报文应该控制在流量参数描述的范围以内。
intserv是一种多服务模式以适应不同的qos需求,每个通信
通知网络它自己的流量参数和需要的特定服务质量请求。比如某个视
频工作站希望与距离自己有若干网络跳数的多媒体服务器交流,为了
确保这个多媒体流量具有可接受的质量,这个对话需要300kbit/s
的带宽,需要100ms的延迟;另一个对话是ip电话用户handset
1与距离自己比较远的handset2通话,为了保证这个语音流量的质
量,需要保障500kbit/s,需要50ms的延迟。
在intserv服务模型中,负责传送qos请求的信令是rsvp
(resource reservation protocol)资源预留协议,它通知路
由器应用程序的 qos 需求。rsvp 是在应用程序开始发送报文
之前来为该应用申请网络资源的。 intserv实际上是一种对服务的
预定机制,通过申请来获取相应得服务,这里面主要依靠的就是rsvp
资源预留协议。
intsev模式下,需要在沿路上的路由器或者交换机作如下的几个工作:网络在收到应用程序的资源请求后,执行资源分配检查 admission control 即基于应用程序的资源申请和网络现有的资源情况,判断是否为应用程序分配资源,一旦网络确认为应用程序的报文分配了资源,则只要应用程序的报文控制在流量参数描述的范围内,网络将承诺满足应用程序的 qos 需求。而网络将为每个流 flow 由两端的 ip 地址、端口号、协议号确定、维护一个状态,并基于这个状态执行报文的分类、流量监管、policing、排队及其调度来实现对应用程序的承诺。
rsvp
rsvp是第一个标准的 qos信令协议,它用来动态地建立端到端的qos,它允许应用程序动态地申请网络带宽等。它是ip协议,ip的id是46,tcp和udp端口是3455。rsvp协议不是一个路由协议,相反,它按照路由协议规定的报文流的路径为报文申请预留资源,在路由发生变化后,它会按照新路由进行调整,并在新的路径上申请预留资源。rsvp 只是在网络节点之间传递 qos 请求,它本身不完成这些qos 的要求实现,而是通过其他技术来完成这些要求的实现。(rsvp只是一种用来预定的协议)
rsvp 的处理是接收方发出资源请求,按照报文发送的反向路径发送资源请求,所以它可以满足非常大的多播组,多播组的成员也可以动态变化,rsvp 协议是针对多播设计的 单播可以看作是多播的一个特例。
由于 rsvp 在 internet 上还没有得到广泛的推广,在主机不支持 rsvp 的情况下,我们可以通过配
置 rsvp 代理,即代替不支持 rsvp 的主机发送 rsvp 报文来获得这种服务,对报文流路径上不支持 rsvp的路由器,它只需要简单的转发rsvp报文 所以对rsvp协议不会有太大影响,但这些节点不会对报文提供所要求的qos 。(这是rsvp 的一个缺点)
ip电话1要与ip电话2进行语音的数据传递,ip电话1发送一个路径消息给接收方ip电话2,这个消息还收集了中间节点的qos能力的信息,当接收方ip电话2收到这个消息后开始处理这个消息,产生一个预留(reservation)请求,要求带宽为20kbps、200ms的延迟,预留请求再逆向传输给发送方,以确保真正的预留资源的请求,当发送方收到该预留请求后,开始按照预留的要求分配相应的网络资源发送数据。
rsvp 信令在网络节点之间传送资源请求,而网络节点在收到这些请求后,需要为这些请求分配资源,这就是资源预留。网络节点比较资源请求和网络现有的资源,确定是否接受请求,在资源不够的情况下,这个请求可以被拒绝,可以对每个资源请求设置不同的优先级。这样,优先级较高的资源请求可以在网络资源不够的情况下,抢占较低优先级的预留资源,来优先满足高优先级的资源请求。
资源预留判断是否接受资源请求,并承诺对接受了的资源请求提供请求的服务,但资源预留本身不实现承诺的服务,需要通过队列等其他技术来实现。
intserv 有它的好处,但是也有严重缺点,首先就是 rsvp 协议数据太多,而且不断刷新,并且这种
给单一数据流的路径进行带宽预留的解决思路在浩瀚的internet上实现简直是不可能的,而且rsvp的
部署,厂商之间设备的互联,业务管理方面 等存在着种种问题,所以这么模型在 1994 年推出之后就没
有获得任何规模的商业应用。
3.diffserv区分服务模式
diffserv 是一个多服务模型,它可以满足不同的 qos 需求,与 intserv 不同,它不需要使用 rsvp即应用程序在发出报文前,不需要通知路由器为其预留资源,对 diffserv 服务模型,网络不需要为每个流维护状态 ,它根据每个报文指定的 qos 来提供特定的服务,可以用不同的方法来指定报文的 qos,如ip报文的优先级位 ip precedence) ,报文的源地址和目的地址等,网络通过这些信息来进行报文的分类、流量整形、流量监管和队列调度。
diffsev是一个有多个组件组成的复杂的体系结构。每个组件在网络中都具有不同的作用,因此每个组件的操作都是不同的。diffsev体系结构的主要组件完成以下任务:
* 分组分类(packet classification):针对第2层或第3层信息简单进行分类,它可以区分不同类型分组的机制。一个简单的分组分类机制的例子是,对照寻找特定源ip地址和目的ip地址分组的访问列表进行匹配。分组分类也可以更加复杂,比如检查分组以区分其目的类型是url还是mime类型。在cisco路由器中一种可用的复杂分组分类的机制是基于网络的应用识别(network-based application recongnition,nbar)。nbar可以适应前面所列出的第4层到第7层各层的特性。nbar也能够进行有状态分组的检查,很明显地增加了潜在功能。无论一种特定机制的实际分类能力如何,分组分类典型的实现应尽可能靠近数据流的源端,而且通常与分组标记一同使用。
* 分组标记(packet marking)是一种允许网络设备根据分组类型进行不同标记的功能,所以在未来的网络设备中,它们更容易被区分。当分组在第一跳的路由器中分类后,标记就完成了,所有后继的路由器仅仅察看标记,就知道如何处理该分组。分组标记通过与分组分类一起尽可能在靠近源端出完成。diffse模型如此科变化的一个原因是,复合的分组分类和分组标记都推荐仅在第一跳的具有第3层能力的设备中实现。然后在整个网络中分组都携带此标记,这样网络核心的责任就限制在简单地分组分类(可以基于在网络边界所实现的标记值),以及将这些分组交换到相应的出口端。
* 拥塞管理(congestion management)有许多子组件(比如fifo、pq等),但拥塞管理基本的功能是将各种类型的数据流隔离(依据第一跳中的复合分类,抑或依据非边缘设备的分组标记),保护每一类数据流不受其他类的影响,然后分配各类数据流访问各种网络资源的优先级。通常拥塞管理主要关心的是对传输分组的重排。会影响每个类所获得的总带宽,也会影响器延迟和抖动特征。由于队列长度的限制,一个特定类型的数据流分组的延迟会影响该类型数据流的分组丢失。换句话说,如果一个特定类型数据流的延迟时间很长,而且队列已满,那么这类分组的后面部分将被丢弃。cisco路哟器的拥塞管理是一种出口功能,还包括如cbwfq和llq机制。在实时环境中,拥塞管理通常在所有的网络层(访问、分布、核心层)中采用,但并没有严格的规则指明在网络中那个部分必须使用拥塞管理。
* 拥塞避免(congestion avoidance):专门设计用于丢弃分组,以达到避免拥塞的目的。拥塞避免的概念是基于tcp操作的。简单的例子,一个人问了另一个人一个问题,但没有得到回答,经过了一段合理的时间后,发问方会假设对方没有听到这个问题,他会再次发问。tcp操作基本相似,当tcp数据流发送后,发送方期待接收方发送一个ack确认消息来确定对方已收到该数据包。如果在一定时间内,发送方未收到此ack,它假设接收方为收到这些传输。这样发送方将减少其tcp窗口的大小(实际上是减少发送速率),并在此发送未收到ack的数据包,注意到所有者都是在发送方未真正从接收方处获悉并未接收到数据包发生的。cisco设备中拥塞避免是通过加权早期随机监测(weighted random early detection,wred)来实现的,拥塞避免是一个监视队列深度,并随机丢弃各种数据流的分组的进程。随机丢弃各种数据流的分组,要避免两件事:第一,防止队列完全装满,如果允许全部装满,尾部丢弃(tail drop)将会发生。尾部丢弃并不是一个好的方法,因为同一个数据流的大量分组被丢弃后,将导致tcp多次减少其窗口的大小,因此造成链路利用率很低;第二,可以在决定标记的进程中增加一个功能,以决定那些分组可以被随机的丢弃。
* 流量调节(traffic conditioning):流量调节包括两个组件,一是监控组件,监控组件负责流量监控,也就是说,数据流通过监控组件的速率超过限定速率时丢弃分组。cisco中所实现的监控组件的粒子是允许访问速率(committed access rate,car)监控和基于类的监控。监控的目的是调节极限流量,实际应用中监控的例子是限制通过特定接口的ftp流量总量为1mbit/s。超过这个限定的数据流将会被丢弃。tcp会重传被丢弃的分组,而udp不会;第二是整形组件,负责对流量的整形,在cisco设备中,有多种格式:通用流量整形(generic traffic shaping,gts)、帧中继流量整形(frame relay traffic shaping,frtc)和基于类的流量整形等等。整形的目的是限制分组的速率,它将那些通过整形组件的超出限定速率的分组放在缓冲区中,稍后再发送这些分组。这样经过一段时间后发送速率可以平滑低过渡到给定的速率,这一点和监控组件的操作正好相反,在监控组件中,超过限定速率的流量将被丢弃。监控组件和整形组件各有利弊。 |
|