BGP分解实验·12——配置路由反射器
当一个AS包含多个iBGP对等体时,路由反射器(Route-Reflector)非常有用,因为相对于iBGP路由反射器指定的客户端只需要和路由反射器建立邻居关系,从而降低了iBGP全互连的连接数量。路由反射器(RR)和它指定的客户端合称为一个簇。RR打破了iBGP水平分割的原则,RR能够将来自一个iBGP对等体的路由传递给另一个iBGP对等体。
RR的传递规则有三条:
- 规则1——如果NLRI是从非客户端的iBGP邻居传递过来的条目,RR只将它反射给客户端;(RR不会传递从一个非客户端收到的NLRI到另一个非客户端——非非不传)
- 规则2——如果NLRI是从所指定客户端传递过来条目,RR会将此条目反射给所有客户端与非客户端;(返回起始发端路由器时会被源起始路由器拒绝)
- 规则3——如果NLRI是从eBGP邻居传递过来的条目,RR会将此条目反射给所有的客户端和非客户端。
解释RR传递规则的可视化描述如下图:
根据以上解释,实验拓扑如下所示:
在配置上为了方便查看使R3用模板组的方式指定R5为客户端,其他直接手动指定的邻居建立并未指定成为客户端。
R1的基础配置如下:
hostname R1
!
interface Loopback0ip address 192.168.1.1 255.255.255.255
!
interface Ethernet0/0ip address 10.1.13.1 255.255.255.0no sh
!
interface Ethernet0/1ip address 100.64.12.1 255.255.255.248no sh
!
router eigrp 5network 0.0.0.0
!
router bgp 135bgp router-id 1.1.1.1network 192.168.1.1 mask 255.255.255.255neighbor R1R3 peer-groupneighbor R1R3 remote-as 135neighbor R1R3 update-source Loopback0neighbor 100.64.12.2 remote-as 200neighbor 192.168.3.3 peer-group R1R3
!
end
R2的基础配置如下:
hostname R2
!
interface Loopback0ip address 172.16.20.20 255.255.255.255
!
interface Ethernet0/0ip address 100.64.23.2 255.255.255.248no sh
!
router bgp 200bgp router-id 2.2.2.2network 172.16.20.20 mask 255.255.255.255neighbor 100.64.23.3 remote-as 135
!
R3的基础配置如下:
hostname R3
!
interface Loopback0ip address 192.168.3.3 255.255.255.255
!
interface Ethernet0/0ip address 10.1.13.3 255.255.255.0no sh
!
interface Ethernet0/1ip address 10.1.35.3 255.255.255.0no sh
!
interface Ethernet0/2ip address 100.64.23.3 255.255.255.248no sh
!
interface Ethernet0/3ip address 10.1.34.3 255.255.255.0no sh
!
router eigrp 5network 0.0.0.0
!
router bgp 135bgp router-id 3.3.3.3bgp listen range 192.168.5.0/24 peer-group RRnetwork 192.168.3.3 mask 255.255.255.255neighbor RR peer-groupneighbor RR remote-as 135neighbor RR update-source Loopback0neighbor RR route-reflector-clientneighbor 192.168.1.1 remote-as 135neighbor 192.168.1.1 update-source Loopback0neighbor 192.168.4.4 remote-as 135neighbor 192.168.4.4 update-source Loopback0neighbor 100.64.23.2 remote-as 200
!
end
R4的基础配置如下:
hostname R4
!
interface Loopback0ip address 192.168.4.4 255.255.255.255
!
interface Ethernet0/0ip address 10.1.34.4 255.255.255.0no sh
!
router eigrp 5network 0.0.0.0
!
router bgp 135network 192.168.4.4 mask 255.255.255.255neighbor 192.168.3.3 remote-as 135neighbor 192.168.3.3 update-source Loopback0
!
end
R5的基础配置如下:
hostname R5
!
interface Loopback0ip address 192.168.5.5 255.255.255.255
!
interface Ethernet0/0ip address 10.1.35.5 255.255.255.0no sh
!
interface Ethernet0/1ip address 100.80.56.5 255.255.255.248no sh
!
router eigrp 5network 0.0.0.0
!
router bgp 135network 192.168.5.5 mask 255.255.255.255neighbor R5R3 peer-groupneighbor R5R3 remote-as 135neighbor R5R3 update-source Loopback0neighbor R5R3 next-hop-selfneighbor 192.168.3.3 peer-group R5R3neighbor 100.80.56.6 remote-as 400
!
end
R6的基础配置如下:
hostname R6
!
interface Loopback0ip address 172.18.60.60 255.255.255.255
!
interface Ethernet0/0ip address 100.80.56.6 255.255.255.248no sh
!
router bgp 400bgp router-id 4.4.4.4network 172.18.60.60 mask 255.255.255.255neighbor 100.80.56.5 remote-as 135
!
以上配置只是在R3指定的RRC(Route-Reflector-Client)为R5,R1和R4在ASN135内未被指定为RRC,所以R1和R4互不传递NLRI(路由);规则1,非非不传。
以上可以看到R1中没有R4通告出来的192.168.4.4/32的网络,同样在R4的BGP表中也看不到R1通告的192.168.1.1/32的网络。其他都可以相互直接通告或转接通告。
结合以上,可以看到规则2和规则3。(RR不能被具体配置,只要在一台路由器指定其他邻居为RRC,则自己自动成为这个RRC的RR)使R3成为RR并指定R5为其客户端,可以看到以下BGP表中,未被指定RRC的非RR客户端R1和R4,都会在BGP表中加载192.168.5.5/32的路由,虽然有r标记的装表失败,那因为有更低的管理距离的EIGRP存在导致的;eBGP传递过来的NLRI与通过RR和其指定的RRC转接传递的NLRI都会在其他路由器的BGP表中加载。只有两个iBGP中的非RRC没有相互传递。
在RR路由器R3上查看R1并非被指定为RRC,由于以上查看和配置所知,R4也非RRC,所以R1不会收到R4的NLRI,所以对等体组成员不会有R4,一共5个;而在R3查看指定的RRC的R5可以看到邻居BGP的RRC标识和包括自己在内一共有6个组成员。
可以看到2个eBGP的对等体中,R2的172.16.20.20是直接连接到RR上,而R6的172.18.60.60是通过RRC收到该路由而传递过来的。
现在为了查看通过RRC转接的eBGP路由信息的路径过程,现在在R3上再指定R1为RRC,在R3上添加配置如下:
router bgp 135neighbor 192.168.1.1 route-reflector-client
以上查看信息可以知道在本AS内,BGP表中的172.18.60.60/32的起源器是R5,通过簇列表R3到达。当一条BGP路由被反射器传递的时候,路由反射器会为其增加两个属性
- Originator:是由路由反射器客户端生产,是本AS内路由起源器的路由器ID。(用于防止该路由被反射回起源器)
- Cluster list:一个AS内的每个簇必须用一个唯一的4字节的簇ID来标识,如果簇内只有一个RR,那么簇ID就是RR的路由器ID。(用于在多个反射簇之间防止反射传递环路)
当RR收到一条NLRI更新时,它将检查簇列表,如果发现在列表中有自己的ID,就知道出现了路由环路,从而可以有效避免环路。
当R1配置成为R3的RRC后,可以看到原本在R1的BGP表没的另一个非RRC即R4的路由条目已经可以和当前已成为RRC的R1建立表项。同样R4的表项也会出现R1的条目。(当前这个iBGP的AS内只有R4是非RRC)
默认情况下,BGP会把本地优选的路由更新给BGP对等体。
相关文章:

BGP分解实验·12——配置路由反射器
当一个AS包含多个iBGP对等体时,路由反射器(Route-Reflector)非常有用,因为相对于iBGP路由反射器指定的客户端只需要和路由反射器建立邻居关系,从而降低了iBGP全互连的连接数量。路由反射器(RR)和…...

PCIe 个人理解专栏——【2】LTSSM(Link Training and Status State Machine)
前言: 链路训练和状况状态机LTSSM(Link Training and Status State Machine)是整个链路训练和运行中状态的状态转换逻辑关系图,总共有11个状态。 正文: 包括检测(Detect),轮询&…...
cmake 编译QT之JKQtPlotter-4.0.3
cmake 编译 JKQtPlotter-4.0.3 1.下载源码 源码地址:https://github.com/jkriege2/JKQtPlotter 2.编译 mkdir build cd buildDCMAKE_PREFIX_PATH指编译器目录 D:\ProgramFiles\cmake-3.25.0-rc1-windows-i386\bin\cmake.exe -G "Visual Studio 16 2019&qu…...
【C】memory 详解
<memory.h> 是一个 C 标准库头文件,提供了一组内存管理函数,用于分配、释放和操作动态内存。这些函数主要操作的是未初始化的内存块,是早期 C 编程中常用的内存操作工具。 尽管在现代 C 编程中更推荐使用<cstring>或<memory&…...

Python 爬虫 - Selenium 框架
Python 爬虫 - Selenium 框架 安装安装 Selenium安装 WebDriver 操作浏览器打开浏览器普通方式加载配置方式Headless 方式 设置浏览器窗口最大化显示最小化显示自定义大小 前进后退前进后退 元素定位根据 id 定位根据 name 定位根据 class 定位根据标签名定位使用 CSS 定位使用…...
mysql的having语句
MySQL的HAVING语句用于在GROUP BY子句对数据进行分组后,过滤满足特定条件的组。与WHERE子句不同,HAVING子句可以在过滤条件中使用聚合函数,而WHERE子句则不能。通常,HAVING子句与GROUP BY子句一起使用,以实现对分组数据…...

华为数据之道-读书笔记
内容简介 关键字 数字化生产 已经成为普遍的商业模式,其本质是以数据为处理对象,以ICT平台为生产工具,以软件为载体,以服务为目的的生产过程。 信息与通信技术平台(Information and Communication Technology Platf…...

CDN、源站与边缘网络
什么是“源站” 源服务器 源服务器的目的是处理和响应来自互联网客户端的传入请求。源服务器的概念通常与边缘服务器或缓存服务器的概念结合使用。源服务器的核心是一台运行一个或多个程序的计算机,这些程序旨在侦听和处理传入的客户端请求。源服务器可以承担为网…...

工业相机 SDK 二次开发-Sherlock插件
本文介绍了 sherlock 连接相机时的插件使用。通过本套插件可连接海康的工业相机。 一.环境配置 1. 拷贝动态库 在用户安装 MVS 目录下按照如下路径 Development\ThirdPartyPlatformAdapter 找到目 录为 DalsaSherlock 的文件夹,根据 Sherlock 版本找到…...

FlinkSql使用中rank/dense_rank函数报错空指针
问题描述 在flink1.16(甚至以前的版本)中,使用rank()或者dense_rank()进行排序时,某些场景会导致报错空指针NPE(NullPointerError) 报错内容如下 该报错没有行号/错误位置,无法排查 现状 目前已经确认为bug,根据github上的PR日…...

VS C++ 配置OPENCV环境
VS C 配置OPENCV环境 1.下载opencv2.安装环境3.opencv环境4.VS配置opencv环境5.EXE执行文件路径的环境lib和dll需要根据是debug还是release环境来区分使用哪个 6.Windows环境 1.下载opencv 链接: link 2.安装环境 双击运行即可 3.opencv环境 include文件路径:opencv\build\…...

【SpringSecurity】基本开发流程
文章目录 概要整体架构流程实现流程1、编写各种Handler2 、AccessToken处理器3、定义AuthenticationFilter 继承 OncePerRequestFilter (OncePerRequestFilter是Spring提供的一个过滤器基类,它确保了在一次完整的HTTP请求中,无论请求经过多少…...

Redis实战(黑马点评)——关于缓存(缓存更新策略、缓存穿透、缓存雪崩、缓存击穿、Redis工具)
redis实现查询缓存的业务逻辑 service层实现 Overridepublic Result queryById(Long id) {String key CACHE_SHOP_KEY id;// 现查询redis内有没有数据String shopJson (String) redisTemplate.opsForValue().get(key);if(StrUtil.isNotBlank(shopJson)){ // 如果redis的数…...
ChatGPT从数据分析到内容写作建议相关的46个提示词分享!
在当今快节奏的学术环境中,研究人员面临着海量的信息和复杂的研究任务。幸运的是,随着人工智能技术的发展,像ChatGPT这样的先进工具为科研人员提供了强大的支持。今天就让我们一起探索如何利用ChatGPT提升研究效率进一步优化研究流程。 ChatG…...
在 Windows 11 中设置 WSL2 Ubuntu 的 `networkingMode=mirrored` 详细教程
在 Windows 11 中设置 WSL2 Ubuntu 的 networkingModemirrored 详细教程 引言环境要求配置 .wslconfig 文件重启 WSL2验证镜像网络模式解决常见问题其他注意事项结论 引言 在 Windows 11 中使用 WSL2(Windows Subsystem for Linux 2)时,默认…...

万字长文总结前端开发知识---JavaScriptVue3Axios
JavaScript学习目录 一、JavaScript1. 引入方式1.1 内部脚本 (Inline Script)1.2 外部脚本 (External Script) 2. 基础语法2.1 声明变量2.2 声明常量2.3 输出信息 3. 数据类型3.1 基本数据类型3.2 模板字符串 4. 函数4.1 具名函数 (Named Function)4.2 匿名函数 (Anonymous Fun…...

怎么样把pdf转成图片模式(不能复制文字)
贵但好用的wps, 转换——转为图片型pdf —————————————————————————————————————————— 转换前: 转换后: 肉眼可见,模糊了,且不能复制。 其他免费办法,参考&…...

本地centos网络配置
1、路径 2、配置 另外还需要...
kotlin内联函数——runCatching
1.runCatching作用 代替try{}catch{}异常处理,用于捕获异常。 2.runCatching函数介绍 参数:上下文引用对象为参数返回值:lamda表达式结果 调用runCatching函数,如果调用成功则返回其封装的结果,并可回调onSuccess函…...
Python3 正则表达式:文本处理的魔法工具
Python3 正则表达式:文本处理的魔法工具 内容简介 本系列文章是为 Python3 学习者精心设计的一套全面、实用的学习指南,旨在帮助读者从基础入门到项目实战,全面提升编程能力。文章结构由 5 个版块组成,内容层层递进,逻…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!
多连接 BLE 怎么设计服务不会乱?分层思维来救场! 作者按: 你是不是也遇到过 BLE 多连接时,调试现场像网吧“掉线风暴”? 温度传感器连上了,心率带丢了;一边 OTA 更新,一边通知卡壳。…...