BFD 基本工作原理与实践:如何与 VRRP 联动实现高效链路故障检测?

article/2025/6/21 17:46:00

BFD 基本工作原理与实践:如何与 VRRP 联动实现高效链路故障检测?

    • 🌐 BFD 的基本原理
      • BFD 主要特点
      • BFD 工作机制
    • 🔀 为什么 VRRP 需要 BFD?
    • 🔧 BFD + VRRP 配置实战(华为设备)
      • 📍 实验拓扑
      • 🎯 配置步骤
        • 1️⃣ 配置 VRRP
        • 2️⃣ 配置 BFD
        • 3️⃣ 绑定 VRRP 与 BFD
    • 🛠 测试 BFD + VRRP 故障切换
    • 📌 总结:为什么要用 BFD + VRRP?

前言

肝文不易,点个免费的赞和关注,有错误的地方请指出,看个人主页有惊喜。

作者:神的孩子都在歌唱

在网络高可用性设计中,如何快速发现链路故障并切换网关 是关键问题。比如 VRRP 作为主备网关协议,能提供故障切换功能,但它主要依赖物理端口状态检测,存在切换延迟和误判的可能

这时候,BFD(双向转发检测) 就派上了用场!它可以毫秒级探测链路可达性,一旦发现故障,立即通知 VRRP 进行主备切换,保证用户业务不中断。

今天,神唱 就来详细解读 BFD 的工作原理,并演示如何在华为设备上配置 BFD + VRRP!🚀

🌐 BFD 的基本原理

BFD(Bidirectional Forwarding Detection)是一种轻量级、高速链路故障检测协议,可用于检测二层和三层链路的可达性。

BFD 主要特点

超快检测——支持毫秒级故障探测,比传统路由协议(如 OSPF/BGP 的 Hello 机制)快几十倍。
协议无关——可以和 OSPF、BGP、VRRP、MPLS 等网络协议结合使用。
双向检测——确保从 A → B 和 B → A 两个方向的链路都正常。

BFD 工作机制

  1. 会话建立:两个设备通过 UDP 端口(一般是 3784/3785)建立 BFD 会话。
  2. 探测报文交互:双方周期性发送 BFD 报文,检测对方是否可达。
  3. 故障检测:如果在设定时间内未收到对方报文,BFD 认为链路故障,并通知上层协议(如 VRRP)。
  4. 触发主备切换:VRRP 接收到 BFD 故障通知后,立即让备设备接管网关 IP。

📌 总结一句话:BFD 让 VRRP 不仅仅依赖物理端口状态,而是能精准感知网络是否真正可达!

🔀 为什么 VRRP 需要 BFD?

VRRP(虚拟路由冗余协议)用于在多个路由器之间创建一个虚拟网关,让用户设备始终访问同一个网关 IP,不会因主路由器故障而断网。

但 VRRP 仅能检测本地接口的状态,无法判断整个网络是否真的可达。例如:

🚨 常见问题:VRRP 主设备的上行链路断了,但它仍然认为自己是 Master!

  • VRRP 仅检测本地接口是否 Up,但如果主设备的上行链路故障,用户依然无法上网。
  • VRRP 默认 Hello 检测间隔为 1 秒,切换速度相对较慢。

💡 BFD 可以解决这个问题!

  • BFD 直接探测链路可达性,主设备如果无法访问外部网络,BFD 会触发 VRRP 进行主备切换。
  • BFD 检测时间可以设定到毫秒级,极大提升网络可靠性!

有关VRRP文章可以看我这篇: VRRP 原理与配置:让你的网络永不掉线!

🔧 BFD + VRRP 配置实战(华为设备)

📍 实验拓扑

image-20250313013106565

目标

  • R1 作为 VRRP Master,R2 作为 Backup
  • BFD 配合 VRRP,确保主设备链路故障时,备设备能立即接管网关 IP

🎯 配置步骤

1️⃣ 配置 VRRP

在 R1(主设备)上

<Huawei>system-view
[Huawei]interface Ethernet 0/0/0
[Huawei-Ethernet0/0/0]ip address 192.168.1.2 24
[Huawei-Ethernet0/0/0]vrrp vrid 1 virtual-ip 192.168.1.1 # 配置备份组1的虚拟网关地址
[Huawei-Ethernet0/0/0]vrrp vrid 1 priority 120   # 让 R1 成为 Master
<Huawei>save

在 R2(备设备)上

<Huawei>system-view
[Huawei]interface Ethernet 0/0/0
[Huawei-Ethernet0/0/0]ip address 192.168.1.3 24
[Huawei-Ethernet0/0/0]vrrp vrid 1 virtual-ip 192.168.1.1
[Huawei-Ethernet0/0/0]vrrp vrid 1 priority 100   # 让 R2 成为 backen
<Huawei>save

查看R2配置结果,发现状态时backup,主节点的ip是192.168.1.2也就是R1.

image-20250313004736230

2️⃣ 配置 BFD

在 R1 上

[Huawei]bfd # 使能全局BFD功能并进入BFD视图
[Huawei-bfd]quit
[Huawei]bfd atob bind peer-ip default-ip interface Ethernet 0/0/0  # 创建组播BFD
[Huawei-bfd-session-atob]discriminator local 1 # 配置BFD会话本地标识符
[Huawei-bfd-session-atob]discriminator remote 2 # 配置BFD会话的远端标识符
[Huawei-bfd-session-atob]commit # 提交配置
[Huawei-bfd-session-atob]quit

在 R2 上

[Huawei]bfd # 使能全局BFD功能并进入BFD视图
[Huawei-bfd]quit
[Huawei]bfd atob bind peer-ip default-ip interface Ethernet 0/0/0  # 创建组播BFD
[Huawei-bfd-session-atob]discriminator local 2 # 配置BFD会话本地标识符
[Huawei-bfd-session-atob]discriminator remote 1 # 配置BFD会话的远端标识符
[Huawei-bfd-session-atob]commit # 提交配置
[Huawei-bfd-session-atob]quit
3️⃣ 绑定 VRRP 与 BFD

在 R1 上

[Huawei]interface Ethernet 0/0/0
[Huawei-Ethernet0/0/0]vrrp vrid 1 track bfd-session 1  # 绑定 BFD 会话
quit

在 R2 上

[Huawei]interface Ethernet 0/0/0
[Huawei-Ethernet0/0/0]vrrp vrid 1 track bfd-session 2
quit

查看R2配置结果,可以看到VRRP备份组监视的BFD会话状态为UP。

image-20250313011802457

🛠 测试 BFD + VRRP 故障切换

查看 BFD 会话状态
R1 和 R2 上执行:

[Huawei-Ethernet0/0/0]display bfd session all 

如果 Session 状态为 Up,说明 BFD 正常工作。

image-20250313012045157

模拟主设备链路故障
在 R1 上执行:

[Huawei]interface Ethernet 0/0/0
[Huawei-Ethernet0/0/0]shutdow
  • BFD 立即检测到故障,并通知 VRRP
  • R2 迅速提升优先级,成为 Master,接管网关 IP 192.168.1.1
  • 整个切换过程毫秒级完成,用户无感知! 🎉

如下图,上面抓包的使R1.下面的是R2,当R1关闭接口后,R2就开始接管PC1发送的流量。

image-20250313012540608

查看 VRRP 状态
在 R2 上执行:

display vrrp

image-20250313012722996

看到 R2 变成 Master,说明 BFD 触发 VRRP 切换成功!🚀

📌 总结:为什么要用 BFD + VRRP?

方案检测方式速度适用场景
仅 VRRP依赖物理端口秒级(1s 以上)仅适用于简单网络
BFD + VRRP依赖 BFD 探测链路毫秒级复杂网络,高可用要求高

BFD 能快速检测链路状态,并通知 VRRP 进行主备切换,提升可靠性!
适用于企业级核心网络,确保业务不中断!

如果你对 网络高可用性 感兴趣,可以自己在 eNSP 或真实设备上实践一下,或者找我要拓扑图💪,🔥 欢迎留言交流!😊

作者:神的孩子都在歌唱
本人博客:https://blog.csdn.net/weixin_46654114
转载说明:务必注明来源,附带本人博客连接


http://www.hkcw.cn/article/pvTsPpbjBy.shtml

相关文章

python中将一个列表样式的字符串转换成真正列表的办法以及json.dumps()和 json.loads()

今天学习python的web.py&#xff0c;返回的内容为列表样式的字符串&#xff0c;如下 string_data "[(13.212.95.888, 8000, 10), (13.212.95.999, 8000, 10)]" 此时&#xff0c;如果想提取第一个元素&#xff0c;也就是(13.212.95.888, 8000, 10)&#xff0c;不能…

C++:指针(Pointers)

目录 什么是指针&#xff1f; 为什么需要指针&#xff1f; 1. 访问堆&#xff08;Access Heap&#xff09; 2. 资源管理&#xff08;Resource Management&#xff09; 3. 参数传递&#xff08;Parameter Passing&#xff09; 如何声明和使用指针&#xff1f; 如何利用指…

Acrobat DC v25.001 最新专业版已破,像word一样编辑PDF!

在数字化时代&#xff0c;PDF文件以其稳定性和通用性成为了文档交流和存储的热门选择。无论是阅读、编辑、转换还是转曲&#xff0c;大家对PDF文件的操作需求日益增加。因此&#xff0c;一款出色的PDF处理软件不仅要满足多样化的需求&#xff0c;还要通过简洁的界面和强大的功能…

RabbitMQ 高级特性

准备工作 1. 创建 Spring 项目 2. 引入依赖 3.修改配置文件 RabbitMQ官网 AMQP 0-9-1 Protocol Extensions | RabbitMQ 消息确认 消息确认机制 生产者发送消息,到达消费者后,可能会有以下情况: 1.消息处理成功 2.消息处理异常 RabbitMQ 向消费者发送消息之后,会把消息删除…

机器学习:欠拟合、过拟合、正则化

本文目录&#xff1a; 一、欠拟合二、过拟合三、拟合问题原因及解决办法四、正则化&#xff1a;尽量减少高次幂特征的影响&#xff08;一&#xff09;L1正则化&#xff08;二&#xff09;L2正则化&#xff08;三&#xff09;L1正则化与L2正则化的对比 五、正好拟合代码&#xf…

电路学习(二)之电容

电容的基本功能是通交流隔直流、存储电量&#xff0c;在电路中可以进行滤波、充放电。 1.什么是电容&#xff1f; &#xff08;1&#xff09;电容定义&#xff1a;电容器代表了器件存储电荷的能力&#xff0c;通俗来理解是两块不连通的导体与绝缘的中间体组成。当给电容充电时…

第十二节:第二部分:集合框架:Collection集合的遍历方式:迭代器、增强for循环、Lambda、案例

迭代器遍历集合 增强for循环遍历集合 Lambda表达式遍历集合 代码&#xff1a; 代码一&#xff1a;使用迭代器遍历集合 package com.itheima.day18_Collection;import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; // //使用迭代器遍历集合…

任务18:时间序列的模型

任务描述 知识点&#xff1a; 移动平均法指数平滑法ARIMA模型 重 点&#xff1a; 指数平滑法ARIMA模型 内 容&#xff1a; 创建时间序列索引绘制时间序列图形处理时间序列数据建立时间序列模型模型效果评估应用模型预测 任务指导 1. 移动平均法 移动平均法&#xff…

Java研学-MongoDB(一)

一 MongoDB 简介 MongoDB是一种高性能、开源的NoSQL数据库&#xff0c;采用面向文档的存储模型&#xff0c;以BSON&#xff08;Binary JSON&#xff09;格式存储数据&#xff0c;具有灵活的数据模型、强大的扩展性和丰富的功能特性&#xff0c;广泛应用于各类现代应用程序的数据…

【LLM相关知识点】 LLM关键技术简单拆解,以及常用应用框架整理(二)

【LLM相关知识点】 LLM关键技术简单拆解&#xff0c;以及常用应用框架整理&#xff08;二&#xff09; 文章目录 【LLM相关知识点】 LLM关键技术简单拆解&#xff0c;以及常用应用框架整理&#xff08;二&#xff09;一、市场调研&#xff1a;业界智能问答助手的标杆案例1、技术…

自动化立体仓库WCS的设计与实现

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。欢迎大家使用我们的仓储物流技术AI智能体。 新书《智能物流系统构成与技术实践》 新书《智能仓储项目出海-英语手册&#xff0c;必备&#xff01;》 完整版文件和更多学习资料&#xf…

2025年5月18日蓝桥stema省选拔赛编程题答案解析

题目&#xff1a;水龙头 时间限制&#xff1a;C/C 语言 1000MS&#xff1b;其他语言 3000MS 内存限制&#xff1a;C/C 语言 65536KB&#xff1b;其他语言 589824KB 题目描述&#xff1a; 小明在 0 时刻&#xff08;初始时刻&#xff09;将一个空桶放置在漏水的水龙头下。已知桶…

基于开源AI大模型AI智能名片S2B2C商城小程序源码的销售环节数字化实现路径研究

摘要&#xff1a;在数字化浪潮下&#xff0c;企业销售环节的转型升级已成为提升竞争力的核心命题。本文基于清华大学全球产业研究院《中国企业数字化转型研究报告&#xff08;2020&#xff09;》提出的“提升销售率与利润率、打通客户数据、强化营销协同、构建全景用户画像、助…

使用 HTML + jsmind 实现在线思维导图

在日常工作和学习中&#xff0c;思维导图是一种非常有效的可视化工具&#xff0c;可以帮助我们梳理思路、规划任务、整理知识结构。本文将带你一步步了解如何使用 HTML 和 jsmind 实现一个基础的在线思维导图应用。 效果演示 项目概述 本项目主要包含以下核心功能&#xff1a…

利用python工具you-get下载网页的视频文件

有时候我们可能在一个网站看到一个视频&#xff08;比如B站&#xff09;&#xff0c;想下载&#xff0c;但是页面没有下载视频的按钮。这时候&#xff0c;我们可以借助python工具you-get来实现下载功能。下面简要说下步骤 &#xff08;一&#xff09;因为使用的是python工具&a…

threejs渲染器和前端UI界面

1. three.js Canvas画布布局 学习本节课之前&#xff0c;可以先回顾下第一章节入门部分的6和12两小节关于threejs Canvas画布布局的讲解。 网页上局部特定尺寸&#xff1a;1.6 第一个3D案例—渲染器(opens new window) 全屏&#xff0c;随窗口变化:1.12 Canvas画布布局和全屏…

嵌入式编译工具链熟悉与游戏移植

在自己的虚拟机Ubuntu系统下&#xff0c;逐步编译 mininim源码(波斯王子重制开源版&#xff09; 指令流程 sudo apt-get remove liballegro5-dev liballegro-image5-dev \liballegro-audio5-dev liballegro-acodec5-dev liballegro-dialog5-dev sudo apt-get install automak…

IEEE P370:用于高达 50 GHz 互连的夹具设计和数据质量公制标准

大多数高频仪器&#xff0c;如矢量网络分析仪 &#xff08;VNA&#xff09; 和时域反射仪 &#xff08;TDR&#xff09;&#xff0c;都可以在同轴接口的末端进行非常好的测量。然而&#xff0c;复杂系统中使用的互连很少具有同轴接口。用于表征这些设备的夹具的设计和实施会对测…

随机响应噪声-极大似然估计

一、核心原因&#xff1a;噪声机制的数学可逆性 在随机响应机制&#xff08;Randomized Response&#xff09;中使用极大似然估计&#xff08;Maximum Likelihood Estimation, MLE&#xff09;是为了从扰动后的噪声数据中无偏地还原原始数据的统计特性。随机响应通过已知概率的…

二叉搜索树——红黑树

红黑树 概念红黑树的原理红黑树的效率红黑树的插入规则变色旋转变色红黑树的验证 代码如下 概念 红黑树本质也是一颗二叉搜索树&#xff0c;他的每个结点增加⼀个存储位来表⽰结点的颜⾊&#xff0c;可以是红⾊或者⿊⾊。通过对任何⼀条从根到叶⼦的路径上各个结点的颜⾊进⾏约…