BGP路由反射器(RR)实验详解,结尾有详细脚本

目录

  1. 路由反射器基础概念

  2. 实验拓扑与设计

  3. 实验配置步骤

  4. 配置验证与排错

  5. 实验总结

  6. 完整配置命令集

路由反射器基础概念

在传统的IBGP网络中,为了防止路由环路,BGP规定通过IBGP学到的路由不能再传递给其他IBGP对等体,这导致所有IBGP路由器必须建立全互联(full-mesh)关系。当网络规模扩大时,这种全互联方式会消耗大量资源。

路由反射器(Route Reflector, RR)解决了这个问题,它允许将路由反射给特定客户端,打破了IBGP的全互联限制。一个路由反射器网络包含三种角色:

  1. 路由反射器(RR):可以反射路由的BGP路由器

  2. 客户端(Client):与RR形成特殊关系的IBGP对等体

  3. 非客户端(Non-Client):普通的IBGP对等体

RR会将从客户端学到的路由反射给其他客户端和非客户端,将从非客户端学到的路由只反射给客户端。

路由反射器关键属性

路由反射器使用两个特殊属性来防止环路并跟踪路由来源:

  1. Originator_ID

    • 类型码为9的可选非过渡属性

    • 由第一个反射路由的RR创建,记录原始路由通告者的Router ID

    • 如果路由器发现收到的路由Originator_ID与自己的Router ID相同,则丢弃该路由

  2. Cluster_List

    • 类型码为10的可选非过渡属性

    • 记录路由经过的反射器集群路径(每个集群用Cluster ID标识)

    • 每个RR反射路由时会追加自己的Cluster ID

    • 如果RR发现收到的路由Cluster_List中包含自己的Cluster ID,则丢弃该路由

实验拓扑与设计

  • R1:AS 100中的普通IBGP路由器

  • R2:作为路由反射器,负责反射路由

  • R3:R2的客户端,同时与AS 200的R4建立EBGP连接

  • R4:AS 200中的路由器,通告网络10.4.4.0/24

实验配置步骤

1. 基础网络配置

首先确保所有接口和OSPF(用于IBGP环回口可达性)配置正确:

# 在R1、R2、R3上配置OSPF
[R1] ospf 1
[R1-ospf-1] area 0
[R1-ospf-1-area-0.0.0.0] network 10.0.1.1 0.0.0.0
[R1-ospf-1-area-0.0.0.0] network 10.0.12.0 0.0.0.255
# 类似配置R2、R3# 在R3和R4之间配置直连接口
[R3] interface GigabitEthernet0/0/1
[R3-GigabitEthernet0/0/1] ip address 10.0.34.3 24
[R4] interface GigabitEthernet0/0/1
[R4-GigabitEthernet0/0/1] ip address 10.0.34.4 24

2. BGP基础配置

BGP配置如下:

# R1配置
[R1] bgp 100
[R1-bgp] router-id 10.0.1.1
[R1-bgp] peer 10.0.2.2 as-number 100
[R1-bgp] peer 10.0.2.2 connect-interface LoopBack0# R2作为RR配置
[R2] bgp 100
[R2-bgp] router-id 10.0.2.2
[R2-bgp] peer 10.0.1.1 as-number 100
[R2-bgp] peer 10.0.1.1 connect-interface LoopBack0
[R2-bgp] peer 10.0.3.3 as-number 100
[R2-bgp] peer 10.0.3.3 connect-interface LoopBack0
[R2-bgp] peer 10.0.3.3 reflect-client  # 将R3配置为客户端# R3配置
[R3] bgp 100
[R3-bgp] router-id 10.0.3.3
[R3-bgp] peer 10.0.2.2 as-number 100
[R3-bgp] peer 10.0.2.2 connect-interface LoopBack0
[R3-bgp] peer 10.0.34.4 as-number 200# R4配置
[R4] bgp 200
[R4-bgp] router-id 10.0.4.4
[R4-bgp] peer 10.0.34.3 as-number 100
[R4-bgp] network 10.4.4.0 255.255.255.0

3. 路由反射验证

在R2上查看BGP对等体关系:

<R2> display bgp peer

可以看到R1为普通IBGP对等体,R3标记为路由反射客户端。

配置验证与排错

1. 验证路由传播

在R1上检查是否学到了AS 200的路由:

<R1> display bgp routing-table

看到10.4.4.0/24的路由,下一跳为R3(10.0.3.3)。(RR会将从客户端学到的路由反射给其他客户端和非客户端)

2. 验证路由反射器属性

检查路由的反射器属性:

# 查看路由详细信息(在R1上执行)
<R1> display bgp routing-table 10.4.4.0# 输出示例:
BGP local router ID : 10.0.1.1
Local AS number : 100
Paths:    1 available
From : 10.0.2.2 (10.0.2.2)
Route Duration : 0d00h01m23s  
Relay IP Nexthop : 10.0.2.2
Original nexthop: 10.0.3.3
Origin : igp
AS-path : 200
Originator: 10.0.3.3        # Originator_ID属性
Cluster list: 10.0.2.2      # Cluster_List属性

3. 验证反射器状态

在RR(R2)上查看反射状态:

<R2> display bgp peer 10.0.3.3 verbose
# 在输出中查找:
Route reflector client: Yes  # 确认客户端状态

4. 常见问题排查

  1. 路由未反射

    • 确认RR配置了reflect-client

    • 检查OSPF是否使环回口可达

    • 使用display bgp peer确认对等体状态为Established

  2. 路由属性问题

    • 检查路由的ORIGIN、AS_PATH等属性是否正确

    • 使用display bgp routing-table 10.4.4.0查看详细路由信息

  3. EBGP连接问题

    • 确认R3和R4的直连物理接口状态为UP

    • 检查EBGP对等体AS号配置是否正确

实验总结

通过本实验,我们成功构建了一个包含路由反射器的IBGP网络,实现了:

  1. 在AS 100内使用路由反射器减少IBGP全互联需求

  2. 通过R3与AS 200建立EBGP连接并引入外部路由

  3. 验证路由反射器能够正确反射路由给客户端和非客户端

路由反射器的使用大大简化了大规模IBGP网络的配置和维护工作,是实际网络部署中常用的解决方案。

完整配置命令集

R1配置

system-view
sysname R1
interface LoopBack0ip address 10.0.1.1 255.255.255.255
interface GigabitEthernet0/0/0ip address 10.0.12.1 255.255.255.0
ospf 1area 0.0.0.0network 10.0.1.1 0.0.0.0network 10.0.12.0 0.0.0.255
bgp 100router-id 10.0.1.1peer 10.0.2.2 as-number 100peer 10.0.2.2 connect-interface LoopBack0

R2配置

system-view
sysname R2
interface LoopBack0ip address 10.0.2.2 255.255.255.255
interface GigabitEthernet0/0/0ip address 10.0.12.2 255.255.255.0
interface GigabitEthernet0/0/1ip address 10.0.23.2 255.255.255.0
ospf 1area 0.0.0.0network 10.0.2.2 0.0.0.0network 10.0.12.0 0.0.0.255network 10.0.23.0 0.0.0.255
bgp 100router-id 10.0.2.2peer 10.0.1.1 as-number 100peer 10.0.1.1 connect-interface LoopBack0peer 10.0.3.3 as-number 100peer 10.0.3.3 connect-interface LoopBack0peer 10.0.3.3 reflect-client

R3配置

system-view
sysname R3
interface LoopBack0ip address 10.0.3.3 255.255.255.255
interface GigabitEthernet0/0/0ip address 10.0.23.3 255.255.255.0
interface GigabitEthernet0/0/1ip address 10.0.34.3 255.255.255.0
ospf 1area 0.0.0.0network 10.0.3.3 0.0.0.0network 10.0.23.0 0.0.0.255
bgp 100router-id 10.0.3.3peer 10.0.2.2 as-number 100peer 10.0.2.2 connect-interface LoopBack0peer 10.0.34.4 as-number 200

R4配置

system-view
sysname R4
interface GigabitEthernet0/0/1ip address 10.0.34.4 255.255.255.0
bgp 200router-id 10.0.4.4peer 10.0.34.3 as-number 100network 10.4.4.0 255.255.255.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85915.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(aaai2025) SparseViT: 用于图像篡改检测的Spare-Coding Transformer

论文&#xff1a;(aaai2025) SparseViT: Nonsemantics-Centered, Parameter-Efficient Image Manipulation Localization through Spare-Coding Transformer 代码&#xff1a;https://github.com/scu-zjz/SparseViT 这个论文研究的是图像篡改检测&#xff08;Image Manipulatio…

C#测试调用Markdig解析Markdown的基本用法

Markdig是.NET平台的高性能开源Markdown处理器&#xff0c;严格遵循 CommonMark 标准&#xff0c;确保解析一致性&#xff0c;其核心优势在于扩展性强&#xff1a;通过模块化管道模型&#xff0c;可轻松添加自定义语法或修改现有逻辑。Markdig内置支持表格、任务列表、数学公式…

MySQL 主从同步完整配置示例

以下是 MySQL 主从同步完整配置示例&#xff08;基于 Linux 系统&#xff09;&#xff0c;包含主库和从库的配置步骤&#xff1a; 一、主库&#xff08;Master&#xff09;配置 1. 安装 MySQL&#xff08;以 CentOS 为例&#xff09; yum install -y mysql-server systemctl …

可信启动与fTPM的交互验证(概念验证)

安全之安全(security)博客目录导读 目录 一、组件构成 二、Arm FVP平台PoC构建 三、在Armv8-A Foundation FVP上运行PoC 四、微调fTPM TA 可信启动&#xff08;Measured Boot&#xff09;是通过密码学方式度量启动阶段代码及关键数据&#xff08;例如使用TPM芯片&#xff…

SQL Server基础语句4:数据定义

文章目录 一、数据库与架构1.1 创建与删除数据库1.1.1 使用CREATE DATABASE语句创建数据库1.1.2 使用DROP DATABASE语句删除数据库1.1.3 使用SSMS创建数据库1.1.4 使用SSMS删除数据库 1.2 CREATE SCHEMA&#xff1a;创建新架构1.2.1 Schema简介1.2.2 使用CREATE SCHEMA语句创建…

上门按摩app会员系统框架搭建

一、逻辑分析 用户注册与登录&#xff1a; 新用户需要提供基本信息&#xff0c;如姓名、手机号、邮箱等进行注册。手机号用于接收验证码进行身份验证&#xff0c;邮箱可用于密码找回等功能。注册成功后&#xff0c;用户可以使用手机号 / 邮箱和密码进行登录。登录时需要验证用户…

java项目打包成jar包,并给jmeter使用

1.新建项目 编写代码&#xff0c;导入必要的jar包&#xff0c; 右键点击项目&#xff0c;然后export&#xff0c;选择main函数&#xff0c; package utils; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import java.util.Random; …

【Qt开发】Qt音频

Qt中&#xff0c;视频播放的功能主要是通过 QMediaPlayer类和 QVideoWidget类来实现。在使用这两个类时&#xff0c;需要在 .pro项目配置文件中添加对应的模块——multimedia 和 multimediawidgets。 核心的API如下&#xff1a; 下面来模拟实现音频文件的播放。 Widget::Widget…

椭球面上梯形面积的通用公式和图幅公式

import numpy as np def ellipsoidal_trapezoid_area(a, b, phi1_deg, phi2_deg, delta_L_deg, is_map_sheetFalse): """ 计算椭球面上梯形面积的通用公式和图幅公式 参数: a: 椭球长半轴&#xff08;米&#xff09; b: 椭球…

Pytest 入门:测试函数与测试类详解

概述 在编写自动化测试时,了解如何组织和管理测试用例是至关重要的。Pytest 提供了灵活的方式来定义测试函数和测试类,并支持多层次的设置(setup)和清理(teardown)机制,帮助你更高效地进行代码验证。本文将详细介绍 测试函数 和 测试类 的概念、定义、注意点以及实际操…

大模型的部署简单搭建

大模型的部署搭建 真的好久没有进行博客的写作了,原因,最近的自己生活有点小波动, 最近想想还是有空写一篇文章,这篇文章的描述是学习的当下热门AI 本期,介绍的也是AI相关的LLM(大语言模型) 这个好多人应该都是模糊的,包括我一开始没有学习,就感觉牛逼的不行,今天我们亲自部署实…

基于ssm英语学习交流平台微信小程序源码数据库文档

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了英语学习交流平台小程序的开发全过程。通过分析英语学习交流平台小程序管理的不足&#xff0c;创建了一个计算机管理英语学习交流平台小程序的方案。文章介绍了英…

华为云Flexus+DeepSeek征文|在Dify-LLM平台中开发童话故事精灵工作流AI Agent

华为云FlexusDeepSeek征文&#xff5c;在Dify-LLM平台中开发童话故事精灵工作流AI Agent &#x1f31f;嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 目录…

从实践出发谈如何开发一款好用的RTMP播放器

近几年&#xff0c;RTMP 播放器市场涌现出大量“宣传型”产品。各种“低延迟”“不卡顿”“跨平台”几乎成为标配口号&#xff0c;宣传文案看起来精彩纷呈&#xff0c;实际项目落地时却屡屡暴露问题&#xff1a;启动缓慢、黑屏、音画不同步&#xff0c;甚至连基本的稳定播放都无…

STM32F1\F4\H7 CubeMx 定时器配置

目录 1 定时器使用 1.1 CubeMX 配置 1.1.1 创建工程 1.1.2 时钟配置 1.1.3 定时器配置 1.1.4 GPIO 配置 1.1.5 工程管理 1.2 keil5 配置 1.2.1 添加代码 1.2.2 修改配置 1.2.3 下载程序 2 PWM使用 2.1 CubeMX 配置 2.1.1 PWM 配置 2.1.2 周期\频率计算方法 2.2…

2025中科院2区SCI-状态优化算法Status-based Optimization-附Matlab免费代码

近年来&#xff0c;现实世界的优化问题变得越来越复杂&#xff0c;挑战了传统确定性方法的有效性。本文介绍了基于状态的优化&#xff08;SBO&#xff09;&#xff0c;这是一种受人类对地位提升的渴望启发的高效算法。通过模拟个人如何接近、学习或从高地位人物那里获得资源&am…

MySQL 启动报错 “The server quit without updating PID file“ 的全面解决方案(适用于 5.7/8.0 全版本)

摘要 在 MySQL 数据库运维中&#xff0c;"The server quit without updating PID file" 是常见且棘手的启动错误。本文结合 MySQL 官方文档及实战经验&#xff0c;系统梳理该错误的 10 大核心成因与解决方案&#xff0c;覆盖权限、配置、磁盘、SELinux 等多维度&…

运行时安全引擎RSE

安全之安全(security)博客目录导读 目录 一、RSE 通信层 1.1 消息结构 1.2 源代码文件 1.3 MHU 通信的 API 二、RSE 提供的运行时服务 2.1 运行时服务 API 2.2 软件与 API 层次结构 三、基于 RSE 的 Measured Boot&#xff08;度量启动&#xff09; 3.1 Measured Boo…

Elasticsearch、Faiss、Milvus在向量索引实现上的核心差

Faiss、Elasticsearch&#xff08;ES&#xff09;和Milvus在向量索引实现上的核心差异主要体现在架构定位、索引技术、扩展性及适用场景上&#xff0c;具体对比如下&#xff1a; 一、架构设计与定位‌ ‌维度‌‌Faiss‌‌Elasticsearch‌‌Milvus‌‌核心定位‌单机向量索引…

iot-dc3 项目windows本地运行保姆喂奶级教程

一.源码拉取 当前时间:2025年06月18日12点02分 后台接口服务:https://gitee.com/pnoker/iot-dc3.git 前端:https://gitee.com/pnoker/iot-dc3-web.git 请自行拉取至本地。 二.本地环境准备 其他基础环境先不讲了,如有需要请留言。 idea + VS Code。 IntelliJ IDEA 2024.2.…