QoS服务模型
·在传统的IP网络中,所有的报文都被无区别的同等对待,在这种情况下,导致报文传送的可靠性、传送延迟等这些性能都不能提供任何保证
·我们知道在IP网络中,比如VoiceIP这种业务,也就是语音电话,打电话的业务属于我们敏感型的流量,也就是我们对于传输的实时性非常在乎,这类实时业务对传输延迟提出了一定的要求,如果报文传送的时间太长,那么肯定会影响到使用者的体验感。但是如果对于E-Mail或者FTP这类业务,属于非敏感型流量,实际上可以不要求实时性
·以上都是例子,那么为了支持具有不同服务雪球的语音、视频以及数据等业务,我们要求网络能够区分出不对类型的通信,然后提供相对应的服务。
·QoS技术就是致力于解决这个问题的
·这里讲解的是IP QoS,那么对于IPv6来说,还有IPv6 Qos,以及我们之前学习MPLS v*n里面提到的MPLS v*n Qos,以及在二层交换机上也有二层QoS
传统端到端网络通信存在问题
-
在很久以前的网络中,我们实际的应用不是因特网,而是进行文件共享,在那个使用没有这么多类型的流量,因此对服务质量没什么要求,所以我们要来理解一下传统的IP网络和我们当前的IP网络到底存在什么区别。
-
QoS:概念
-
对于BT业务来说,如果我们在下载的时候没有做QoS的话,会导致我们所有终端的流量都被吃掉,肯定会影响我内网的通信质量,这个情况我们可以总结为一句话:提高某类业务的服务质量同时也会损害其他业务的服务质量
网络带宽
这里存在木桶理论:最大带宽BWmax等于传输路径上的最小带宽。
这条端到端链路上,最大的传输带宽的瓶颈存在于速度最慢的那条链路上
- 互联网中经常会发现个问题,内网速率都是千兆或者更快,瓶颈往往在运营商这里
- 带宽不足解决方案
-升级链路是土豪做法
-对于队列机制来说,我们可以去判断流量的类型,如果是语音的流量,那么先让过,BT流量或者其他下载流量再过,保障我们实时性流量的使用。
-二层帧压缩,传输的时候压缩了之后,传输速度不变,那么对于原链路来说,相当于加大了带宽 - 对于IP包头部压缩有几种情况,
①:IP+TCP的压缩
②IP+UDP+RTP的压缩:一些IP电话里面是这种封装模式
对于以上的情况,例如IP+TCP+DATA以及IP+UDP+RTP+DATA,假设数据DATA都是1个字节,那么IP+TCP以及IP+UDP+RTP固定大小相同,都是40字节,就会发现实际上承载的数据是非常小的,因此如果使用了IP包头部以后,IP+TCP40个字节可以压缩成2-4个字节,IP+UDP+RTP去查
网络时延
单个网络设备的时延包括传输时延、串行化时延、处理时延、以及队列时延。
-传输时延以及串行化时延实际上代表的意思就是升级链路,但是更换的代价比较大,因此我们暂时不考虑,处理时延可以通过更换背板来提高,因此也是不常用的
-所以对于我们来说, 最好的方式就是通过QoS处理队列时延,来根据流量进行优选分类
-端到端的实验实际上就是(传输时延+串行化时延+处理时延+队列时延)之和
抖动
·例如打电话,我们有时候第一个字听到了,然后卡了一下,然后后面2个字蹦出来,然后又来了一个字,这种情况是由于我们每个报文的端到端时延不相等造成的,这就是抖动。
·一般来说,时延越小则时延抖动的范围越小,反之则越大
·语音或者视频流量,如果抖动的话会影响我们正常的使用,会导致断续。有些协议是按固定的时间间隔发送交互性报文,抖动过大就会导致协议震荡,而实际上所有传输系统都有抖动,但只要抖动在规定容差之内就不会影响服务质量
丢包
- 丢包(packet loss)可能在所有环节中发生,例如:
-在很多时候,丢包一般都是因为队列满而造成的,在队列满的时候,一般采用尾丢弃的方式来进行丢包 - 丢包率是指在网络传输过程中丢失报文占传输报文的百分比。丢包可用于衡量网络的可靠性。
丢包解决方案:
①:就是避免拥塞就不需要考虑其他因素了
②:拥塞管理是出现了拥塞以后,才会出现的解决方案
·对于↓这一点来说,拥塞了肯定会导致大量丢包,因此路由器现在需要去监测链路,如果快出现拥塞了,那么先把不重要的先丢掉,不然如果出现拥塞出现了,那么会导致不管重要的还是不重要的数据包都会丢失。
③为了防止发生拥塞,因此丢弃一些不重要的数据包,以此来保证大规模数据包不会因为拥塞而被丢弃----拥塞避免
QoS总结
服务模型
-
尽力而为服务模型
-
综合服务模型
-是一个综合服务模型,可以满足多种QoS需求,这种服务模型在发送报文前,需要向网络申请特定的服务
-在数据发送之前要了解特定服务的需求
-为每一条数据流做保证(由两端的IP地址、端口号、协议号确定)
-优点:绝对保证服务
-缺点:不能实现复用
·RSVP协议(资源预留协议):告诉链路我对于某种类型的数据,需要预留多少带宽、资源
·我们要考虑数据流的概念,例如现在有FTP/HTTP/TELNET的流量,那么在这种情况下,比如FTP->100k http->500k telnet->50k流量,我们需要对某种协议的某个流进行一个控制,因此要用到五元组的概念(源目IP、源目端口以及协议号)。
·确定了数据流之后,使用RSVP协议的综合服务模型进行一个端到端的带宽预留
·绝对保证服务,实际上就是先预留了我们的资源,有流量直接走就完事儿,但是不能复用。
·现在基本上不用综合服务模型,因为如果按照绝对保证服务以及不能复用的机制来说,有种专线的感觉,比如一个带宽就是给某个流预留的,实际上太浪费带宽了,因此我们没怎么去用
- IntServ模型要求端到端网络的所有节点都支持RSVP协议,且每个节点都需要周期性地同相邻节点交换状态信息,这样就会加大协议报文导致的开销。更关键的是,所有网络节点都需要为每个数据流保存状态信息,而当前在Internet骨干网上有着成千上万条数据流,因此IntServ模型在Internet骨干网上无法得到广泛应用。
区分服务模型
·大部分部署QoS的时候都是区分服务模型
-
之前说IPv4头部信息的时候,里面有ToS字段,也就是区分服务类型,里面有个DSCP值,叫做差分服务代码点,通过设置这个参数,来告知网络QoS的需求。
例如:我们现在分配1、2、3、5、6的DSCP值,如果碰到数值为5,那就快速转发,如果看到6我们就干掉 -
对于区分服务模型,实际上就以下三个步骤
-
默认情况下,终端发送数据时,IP头部里的DSCP值都是0,没有区分,当我到了路由器以后,就可以进行区分了,通过五元组进行区分,例如一看到是语音的流量,那么就设置DSCP为X,如果是BT的,那就是Y,这个实际上就是打标。打标完成之后,我们针对不同的标记执行不同的QoS策略
-
对于PC1建立PC2端到端的连接的话,如果使用区分服务模型,那么R1,R2,R3都需要去部署QoS,如果不这么做,可能R1会对PC1来的语音流量always first ,但是在R2上可能不一定是always first
-
当然也可能只做一台设备,因为如果作为公司的出口路由器去做QoS的话,决定它们要干什么
- DS节点:实现DiffServ功能的网络节点称为DS节点,也就是一个DS node。
- DS边界节点:负责连接另一个DS域或者连接一个没有DS功能的域的节点。DS边界节点负责将进入此DS域的业务流进行分类和流量调整。
- DS内部节点:用于在同一个DS域中连接DS边界节点和其他内部节点。DS内部节点仅需基于报文中的EXP、802.1p、IPP等字段值进行简单的流分类以及对相应的流进行流量控制。
- DS域(DS Domain):一组采用相同的服务提供策略和实现了相同PHB(Per Hop Behaviors)的相连DS节点组成。一个DS域由相同管理部门的一个或多个网络组成,如一个DS域可以是一个ISP,也可以是一个企业的内部网络。
- Non-DS domain:非DS域,例如公司分布和公司总部,
- 那么在这种情况下,非DS域的数据进来我们就要进行流量整形,也就是流量的限制,但是流量没有任何的标识,即时我们在内网中做了,但是在运营商中,也不会信任,因此,需要在DS边界节点中,需要对复杂流进行分配,确定是否为指定的流,比如说语音流,如果是语音流,那么就会进行着色(打标),打标后,我们就要进行策略实施,是按照QoS针对特定流的一系列操作,保证公司总部和分部之间的数据流的质量。