PQ(Priority  Queue)优先队列机制中,有高、中、普通、低优先级四个队列。数据包根据我们事先定义的队列机制,路由器由高到底的顺序进行服务,只有优先级为高的队列中为空时,才会依次进行下一个队列机制,这样才能保证优先级高的数据包一直保持优先输出,然而如果优先级高的队列中数据长期不为空时,则优先级低的一直得不到服务。

拓扑图:

Qos鎷撴墤

实验目的:理解PQ的工作原理、熟悉PQ的配置方法!

实验步骤:

1、进行IP以及路由协议的配置

1)在配置路由协议时  我们需要在PC机上,以管理员的身份运行CMD命令窗口,进入后,route  print  显示当前本机的所有路由条目,通过route  add     192.168.12.0 mask  255.255.255.0   192.168.1.254       其中192.168.12.0 为目标网段,而192.168.1.254 为网关地址

2)由于我们设置中要求应用HTTP服务以及Telent服务,所以应开启其服务ip  http  server  和 在远程登录服务中line    vty   0   4   ,   no     login

3)R1:  e0/1   192.168.1.254    e0/0   192.168.12.1               R2:   e0/0   192.168.12.2               PC :192.168.1.103   (我们将虚拟PC跟我们的无线网卡绑定)

2、配置PQ

Gateway#show run

!

access-list 101 permit ip host 192.168.1.103 any         \\ ACL  允许源主机为192.168.0.103  访问任何主机    

priority-list 1 protocol ip high list 101          \\创建1个优先队列  标号为1 (范围1~16),把ACL为101的流量放入放在高优先级队列中

priority-list 1 protocol ip high tcp www        \\创建1个优先队列 ,标号为1,将HTTP的流量放入高优先级队列中

priority-list 1 protocol ip medium tcp telnet               \\标号为1的优先级队列中,我们将其Telent的流量放入中优先级的队列中

priority-list 1 default low                \\将未进行划分优先级的其他队列放入低优先级队列

!

interface Ethernet0/1

ip address 192.168.1.254 255.255.255.0

half-duplex

priority-group 1               \\    \\在e0/1进行调用

!

3、进行测试我们的优化队列是否生效?

Gateway# debug priority           \\开启debug   priority

Priority output queueing debugging is on

Gateway#

PQ1PQ2

*Mar 1 03:33:54.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#我们通过网页访问http://192.168.12.1/时,同时通过Telnet远程登录192.168.12.1时,显示我们优先级为高的流量先进行服务

*Mar 1 03:34:01.207: PQ: Ethernet0/1 output (Pk size/Q 60/0)

*Mar 1 03:34:01.219: PQ: Ethernet0/1: ip (tcp 80) -> high

*Mar 1 03:34:01.219: PQ: Ethernet0/1 output (Pk size/Q 60/0)

*Mar 1 03:34:01.283: PQ: Ethernet0/1: ip (tcp 80) -> high

*Mar 1 03:34:01.283: PQ: Ethernet0/1 output (Pk size/Q 310/0)

*Mar 1 03:34:01.339: PQ: Ethernet0/1: ip (tcp 80) -> high

*Mar 1 03:34:01.339: PQ: Ethernet0/1 output (Pk size/Q 1259/0)

*Mar 1 03:34:01.351: PQ: Ethernet0/1: ip (tcp 80) -> high

*Mar 1 03:34:01.355: PQ: Ethernet0/1 output (Pk size/Q 179/0)

*Mar 1 03:34:01.359: PQ: Ethernet0/1: ip (tcp 80) -> high

*Mar 1 03:34:01.359: PQ: Ethernet0/1 output (Pk size/Q 464/0)

Gateway#

*Mar 1 03:34:01.363: PQ: Ethernet0/1: ip (tcp 80) -> high

*Mar 1 03:34:01.363: PQ: Ethernet0/1 output (Pk size/Q 60/0)

*Mar 1 03:34:01.431: PQ: Ethernet0/1: ip (tcp 80) -> high

*Mar 1 03:34:01.431: PQ: Ethernet0/1 output (Pk size/Q 60/0)

*Mar 1 03:34:01.443: PQ: Ethernet0/1: ip (tcp 80) -> high

*Mar 1 03:34:01.443: PQ: Ethernet0/1 output (Pk size/Q 176/0)

*Mar 1 03:34:01.447: PQ: Ethernet0/1: ip (tcp 80) -> high

*Mar 1 03:34:01.447: PQ: Ethernet0/1 output (Pk size/Q 60/0)

*Mar 1 03:34:01.451: PQ: Ethernet0/1: ip (tcp 80) -> high

*Mar 1 03:34:01.451: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:34:04.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:34:08.963: PQ: Ethernet0/1: cdp (defaulting) -> low

*Mar 1 03:34:08.967: PQ: Ethernet0/1 output (Pk size/Q 343/3)

Gateway#

*Mar 1 03:34:14.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:34:24.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

*Mar 1 03:34:24.647: PQ: Ethernet0/1: mop-console (defaulting) -> low

*Mar 1 03:34:24.647: PQ: Ethernet0/1 output (Pk size/Q 77/3)

Gateway#

*Mar 1 03:34:34.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:34:36.531: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:34:36.531: PQ: Ethernet0/1 output (Pk size/Q 60/1)

*Mar 1 03:34:36.551: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:34:36.551: PQ: Ethernet0/1 output (Pk size/Q 66/1)

*Mar 1 03:34:36.555: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:34:36.559: PQ: Ethernet0/1 output (Pk size/Q 64/1)

*Mar 1 03:34:36.563: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:34:36.563: PQ: Ethernet0/1 output (Pk size/Q 60/1)

*Mar 1 03:34:36.767: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:34:36.767: PQ: Ethernet0/1 output (Pk size/Q 60/1)

Gateway#

*Mar 1 03:34:44.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:35:08.967: PQ: Ethernet0/1: cdp (defaulting) -> low

*Mar 1 03:35:08.971: PQ: Ethernet0/1 output (Pk size/Q 343/3)

Gateway#

*Mar 1 03:35:14.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:35:24.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:35:34.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:35:44.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:35:52.271: PQ: Ethernet0/1 output (Pk size/Q 60/0)

*Mar 1 03:35:52.299: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:35:52.303: PQ: Ethernet0/1 output (Pk size/Q 60/1)

*Mar 1 03:35:52.463: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:35:52.463: PQ: Ethernet0/1 output (Pk size/Q 60/1)

*Mar 1 03:35:52.555: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:35:52.555: PQ: Ethernet0/1 output (Pk size/Q 60/1)

*Mar 1 03:35:52.739: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:35:52.739: PQ: Ethernet0/1 output (Pk size/Q 60/1)

*Mar 1 03:35:52.983: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:35:52.983: PQ: Ethernet0/1 output (Pk size/Q 60/1)

Gateway#

*Mar 1 03:35:53.115: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:35:53.115: PQ: Ethernet0/1 output (Pk size/Q 60/1)

*Mar 1 03:35:53.123: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:35:53.123: PQ: Ethernet0/1 output (Pk size/Q 60/1)

*Mar 1 03:35:54.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:36:04.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

*Mar 1 03:36:04.583: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:36:04.583: PQ: Ethernet0/1 output (Pk size/Q 60/1)

*Mar 1 03:36:04.587: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:36:04.587: PQ: Ethernet0/1 output (Pk size/Q 66/1)

*Mar 1 03:36:04.595: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:36:04.595: PQ: Ethernet0/1 output (Pk size/Q 64/1)

*Mar 1 03:36:04.599: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:36:04.599: PQ: Ethernet0/1 output (Pk size/Q 60/1)

*Mar 1 03:36:04.811: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:36:04.811: PQ: Ethernet0/1 output (Pk size/Q 60/1)

Gateway#

*Mar 1 03:36:08.971: PQ: Ethernet0/1: cdp (defaulting) -> low

*Mar 1 03:36:08.971: PQ: Ethernet0/1 output (Pk size/Q 343/3)

Gateway#

*Mar 1 03:36:14.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:36:24.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:36:25.175: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:36:25.175: PQ: Ethernet0/1 output (Pk size/Q 60/1)

*Mar 1 03:36:25.279: PQ: Ethernet0/1: ip (tcp 23) -> medium

*Mar 1 03:36:25.279: PQ: Ethernet0/1 output (Pk size/Q 60/1)

Gateway#

*Mar 1 03:36:34.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:36:44.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:36:54.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#

*Mar 1 03:37:04.011: PQ: Ethernet0/1 output (Pk size/Q 60/0)

Gateway#u all

All possible debugging has been turned off

Gateway#

通过时间的先后顺序就可以看出来,我们的优先级流量高的先给予服务,依次按照高、中、普通、低的级别进行服务,由此可以看出PQ的优化生效

*Mar 1 03:37:08.975: PQ: Ethernet0/1: cdp (defaulting) -> low

*Mar 1 03:37:08.975: PQ: Ethernet0/1 output (Pk size/Q 343/3)

Gateway#

Gateway#show queueing priority       \\查看队列的配置

Current DLCI priority queue configuration:

Current priority queue configuration:

List Queue Args

1 low default

1 high protocol ip list 101

1 high protocol ip tcp port www

1 medium protocol ip tcp port telnet

Gateway#show queueing interface e0/1

Interface Ethernet0/1 queueing strategy: priority

Output queue utilization (queue/count)

high/307 medium/20 normal/1234 low/45

Gateway#show interface e0/1                   //查看接口上的显示队列

Ethernet0/1 is up, line protocol is up

Hardware is AmdP2, address is cc00.1560.0001 (bia cc00.1560.0001)

Internet address is 192.168.1.254/24

MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec,

reliability 255/255, txload 1/255, rxload 1/255

Encapsulation ARPA, loopback not set

Keepalive set (10 sec)

ARP type: ARPA, ARP Timeout 04:00:00

Last input 00:00:03, output 00:00:05, output hang never

Last clearing of "show interface" counters never

Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0

Queueing strategy: priority-list 1                         \\显示在e0/0接口上的队列机制是  标号为1的优先级队列              

Output queue (queue priority: size/max/drops):

high: 0/20/0, medium: 0/40/0, normal: 0/60/0, low: 0/80/0

5 minute input rate 0 bits/sec, 0 packets/sec

5 minute output rate 0 bits/sec, 0 packets/sec

8114 packets input, 2091078 bytes, 0 no buffer

Received 7164 broadcasts, 0 runts, 0 giants, 0 throttles

0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored

0 input packets with dribble condition detected

2507 packets output, 312456 bytes, 0 underruns

0 output errors, 0 collisions, 4 interface resets

0 babbles, 0 late collision, 0 deferred

0 lost carrier, 0 no carrier

0 output buffer failures, 0 output buffers swapped out

Gateway#show interface e0/2

Ethernet0/2 is administratively down, line protocol is down

Hardware is AmdP2, address is cc00.1560.0002 (bia cc00.1560.0002)

MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec,

reliability 255/255, txload 1/255, rxload 1/255

Encapsulation ARPA, loopback not set

Keepalive set (10 sec)

ARP type: ARPA, ARP Timeout 04:00:00

Last input never, output never, output hang never

Last clearing of "show interface" counters never

Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0

Queueing strategy: fifo              \\由于我们未曾给e0/2调用任何机制,所以显示以太网口的默认的队列机制是FIFO(先进先出的机制)             

Output queue: 0/40 (size/max)

5 minute input rate 0 bits/sec, 0 packets/sec

5 minute output rate 0 bits/sec, 0 packets/sec

0 packets input, 0 bytes, 0 no buffer

Received 0 broadcasts, 0 runts, 0 giants, 0 throttles

0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored

0 input packets with dribble condition detected

0 packets output, 0 bytes, 0 underruns

0 output errors, 0 collisions, 0 interface resets

0 babbles, 0 late collision, 0 deferred

0 lost carrier, 0 no carrier

0 output buffer failures, 0 output buffers swapped out

Gateway#

由此可以看出PQ的机制能保证高优先级的流量先服务 ,但是如果高流量服务长期不能空闲,就会使低于此服务的流量无法得到服务,我们就需要定义它们各队列中优先级的长度,来保证其他流量也可以得到服务,只不过是迟早的问题罢了!我们通过命令

priority-list 1 queue-limit 20 30 40 50    依次限制了优先级为高、中、普通、低的大小为20/30/40/50,如果包超过了限制,数据包将会丢弃。