简介
本文档演示了Wireshark(一种众所周知的免费软件数据包捕获和分析工具)在排除Cisco OTV解决方案故障时的使用。
先决条件
要求
Cisco 建议您了解以下主题:
使用的组件
本文档中的信息基于 Nexus 7000 系列交换机平台。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
问题说明
在排除VPN环境中的网络故障时,其中一项技术涉及捕获和分析封装的数据包。但是,在Cisco OTV网络环境中,此方法遇到了一定挑战。常用的数据包分析工具,如Wireshark、 a 免费和开源数据包分析器, 可能无法正确解释OTV封装流量的内容。因此,通常需要费时的解决方法,例如从OTV数据包中提取封装的数据,才能成功执行数据分析。
OTV数据包格式
OTV封装将数据包的总MTU大小增加42字节。这是OTV边缘设备操作的结果,该设备从原始第2层帧中删除CRC和802.1Q字段,并添加OTV填充码(还包含VLAN和重叠ID信息)和外部IP报头。
在MPLS L2VPN解决方案中,底层网络中的设备没有足够的信息来正确解码MPLS数据包负载。通常,这不是问题,因为MPLS核心网络中的数据包转发是基于标签执行的,因此不需要深入分析底层网络中的MPLS数据包的内容。
但是,如果为了进行故障排除和/或监控目的而需要对OTV数据包进行数据分析,则这会带来挑战。
数据包分析工具(如Wireshark)尝试通过应用常规MPLS数据包解析规则来解码MPLS报头后面的数据包数据。但是,由于它可能没有有关控制字协商结果的信息,因此数据包分析工具会回退到默认解析行为并将其应用于MPLS报头之后的数据包数据。
注意:在MPLS L2VPN解决方案(如MPLS上的任何传输(ATOM))中,伪线端点协商使用控制字参数。控制字是位于伪线数据包中MPLS标签堆栈和第2层负载之间的可选4字节字段。控制字传送通用信息和第2层负载特定信息。如果C位设置为1,则通告提供商边缘(PE)期望控制字存在于正在发出信号的伪线上的每个伪线数据包中。如果C位设置为0,则不会显示任何控制字。
因此,默认的Wireshark解析行为可能无法正确解释OTV数据包的内容,从而使OTV网络的故障排除过程更加复杂。
拓扑
以下是简单OTV网络的网络图。Vlan 100和Vlan 200中的路由器分别在两个数据中心(数据中心1和数据中心2)之间建立OSPF和EIGRP邻接关系。数据中心互联(DCI)在N7k交换机之间通过OTV隧道实现,如图所示为AED1和AED2。
注意:Cisco OTV解决方案使用授权边缘设备(AED)角色的概念,该角色分配给网络设备,用于封装和解封特定站点的OTV流量。
隧道解决方案中经常遇到的挑战是验证特定类型的重叠数据包(IGP、FHRP等)是否使其到达底层网络中的特定点。OSPF和EIGRP重叠流量就是一个示例。
数据包捕获
在网络中执行数据包捕获有多种方法。一个选项是使用思科交换端口分析器(SPAN)功能,该功能可在Cisco Catalyst和Cisco Nexus交换平台上使用。
在故障排除过程中,可能需要执行多个点的数据包捕获。底层网络中的OTV加入接口和接口可用作SPAN数据包捕获点。
解决方案
Wireshark默认解析引擎可能会误解OTV封装的重叠数据包的前几个字节,就像它们是Pseudowire Emulation Edge-to-Edge(PWE3)Control Word的一部分一样,MPLS L2VPN通常在MPLS分组交换网络中使用。
注意:MPLS伪线仿真边到边(PWE3)控制字在本文档的其余部分称为控制字。
为了确保Wireshark数据包分析工具正确解释OTV封装数据包的内容,需要手动调整数据包解码过程。
注意:OTV报头中使用的MPLS标签等于重叠VLAN编号+ 32。
解码VLAN 100中的数据包
作为解码过程的第一步,只显示承载OTV扩展VLAN 100内容的OTV封装数据包。使用的过滤器是mpls.label == 132,表示VLAN 100。
注意:要显示通过OTV扩展的特定VLAN的OTV封装数据包,请使用以下Wireshark显示过滤器:mpls.label == <<vlan number extended over OTV> + 32>
显示OTV封装的Vlan 100数据包,通过OTV扩展
默认情况下,Wireshark将MPLS L2VPN数据包内容的前四个字节解释为控制字。这需要对OTV封装的数据包进行纠正。为此,请右键单击任何数据包的MPLS标签字段,然后选择“解码为……”(Decode As...) 选项.
右键点击MPLS标签字段,然后选择解码为……选项
下一步是告诉Wireshark,封装的内容没有控制字。
选择“无CW”选项
通过单击“确定”按钮提交此更改后,Wireshark分析工具将正确显示OTV封装数据包的内容。
Wireshark正确显示OTV封装数据包的内容
解码VLAN 200中的数据包
以上步骤适用于通过OTV扩展的任何vlan。例如,使用Wireshark过滤器仅显示vlan 200的数据包,我们在分析工具中得到以下输出。
显示OTV上扩展的VLAN 200的数据包
一旦Wireshark被指示不将MPLS数据包的前几个字节解释为PW控制字,解码过程就可以成功完成。
WIreshark将Vlan 200流量正确显示为EIGRP数据包
使用Editcap删除OTV报头
通常,Wireshark安装附带一个名为Editcap的命令行数据包编辑工具。此工具可永久消除捕获数据包的OTV开销。这样,在Wireshark图形用户界面(GUI)中可以轻松显示和分析捕获的数据包,而无需手动调整Wireshark的解析行为。
在Windows平台上运行Editcap
在Windows操作系统上,editcap.exe默认安装在c:\Program Files\Wireshark>目录中。
使用 — C标志运行此工具以删除OTV开销并将结果保存到.pcap文件。
c:\Users\cisco\Desktop> "c:\Program Files\Wireshark\editcap.exe" -C 42 otv-underlay-capture.pcap otv-underlay-capture-no-header.pcap
c:\Users\cisco\Desktop>
在Mac OS平台上运行Editcap
在Mac OS操作系统上,editcap位于/usr/local/bin文件夹中。
CISCO:cisco$ /usr/local/bin/editcap -C 42 otv-underlay-capture.pcap otv-underlay-capture-no-header.pcap
CISCO:cisco$
通过从捕获的数据包中删除OTV报头,编辑工具,丢失作为MPLS报头一部分编码的VLAN信息,而MPLS报头又是OTV填充码的一部分。如果仅需要分析特定Vlan的流量,请记住在使用Editcap工具删除OTV报头之前,使用“mpls.label == <<vlan number extended over OTV> + 32>” Wireshark GUI过滤器。
结论
对Cisco OTV解决方案进行故障排除需要从控制平面操作和数据平面封装角度充分了解该技术。Wireshark等免费软件数据包分析工具可以有效地应用知识,在OTV数据包分析中证明非常强大。除了各种数据包显示选项外,典型的Wireshark安装还提供了数据包编辑工具,可简化数据包分析。这样,故障排除就可以专注于与特定故障排除会话最相关的数据包内容部分。