简介
本文档介绍当流量在WAN上丢失但在SD-WAN Edge上未发现丢包时,如何识别和收集数据。
先决条件
要求
Cisco 建议您了解以下主题:
- 思科软件定义的广域网(SD-WAN)
- 嵌入式数据包捕获或vManage数据包捕获
- Wireshark
- Microsoft Excel
使用的组件
本文档中的信息基于以下软件和硬件版本:
- C8000V版本17.03.04
- vManage版本20.3.4
- Wireshark版本2.6.3
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景
为了帮助解决此难题,本文档中介绍的步骤说明如何使用差分服务代码点(DSCP)标记特定流量,以帮助识别所需的数据包。DSCP可用于标识流量,因为此值从内部数据包报头复制到IPsec报头。确定所需的数据包后,它将显示如何匹配两个WAN捕获中的流量以确保流量从源流向目标。
两个单路由器站点用于演示此故障排除技术。在本例中,从10.0.0.10到10.0.2.10的ICMP流量形式为100次ping,如图所示。本示例没有丢失,但在发生丢失以识别丢失的情况下也使用相同的故障排除技术。
故障排除过程
概述流程
- 对于通过WAN跟踪的流量,需要使用访问列表(ACL)(或集中策略)将流量标记为某些未使用的DSCP值。在本示例中,使用DSCP 27。
- 标记流量后,使用嵌入式数据包捕获功能捕获源路由器和目标路由器的传输接口上的数据包。
注意:虽然有5MB的数据或5分钟的运行时限制,但也可使用vManage数据包捕获。
- 捕获捕获后,在Wireshark中打开这些捕获以进行查看。
- 该过滤器在Wireshark中应用,以显示需要的数据包,然后对其进行比较。
- Microsoft Excel用于大型捕获,以确保准确性。
使用DSCP标记所需的流量
在源路由器上配置访问列表(如本示例中的cEdge1),并将其应用于路由器配置的SD-WAN部分的接口,如下所示。
应用可选计数器以验证流量是否按预期到达策略。这可以通过命令show sdwan policy access-list-counters来检查。
policy
access-list mark_dscp_27
sequence 10
match
source-ip 10.0.0.10/32
destination-ip 10.0.2.10/32
!
action accept
count MARK_DSCP_27_COUNT (optional counter to verify packets that hit the policy)
set
dscp 27
!
!
!
default-action accept
sdwan
interface GigabitEthernet3
access-list mark_dscp_27 in
使用嵌入式捕获捕获捕获流量
注意:如何在Cisco IOS XE中配置嵌入式数据包捕获以捕获经过广域网的加密数据包,请导航至Cisco IOS和Cisco IOS XE的嵌入式数据包捕获(Embedded Packet Capture for Cisco IOS and Cisco IOS XE)配置示例
注意:必须使用ACL来限制WAN上的EPC,因为EPC的PPS速率限制可能超过1000。
示例
在cEdge1和cEdge3上配置了ACL,因为在本例中只检查从源到目的地的方向的流量。
注意:WAN IP地址用于过滤捕获。有多个输出可用于标识流量所采用的路径,以便为ACL过滤器标识正确的WAN IP。可用于生成此输出的命令是show sdwan app-fwd cflowd flows和show sdwan policy service path。请导航到条件数据包跟踪以了解调试条件。
ip access-list extended CAP-Filter
10 permit ip host 192.168.23.149 host 192.168.28.240
此时,两个路由器上都会启动捕获,并在重叠网络上发送100次ping。
#ping vrf 10 10.0.2.10 rep 100
Type escape sequence to abort.
Sending 100, 100-byte ICMP Echos to 10.0.2.10, timeout is 2 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (100/100), round-trip min/avg/max = 1/1/4 ms
在从两台路由器停止捕获并收集捕获信息后,需要在Wireshark中打开捕获信息才能查看捕获信息。
通过Wireshark进行分析
在Wireshark中打开cEdge1捕获后,您会发现所有流量都经过加密,因此很难分辨出哪些数据包是发送的ping。
使用显示过滤器ip.dsfield.dscp == 27过滤此捕获,在屏幕底部只显示100个数据包,并且显示DSCP列值全部显示27。
在广域网中保持DSCP值的一些情况下,可以在目标捕获上使用相同的过滤器。
在其他情况下,这不可能,例如通过公共Internet连接清除DSCP值的情况。
按ESP序列过滤所需流量
无论哪种情况,都可以使用ESP序列号来标识流量。
要查看数据包中的ESP序列号,请右键单击捕获并选择解码,如下所示。
选择Current field下拉菜单,并在该字段中键入UDPENCAP,或从下拉列表中选择它。
完成后选择OK。
在Wireshark Packet Details(Wireshark数据包详细信息)部分,展开数据包的Encapsulating Security Payload部分,查看ESP Sequence。
右键点击ESP Sequence,然后选择apply as列,这样,ESP Sequence就可以视为Wireshark屏幕顶部的Packet List部分中的一列。
注意:cEdge1上数据包的ESP SPI是0x040001dc。这用于目标捕获上的过滤器。
打开目标捕获,重复上述步骤解码为UDPENCAP,并显示数据包中的ESP序列号。
一旦数据包显示ESP序列号,来自第一个捕获的ESP SPI可用作第二个捕获的过滤器,以仅显示该SPI中匹配所需流量的流量。
请注意,匹配两个数据包序列号的数据包都标记了DSCP 27。
这种比较可以在Wireshark中手动完成,也可以使用Microsoft Excel进行这种比较。
为了使用Microsoft Excel进行比较,需要对两个捕获进行切片,以便仅包含两个捕获中的数据包。
在源捕获中,第一个相关数据包的ESP序列为306,对应于数据包编号451。
源捕获中的最后一个相关数据包的ESP序列为405,数据包编号为550。
在目标捕获中,第一个相关数据包对应于ESP序列306的源捕获,但此捕获中是数据包463。
最后一个相关数据包也包含ESP序列405,它是数据包564。
现在,必须对第一个捕获进行切片,使其仅包含相关数据包。
导航到文件>导出数据包分段>作为CSV...
选择Captured和Range,在Range字段中键入从第一个相关数据包到最后一个相关数据包的范围。
在File Name(文件名)字段中输入文件名,然后单击Save(保存)。
对相关数据包在capture 2上重复相同的过程。
在Microsoft Excel中打开两个CSV文件。
在源捕获CSV上,另存为XLSX格式。
在屏幕底部,选择+符号以添加其他工作表。将其命名为CAP2_slice。
打开CAP2 CSV文件并按CTRL +a选择全部,按CTRL + c复制该文件。
导航到CAP1_slice.xlsx文件,在CAP2_slice的第二个选项卡上,将复制的信息粘贴(CTRL + v)到单元格A1。
返回CAP1_slice工作表并创建一个名为COMPARE_ESP_SEQUENCE的新列。
由于ESP序列号位于列G中,请按照所示合成一个VLOOKUP命令来比较两个工作表,以确保源上G列中的所有内容都位于目标上G列中。
=IF(ISNA(VLOOKUP(G2,CAP2_slice!G:G,1,FALSE)),"MISSING","PRESENT")
选择Enter后,将显示PRESENT一词。这意味着具有ESP序列306的数据包存在于第二张表中。这一点很重要,因为它意味着数据包是从源发送到目的地。
选择列O行2,并将鼠标悬停在该单元格周围的绿色框的右下角。
选择并按住,然后向下拖动鼠标,将此公式复制到有值的单元格的底部。
滚动回工作表顶部,然后单击COMPARE_ESP_SEQUENCE。然后选择排序和过滤。
从下拉菜单中选择Filter。
COMPARE_ESP_SEQUENCE列中会出现一个下拉菜单。
单击COMPARE_ESP_SEQUENCE标题上的下拉菜单。请注意,在本例中,显示的唯一值为PRESENT。这意味着两个捕获中都存在所有数据包。
要创建有问题的示例,请从CAP2_slice删除10个数据包,以演示在缺少某些丢失数据包的测试中如何执行此操作。
返回CAP1_slice表,现在发现有10个数据包丢失。
在COMPARE_ESP_SEQUENCE列上选择下拉菜单后,现在还会看到缺少数据包。可以将其切换为仅查看MISSING数据包。
现在,Excel表格中只显示缺失的数据包。
接收方上的DSCP不同
在某些情况下,ISP会清除DSCP值设置,因此接收端的DSCP值与发送端的DSCP设置不匹配。另一个用于补充此场景并跟踪数据包的有用工具是ESP SPI和ESP序列号。
应使用DSCP识别来自发送方的相关数据包。然后,可以将这些特定数据包中的ESP序列号与接收器捕获进行比较。与DSCP标记不同,ESP序列号无法修改,因为它嵌入在SD-WAN IPSEC功能中。这使得ESP序列号有助于在底层跟踪感兴趣的数据包(与发送方的DSCP匹配)。
要比较ESP序列号,可以将ESP序列号添加为Wireshark中的列,并在出站捕获和入站捕获之间进行比较。
在Wireshark中打开pcap结构时,为了能够查看ESP SPI和序列号,请展开一个数据包,右键单击并选择协议首选项,搜索UDPENCAP,并将默认端口更改为SD-WAN端口(源端口),如图所示。
在正确的端口上配置了UDPENCAP后,现在将显示ESP信息,如图所示。
注意:要了解有关SD-WAN上的ESP的详细信息,请参阅排除SD-WAN cEdge IPsec防重播故障
相关信息