BGP分解实验·9——路由聚合与条件性通告(1)

embedded/2025/1/21 17:15:33/

路由聚合是有效控制缩减BGP路由表的方法之一,路由聚合的前提和IGP一样,需要有路由目标存在BGP表中,与IGP不同的是,BGP路由聚合可以定义按需抑制路由的能力。

实验拓扑如下所示:

现在开始把从R1的R5的基础配置先准备好,R1的基础配置如下:

hostname R1
!
interface Loopback0ip address 192.168.1.1 255.255.255.0
!
interface Ethernet0/0ip address 10.1.12.1 255.255.255.0no sh
!
router bgp 100bgp router-id 1.1.1.1network 192.168.1.0neighbor 10.1.12.2 remote-as 200
!
end

R2的基础配置如下:

hostname R2
!
interface Loopback0ip address 192.168.2.2 255.255.255.0
!
interface Ethernet0/0ip address 10.1.12.2 255.255.255.0no sh
!
interface Ethernet0/1ip address 10.1.23.2 255.255.255.0no sh
!
interface Ethernet0/2ip address 10.1.24.2 255.255.255.0no sh
!
route-map CONNLOO permit 10match interface Loopback0
!
router bgp 200bgp router-id 2.2.2.2redistribute connected route-map CONNLOOneighbor 10.1.12.1 remote-as 100neighbor 10.1.23.3 remote-as 300neighbor 10.1.24.4 remote-as 400
!
end

R3的基础配置如下:

hostname R3
!
interface Loopback0ip address 10.3.3.3 255.255.255.0
!
interface Loopback1ip address 10.3.33.33 255.255.255.0
!
interface Ethernet0/0ip address 10.1.23.3 255.255.255.0no sh
!
route-map CONNLOO permit 10match interface Loopback0 Loopback1
!
router bgp 300bgp router-id 3.3.3.3redistribute connected route-map CONNLOOneighbor 10.1.23.2 remote-as 200
!
end

R4的基础配置如下:

hostname R4
!
interface Loopback0ip address 10.4.4.4 255.255.255.0
!
interface Loopback1ip address 10.4.44.44 255.255.255.0
!
interface Ethernet0/0ip address 10.1.24.4 255.255.255.0no sh
!
route-map CONNLOO permit 10match interface Loopback0 Loopback1
!
router bgp 400bgp router-id 4.4.4.4redistribute connected route-map CONNLOOneighbor 10.1.24.2 remote-as 200
!

以上是还没有聚合前的基础配置,依次查看R1、R2、R3和R4的BGP表如下:

R2上添加聚合地址的命令后,查看以下BGP表,R1、R2、R3、R4依次是:

router bgp 200
aggregate-address 10.0.0.0 255.248.0.0

直接聚合可以使聚合地址通过R2生成BGP表发给任何一个邻居,BGP聚合前缀的同时也会发送原来的各个明细路由信息(NLRI)。通过追加可选参数:summary-only,可以抑制明细。

router bgp 200
aggregate-address 10.0.0.0 255.248.0.0 summary-only 

可以在R2上抑制后再发送,在R3和R4上可以收到自己本地即下一跳是0.0.0.0的地址产生的明细是不能被抑制的。并且,下一跳是0.0.0.0时,表示该BGP路由起源本地,Weight值为32768。

通过AS-PATH属性可以看出,执行地址聚合的路由器R2成为聚合路由器的始发站,原来的AS-PATH属性丢失。

由于配置了地址聚合,所以在R2的路由表中会产生一条指向Null0的汇总路由,主要是为了避免产生路由环路。

可以通过设置参数as-set使BGP聚合路由不丢失原来的AS-PATH属性,从而避免路由环路。以下是继续在R2上继续更改聚合属性参数的示例为:

router bgp 200
aggregate-address 10.0.0.0 255.248.0.0 summary-only as-set 

可以看到通过在R2上设置了as-set参数,改变AS-PATH的无序属性,AS-PATH包含了被聚合路由中所有明细路由所在的AS号的集合中。

聚合路由是因为携带了所有明细路由的AS-PATH属性,所以该聚合路由在R3和R4中的BGP表没有出现,从而可以有效的避免路由环路。可以使用命令neighor ip-address allowas-in可以允许在AS-PATH属性中出现本AS的BGP路由条目进入本AS,不过这需要网络管理员仔细衡量网络的路径,因为这样有可能出现环路风险。

eBGP更新路由最主要的防环原则就是使用AS-PATH属性,在BGP对等体之间传递的每条路由都携带它所经过的AS号有序列表,如果该路由被通告给它始发的AS,该AS路由器将在AS号序列表中看到自己的AS号,它将不接受该路由。

在R3上需要手动开启入向软配置:

router bgp 300
neighbor 10.1.23.2 soft-reconfiguration inbound 

以上输出可以看到R3没有收到聚合路由10.0.0.0/13的条目,这是因为它发现该路由条目中的AS-PATH属性列表中包含自己的AS号码,所以不接收。R4也是一样的原理。

如果有特殊需求,要有条件的通告时,可以在能够控制聚合路由的路由器上抑制部分明细路由条目,通过配置aggregate-address的额外参数suppress-map来达成。

在R2上添加配置如下:

ip prefix-list 1 seq 5 permit 10.3.33.0/24
ip prefix-list 1 seq 10 permit 10.4.44.0/24route-map SRA permit 10match ip address prefix-list 1router bgp 200
aggregate-address 10.0.0.0 255.248.0.0 as-set summary-only suppress-map SRA

因为R3除了接收来自R2已经抑制路由外,本地自己生产的路由是没法通过聚合路由器控制而抑制掉的路由条目;R4也一样。


http://www.ppmy.cn/embedded/155825.html

相关文章

51c自动驾驶~合集48

我自己的原文哦~ https://blog.51cto.com/whaosoft/13133866 #UDMC 考虑轨迹预测的统一决策控制框架 论文:https://arxiv.org/pdf/2501.02530 代码:​​https://github.com/henryhcliu/udmc_carla.git​​ 1. 摘要 当前的自动驾驶系统常常在确…

HTTPS与HTTP:区别及安全性对比

目录 一、基础概念 二、安全性对比 1. 加密传输 2. 身份验证 3. 数据完整性 4. 端口 5. 浏览器展示方式 三、使用场景与性能 1. 使用场景 2. 性能开销 四、成本与维护 五、搜索引擎优化(SEO) 六、案例分析 七、隐私保护与中间人攻击 八、…

PHP异步非阻塞MySQL客户端连接池

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…

Rust语言的软件开发工具

Rust语言的软件开发工具及其应用 引言 Rust作为一门相对年轻的系统编程语言,凭借其安全性、高性能和并发性,逐渐在开发者中赢得了广泛的认可。Rust不仅适用于系统级编程,还可以用于Web开发、嵌入式编程以及数据科学等领域。为了支持Rust语言…

会话_JSP_过滤器_监听器_Ajax

第8章 会话_JSP_过滤器_监听器_Ajax 8.1 会话 8.1.1 会话管理概述 1、为什么需要会话管理 HTTP是无状态协议: 无状态就是不保存状态,即无状态协议(stateless),HTTP协议自身不对请求和响应之间的通信状态进行保存,也就是说&…

【机器学习实战入门】使用OpenCV和Keras的驾驶员疲劳检测系统

嗜睡驾驶者警报系统 防止司机疲劳驾驶警报系统 中级 Python 项目 - 司机疲劳检测系统 疲劳检测是一种安全技术,能够预防因司机在驾驶过程中入睡而造成的事故。 本中级 Python 项目的目标是建立一个疲劳检测系统,该系统将检测到一个人的眼睛闭合了一段时…

一个产品从开发到上线需要几个步骤

一、需求分析与规划 1. 需求收集 与客户、市场团队、用户等进行沟通,收集对产品的功能、性能、外观、用户体验等方面的需求。可以通过问卷调查、用户访谈、竞品分析等方式获取需求信息。 2. 需求分析 对收集到的需求进行详细分析,明确需求的优先级、…

Leetcode——链表:143.重排链表

题目 思路 首先考虑特殊情况,链表为空,或者链表只有一个元素,此时直接返回 找到中间位置,将后半部分的链表翻转,得到新链表,将后半部分链表的节点交替插入原链表 寻找链表中间节点 使用快慢指针法 设置…