缩短 DPD 计时器并不会让 VPN 故障切换更快
恢复分为四个阶段,而死对端计时器只控制其中一个。请分别测量检测、对端选择、路由和应用恢复。
隧道断开,恢复要花九十秒,而死对端计时器设为十,于是计时器被归咎。这个推理跳过了检测之后发生、通常占据大部分时间的三个阶段。活性检测注意到沉默;随后对端选择、身份认证、路由安装和应用重连各自占用时间。缩短第一阶段并不能缩短其他阶段,还会给本就吃力的系统增加动荡。
四个阶段,其中只有一个可以计时
把恢复写成四个带时间戳的事件。故障变得可观测:最后一段有用的受保护流量和第一个失败的请求。归属机制作出反应:活性检测、路由监视器或其他有记录的触发条件。备用路径变得可用:对端选择、身份认证、新关联,以及真正承载预期流量的路由。应用恢复:新操作成功,正在进行的事情有明确结果。
IKEv2 的活性规则描述的是关于对端及其交换的证据,对该对端背后的数据库或文件服务只字不提。把活性超时当作整条路径的健康检查来读,正是开始追查计时器的错误。
为什么计时器是最不有趣的数字
配置值不是可互换的单位。有些是重试间隔,有些是一次尝试的上限,还有些与其他值并行运行。把它们相加得到一个看起来像预测、行为却像传言的数字。阅读你即将改动的字段的文档,并记下它属于三种类型中的哪一种。
其他阶段根本不是计时器。重连退避、交互式认证提示,或只在重启时重新评估配置的客户端,都可能主导中断,而所有协议计时器都安分地保持很低。
测量真正缓慢的阶段
只捕获一次故障,两端都打上时间戳,然后比较四个事件,而不是协议自身的计数器。一次做得好的观测窗口胜过一个月的调优。
ip -4 route get 203.0.113.10
tcpdump -ni any -c 20 "esp or icmp"
如果备用端点从不响应,任何计时器改动都无济于事,因为不可达不是检测问题。如果新的安全状态很快建立,但路由仍指向死路径,问题就在路由安装,再调整活性只会增加动荡。
备用路径必须已经可用
配置里定义的备份并不等于能工作的备份。它必须能从客户端当前网络到达,能够认证同一身份,并获准在同一策略下承载同样的流量。在中断期间发现这三处缺失中的任何一处,计时器的讨论就无关紧要。在主线路健康时测试备用路径,因为那是你能并排阅读两份日志的唯一时机。
提前准备备用路径,在主线路健康时有意测试它,并记录四个阶段中哪一个耗时。正是这份记录让下一次改动成为测量而非猜测。
回切的动荡与管理路径
恢复主线路是另一个决定。激进回切可能打断已在备用路径上恢复的工作,而一个不断抖动的路径看起来像不稳定的隧道,真正的故障其实是路由在两个等价选项之间来回摆动。
没有偏好的两条等价路径是可见抖动最常见的来源,因为每个监视器都在对另一个的选择作出反应。确定正常情况下首选哪条路径,并在配置中明确这一偏好,而不是把它留给路由顺序。提前定义期望的回切行为及其负责人。保留原有设置和一条独立的管理路径,因为一次在中断期间切断你自己访问权的改动,会把网络事故变成现场出差。
然后重复同样的工作负载,比较同样的四个时间戳。一次更短的恢复如果仍让应用等待同样缺失的路由或登录,就不是进步,而是同一张图上的另一个数字。