本文档介绍适用于cEdge路由器的SD-WAN IPsec中的IPsec反重播行为,以及如何解决反重播问题。
Cisco 建议您了解以下主题:
本文档中的信息基于以下软件和硬件版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
IPsec身份验证针对旧或重复的IPsec数据包提供内置的反重播保护,并在接收方上检查了ESP报头中的序列号。反重播丢包是IPsec最常见的数据平面问题之一,因为数据包的传输顺序混乱或超出反重播窗口。可以在IPsec Anti Replay Check Failures中找到用于IPsec反重播丢弃的常规故障排除方法,该常规技术也适用于SD-WAN。但是,在Cisco SD-WAN解决方案中使用的传统IPsec和IPsec之间存在一些实施差异。本文旨在解释这些差异以及采用Cisco IOS ®XE的cEdge平台上的方法。
与传统IPsec不同,SD-WAN使用IKE协议在两个对等体之间协商IPsec SA,SD-WAN使用组密钥概念。在此模型中,SD-WAN边缘设备定期生成每个TLOC(传输定位器)的数据平面入站SA,并将这些SA发送到SD-WAN控制器,SD-WAN控制器进而将SA传播到SD-WAN交换矩阵中的其余边缘设备。
有关SD-WAN数据平面操作的更详细说明,请参阅SD-WAN数据平面安全概述。
在IPsec ESP报头中,SPI(安全参数索引)是一个32位值,接收方使用该值来标识入站数据包解密到的SA。在SD-WAN中,此入站SPI可以用show crypto ipsec sa标识:
cedge-2#show crypto ipsec sa | se inbound
inbound esp sas:
spi: 0x123(291)
transform: esp-gcm 256 ,
in use settings ={Transport UDP-Encaps, esn}
conn id: 2083, flow_id: CSR:83, sibling_flags FFFFFFFF80000008, crypto map: Tunnel1-vesen-head-0
sa timing: remaining key lifetime 9410 days, 4 hours, 6 mins
Kilobyte Volume Rekey has been disabled
IV size: 8 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
在对等设备发送的实际数据包中,请注意SPI值与之前的输出不同。以下是启用数据包复制选项的packet-trace输出示例:
Packet Copy In 45000102 0cc64000 ff111c5e ac127cd0 ac127cd1 3062303a 00eea51b 04000123 00000138 78014444 f40d7445 3308bf7a e2c2d4a3 73f05304 546871af 8d4e6b9f
ESP报头中的实际SPI是0x04000123。这是因为SD-WAN的SPI中的第一个位被编码为附加信息,并且只有SPI字段的低位被分配给实际SPI。
传统IPsec:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Security Parameters Index (SPI) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
SD-WAN:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CTR | MSNS| Security Parameters Index (SPI) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
其中:
在数据包由于QoS(例如,低延迟队列)而无序传送的环境中,通常观察IPsec重播故障,因为QoS始终在IPsec加密和封装之后运行。多序列号空间解决方案使用映射到给定安全关联的不同QoS流量类别的多个序列号空间来解决此问题。不同的序列号空间按所示的ESP数据包SPI字段中编码的MNS位进行索引。有关更详细的说明,请参阅IPsec Anti Replay Mechanism for QoS。
如前所述,此多序列号实施意味着可用于SA选择的有效SPI值是低位25位。使用此实现配置重播窗口大小时的另一个实际考虑事项是,配置的重播窗口大小用于聚合重播窗口,因此每个序列号空间的有效重播窗口大小是聚合的1/8。
配置示例:
config-t
Security
IPsec
replay-window 1024
Commit
注意:每个序列号空间的有效重播窗口大小为1024/8 = 128!
在cEdge设备上,从show crypto ipsec sa peer x.x.x.x platform IPsec数据平面输出可获得每个序列号空间收到的最后一个序列号:
cedge-2#show crypto ipsec sa peer 172.18.124.208 platform <snip> ------------------ show platform hardware qfp active feature ipsec datapath crypto-sa 5 ------------------ Crypto Context Handle: ea54f530 peer sa handle: 0 anti-replay enabled esn enabled Inbound SA Total SNS: 8 Space highest ar number ---------------------------------------- 0 39444 1 0 2 1355 3 0 4 0 5 0 6 0 7 0 <snip>
在本例中,0(0x00)的MSNS的最高反重播窗口序列号(反重播滑动窗口的右边缘)是39444,2(0x04)的MSNS的最高反重播窗口序列号是1335,这些计数器用于检查序列号是否位于相同序列号空间中的数据包的重播窗口内。
可以将Anti-Replay错误与show输出关联以查找SPI和序列号索引,如图所示。

在获取先前信息后,右边缘(上窗口)和滑动窗口;如图所示.

与常规IPsec(非SD-WAN)不同,rekey命令对反重播窗口无效。
request platform software sdwan security ipsec-rekey
以下命令触发已配置的重播窗口生效:
警告:确保您了解任何命令的潜在影响,它们会影响控制连接和数据平面。
clear sdwan control connection
或
request platform software sdwan port_hop color <color>
或
interface Tunnelx
shutdown
no shutdown
对于IPsec反重播丢包,了解问题的条件和潜在触发因素非常重要。至少要收集的信息集以提供情景:
在收集了之前的信息后,继续执行故障排除工作流程。
IPsec重播问题的常规故障排除方法类似于传统IPsec的故障排除方法。请按照说明考虑每个对等体SA序列空间和多个序列号空间。然后执行以下步骤:
步骤1.首先确定系统日志中重放丢弃的对等体以及丢弃率。对于丢包统计信息,请始终收集输出的多个时间戳快照,以便确定丢包率:
*Feb 19 21:28:25.006: %IOSXE-3-PLATFORM: R0/0: cpp_cp: QFP:0.0 Thread:000 TS:00001141238701410779 %IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error, DP Handle 6, src_addr 172.18.124.208, dest_addr 172.18.124.209, SPI 0x123
cedge-2#show platform hardware qfp active feature ipsec datapath drops
Load for five secs: 1%/0%; one minute: 1%; five minutes: 1%
No time source, *11:25:53.524 EDT Wed Feb 26 2020
------------------------------------------------------------------------
Drop Type Name Packets
------------------------------------------------------------------------
4 IN_US_V4_PKT_SA_NOT_FOUND_SPI 30
19 IN_CD_SW_IPSEC_ANTI_REPLAY_FAIL 41
第2a步:对于相对较低的流量速率,使用带有copy packet选项的对等ipv4地址的条件设置进行数据包跟踪。根据当前重播窗口(右边缘)和相邻数据包中的序列号检查丢弃的数据包的序列号。确认它们确实是重复的,还是在重放窗口之外。
步骤2b.对于没有可预测触发器的高流量速率,请使用循环缓冲区和EEM配置EPC捕获,以在检测到重放错误时停止捕获。由于从19.3开始,vManage当前不支持EEM,这意味着在执行此故障排除任务时,cEdge必须处于CLI模式。
步骤3.在接收器上收集show crypto ipsec sa peer x.x.x.x platform输出,最好是在捕获数据包的同时或收集数据包跟踪时。此命令包括入站和出站SA的实时数据平面重放窗口信息。
步骤4.如果丢弃的数据包顺序混乱,则同时从发送方和接收方进行捕获,以确定问题是与源还是与底层网络传输层有关。
步骤5.如果数据包被丢弃,即使它们既不重复也不在重放窗口之外,则通常表示接收方存在软件问题。
问题说明:
硬件:ASR1001-X
软件:17.06.03安
收到会话对等体10.62.33.91的多个反重播错误,因此BFD会话不断摆动,并且这两个站点之间的流量会受到影响。
Jul 26 20:31:20.879: %IOSXE-3-PLATFORM: R0/0: cpp_cp: QFP:0.0 Thread:027 TS:00000093139972173042 %IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error, DP Handle 22, src_addr 10.62.33.91, dest_addr 10.62.63.251, SPI 0x106
Jul 26 20:32:23.567: %IOSXE-3-PLATFORM: R0/0: cpp_cp: QFP:0.0 Thread:009 TS:00000093202660128696 %IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error, DP Handle 22, src_addr 10.62.33.91, dest_addr 10.62.63.251, SPI 0x106
Jul 26 20:33:33.939: %IOSXE-3-PLATFORM: R0/0: cpp_cp: QFP:0.0 Thread:051 TS:00000093273031417384 %IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error, DP Handle 22, src_addr 10.62.33.91, dest_addr 10.62.63.251, SPI 0x106
Jul 26 20:34:34.407: %IOSXE-3-PLATFORM: R0/0: cpp_cp: QFP:0.0 Thread:020 TS:00000093333499638628 %IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error, DP Handle 22, src_addr 10.62.33.91, dest_addr 10.62.63.251, SPI 0x106
步骤1.检查Configured Anti Replay Window is 8192。
cEdge#show sdwan security-info
security-info authentication-type deprecated
security-info rekey 86400
security-info replay-window 8192
security-info encryption-supported "AES_GCM_256 (and AES_256_CBC for multicast)"
security-info fips-mode Disabled
security-info pairwise-keying Disabled
security-info pwk-sym-rekey Enabled
security-info extended-ar-window Disabled
security-info integrity-type "ip-udp-esp esp"
步骤2.验证对等10.62.33.91的有效重放窗口大小,以比较并确认配置的值。
show crypto ipsec sa peer 10.62.33.91 platform
<snip>
------------------ show platform hardware qfp active feature ipsec sa 22 ------------------
<snip>
------------------ show platform software ipsec fp active encryption-processor 0 context c441ff4c ------------------
<snip>
window size: 64 <-- Effective Window Size
window base(ESN): 0
Multi-SNS window_top
-----------------------------------
index: 0, win_top: 0x00000000010dc0
index: 1, win_top: 0000000000000000
index: 2, win_top: 0x00000000b65f00
index: 3, win_top: 0000000000000000
index: 4, win_top: 0000000000000000
index: 5, win_top: 0000000000000000
index: 6, win_top: 0000000000000000
index: 7, win_top: 0000000000000000
traffic hard limit: 12876354284605669376
byte count: 0
packet count: 11378618
窗口大小:输出中显示的64与配置的8192(8192//8=1024)的重播窗口不匹配,这意味着即使已配置该窗口,该命令仍然不起作用。
步骤3.同时为来自会话源的入站流量配置和启用数据包跟踪和监控捕获(可选):10.62.33.91,目的地:10.62.63.251
cEdge#debug platform packet-trace packet 2048 circular fia-trace data-size 2048
cEdge#debug platform packet-trace copy packet both size 2048 L3
cEdge#debug platform condition ipv4 10.62.33.91/32 in
cEdge#debug platform condition start
步骤4.收集数据包跟踪摘要:
cEdge#show platform packet summay
811 Te0/0/0.972 Te0/0/1.301 FWD
812 Te0/0/0.972 Te0/0/1.301 FWD
813 Te0/0/0.972 Te0/0/1.301 FWD
814 Te0/0/0.972 Te0/0/1.301 FWD
815 Te0/0/0.972 Te0/0/1.301 FWD
816 Te0/0/0.972 Te0/0/0.972 DROP 56 (IpsecInput)
817 Te0/0/0.972 Te0/0/0.972 DROP 56 (IpsecInput)
818 Te0/0/0.972 Te0/0/0.972 DROP 56 (IpsecInput)
819 Te0/0/0.972 Te0/0/0.972 DROP 56 (IpsecInput)
837 Te0/0/0.972 Te0/0/1.301 FWD
838 Te0/0/0.972 Te0/0/1.301 FWD
步骤5.展开捕获的一些已丢弃(IpsecInput)数据包。
(IpsecInput)数据包丢弃:
cEdge#sh platform pack pack 816
Packet: 816 CBUG ID: 973582
Summary
Input : TenGigabitEthernet0/0/0.972
Output : TenGigabitEthernet0/0/0.972
State : DROP 56 (IpsecInput)
Timestamp
Start : 97495234494754 ns (07/26/2022 21:43:56.25110 UTC)
Stop : 97495234610186 ns (07/26/2022 21:43:56.25225 UTC)
Path Trace
Feature: IPV4(Input)
Input : TenGigabitEthernet0/0/0.972
Output : <unknown>
Source : 10.62.33.91
Destination : 10.62.63.251
Protocol : 17 (UDP)
SrcPort : 12367
DstPort : 12347
<snip>
Packet Copy In
45000072 ab314000 fd115c77 0a3e215b 0a3e3ffb 304f303b 005e0000 04000106
00b6dfed 00000000 d0a60d5b 6161b06e 453d0e3d 5ab694ce 5311bbb6 640ecd68
7ceb2726 80e39efd 70e5549e 57b24820 fb963be5 76d01ff8 273559b0 32382ab4
c601d886 da1b3b94 7a2826e2 ead8f308 c464
817 DROP:
-------------------------------
Packet: 817
<snip>
Packet Copy In
45000072 ab314000 fd115c77 0a3e215b 0a3e3ffb 304f303b 005e0000 04000106
00b6dfec 00000000 cc72d5dd ef73fe25 2440bed6 31378b78 3c506ee5 98e3dba4
bc9e6aa0 50ea98f6 7dee25c8 c1579ce0 1212290c 650f5947 57b9bc04 97c7996c
d4dbf3e6 25b33684 a7129b67 141a5e73 8736
SD-WAN使用UDP封装的ESP:
步骤6.检验MNS索引
show crypto ipsec sa peer 10.62.33.91 platform
<snip>
------------------ show platform hardware qfp active feature ipsec sa 22 ------------------
<snip>
------------------ show platform software ipsec fp active encryption-processor 0 context c441ff4c ------------------
<snip>
window size: 64
window base(ESN): 0
Multi-SNS window_top
-----------------------------------
index: 0, win_top: 0x00000000010dc0
index: 1, win_top: 0000000000000000
index: 2, win_top: 0x00000000b65f00
index: 3, win_top: 0000000000000000
index: 4, win_top: 0000000000000000
index: 5, win_top: 0000000000000000
index: 6, win_top: 0000000000000000
index: 7, win_top: 0000000000000000
traffic hard limit: 12876354284605669376
byte count: 0
packet count: 11378618
MSNS的最大反重播窗口序列号(反重播滑动窗口的右边缘)为2(0x04)0b65f00。
步骤7.展开一些转发的(FWD)捕获的数据包。
转发的数据包:
Packet: 838
<snip>
Packet Copy In
4564008e ab044000 fd115c24 0a3e215b 0a3e3ffb 304f303b 007a0000 04000106
00b6e015 00000000 088bbd6a f4e4b35f b131143f ef1f91eb 659149f7 dbe6b025
be7fbfd0 5fad1c71 014321f1 3e0d38f2 cc8d0e5f 1494e4fa 097c7723 dfc7ceef
4a14f444 abcc1777 0bb9337f cd70c1da 01fc5262 848b657c 3a834680 b07b7092
81f07310 4eacd656 ed36894a e468
数据包:837
Packet: 837
<snip>
Packet Copy In
4564008e ab044000 fd115c24 0a3e215b 0a3e3ffb 304f303b 007a0000 04000106
00b6e014 00000000 76b2a256 8e835507 13d14430 ae16d62c c152cdfd 2657c20c
01d7ce1d b3dfa451 a2cbf6e9 32f267f9 e10e9dec 395a0f9e 38589adb aad8dfb8
a3b72c8d a96f2dce 2a1557ab 67959b6e 94bbbb0a cfc4fc9e 391888da af0e492c
80bebb0e 9d7365a4 153117a6 4089
步骤8.收集并获取丢弃之前、之后和丢弃之后转发多个数据包(FWD)的序列号信息。
FWD:
839 PKT: 00b6e003 FWD
838 PKT: 00b6e001 FWD
837 PKT: 00b6e000 FWD
815 PKT: 00b6e044 FWD
814 PKT: 00b6dfe8 FWD
813 PKT: 00b6e00d FWD
DROP:
816 PKT: 00b6dfed DROP
817 PKT: 00b6dfec DROP
818 PKT: 00b6dfeb DROP
819 PKT: 00b6dfe9 DROP
820 PKT: 00b6dfea DROP
步骤9.将序列号从十六进制转换为十进制,并对它们重新排序,以简化计算:
REORDERED:
813 PKT: 00b6e00d FWD --- Decimal: 11984909
814 PKT: 00b6dfe8 FWD --- Decimal: 11984872
815 PKT: 00b6e044 FWD --- Decimal: 11984964 ***** Highest Value
816 PKT: 00b6dfed DROP--- Decimal: 11984877
817 PKT: 00b6dfec DROP--- Decimal: 11984876
818 PKT: 00b6dfeb DROP--- Decimal: 11984875
819 PKT: 00b6dfe9 DROP--- Decimal: 11984873
820 PKT: 00b6dfea DROP--- Decimal: 11984874
<snip>
837 PKT: 00b6e014 FWD --- Decimal: 11984916
838 PKT: 00b6e015 FWD --- Decimal: 11984917
839 PKT: 00b6e016 FWD --- Decimal: 11984918
步骤10.计算每个数据包的最高序列号与收到的序列号之间的差值:
Difference:
815 PKT: Decimal: 11984964 ***** Highest Value
--------------------------------------
815(Highest) - X PKT = Diff
--------------------------------------
816 PKT: 11984964 - 11984877 = 87 DROP
817 PKT: 11984964 - 11984876 = 88 DROP
818 PKT: 11984964 - 11984875 = 89 DROP
819 PKT: 11984964 - 11984873 = 91 DROP
820 PKT: 11984964 - 11984874 = 90 DROP
<snip>
837 PKT: 11984964 - 11984916 = 48 FWD
838 PKT: 11984964 - 11984917 = 47 FWD
839 PKT: 11984964 - 11984918 = 45 FWD
对于此示例,可以直观显示窗口大小为64且右边缘为11984964的滑动窗口,如图所示:

收到的丢弃数据包的序列号远远超出该序列空间的重放窗口的右边缘。
由于窗口大小仍旧在前值64中(如步骤2所示),因此必须应用Commands to force the newly configured replay window to effect一节中的某个命令,增加的1024窗口大小才能生效。
另一个有助于关联ESP SPI和序列号的工具是Wireshark。
配置入站方向的数据包捕获并将其导出到pcap文件。
monitor caputure CAP match ipv4 host 10.62.33.91 host 10.62.63.251 buffer size 20 inter TenGigabitEthernet0/0/0 in
monitor caputure CAP star
monitor caputure CAP stop
monitor caputure CAP export bootflash:Anti-replay.pca
在Wireshark中打开pcap捕获时,要查看ESP SPI和序列号,请右键单击一个数据包,然后选择协议首选项。搜索UDPENCAP,并将默认端口更改为SD-WAN端口(源端口),如图所示:

UDPENCAP与正确的端口一起使用后,现在显示ESP信息,如图所示:

| 版本 | 发布日期 | 备注 |
|---|---|---|
2.0 |
24-Jun-2026
|
更新的拼写、语法、句子结构、间距和固定的URL问题以及CCW警报。 |
1.0 |
08-Sep-2022
|
初始版本 |