当前位置: 首页 > news >正文

配置BFD多跳检测示例

BFD简介

定义

双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。

目的

为了减小设备故障对业务的影响,提高网络的可靠性,网络设备需要能够尽快检测到与相邻设备间的通信故障,以便及时采取措施,保证业务继续进行。在现有网络中,有些链路通常通过硬件检测信号,如SDH告警,检测链路故障,但并不是所有的介质都能够提供硬件检测。此时,应用就要依靠上层协议自身的Hello报文机制来进行故障检测。上层协议的检测时间都在1秒以上,这样的故障检测时间对某些应用来说是不能容忍的。在三层网络中,Hello报文检测机制无法针对所有路由来检测故障,如:静态路由。这对系统间互联互通定位故障造成困难。

BFD协议就是在这种背景下产生的,BFD提供了一个通用的标准化的介质无关和协议无关的快速故障检测机制。具有以下优点:

  • 对相邻转发引擎之间的通道提供轻负荷、快速故障检测。这些故障包括接口、数据链路,甚至有可能是转发引擎本身。

  • 用单一的机制对任何介质、任何协议层进行实时检测。

受益

BFD可以实现快速检测并监控网络中链路或IP路由的转发连通状态,改善网络性能。相邻系统之间通过快速检测发现通信故障,可以更快地帮助用户建立起备份通道以便恢复通信,保证网络可靠性。

BFD原理描述

原理简介

BFD在两台网络设备上建立会话,用来检测网络设备间的双向转发路径,为上层应用服务。BFD本身并没有邻居发现机制,而是靠被服务的上层应用通知其邻居信息以建立会话。会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文则认为该双向转发路径发生了故障,通知被服务的上层应用进行相应的处理。下面以OSPF与BFD联动为例,简单介绍会话工作流程。

如上图所示:

  1. 被检测链路出现故障。

  2. BFD快速检测到链路故障,BFD会话状态变为Down。

  3. BFD通知本地OSPF进程BFD邻居不可达。

  4. 本地OSPF进程中断OSPF邻居关系。

BFD会话建立方式

BFD会话的建立有两种方式,即静态建立BFD会话和动态建立BFD会话。静态和动态创建BFD会话的主要区别在于本地标识符(Local Discriminator)和远端标识符(Remote Discriminator)的配置方式不同。BFD通过控制报文中的Local Discriminator和Remote Discriminator区分不同的会话。

  • 静态建立BFD会话

    静态建立BFD会话是指通过命令行手工配置BFD会话参数,包括配置本地标识符和远端标识符等,然后手工下发BFD会话建立请求。

  • 动态建立BFD会话

    动态建立BFD会话时,系统对本地标识符和远端标识符的处理方式如下:

    • 动态分配本地标识符

      当应用程序触发动态创建BFD会话时,系统分配属于动态会话标识符区域的值作为BFD会话的本地标识符。然后向对端发送Remote Discriminator的值为0的BFD控制报文,进行会话协商。

    • 自学习远端标识符

      当BFD会话的一端收到Remote Discriminator的值为0的BFD控制报文时,判断该报文是否与本地BFD会话匹配,如果匹配,则学习接收到的BFD报文中Local Discriminator的值,获取远端标识符。

BFD会话管理

BFD会话有四种状态:Down、Init、Up和AdminDown。会话状态变化通过BFD报文的State字段传递,系统根据自己本地的会话状态和接收到的对端BFD报文驱动状态改变。BFD状态机的建立和拆除都采用三次握手机制,以确保两端系统都能知道状态的变化。以BFD会话建立为例,简单介绍状态机的迁移过程。

  1. SwitchA和SwitchB各自启动BFD状态机,初始状态为Down,发送状态为Down的BFD报文。对于静态配置BFD会话,报文中的Remote Discriminator的值是用户指定的;对于动态创建BFD会话,Remote Discriminator的值是0。

  2. SwitchB收到状态为Down的BFD报文后,状态切换至Init,并发送状态为Init的BFD报文。

  3. SwitchB本地BFD状态为Init后,不再处理接收到的状态为Down的报文。

  4. SwitchA的BFD状态变化同SwitchB。

  5. SwitchB收到状态为Init的BFD报文后,本地状态切换至Up。

  6. SwitchA的BFD状态变化同SwitchB。

拓扑图

S1基本配置
<Huawei>system-view 	
[Huawei]sysname S1[S1]undo info-center enable 
[S1]vlan 10
[S1-vlan10]q配置设备间的网络互连 
# 配置设备各接口的IP地址
[S1]interface GigabitEthernet 0/0/1	
[S1-GigabitEthernet0/0/1]port link-type hybrid 
[S1-GigabitEthernet0/0/1]port hybrid  pvid vlan 10
[S1-GigabitEthernet0/0/1]port hybrid untagged vlan 10
[S1-GigabitEthernet0/0/1]q[S1]interface Vlanif 10
[S1-Vlanif10]ip address 10.1.1.1 24
[S1-Vlanif10]q配置静态路由,使S1、S3之间有可达路由 
# SwitchC的配置与SwitchA类似,具体配置过程略,详见配置文件。
[S1]ip route-static 10.2.1.0 24 10.1.1.2配置多跳BFD检测 
# 在S1上配置与S3之间的BFD会话。
[S1] bfd
[S1-bfd] quit
[S1] bfd atoc bind peer-ip 10.2.1.2
[S1-bfd-session-atoc] discriminator local 10
[S1-bfd-session-atoc] discriminator remote 20
[S1-bfd-session-atoc] commit
[S1-bfd-session-atoc] quit

S2基本配置配置设备间的网络互连 
# 配置设备各接口的IP地址
<Huawei>system-view 
[Huawei]sysname S2[S2]undo info-center enable [S2]vlan 10
[S2-vlan10]q[S2]interface GigabitEthernet 0/0/1	
[S2-GigabitEthernet0/0/1]port link-type hybrid 	
[S2-GigabitEthernet0/0/1]port hybrid  pvid vlan 10
[S2-GigabitEthernet0/0/1]port hybrid untagged  vlan 10
[S2-GigabitEthernet0/0/1]q[S2]interface Vlanif 10
[S2-Vlanif10]ip address 10.1.1.2 24
[S2-Vlanif10]q[S2]interface GigabitEthernet 0/0/2
[S2-GigabitEthernet0/0/1]port link-type hybrid 	
[S2-GigabitEthernet0/0/1]port hybrid  pvid vlan 20
[S2-GigabitEthernet0/0/1]port hybrid untagged  vlan 20
[S2-GigabitEthernet0/0/1]q[S2]interface Vlanif 20
[S2-Vlanif10]ip address 10.2.1.1 24
[S2-Vlanif10]q

S3配置设备间的网络互连 
# 配置设备各接口的IP地址
<Huawei>system-view 
[Huawei]sysname S3[S3]undo info-center enable [S3]vlan 20
[S3-vlan20]q[S3]interface GigabitEthernet 0/0/1
[S3-GigabitEthernet0/0/1]port link-type hybrid 
[S3-GigabitEthernet0/0/1]port hybrid  pvid  vlan 20
[S3-GigabitEthernet0/0/1]port hybrid  untagged  vlan  20
[S3-GigabitEthernet0/0/1]q[S3]interface Vlanif 20
[S3-Vlanif20]ip address 10.2.1.2 24
[S3-Vlanif20]q# 在S3上配置与S1之间的BFD会话。
[S3] bfd
[S3-bfd] quit
[S3] bfd ctoa bind peer-ip 10.1.1.1
[S3-bfd-session-ctoa] discriminator local 20
[S3-bfd-session-ctoa] discriminator remote 10
[S3-bfd-session-ctoa] commit
[S3-bfd-session-ctoa] quit配置静态路由,使S1、S3之间有可达路由 
[S3]ip route-static 10.1.1.0 24 10.2.1.1
  1. 验证配置结果

    配置完成后,在S3和S1上执行display bfd session all verbose命令,可以看到建立了一个BFD会话,且状态为Up

相关文章:

配置BFD多跳检测示例

BFD简介 定义 双向转发检测BFD&#xff08;Bidirectional Forwarding Detection&#xff09;是一种全网统一的检测机制&#xff0c;用于快速检测、监控网络中链路或者IP路由的转发连通状况。 目的 为了减小设备故障对业务的影响&#xff0c;提高网络的可靠性&#xff0c;网…...

爬虫学习-基础库的使用(requests)

目录 一、安装以及实例引入 &#xff08;1&#xff09;requests库下载 &#xff08;2&#xff09;实例测试 二、GET请求 &#xff08;1&#xff09;基本实例 &#xff08;2&#xff09;抓取网页 &#xff08;3&#xff09;抓取二进制数据 &#xff08;4&#xff09;添…...

4.8 构建onnx结构模型-Less

前言 构建onnx方式通常有两种&#xff1a; 1、通过代码转换成onnx结构&#xff0c;比如pytorch —> onnx 2、通过onnx 自定义结点&#xff0c;图&#xff0c;生成onnx结构 本文主要是简单学习和使用两种不同onnx结构&#xff0c; 下面以 Less 结点进行分析 方式 方法一&a…...

Java调试技巧之垃圾回收机制解析

Java作为一种高级编程语言&#xff0c;以其跨平台、面向对象、自动内存管理等特性而广受开发者的喜爱。其中&#xff0c;自动内存管理是Java的一大亮点&#xff0c;通过垃圾回收机制实现对内存的自动分配和释放&#xff0c;极大地简化了开发者的工作。本文将深入探讨Java的垃圾…...

logstash插件简单介绍

logstash插件 输入插件(input) Input&#xff1a;输入插件。 Input plugins | Logstash Reference [8.11] | Elastic 所有输入插件都支持的配置选项 SettingInput typeRequiredDefaultDescriptionadd_fieldhashNo{}添加一个字段到一个事件codeccodecNoplain用于输入数据的…...

联邦多任务蒸馏助力多接入边缘计算下的个性化服务 | TPDS 2023

联邦多任务蒸馏助力多接入边缘计算下的个性化服务 | TPDS 2023 随着移动智能设备的普及和人工智能技术的发展,越来越多的分布式数据在终端被产生与收集&#xff0c;并以多接入边缘计算(MEC)的形式进行处理和分析。但是由于用户的行为模式与服务需求的多样,不同设备上的数据分布…...

【python爬虫】设计自己的爬虫 3. 文件数据保存封装

考虑到爬取的多媒体文件要保存到本地&#xff0c;因此封装了一个类来专门处理这样的问题&#xff0c;下面看代码&#xff1a; class FileStore:def __init__(self, file_path, read_file_moder,write_file_modewb):"""初始化 FileStore 实例Parameters:- file_…...

pta模拟题——7-34 刮刮彩票

“刮刮彩票”是一款网络游戏里面的一个小游戏。如图所示&#xff1a; 每次游戏玩家会拿到一张彩票&#xff0c;上面会有 9 个数字&#xff0c;分别为数字 1 到数字 9&#xff0c;数字各不重复&#xff0c;并以 33 的“九宫格”形式排布在彩票上。 在游戏开始时能看见一个位置上…...

【补题】 1

蓝桥杯小白赛 ​​​​​​​3.小蓝的金牌梦【算法赛】 - 蓝桥云课 (lanqiao.cn) 数组长度为质数&#xff0c;最大的子数组和 素数 前缀和 #include "bits/stdc.h" using namespace std; #define int long long #define N 100010 int ans[N];int s[N];vector&l…...

IP地址定位技术为网络安全建设提供全新方案

随着互联网的普及和数字化进程的加速&#xff0c;网络安全问题日益引人关注。网络攻击、数据泄露、欺诈行为等安全威胁层出不穷&#xff0c;对个人隐私、企业机密和社会稳定构成严重威胁。在这样的背景下&#xff0c;IP地址定位技术应运而生&#xff0c;为网络安全建设提供了一…...

Redis中HyperLogLog的使用

目录 前言 HyperLogLog 前言 在学习HyperLogLog之前&#xff0c;我们需要先学习两个概念 UV&#xff1a;全称Unique Visitor&#xff0c;也叫独立访客量&#xff0c;是指通过互联网访问、浏览这个网页的自然人。1天内同一个用户多次访问该网站&#xff0c;只记录1次。PV&am…...

新版Spring Security6.2架构 (一)

Spring Security 新版springboot 3.2已经集成Spring Security 6.2&#xff0c;和以前会有一些变化&#xff0c;本文主要针对官网的文档进行一些个人翻译和个人理解&#xff0c;不对地方请指正。 整体架构 Spring Security的Servlet 支持是基于Servelet过滤器&#xff0c;如下…...

名字的漂亮度

给出一个字符串&#xff0c;该字符串仅由小写字母组成&#xff0c;定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。 每个字母都有一个“漂亮度”&#xff0c;范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。字母忽略大小写。给出多个字符串&#xff0…...

机器学习基本概念2

资料来源&#xff1a; https://www.youtube.com/watch?vYe018rCVvOo&listPLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&index1 https://www.youtube.com/watch?vbHcJCp2Fyxs&listPLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&index2 分三步 1、 定义function b和w是需要透…...

Spring Cloud 与微服务学习总结(19)—— Spring Cloud Alibaba 之 Nacos 2.3.0 史上最大更新版本发布

Nacos 一个用于构建云原生应用的动态服务发现、配置管理和服务管理平台,由阿里巴巴开源,致力于发现、配置和管理微服务。说白了,Nacos 就是充当微服务中的的注册中心和配置中心。 Nacos 2.3.0 新特性 1. 反脆弱插件 Nacos 2.2.0 版本开始加入反脆弱插件,从 2.3.0 版本开…...

八、C#笔记

/// <summary> /// 第十三章&#xff1a;创建接口和定义抽象类 /// </summary> namespace Chapter13 { class Program { static void Main(string[] args) { //13.1理解接口 ///13.1.1定义接口 ///…...

利用Node.js和cpolar实现远程访问,无需公网IP和路由器设置的完美解决方案

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…...

C++如何通过调用ffmpeg接口对H264文件进行编码和解码

C可以通过调用FFmpeg的API来对H264文件进行编码和解码。下面是一个简单的例子。 首先需要在代码中包含FFmpeg的头文件&#xff1a; extern "C" { #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libswscale/swscale…...

使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动

我使用Remix编写合约&#xff0c;MetaMask钱包工具和Ganache搭建了一个私有网络&#xff0c;并且实现了合约的部署和互动。 在前面的博客中提到了 Remix在线环境及钱包申请 以及 Solidity的基本语法 &#xff0c;没看过的小伙伴可以点击链接查看一下&#xff0c;都是在本专栏下…...

目标检测、目标跟踪、重识别

文章目录 环境前言项目复现特征提取工程下载参考资料 环境 ubuntu 18.04 64位yolov5deepsortfastreid 前言 基于YOLOv5和DeepSort的目标跟踪 介绍过针对行人的检测与跟踪。本文介绍另一个项目&#xff0c;结合 FastReid 来实现行人的检测、跟踪和重识别。作者给出的2个主…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...