配置BFD多跳检测示例

2023-12-05 11:12
文章标签 配置 检测 示例 bfd

本文主要是介绍配置BFD多跳检测示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、BFD简介。

        定义:

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

2、BFD原理描述。

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

        BFD会话建立流程图:

两台设备上同时配置了OSPF与BFD,BFD会话建立过程如下所示:

  1. OSPF通过自己的Hello机制发现邻居并建立连接。

  2. OSPF在建立了新的邻居关系后,将邻居信息(包括目的地址和源地址等)通告给BFD。

  3. BFD根据收到的邻居信息建立会话。

  4. 会话建立以后,BFD开始检测链路故障,并做出快速反应。

        BFD故障发现处理流程图:

如上图所示:

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

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

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

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

 3、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的值,获取远端标识符。

4、BFD检测机制。

        BFD的检测机制是两个系统建立BFD会话,并沿它们之间的路径周期性发送BFD控制报文,如果一方在既定的时间内没有收到BFD控制报文,则认为路径上发生了故障。

        BFD提供异步检测模式。在这种模式下,系统之间相互周期性地发送BFD控制报文,如果某个系统连续几个报文都没有接收到,就认为此BFD会话的状态是Down。

 5、实验案例。

实验拓扑:

1、S1交换机配置 。

##基础IP地址配置

[S1]vlan 10
[S1-vlan10]q
[S1]int g0/0/1
[S1-GigabitEthernet0/0/1]port link-type access 
[S1-GigabitEthernet0/0/1]port default vlan 10
[S1-GigabitEthernet0/0/1]q
[S1]interface Vlanif 10
[S1-Vlanif10]ip add 10.1.1.1 24 
[S1-Vlanif10]q

##配置静态路由到S3

[S1]ip route-static 10.2.1.0 24 10.1.1.2 

##创建BFD会话绑定信息,并进入BFD会话视图

[S1]bfd
[S1-bfd]quit
[S1]bfd atoc bind peer-ip 10.2.1.2##配置静态BFD会话的本地标识符和远端标识符
[S1-bfd-session-atoc]discriminator local 10
[S1-bfd-session-atoc]discriminator remote 20
[S1-bfd-session-atoc]commit
[S1-bfd-session-atoc]q

2、S2交换机配置。

##基础IP地址配置

[S2]vlan batch 10 20
[S2]int g0/0/1
[S2-GigabitEthernet0/0/1]port link-type access 
[S2-GigabitEthernet0/0/1]port default vlan 10
[S2-GigabitEthernet0/0/1]q
[S2]int g0/0/2	
[S2-GigabitEthernet0/0/2]port link-type access 	
[S2-GigabitEthernet0/0/2]port default vlan 20
[S2-GigabitEthernet0/0/2]q
[S2]int Vlanif 10 
[S2-Vlanif10]ip add 10.1.1.2 24 
[S2-Vlanif10]q
[S2]int Vlanif 20
[S2-Vlanif20]ip add 10.2.1.1 24 
[S2-Vlanif20]q

3、S3交换机配置。

##基础IP地址配置

[S3]vlan 20
[S3-vlan20]q
[S3]int g0/0/1
[S3-GigabitEthernet0/0/1]port link-type access 
[S3-GigabitEthernet0/0/1]port default vlan 20
[S3-GigabitEthernet0/0/1]q
[S3]int Vlanif 20 
[S3-Vlanif20]ip add 10.2.1.2 24 
[S3-Vlanif20]q

##配置静态路由到S1 

[S3]ip route-static 10.1.1.0 24 10.2.1.1 

##创建BFD会话绑定信息,并进入BFD会话视图

[S3]bfd
[S3-bfd]q
[S3]bfd ctoa bind peer-ip 10.1.1.1##配置静态BFD会话的本地标识符和远端标识符
[S3-bfd-session-ctoa]discriminator local 20
[S3-bfd-session-ctoa]discriminator remote 10
[S3-bfd-session-ctoa]commit
[S3-bfd-session-ctoa]q

4、实验结果。

配置完成后查看BFD会话信息表可以看到已经(up)了,说明它们之间已经建立好了BFD会话。

如果S1的接口down了,S3也能快速的检测到故障。

这篇关于配置BFD多跳检测示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/457339

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

Python中Markdown库的使用示例详解

《Python中Markdown库的使用示例详解》Markdown库是一个用于处理Markdown文本的Python工具,这篇文章主要为大家详细介绍了Markdown库的具体使用,感兴趣的... 目录一、背景二、什么是 Markdown 库三、如何安装这个库四、库函数使用方法1. markdown.mark

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意