队列调度
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
今天先讲队列,因为中间两个知识点会用到队列的知识。
上图的三种延迟:进程延迟(路由器处理IP包、查找路由表)、队列延迟、传输延迟(与传输线路有关)。
思科路由器转发数据包的三种方式:Process Switching(进程交换)、Fash Switching(快速交换,也叫cache交换)、CEF(Cisco Express Forwarding)。
对于网络单元,当数据包到达的速度大于该接口传送数据包的速度时,在该接口处就会产生拥塞。如果没有足够的存储空间来保存这些数据包,它们其中的一部分就会丢失。数据包的丢失又可能会导致发送该数据包的主机或路由器因超时而重传此数据包,这将导致恶性循环。
对拥塞的管理,一般采用队列机制。当拥塞发生时,报文在路由器出口处按一定的策略入队;在调度时,再按照一定的策略决定报文出队发送的次序。
以下两张图是出现congestion的两种情况举例:
Transient:临时的;短暂的。Persistent:持续的。
在思科路由器上有软件队列和硬件队列之分。一个队列调度器调度下一个被转发的包的时候
不是直接移到出接口,而是把包从软件Q移到另外一个更小的FIFO队列中去,思科称为transimit Q(TX Q)或者transimit ring(TX Ring),这个更小的FIFO队列叫做hardware queue 硬件队列满的时候,有一些队列在软件Q中。此时硬件Q长度为4,不能被队列工具所控制。而软件Q中有之后的5、6、7个包,这三个包是可以被队列调度的,也就是我们通常说的软件队列调度机制是我们最经常操控的,而硬件Q不能被操控,即硬件队列先进先出。
加队也称插入,完成两项工作:1. 决定Queue能容纳多少包(即停车位容量);2. Queue 满了之后,采取何种丢弃技术将后续的包丢弃。
调度也称服务策略,采用何种技术将包送入出接口的硬件队列。
注意:
注意:上图在分类这一步,并没有采取措施(比如使用ACL)。FCFS即First-Come First-serve 在加队这一步,只有一个Queue,当Queue满了之后,对后续来包采取尾部丢弃法则。
在调度这一步,采取“first come,first serve”方式。
先入先出队列FIFO(First-In First-Out Queueing)——无通信优先权以及分类的概念。使用FIFO 时,数据包从接口的发送顺序依赖于数据包抵达这个接口的顺序,此时报文的入队顺序和报文的出队顺序相同。
FIFO 提供了基本的存储转发能力
上图,因为serial口默认带宽为1.544Mbps,如果想在serial口启用FIFO队列调度模式,可以在接口模式下配置指令no fair-queue。
上图,Ethernet接口默认采取FIFO,队列中可容纳的包的个数为40.
上图可见,串口默认采取WRQ队列调度模式,入口缓存最多75个包,出口缓存最多40个包。
上图中的指令可用来修改FIFO队列中可容纳的包的个数,具体数量和设备的性能有关系。
in 和out两个方向的含义:如上图,路由器S0端口上的队列,可能是出口队列也可能是入口队列,虽然通常是在出口队列上执行调度。
上图指令修改接口的input queue和out queue最多分别可以缓存200和100个包。
注意:Starvation:饿死。Jitter:抖动。Monopolize:独占。例如:ftp流量可能独占link。
Pre-emptive:优先购买的,先发制人的。
优先权队列方式PQ(Priority Queueing)——PQ 方式可根据报文头中的多个域(报文长度、源地址/目的地址等)及数据流的入接口等灵活地指定报文进入哪个优先级队列(可分为4 个等级的队列,即High、Medium、Normal、Low ),属于高等级优先队列的数据包可比低等级低的数据包优先发送,它确保了最重要的数据能得到最快速地处理。
PQ默认的优先级队列为Normal。
当某一个Queue满了之后,对于后续到来的包,仍然采取尾部丢弃法则。
Insertion policy即(入)队列机制。
配置举例如下:
上图定义了telnet流量具有high优先级,1是编号。
注意上图,high后面并没有参数可以指定协议类型(如:ICMP协议的协议号是1,TCP的协议号是6),但是有参数list,即可以指定一条acl来匹配ICMP数据流。
配置如下:
R1(config)#priority-list 1 protocal ip low list 100
R1(config)#access-list 100 permit icmp any any
接下来配置“调度”,即将priority-list绑定到哪个接口上,注意Qos通常定义在“出接口”!
查看:show inter serial 0/1
上图的数值为四种优先级队列默认允许最大占包数,默认分别为20/40/60/80。
上图,priority-list 1的配置,将telnet放入high队列,将icmp放入low队列。
下面来测试一下,通过在R1上执行指令“debug priority”查看,如下:
在R1上ping 13.1.1.3,如下:
在R1上telnet 13.1.1.3,如下:
PQ缺点:
1.对单一子队列而言,会继承FIFO队列的所有缺点。
2.对低优先级的数据流而言,可能会被“饿死”,因为只有高优先级队列里有数据,PQ就不会服务低优先级队列。
3.需要在每一跳(沿途每一台路由器)上都手工的配置分类。
注意:上图配置在入接口上(基于接口配置PQ),即从该接口进入的数据流都分配high priority。其余未做分类的流进入默认的队列,默认进入normal队列。