核心交换机配置nqa entry admin outdx
type icmp-echo
destination ip 202.99.192.68
frequency 5000
history-record enable
history-record number 10
out interface Vlan-interface100
reaction 1 checked-element probe-fail threshold-type consecutive 3 action-type trigger-only
nqa entry admin outlt
type icmp-echo
destination ip 59.49.49.49
frequency 5000
history-record enable
history-record number 10
out interface Vlan-interface200
reaction 2 checked-element probe-fail threshold-type consecutive 3 action-type trigger-only
nqa schedule admin outdx start-time now lifetime forever
nqa schedule admin outlt start-time now lifetime forever
ip route-static 0.0.0.0 0 172.16.100.2 track 1
ip route-static 0.0.0.0 0 172.16.200.2 track 2
int vlan-int 100 地址 172.16.100.1 路由器 1 互联地址 172.16.100.2 intvlan-int200 地址 172.16.200.1 路由器 2 互联地址 172.16.200.2 ;其中路由器 2 重启时都断网了,nqa 探测都失败 track为失效状态,为啥会断网
(0)
frequency 5000 (5秒) + consecutive 3 (连续3次失败)。这意味着需要 15秒 才能检测到故障并触发 Track 状态变化。在这 15 秒内,流量依然试图发往已重启的路由器 2,导致丢包。(0)
Vlanif100:交换机 172.16.100.1 ↔ 路由 1 172.16.100.2,NQA 实例 outdx 从此接口发包探测公网 202.99.192.68,绑定 track 1,默认路由 0.0.0.0/0 172.16.100.2 track 1
Vlanif200:交换机 172.16.200.1 ↔ 路由 2 172.16.200.2,NQA 实例 outlt 从此接口发包探测公网 59.49.49.49,绑定 track 2,默认路由 0.0.0.0/0 172.16.200.2 track 2
两条默认路由优先级一致(均为静态路由默认优先级 60);
现象:路由器 2 重启期间,两条 NQA 全部探测失败、两条默认路由全部失效,全网断网。
核心根本原因
1. 两条默认路由优先级相同,等价路由负载分担,路由 2 重启后整体探测连锁失效
两条静态默认路由优先级都是 60,属于 ECMP 等价路由。
路由 2 正常运行时:去往互联网的流量一部分走路由 1、一部分走路由 2;
路由 2 整机重启:Vlanif200 网段断联,去往 59.49.49.49 的探测报文(outlt 实例)彻底不通,连续 3 次探测失败 → track 2 变成 Negative(失效),第二条默认路由被系统直接删除。
2. 关键错误:NQA 探测目标是外网 IP,并非下一跳网关
你的 NQA 探测逻辑缺陷:
plaintext
nqa entry admin outlt
type icmp-echo
destination ip 59.49.49.49 //探测公网地址,不是下一跳172.16.200.2
out interface Vlan-interface200
当路由 2 重启:
Vlanif200 接口三层依旧 UP(交换机 VLANIF 本身不会 Down);
交换机从 Vlanif200 发出 ping 59.49.49.49 的探测包,但是路由 2 关机,报文到达网关就被丢弃,探测失败 → track2 失效,路由 2 对应的默认路由消失。
此时仅剩路由 1 对应的默认路由 track 1,正常逻辑下全网应该切路由 1 上网,但实际 outdx(探测202.99.192.68) 也跟着探测失败、track1 失效,两条路由全部删掉,全网断网。
3. 为什么路由 2 重启,路由 1 的 NQA 探测也跟着失败(整条链路陪葬)
场景 A:流量负载分担导致探测回程走故障链路(最高概率)
两条等价默认路由,交换机发起 ping 202.99.192.68(路由 1 的探测目标)时:
ICMP 请求报文:从 Vlanif100 发给路由 1 正常送出外网;
ICMP 回程应答报文回来时,因为 ECMP 等价路由哈希调度,回程流量命中了第二条默认路由(路由 2,已经关机);
回程数据包无法送达交换机,交换机收不到 ICMP 回复,判定 NQA 探测失败;
连续 3 次探测失败后 track 1 失效,第一条默认路由也被删除。
通俗总结:
路由 1 的 NQA 探测包出去走路由 1 正常,但是公网回程回来,交换机根据等价路由随机把回程包发给已经关机的路由 2,探测收不到回包 → NQA 判定链路故障,两条默认路由双双被删掉,全网断网。
场景 B:两个公网探测 IP 其中一个不可达、运营商侧故障叠加
如果 202.99.192.68 本身网络临时不通,叠加路由 2 下线,两条 track 同时失效。
场景 C:未给两条默认路由设置主备优先级,没有逃生路由
两条路由平级,一旦其中一条故障引发回程乱走,连带健康链路探测失败,无兜底路由。
复现逻辑时序
路由 2 上电重启 → Vlanif200 网关 172.16.200.2 离线;
outlt 探测 59.49.49.49 无应答 → track2 失效,0.0.0.0/0 172.16.200.2 路由删除;
交换机探测 202.99.192.68 的回程流量被哈希分配到故障的路由 2 链路,收不到 ICMP 回复;
outdx 连续探测失败 → track1 失效,0.0.0.0/0 172.16.100.2 路由也被删除;
交换机没有任何默认路由,全网断网。
修复方案(3 套方案任选,推荐方案 1 主备模式)
方案 1:主备路由架构(根治问题,推荐)
1)设置路由 1 为主路由(优先级 60),路由 2 为备用路由(优先级 70)
plaintext
# 主链路:路由1,正常优先使用
ip route-static 0.0.0.0 0 172.16.100.2 track 1 preference 60
# 备用链路:路由2,优先级更高数值(70),主链路故障才启用
ip route-static 0.0.0.0 0 172.16.200.2 track 2 preference 70
效果:平时只走路由 1,不会产生 ECMP 负载分担,路由 1 的 NQA 回程永远只会走路由 1 链路,不会跑到故障的路由 2,不会出现连带探测失败。
2)修正 NQA 探测对象:探测下一跳网关 IP,不要探测公网 IP
探测网关可靠性远比探测公网 IP 精准,网关断了才判定链路失效,公网个别 IP 故障不会误判断网:
plaintext
# 主链路NQA,探测下一跳网关172.16.100.2
nqa entry admin outdx
type icmp-echo
destination ip 172.16.100.2
frequency 5000
history-record enable
history-record number 10
out interface Vlan-interface 100
reaction 1 checked-element probe-fail threshold-type consecutive 3 action-type trigger-only
# 备用链路NQA,探测下一跳网关172.16.200.2
nqa entry admin outlt
type icmp-echo
destination ip 172.16.200.2
frequency 5000
history-record enable
history-record number 10
out interface Vlan-interface 200
reaction 2 checked-element probe-fail threshold-type consecutive 3 action-type trigger-only
nqa schedule admin outdx start-time now lifetime forever
nqa schedule admin outlt start-time now lifetime forever
优势:只有网关彻底离线,track 才失效;公网某个 IP 宕机不会误删路由。
方案 2:保留 ECMP 等价路由,规避回程乱跑问题
如果你必须两条链路负载分担上网:
NQA 依然改为探测本地网关 IP(172.16.100.2、172.16.200.2),杜绝公网回程路由干扰探测结果;
新增一条兜底静态默认路由(优先级 80,不绑定 track),两条链路全部故障时兜底逃生:
plaintext
ip route-static 0.0.0.0 0 172.16.100.2 preference 80
就算两条 track 同时失效,兜底路由依然存在,不会断网。
方案 3:探测公网 IP 场景下,固定 NQA 探测报文的回程链路
保留探测公网地址不变,通过 ACL + 策略路由,强制去往探测目标的 ICMP 回程流量只能从原链路回来,避免回程跨链路:
匹配 NQA 探测的目的 IP
配置 PBR,访问 202.99.192.68 的流量固定仅从 Vlanif100 转发;访问59.49.49.49仅从 Vlanif200 转发。
复杂度偏高,不推荐日常使用。
优化后完整可用配置(主备模式,直接替换现有配置)
plaintext
# NQA配置,探测网关而非公网
nqa entry admin outdx
type icmp-echo
destination ip 172.16.100.2
frequency 5000
history-record enable
history-record number 10
out interface Vlan-interface 100
reaction 1 checked-element probe-fail threshold-type consecutive 3 action-type trigger-only
nqa entry admin outlt
type icmp-echo
destination ip 172.16.200.2
frequency 5000
history-record enable
history-record number 10
out interface Vlan-interface 200
reaction 2 checked-element probe-fail threshold-type consecutive 3 action-type trigger-only
nqa schedule admin outdx start-time now lifetime forever
nqa schedule admin outlt start-time now lifetime forever
# 主备静态路由
ip route-static 0.0.0.0 0 172.16.100.2 track 1 preference 60
ip route-static 0.0.0.0 0 172.16.200.2 track 2 preference 70
# 兜底逃生路由,防止双链路同时故障全网断网
ip route-static 0.0.0.0 0 172.16.100.2 preference 80
补充验证手段
路由 2 重启时,在交换机上开启 debug icmp 查看探测报文回程走向:
plaintext
terminal monitor
terminal debugging
debugging icmp
暂无评论
:从路由器2宕机的那一刻起,核心交换机需要(5秒/次 × 3次)才能确认链路故障,并将Track状态置为Negative
:在这15秒内,两条主备路由的静态路由因Track状态未更新,依然有效。核心交换机根据路由表,会继续将流量发往已宕机的路由器2,导致业务中断
:核心交换机可能还缓存着路由器2的ARP(地址解析协议)信息,需要等待老化或主动清除,这也会造成额外延迟
:这是最直接有效的方法。将NQA的frequencyconsecutive
:如果核心交换机和路由器2都支持,。BFD能提供毫秒级的故障检测,是实现无感知切换的最佳方案
:在路由器2重启并恢复服务后,如果流量仍未切回,可以在核心交换机上手动清除其ARP缓存,强制重新学习。
:确保NQA的reaction
:确认两条默认路由的优先级(Preference)有明确的主备关系(例如主用60,备用80),且主用路由正确绑定了Track
:确认NQA的destination ip。
:如果路由器2恢复后,Track状态变为Positive
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论