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之间的链路上;