B、ACL计数定位法:
若设备支持acl计数功能,则可以使用该方法在PC到核心定位丢包点,若不支持ACL计数,则跳过该步骤,继续往下测试。
注:
>该功能默认关闭,可使用命令开启;如ip access-list count 100可开启对acl100的计数功能,开启后用show
access-list来查看匹配数。
>目前并非所有的设备都支持ACL计数,可通过全局模式下是否支持ip access-list count命令作为初步判断手段;
>部分设备对于CPU发出的报文是不会计数的,具体以实际测试结果为准;
该方法用案例形式描述,如下:
现象:
PC ping 网关丢包;
拓扑:
(10.10.10.1)PC-----(access vlan10 g0/1)S5750E(g0/2 trunk)-----(trunk
g1/1)8610(PC的网关,SVI 10:10.10.10.254)
方法:
在S5750E的G0/1口、G0/2接口的in方向和out方向都调用ACL,并对这些ACL都开启计数功能;
注:在配置acl之前,先通过show access-list来确认该设备上已创建了哪些acl,避免配置错误影响现有网络
1)分别在S8610及S5750E上配置ACL并开启计数功能:
S8610:
>在8610上创建2个ACL:
S8610(config)#ip access-list extend 100
S8610(config-ext-nacl)#permit icmp host 10.10.10.1 host
10.10.10.254 //匹配pc到86的报文
S8610(config-ext-nacl)#permit ip any any //必须要配置这条,否则客户的网络会受到影响
S8610(config)#ip access-list extend 101
S8610(config-ext-nacl)#permit icmp host 10.10.10.254 host 10.10.10.1 //匹配86到pc的回包
S8610(config-ext-nacl)#permit ip any any //必须要配置这条,否则客户的网络会受到影响
>在8610和5750-E互联接口G1/1的in和out方向调用ACL:
S8610(config)#int g1/1
S8610(config-if-GigabitEthernet 1/1)#ip access-group 100 in
S8610(config-if-GigabitEthernet 1/1)#ip access-group 101 out
>开启ACL的计数功能
S8610(config)#ip access-list count 100
S8610(config)#ip access-list count 101
S5750E:
>在S5750E上创建4个ACL:
S5750E(config)#ip access-list extend 100
S5750E(config-ext-nacl)#permit icmp host 10.10.10.1 host 10.10.10.254 //匹配pc到8610的报文
S5750E(config-ext-nacl)#permit ip any any //必须要配置这条,不然客户的网络会受到影响
S5750E(config)#ip access-list extend 101
S5750E(config-ext-nacl)#permit icmp host 10.10.10.254 host 10.10.10.1 //匹配8610到pc的回包
S5750E(config-ext-nacl)#permit ip any any//必须要配置这条,不然客户的网络会受到影响
S5750E(config)#ip access-list extend 102
S5750E(config-ext-nacl)#permit icmp host 10.10.10.1 host 10.10.10.254 //匹配pc到8610的报文
S5750E(config-ext-nacl)#permit ip any any //必须要配置这条,不然客户的网络会受到影响
S5750E(config)#ip access-list extend 103
S5750E(config-ext-nacl)#permit icmp host 10.10.10.254 host 10.10.10.1 //匹配8610到pc的回包
S5750E(config-ext-nacl)#permit ip any any //必须要配置这条,不然客户的网络会受到影响
>在S5750E和8610互联接口G0/2及和PC互联接口G0/1的in和out方向调用ACL:
S5750E(config)#int g0/2
S5750E(config-if-GigabitEthernet 0/2)#ip access-group 100 out
S5750E(config-if-GigabitEthernet
0/2)#ip access-group 101 in
S5750E(config)#int g0/1
S5750E(config-if-GigabitEthernet
0/1)#ip access-group 102 in
S5750E(config-if-GigabitEthernet 0/1)#ip access-group 103 out
>开启ACL的计数功能
S5750E(config)#ip access-list count 100
S5750E(config)#ip access-list count 101
S5750E(config)#ip access-list count 102
S5750E(config)#ip access-list count 103
2)pc上ping
3次8610的10.10.10.254,即PC将发出12个报文:
正常不丢包的情况下,S8610及S5750-E上permit ip host 10.10.10.1 host
10.10.10.254及permit ip host 10.10.10.254 host 10.10.10.1都应该被匹配到12个包;
S8610上:
S8610#show access-lists
ip access-list extended 100//在8610和5750-E互联接口接口G1/1的in方向调用
10 permit ip host
10.10.10.1 host 10.10.10.254 (12 matches)
20 permit ip any any (101 matches)
ip access-list extended 101 //在8610和5750-E互联接口接口G1/1的out方向调用
10 permit ip host
10.10.10.254 host 10.10.10.1 (12 matches)
20 permit ip any any
(223 matches)
S5750E上:
S5750E#show
access-lists
ip access-list extended 100//在5750E和8610互联接口接口G0/2的out方向调用
10 permit ip host
10.10.10.1 host 10.10.10.254 (12 matches)
20 permit ip any any (101 matches)
ip access-list extended 101//在5750E和8610互联接口接口G0/2的in方向调用
10 permit ip host
10.10.10.254 host 10.10.10.1 (10 matches)
20 permit ip any any
(223 matches)
ip access-list extended 102//在5750E和PC互联接口接口G0/1的in方向调用
10 permit ip host
10.10.10.1 host 10.10.10.254 (12 matches)
20 permit ip any any (152 matches)
ip access-list extended 103 //在5750E和PC互联接口接口G0/1的ot方向调用
10 permit ip host
10.10.10.254 host 10.10.10.1 (10 matches)
20 permit ip any any
(332 matches)
分析结果:
如上计数结果说明报文丢在了8610和5750E之间的链路上,分析如下:
S5750E和PC互联接口的in方向收到了12个报文;
S5750E和S8610互联接口的out方向发出了12个报文;
S8610和S5750E互联接口的in方向收到了12个报文;
S8610和S5750E互联接口的out方向发出了12个报文;
S5750E和S8610互联接口的in方向
收到了10个报文,说明报文丢在了8610和5750-E之间的链路上;