CISCO3550交换机作为我们单位的核心网络交换机,已经稳定运行了多年,功能上也能满足我们的需求,但是其端口限速功能却不像其它的一些交换机那样容易实现,好在最近找到了实现的办法,配置完成后,配合iperf这款测速软件进行验证,结果证明这个方法是行之有效的,下面是具体实现步骤。
一、创建ACL
由于这是一台三层交换机,所以虽然是对端口进行限速,但是还要考虑这个端口上通过的网络地址,本例中,我们选择对CISCO3550交换机的第22口进行限速,该端口属于VLAN66,IP地址段为10.66/16,所以首先要创建一个ACL,如下所示:
3550#conf t
Enter configuration commands, one per line. End with CNTL/Z.
3550(config)#access-list 15 permit 10.66.0.0 0.0.255.255
二、创建class-map
3550#conf t
Enter configuration commands, one per line. End with CNTL/Z.
3550(config)#class-map dkxs
3550(config-cmap)#match access-group 15
这一步操作的主要目的就是创建了一个class-map,在这里面引用了我们事先创建好的ACL 15,方便我们以后对22端口进行操作。
三、创建policy-map
出于测试的需要,我们创建了多个policy-map,分别设置不同的限制带宽,如80k,1m,5m,10m,分别如下:
3550#conf t
Enter configuration commands, one per line. End with CNTL/Z.
3550(config)#policy-map 80k
3550(config-pmap)#class dkxs
3550(config-pmap-c)# police 80000 8000 exceed-action drop
3550#conf t
Enter configuration commands, one per line. End with CNTL/Z.
3550(config)#policy-map 1m
3550(config-pmap)#class dkxs
3550(config-pmap-c)# police 1000000 100000 exceed-action drop
3550#conf t
Enter configuration commands, one per line. End with CNTL/Z.
3550(config)#policy-map 5m
3550(config-pmap)#class dkxs
3550(config-pmap-c)# police 5000000 500000 exceed-action drop
3550#conf t
Enter configuration commands, one per line. End with CNTL/Z.
3550(config)#policy-map 10m
3550(config-pmap)#class dkxs
3550(config-pmap-c)# police 10000000 1000000 exceed-action drop
四、查看配置信息
3550#show run
policy-map 5m
class dkxs
police 5000000 500000 exceed-action drop
policy-map 1m
class dkxs
police 1000000 100000 exceed-action drop
policy-map 80k
class dkxs
police 80000 8000 exceed-action drop
policy-map 10m
class dkxs
police 10000000 1000000 exceed-action drop
五、通过iperf软件进行验证
即先在一台服务器上运行iperf的服务器端,命令如下:
F:tools>iperf -s
————————————————————
Server listening on TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————
然后在交换机的22口上分别应用表示不同速率的policy-map,每应用一次,通过一台连接到22端口的笔记本电脑运行iperf的客户端,进行端口速率测试,结果分别如下:
(交换机设置)
3550(config-if)#service-policy input 80k
(IPERF客户端测试结果)
F:tools>iperf -c 10.66.66.8
————————————————————
Client connecting to 10.66.66.8, TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————
[1912] local 10.66.123.66 port 1147 connected with 10.66.66.8 port 5001
[ ID] Interval Transfer Bandwidth
[1912] 0.0-12.5 sec 104 KBytes 68.3 Kbits/sec
F:tools>iperf -c 10.66.66.8
————————————————————
Client connecting to 10.66.66.8, TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————
[1912] local 10.66.123.66 port 1151 connected with 10.66.66.8 port 5001
[ ID] Interval Transfer Bandwidth
[1912] 0.0-12.0 sec 104 KBytes 70.8 Kbits/sec
(交换机设置)
3550(config-if)#service-policy input 1m
(IPERF客户端测试结果)
F:tools>iperf -c 10.66.66.8
————————————————————
Client connecting to 10.66.66.8, TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————
[1912] local 10.66.123.66 port 1155 connected with 10.66.66.8 port 5001
[ ID] Interval Transfer Bandwidth
[1912] 0.0-10.5 sec 1.08 MBytes 860 Kbits/sec
F:tools>iperf -c 10.66.66.8
————————————————————
Client connecting to 10.66.66.8, TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————
[1912] local 10.66.123.66 port 1159 connected with 10.66.66.8 port 5001
[ ID] Interval Transfer Bandwidth
[1912] 0.0-10.0 sec 1.09 MBytes 910 Kbits/sec
(交换机设置)
3550(config-if)#service-policy input 5m
(IPERF客户端测试结果)
F:tools>iperf -c 10.66.66.8
————————————————————
Client connecting to 10.66.66.8, TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————
[1912] local 10.66.123.66 port 1163 connected with 10.66.66.8 port 5001
[ ID] Interval Transfer Bandwidth
[1912] 0.0-10.5 sec 5.84 MBytes 4.67 Mbits/sec
F:tools>iperf -c 10.66.66.8
————————————————————
Client connecting to 10.66.66.8, TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————
[1912] local 10.66.123.66 port 1167 connected with 10.66.66.8 port 5001
[ ID] Interval Transfer Bandwidth
[1912] 0.0-10.7 sec 5.98 MBytes 4.68 Mbits/sec
(交换机设置)
3550(config-if)#service-policy input 10m
(IPERF客户端测试结果)
F:tools>iperf -c 10.66.66.8
————————————————————
Client connecting to 10.66.66.8, TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————
[1912] local 10.66.123.66 port 1171 connected with 10.66.66.8 port 5001
[ ID] Interval Transfer Bandwidth
[1912] 0.0-10.1 sec 11.8 MBytes 9.83 Mbits/sec
F:tools>iperf -c 10.66.66.8
————————————————————
Client connecting to 10.66.66.8, TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————
[1912] local 10.66.123.66 port 1175 connected with 10.66.66.8 port 5001
[ ID] Interval Transfer Bandwidth
[1912] 0.0-10.2 sec 12.0 MBytes 9.87 Mbits/sec
为了使测试的结果更准确,每种速率下都进行了两次测试,从测试的结果看,端口限速确实生效了。
以前端口限速的工作都是由上级部门来做,最近由于分公司自己的内部客户需求,我们要为其提供50M的带宽.
为此我们可是煞费苦心作了两天的测试,先来说说我们测试的设备连接情况:
思科3560端口0/47(模拟用户)——————思科6509端口0/1、0/2(模拟局端,两条路有上联,热备)
测试方法在3560及6509上分别起ftp进行测速
重点来了,来说说6509上的命令吧:
mls qos aggregate-policer test 50000000 100000 conform-action transmit exceed-action drop
mls qos
class-map match-any test_limite
match access-group name test_addr
!
!
policy-map rate-limit-uplink
class test_limite
police aggregate test
ip access-list extended test_addr (因为上下行都引用策略一样因此不单独做acl)
permit ip any x.x.x.x 0.0.0.3 (分配给用户的互联网地址段A)
permit ip x.x.x.x 0.0.0.3 any
permit ip any x.x.x.x 0.0.0.3 (分配给用户的互联网地址段B)
permit ip x.x.x.x 0.0.0.3 any
inter f0/1
ip addre x.x.x.x 255.255.255.252
service-policy input test_uplink限制上传
inter f0/2
ip addre x.x.x.x 255.255.255.252
service-policy input test_uplink限制上传
inter g0/47
service-policy input rate-limit-uplink限制下载
经过测试,这个方案成功了!!哈哈,庆祝庆祝,有几点需要解释一下,因为35和65只有在input方向才能引用策略,所以同时对上行和下载作限速需要在上联和下载两方向的端口上做
其次,我们中间有很多弯路,说来给大家提个醒,开始我们用的测试设备性能很低,所以始终测试不出理想的结果,很泄气,无意中拿了班上最好的一台 电脑去测试,结果居然出人意料,后来又找了一台高性能设备进行测试,结果非常理想,在此提醒大家,低性能的设备在测试高带宽的时候要特别注意。