QoS(一)理论

1. QoS(一)理论

1.1 QoS

QoS(Quality of Service)是服务质量的简称。提高服务质量也就是保证传输的带宽,降低传送的时延,降低数据的丢包率以及时延抖动等。

QoS(Quality of Service)服务质量,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。但是对关键应用和多媒体应用就十分必要。当网络过载或拥塞时,QoS 能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行. 在网络总带宽固定的情况下,如果某类业务占用的带宽越多,那么其他业务能使用的带宽就越少,可能会影响其他业务的使用。因此,网络管理者需要根据各种业务的特点来对网络资源进行合理的规划和分配,从而使网络资源得到高效利用

QoS的关键指标主要包括:可用性、吞吐量、时延、时延变化(包括抖动和漂移)和丢失

数据包流向
http://www.docum.org/docum.org/kptd/

2. QoS模型

网络中的通信都是由各种应用流组成的,这些应用对网络服务和性能的要求各不相同,比如FTP下载业务希望能获取尽量多的带宽,而VoIP语音业务则希望能保证尽量少的延迟和抖动等。但是所有这些应用的特殊要求又取决于网络所能提供的QoS能力,根据网络对应用的控制能力的不同,可以把网络的QoS能力分为三种模型:

2.1 Best Effort模型

Best Effort(尽力而为)模型是最简单的服务模型,应用程序可以在任何时候,发出任意数量的报文,网络尽最大的可能性来发送报文,对带宽、时延、抖动和可靠性等不提供任何保证。

Best Effort是Internet的缺省服务模型,通过FIFO(First In First Out,先进先出)队列来实现。

2.2 DiffServ模型

DiffServ(Differentiated Service,区分服务)模型由RFC2475定义,在区分服务中,根据服务要求对不同业务的数据进行分类,对报文按类进行优先级标记,然后有差别地提供服务。

区分服务一般用来为一些重要的应用提供端到端的QoS,它通过下列技术来实现:

  1. 流量标记与控制技术:
    它根据报文的CoS(Class of Service,服务等级)域、ToS域(对于IP报文是指IP优先级或者DSCP)、IP报文的五元组(协议、源地址、目的地址、源端口号、目的端口号)等信息进行报文分类,完成报文的标记和流量监管。目前实现流量监管技术多采用令牌桶机制。

  2. 拥塞管理与拥塞避免技术:
    WRED、PQ、CQ、WFQ、CBQ等队列技术对拥塞的报文进行缓存和调度,实现拥塞管理与拥塞避免。

2.3 IntServ模型

IntServ(Integrated Service,综合服务)模型由RFC1633定义,在这种模型中,节点在发送报文前,需要向网络申请资源预留,确保网络能够满足数据流的特定服务要求。

在IntServ模型中,网络资源的申请是通过信令来完成的,应用程序首先通知网络它自己的流量参数和需要的特定服务质量请求,包括带宽、时延等,应用程序一般在收到网络的确认信息,即确认网络已经为这个应用程序的报文预留了资源后,才开始发送报文。同时应用程序发出的报文应该控制在流量参数描述的范围以内。负责完成保证服务的信令为RSVP(Resource Reservation Protocol,资源预留协议),它通知网络设备应用程序的QoS需求。RSVP是在应用程序开始发送报文之前来为该应用申请网络资源的,所以是带外信令。

保证服务要求为单个流预先保留所有连接路径上的网络资源,而当前在Internet主干网络上有着成千上万条应用流,保证服务如果要为每一条流提供QoS服务就变得不可想象了。因此,IntServ模型很难独立应用于大规模的网络,目前主要与MPLS TE(Traffic Engineering,流量工程)结合使用。

流量控制

流量控制中的概念:

  1. 整形
    整形就是流量控制,把数据包的发送速率控制在一个固定的水平以下。由于整形通过延迟数据包的发送来控制数据包发送速率,故整形机制是非工作保存的。“非工作保存”可以理解为:系统必须进行一些操作来延迟数据包的发送。反过来说,一种非工作保存的队列是可以进行流量整形的,而工作保存的队列(参考 PRIO)不能进行流量整形,因为工作保存队列无法延迟发送数据包。

  2. 调度
    一个调度器会对将要发送的数据包顺序进行排列或重排。

  3. 分类
    分类器能把不同类型的网络流量划分到不同的队列中去。

  4. 策略
    决策器能计算并限制某个特定队列的流量

  5. 丢弃
    丢弃一个数据包,一个数据流或一个分类下的数据包,都可以叫做丢弃。

  6. 标记
    标记是一种对数据包进行一些修改的操作。这里说的标记不是fwmark。iptables,$ipt-mark;,ipchains以及–mark都只修改数据包的元数据,而不修改数据包本身。

QoS基本原理

3.1 流量分类与标记

流量分类,就是将流量划分为多个优先级或多个服务类,划分的工具有很多,如

  1. 使用以太网帧中802.1Q头保留的User Priority(用户优先级)字段标记服务级别,可以将以太网帧最多分成23 = 8类;

  2. 使用IP报文头的ToS(Type of service,服务类型)字段的前三位(即IP优先级)来标记报文,可以将报文最多分成23 = 8类;

  3. 使用DSCP(Differentiated Services Codepoint,区分服务编码点,ToS域的前6位),则最多可分成26 = 64类。

在报文分类后,就可以将其它的QoS特性应用到不同的分类,实现基于类的拥塞管理、流量整形等。

拥塞管理是指网络在发生拥塞时,如何进行管理和控制。处理的方法是使用队列技术。将所有要从一个接口发出的报文进入多个队列,按照各个队列的优先级进行处理。不同的队列算法用来解决不同的问题,并产生不同的效果。

队列调度机制

1. FIFO

FIFO是队列机制中最简单的,每个接口上只有一个FIFO队列,FIFO是其它队列的基础,FIFO也会影响到衡量QoS的关键指标:报文的丢弃、延时、抖动。既然只有一个队列,自然不需要考虑如何对报文进行复杂的流量分类,也不用考虑下一个报文怎么拿、拿多少的问题,即FIFO无需流分类、调度机制,而且因为按顺序取报文,FIFO无需对报文重新排序。简化了这些实现其实也就提高了对报文时延的保证。

FIFO关心的就是队列长度问题,队列长度会影响到时延、抖动、丢包率。因为队列长度是有限的,有可能被填满,这就涉及到该机制的丢弃原则,FIFO使用Tail Drop机制。如果定义了较长的队列长度,那么队列不容易填满,被丢弃的报文也就少了,但是队列长度太长了会出现时延的问题,一般情况下时延的增加会导致抖动也增加;如果定义了较短的队列,时延的问题可以得到解决,但是发生Tail Drop的报文就变多了。

2. 两种常用qdise
  1. htb
    http://www.tldp.org/HOWTO/html_single/Traffic-Control-HOWTO/#qc-htb

  2. hfsc

最大的特点是延迟可计算,这就要求有一定的保障带宽。
http://www.man7.org/linux/man-pages/man7/tc-hfsc.7.html
http://linux-ip.net/articles/hfsc.en/

流量控制

Linux中的QoS分为入口(Ingress)部分和出口(Egress)部分,入口部分主要用于进行入口流量限速(policing),出口部分主要用于队列调度(queuing scheduling)。

大多数排队规则(qdisc)都是用于输出方向的,输入方向只有一个排队规则,即ingress qdisc。ingress qdisc本身的功能很有限,但可用于重定向incoming packets。通过Ingress qdisc把输入方向的数据包重定向到虚拟设备ifb,而ifb的输出方向可以配置

实现-tc

关于tc的设计:
递归控制 所谓的递归控制就是分层次地控制,而对于每个层次,控制方式都是一致的
Qdisc –class –filter 的树型组织模式.

  1. qdisc 队列规则(queueing discipline):
    用来实现控制网络的收发速度.通过队列,linux可以将网络数据包缓存起来,然后根据用户的设置,在尽量不中断连接(如 tcp)的前提下来平滑网络流量.

  2. Class 类
    class 用来表示控制策略.很显然,很多时候,我们很可能要对不同的IP实行不同的流量控制策略,这时候我们就得用不同的class来表示不同的控制策略了.

  3. Filter 规则
    目前,tc可以使用的过滤器有:fwmark分类器,u32 分类器,基于路由的分类器和 RSVP 分类器(分别用于IPV6、IPV4)等;其中,fwmark 分类器允许我们使用 Linux netfilter 代码选择流量,而 u32 分类器允许我们选择基于 ANY 头的流量

后期详细说明tc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值