请选择 进入手机版 | 继续访问电脑版

设为首页 收藏本站
思科服务支持社区 点击关注
思科服务支持社区

  
 找回密码
 立即注册

扫一扫,访问微社区

搜索
热搜: 邮件服务器
查看: 683|回复: 6

【原创翻译】Nexus 7000 M系列板卡ELAM工具使用教程

[复制链接]
发表于 2018-2-27 14:50:29 | 显示全部楼层 |阅读模式
本帖最后由 yondong 于 2018-2-27 15:06 编辑

一、简介
在排查网络丢包的故障时,我们可以用ELAN工具在数据包沿途设备抓包来定位被丢弃的数据包是被哪台设备所丢弃,也就是确定故障源。之后,对故障源进一步排查。本文主要介绍如何在Nexus 7000 M系列板卡上配置ELAM,并且解释ELAM相关的输出信息。

二、拓扑
file:///C:/Users/yondong/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png
在本例中,主机10.0.5.101属于VLAN 2500,并连接到N7K的E4/1口。主机10.0.3.101属于VLAN 55,并连接到N7K的E3/5口。本次的ELAM实验是为了捕获从主机10.0.5.101到主机10.0.3.101的一个数据包。请注意,ELAM只允许捕获一个数据包。

三、ELAM配置过程
首先,为了执行N7K的ELAM我们必须attach到相应的板卡(需要Admin权限):
N7K# attach module 4
Attaching to module 4 ...
To exit type 'exit', to abort type '$.'
module-4#

之后,我们需要确定数据包入向接口的转发引擎。在本例中数据包从Eth4/1接口进入交换机,那么模块4必须是M系列模块。
N7K# show module
Mod Ports  Module-Type                         Model              Status
--- ----- ----------------------------------- ------------------ ----------
3   32     10 Gbps EthernetModule             N7K-M132XP-12      ok
4    48     10/100/1000 Mbps Ethernet Module    N7K-M148GT-11     ok
5   0      Supervisor module-1X                N7K-SUP1           active *
6   0      Supervisor module-1X                N7K-SUP1           ha-standby

对于M卡,我们需要在二层转发引擎(也叫Eureka)上执行ELAM。请注意,二层转发引擎Data Bus(DBUS)包含有数据包在执行二层、三层查找前的原始包头信息。Result Bus(RBUS)包含有数据包在执行二层、三层查找后的包头信息。每个N7K M系列模块会使用多个二层转发引擎,所以我们必须确认端口Eth4/1使用的是哪个Eureka芯片。芯片和接口对应关系可通过以下命令查看:
module-4# show hardware internaldev-port-map
(some output omitted)
--------------------------------------------------------------
CARD_TYPE:         48 port 1G
>Front Panel ports:48
--------------------------------------------------------------
Device name             Dev role              Abbr num_inst:
--------------------------------------------------------------
> Eureka                 DEV_LAYER_2_LOOKUP     L2LKP 1
+--------------------------------------------------------------+
+-----------+++FRONT PANEL PORT TO ASICINSTANCE MAP+++--------+
+--------------------------------------------------------------+
FP port|PHYS |SECUR |MAC_0 |RWR_0 |L2LKP|L3LKP |QUEUE |SWICHF
   1     0      0     0      0      0      0      0     0 <<<<<物理端口1
   2     0      0     0      0      0      0     0      0

在输出中,我们可以看到端口Eth4/1位于Eureka(L2LKP)芯片实例0。注意:对于M系列模块,当您配置ELAM时,ELAM命令中设置Eureka芯片实例是从1开始的,因此在上面输出结果中实例0应改为ELAM命令中的实例1,输出结果中实例1应改为ELAM命令中的实例2,输出结果中实例2应改为ELAM命令中的实例3,以此类推。
module-4# elam asic eureka instance 1
module-4(eureka-elam)#

1、配置触发条件
Eureka芯片可以抓取IPv4,IPv6和其他类型的数据帧。ELAM中配置的帧格式要和实际数据包的帧格式相匹配。比如说,实际数据包为IPv4的帧,那么ELAM的触发条件必须配置为IPv4。IPv6数据包也有同样的限制。
在NX-OS系统中,我们可以使用问号“?”来查看有哪些字段可以被设置为ELAM的触发条件:
module-4(eureka-elam)# trigger dbus dbiingress ipv4 if ?
  (省略部分输出结果)
destination-flood        Destination Flood
  destination-index         Destination Index
destination-ipv4-address Destination IP Address
destination-mac-address  Destination MAC Address
ip-tos                    IP TOS
ip-total-len              IP TotalLength
ip-ttl                    IP TTL
source-mac-address        SourceMAC Address
vlan-id                   Vlan IDNumber

在本例中,假设我们只对数据包的源目IP地址感兴趣(实际应用中主要使用的也是源目IP地址作为ELAM的触发条件)。
Eureka要求分别为DBUS和RBUS设置触发参数。对于RBUS来说,一般推荐配置PB1,如果配置PB1后RBUS不能被触发,那么请更改为PB2。

1)DBUS触发条件配置:
module-4(eureka-elam)# trigger dbus dbiingress ipv4 if source-ipv4-address
10.0.5.101 destination-ipv4-address 10.0.3.101 rbi-corelate

2)RBUS触发条件配置:
module-4(eureka-elam)# trigger rbus rbi pb1ip if cap2 1

2、开始抓包
现在,我们已经确定了二层转发引擎,并且配置了触发条件,接下来就可以开始用ELAM抓包了:
module-4(eureka-elam)# start

为了检查ELAM的状态,请输入status命令:
module-4(eureka-elam)# status
Instance: 1
EU-DBUS: Armed <<<<<<<<<<表示转发引擎没有收到我们感兴趣的数据包
trigger dbus dbi ingress ipv4 ifsource-ipv4-address 10.0.5.101
destination-ipv4-address 10.0.3.101 rbi-corelate
EU-RBUS: Armed
trigger rbus rbi pb1 ip if cap2 1
LM-DBUS: Dis-Armed
No configuration
LM-RBUS: Dis-Armed
No configuration

一旦满足触发条件的数据包被转发引擎接收到,ELAM状态就会显示为被触发:
module-4(eureka-elam)# status
Instance: 1
EU-DBUS: Triggered <<<<<<<<<<表示转发引擎已经收到我们感兴趣的数据包
trigger dbus dbi ingress ipv4 ifsource-ipv4-address 10.0.5.101
destination-ipv4-address 10.0.3.101 rbi-corelate
EU-RBUS: Triggered
trigger rbus rbi pb1 ip if cap2 1
LM-DBUS: Dis-Armed
No configuration
LM-RBUS: Dis-Armed
No configuration

四、输出结果说明
我们可以通过show dbus和show rbus来查看ELAM的结果。但需要注意的是,如果有大量的数据包都匹配到了我们预先设定的触发条件,那么DBUS和RBUS可能会被不同的数据包所触发。这时候我们就需要通过以下命名来确保DBUS和RBUS的内部序列号是一致的。
module-4(eureka-elam)# show dbus | i seq
seq = 0x05
module-4(eureka-elam)# show rbus | i seq
seq = 0x05

以下内容只是ELAM的一部分输出结果,也是我们最应该关注的部分:
module-4(eureka-elam)# show dbus
seq = 0x05
vlan = 2500
source_index = 0x00a21
l3_protocol = 0x0   (0:IPv4, 6:IPv6)
l3_protocol_type = 0x01, (1:ICMP, 2:IGMP,4:IP, 6:TCP, 17:UDP)
dmac = 00.00.0c.07.ac.65
smac = d0.d0.fd.b7.3d.c2
ip_ttl = 0xff
ip_source = 010.000.005.101
ip_destination = 010.000.003.101

module-4(eureka-elam)# show rbus
seq = 0x05
flood = 0x0
dest_index = 0x009ed
vlan = 55
ttl = 0xfe
data(rit/dmac/recir) = 00.05.73.a9.55.41
data(rit/smac/recir) = 84.78.ac.0e.47.41

通过DBUS数据我们可以确认N7K收到了来自VLAN2500的数据包,而且该数据包的源目MAC地址是d0d0.fdb7.3dc2和0000.0c07.ac65,源目IP分别是10.0.5.101和10.0.3.101。同样也可以看到是IPv4的数据帧。为了验证从哪个接口收到了触发ELAM条件的数据包,我们可以通过SRC_INDEX(show dbus的输出结果)参数来查看。
N7K# show system internal pixm info ltl 0xa21(SRC_INDEX值)
Member info
------------------
Type            LTL
---------------------------------
PHY_PORT       Eth4/1 <<<<<<<<<<物理口E4/1收到了该数据包
FLOOD_W_FPOE   0x8014

同理,在RBUS的输出结果中可以看到从物理口E4/1收到的数据包被路由到了VLAN 55,同时TTL值从DBUS的0xff减小到了RBUS的0xfe。并且可以看出,该数据帧进行了重写操作,源目MAC分别被重写为8478.ac0e.4741和0005.73a9.5541。
另外,我们也可以通过DEST_INDEX (show rbus的输出结果)参数来验证该数据包的输出端口:

N7K# show system internal pixm info ltl 0x9ed(DEST_INDEX值)
Member info
------------------
Type            LTL
---------------------------------
PHY_PORT       Eth3/5 <<<<<<<<<<数据包被送往口物理接口E3/5
FLOOD_W_FPOE   0x8017
FLOOD_W_FPOE   0x8016

五、附加命令
通过以下两条命令可以查看ltl池的具体用途,从而可以确认在ELAM的输出结果中SRC_INDEXDEST_INDEX值是否合理,是否为UCAST Pool的值。
N7K# show system internal pixm info ltl0x11a0
0x11a0 is not configured

N7K# show system internal pixm infoltl-region
LTL POOL TYPE                          SIZE        RANGE <<<<<SRC_INDEX/DEST_INDEX
=====================================================================
DCE/FC Pool                            1024       0x0000 to 0x03ff
SUPInband LTL                           32       0x0400 to 0x041f
MDFlood LTL                             1       0x0420
Central R/W                               1       0x0421
UCAST Pool                             1536       0x0422 to 0x0a21
PCPool                                1720      0x0a22 to 0x10d9
LCCPU Pool                             32       0x1152 to 0x1171
EARLPool                               72       0x10da to 0x1121
SPANPool                               48       0x1122 to 0x1151
UCAST VDC Use Pool                       16       0x1172 to 0x1181
UCAST Generic Pool                       30       0x1182 to 0x119f
LISPPool                                4       0x1198 to 0x119b
Invalid SI                                1       0x119c to 0x119c
ESPANSI                                 1       0x119d to 0x119d
Recirc SI                                 1       0x119e to 0x119e
DropDI                                  2       0x119f to 0x11a0
UCAST (L3_SVI_SI) Region                 31       0x11a1 to 0x11bf
UCAST (Fex/GPC/SVI-ES)       3648       0x11c0 to 0x1fff
UCAST Reserved for Future Use Region   2048      0x2000 to 0x27ff
======================> UCAST MCASTBOUNDARY <======================
VDCOMF Pool                             32      0x2800 to 0x281f

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分5 (1 评价)
发表于 2018-2-27 15:07:48 | 显示全部楼层
感谢专家分享
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
发表于 2018-2-27 17:13:39 | 显示全部楼层
哈哈哈,这个详细,点赞
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
发表于 2018-3-7 10:41:13 | 显示全部楼层
这个贼详细,多谢大佬!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
发表于 2018-3-9 16:05:05 | 显示全部楼层
  谢谢分享,思科员工的分享真不错,这种实际案例是我们这些工程师很需要的
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
 楼主| 发表于 2018-3-27 21:59:55 | 显示全部楼层
大家有什么问题,可以留言,我有时间一定会一一回复大家。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
 楼主| 发表于 2018-3-27 22:00:42 | 显示全部楼层
大家有什么问题,可以留言,我有时间一定会一一回复大家。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver | 思科服务支持社区  

GMT+8, 2018-6-23 12:13 , Processed in 0.101113 second(s), 47 queries .

京ICP备09041801号-187

版权所有 :copyright:1992-2019 思科系统  重要声明 | 保密声明 | 隐私权政策 | 商标 |

快速回复 返回顶部 返回列表