一、BFD原理

1.1 BFD技术简介

一种全网统一、检测迅速、监控网络中链路或者IP路由的双向转发连通状况,并未上层应用提供服务的技术。

1.2 BFD会话建立方式和监测机制

●BFD的标识符:

(1)BFD建立会话存在标识符的概念,类似于OSPF建立邻居需要一个路由器的Router ID。

(2)标识符分为本地标识符和远端标识符,本地标识符用于表示本端设备,远端标识符用 于表示对端设备。

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

(4)动态建立BFD会话是指由应用程序触发创建BFD会话,当应用程序动态触发创建BFD  会话时,系统分配属于动态会话标识符区域的值作为BFD会话的本地标识符。然后向 对端发送Remote Discriminator的值为0的BFD控制报文,进行会话协商。当BFD会 话的一端收到Remote Discriminator的值为0的BFD控制报文时,判断该报文是否与 本地BFD会话匹配,如果匹配,则学习接收到的BFD报文中Local Discriminator的值,获取远端标识符。

●BFD的检测机制:

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

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

1.3 BFD会话建立过程

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

●BFD会话,Remote Discriminator的值是0。

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

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

●RTB收到状态为Init的BFD报文后,本地状态切换至Up。

●RTA的BFD状态变化同RTB。

●邻居会话建立成功后,RTA和RTB周期性的向对方发送状态为Up的控制报文。

1.4 BFD工作流程

●BGP邻居建立àBFD会话建立。

●链路故障àBFD会话downàBGP邻居关系中断。

●OSPF的BFD检测故障发现处理流程。

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

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

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

(4)被检测链路出现故障。

(5)BFD快速发送BFD探测报文检测到链路故障,如果在规定时间内无响应,BFD会话状 态变为Down。

(6)BFD通知本地OSPF进程BFD邻居不可达。

(7)本地OSPF进程中断OSPF邻居关系

1.5 联动功能简介

●监测模块负责对链路状态、网络性能等进行监测,并将探测结果通知给Track模块 。

●Track模块收到监测模块的探测结果后,及时改变Track项的状态,并通知应用模块。

●应用模块根据Track项的状态,进行相应的处理,从而实现联动。

1.6 BFD与BGP联动场景

场景描述:

●两台路由器经过中间网络通道建立BGP的邻居关系;

●已知RA、RA都支持BFD功能,要求使用BGP与BFD联动技术,采用BFD控制报文方式实现当RA或RB与中间网络设备以及中间网络通道内部链路出现故障时,BFD能够快速感知并通告BGP协议。

二、测试案例

2.1测试用例

(1)测试目的验证BFD与BGP的联动

(2)测试说明DUT的两个端口分别与两台二层交换机连接,通过二层交换机与测试仪两个端口连接并通信

(3)测试步骤

●按图连接好拓扑

●DUT的G0/0/1与测试仪P1端口建立IBGP邻居,配置BFD;

●DUT的G0/0/2与测试仪P2端口建立IBGP邻居,不配置BFD;

●测试仪P1端口配置BGP协议和BFD协议,并将BGP与BFD关联;

●测试仪P2端口配置BGP协议;

●测试仪上开启全部协议,查看DUT上BGP邻居和BFD会话,有预期结果1;

●SW1和SW2上同时down掉G0/0/1接口,查看DUT和测试仪上的BGP邻居和BFD会话,有预期结果2.

(4)预期结果

●预期结果1:两个BGP邻居均成功建立,DUT与P1端口成功建立BFD会话

●预期结果2:有BFD会话的BGP邻居马上断开,每月会话的BGP邻居需要等待一段时间后才会断开。

2.2 DUT配置

三、测试步骤

3.1预约测试资源

预约测试资源:添加机箱、预约端口

3.2 创建接口

P1/P2端口下,创建IPv4接口

3.3 修改接口参数

修改接口IPv4地址和IPv4网关地址;点击“所有接口发送ARP/ND”学习ARP

3.4 配置BGP协议

“2-3层协议”中选择BGP,点击菜单栏的“添加BGP”,选择P1和P2端口

3.5关联接口,调整协议参数

(1)将创建的IPv4接口与BGP协议关联,根据实际情况调整BGP协议参数

(2)P1端口下的BGP协议使能BFD;

3.6配置BFD协议

(1)“2-3层协议”中选择BFD,点击菜单栏的“添加BFD”,选择P1端口

(2)将IPv4接口与BFD协议关联

3.7启动协议

点击菜单栏的“全部开始”,启动BGP和BFD协议;

3.8查看测试仪上协议状态

●BFD协议状态变为“running”;

●P1/P2端口的BGP协议状态均变”Established”.

3.9查看统计结果

●查看BGP BFD Session Result

●IPv4源地址为测试仪接口IP,IPv4目的地址为DUT接口地址,BFD会话状态为UP。

3.10查看DUT 信息

通过dis bgp peer查看BGP邻居

通过dis bgp  bfd  session  all查看BFD会话

3.11断开测试仪和DUT之间连接

SW1和SW2的G0/0/1口分别使用shutdown命令down端口

3.12观察测试仪和DUT的BGP状态变化

测试仪上P1端口的BGP状态因为存在BFD会话很快变为Idle,P2端口的状态依旧是Established

DUT上10.1.1.2的邻居状态立刻变为Idle,20.1.1.2的邻居状态依旧是Established,需要等待一定时间才会变为Idle

BGP BFD测试案例相关推荐

  1. tensflower官方测试案例_大数据性能测试介绍

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 大数据技术与架构点击右侧关注,大数据开发领域最强公众号! 大数据真好玩点击右侧关注,大数据真好玩! ...

  2. Linux动态加载共享库,Linux共享库的动态加载(附测试案例)

    共享库的动态加载是指可以在程序运行的过程中去加载所需的共享库.常用于某些系统或者应用程序的自动升级. 在C语言的源程序动态加载共享库,需要调用一组特殊的函数,它们被声明于一个专门的头文件dlfcn.h ...

  3. 测试案例6种编写方法_一种编写测试的好方法

    测试案例6种编写方法 测试. 我最近一直在考虑测试. 作为我对各种项目所做的代码审查的一部分,我已经看到了数千行未经测试的代码. 这不仅是测试覆盖率统计数据指出这一点的情况,更是该项目中根本没有任何测 ...

  4. junit白盒测试 案例_JUnit通过失败测试案例

    junit白盒测试 案例 为什么要建立一种预期测试失败的机制? 有一段时间,人们会希望并期望JUnit @Test案例失败. 尽管这种情况很少见,但确实发生了. 我需要检测JUnit测试何时失败,然后 ...

  5. JUnit通过失败测试案例

    为什么要建立一种预期测试失败的机制? 有一段时间,人们会希望并期望JUnit @Test案例失败. 尽管这种情况很少见,但确实发生了. 我需要检测JUnit测试何时失败,然后(如果期望的话)通过而不是 ...

  6. 编写优美的GTest测试案例

    使用gtest也有很长一段时间了,这期间也积累了一些经验,所以分享一下.GTest为我们提供了便捷的测试框架,让我们只需要关注案例本身.如何在GTest框架下写出优美的测试案例,我觉得必须要做到: 案 ...

  7. tensflower官方测试案例_Storm自带测试案例的运行

    之前Storm安装之后,也知道了Storm的一些相关概念,那么怎么样才可以运行一个例子对Storm流式计算有一个感性的认识呢,那么下面来运行一个Storm安装目录自带的测试案例,我们的Storm安装在 ...

  8. 软件工程--构建之法--功能测试 设计10个或者更多的测试案例完成对钉书钉的功能测试...

    设计10个或者更多的测试案例完成对钉书钉的功能测试 (1)使用不同的纸质材料厚度,使用相同规格钉书钉,查看钉书器是否正常工作 (2)使用不同规格的钉书钉,使用相同厚度的纸质材料,查看钉书器是否正常工作 ...

  9. 敏态下“骨架化、模块化”测试案例编写技术实践

    文/叶婷婷 罗章坤 一.引言 随着互联网金融监管的日益严格.市场竞争的不断加剧及客户需求的快速变化,金融企业IT系统的复杂程度不断提高,IT需求日益放大,创新型需求持续产生.传统的软件开发模式,诸如瀑 ...

最新文章

  1. C语言中常用计时方法总结
  2. ThinkPHP的基本操作
  3. datalist标签
  4. spring-boot actuator(监控)配置和使用
  5. JVM Specification 9th Edition (4) Chapter 3. Compiling for the Java Virtual Machine
  6. java word转pdf 在linux转pdf乱码解决方法
  7. adobe reader打开pdf闪退或自动关闭
  8. Nature拟推出机器智能在线期刊Nature Machine Intelligence
  9. SpringCloud Alibaba(四) Nacos服务端本地启动和源码浅析(AP架构),Distro协议介绍,CAP原则介绍
  10. 虾皮男装类目市场如何?哪些产品好卖?
  11. FastText学习笔记
  12. 高盛报告:人工智能、机器学习和数据将推动未来生产力的发展
  13. 接口和继承知识点总结
  14. oracle dul误删数据,案例:Oracle dul数据挖掘 没有数据库备份非常规恢复truncate删除的数据表...
  15. 记录mysql查询过去十二个月中每个月的数据情况(含本月)
  16. mysql 换文件夹_windows下更换MySql数据库数据文件夹位置
  17. [NIPS-18] Generalizing to Unseen Domains via Adversarial Data Augmentation
  18. python 2个列表相减的2种写法
  19. 第五部分 家庭创业奔小康10.小本经营,如何获得银行贷款支持
  20. ethtool用法 linux_ethtool用法

热门文章

  1. Flutter 2020 开源项目推荐 第一弹
  2. 学习处理Doxygen的xml输出
  3. 物流APP制作开发要具备哪些基本功能
  4. Java毕业设计基于ssm新闻资讯网站系统的设计与实现
  5. 从 SXX32F103 移植到 MH32F103A参考文档
  6. android 悬浮窗的显示动画,android 悬浮窗特效
  7. 计算机pe教程,电脑小白的福利,制作PE加电脑重装系统教程,学会再也不求人!...
  8. 链家java_java爬取链家网数据
  9. Java实现RSA加密算法
  10. 昆仑通态MCGS与3台西门子V20变频器通讯程序 3台变频器通讯,可靠稳定