当前位置: 首页 > article >正文

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

续接上(2)的实验。其拓扑如下:

路由聚合的负向也就是拆分,在有双出口的情况下,在多出口做流量分担是优选方法之一。

BGP可以根据指定来源而聚合路由,在产生该聚合路由的范围内的条目注入到本地BGP表后再向外分发出去。

实施BGP路由拆分实验,需要注意的是其本质上仍然属于条件性通告,这是Cisco IOS对条件性通告做了大量支持。之所以这种方式被称为路由拆分,是因为其特性上仅仅是对条件性通告的一个非常形象的称呼而已。

实现拆分路由的配置清单如下:

  • 首先在iBGP与eBGP的边界上,配置前缀列表,定义需要拆分出来的明细条目;
  • 再配置可以匹配汇总的路由前缀;
  • 定义前缀列表边界路由器的邻居来源;
  • 对准备要拆分出来的条目设置周知团体属性no-export以用于防环(防止传递出本AS);
  • 定义聚合前缀及来源;
  • 在边界路由器的进程下对其配置iBGP邻居可传递的BGP团体属性;
  • 最后设置注入列表的条进行通告及复制属性。(copy-attributes——将从聚合路由中复制路径属性到注入的路由条目中)

PS://这里先把上个实验(2)的完整配置附上,如做完上个实验保存了配置可忽略以下R1~R5这个为添加拆分实验的配置。添加完成R1~R5的基本配后对上述清单做添加配置附在其后。

R1的基本配置如下:

hostname R1
!
interface Loopback0ip address 172.22.0.1 255.255.255.0
!
interface Loopback1ip address 172.22.1.1 255.255.255.0
!
interface Ethernet0/0ip address 10.0.12.1 255.255.255.0no sh
!
interface Ethernet0/1ip address 10.1.13.1 255.255.255.0no sh
!
ip prefix-list IFN3 seq 5 permit 172.22.3.0/24
!
ip prefix-list IFN3ADV seq 5 permit 172.22.0.0/22
ipv6 ioam timestamp
!
route-map IFN3ADV permit 10match ip address prefix-list IFN3ADV
!
route-map IFN3 permit 10match ip address prefix-list IFN3
!
router bgp 111bgp router-id 1.1.1.1bgp aggregate-timer 0network 172.22.0.0 mask 255.255.255.0network 172.22.1.0 mask 255.255.255.0aggregate-address 172.22.0.0 255.255.252.0 summary-onlyneighbor 10.0.12.2 remote-as 222neighbor 10.1.13.3 remote-as 345neighbor 10.1.13.3 advertise-map IFN3ADV exist-map IFN3
!
end

R2的基本配置如下:

hostname R2
!
interface Loopback0ip address 172.22.2.2 255.255.255.0
!
interface Loopback1ip address 172.22.3.2 255.255.255.0
!
interface Ethernet0/0ip address 10.0.12.2 255.255.255.0no sh
!
interface Ethernet0/1ip address 10.2.24.2 255.255.255.0no sh
!
ip prefix-list IFN3E seq 5 permit 172.22.3.0/24
!
route-map LEAK3 permit 10match ip address prefix-list IFN3E
!
router bgp 222bgp router-id 2.2.2.2bgp aggregate-timer 0network 172.22.2.0 mask 255.255.255.0network 172.22.3.0 mask 255.255.255.0aggregate-address 172.22.0.0 255.255.252.0 summary-onlyneighbor 10.0.12.1 remote-as 111neighbor 10.0.12.1 unsuppress-map LEAK3neighbor 10.2.24.4 remote-as 345
!
end

R3的基本配置如下:

hostname R3
!
interface Loopback3ip 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.3.35.3 255.255.255.0no sh
!
router eigrp 5network 0.0.0.0passive-interface Ethernet0/0
!
router bgp 345bgp router-id 3.3.3.3neighbor IBGP peer-groupneighbor IBGP remote-as 345neighbor IBGP update-source Loopback3neighbor IBGP next-hop-selfneighbor 10.1.13.1 remote-as 111neighbor 192.168.4.4 peer-group IBGPneighbor 192.168.5.5 peer-group IBGP
!
end

R4的基本配置如下:

hostname R4
!
interface Loopback4ip address 192.168.4.4 255.255.255.255
!
interface Ethernet0/0ip address 10.2.24.4 255.255.255.0no sh
!
interface Ethernet0/1ip address 10.3.45.4 255.255.255.0no sh
!
router eigrp 5network 0.0.0.0passive-interface Ethernet0/0
!
router bgp 345bgp router-id 4.4.4.4neighbor IBGP peer-groupneighbor IBGP remote-as 345neighbor IBGP update-source Loopback4neighbor IBGP next-hop-selfneighbor 10.2.24.2 remote-as 222neighbor 192.168.3.3 peer-group IBGPneighbor 192.168.5.5 peer-group IBGP
!
end

R5的基本配置如下:

hostname R5
!
interface Loopback3ip address 172.23.3.5 255.255.255.0
!
interface Loopback5ip address 192.168.5.5 255.255.255.255
!
interface Ethernet0/0ip address 10.3.35.5 255.255.255.0no sh
!
interface Ethernet0/1ip address 10.3.45.5 255.255.255.0no sh
!
router eigrp 5network 0.0.0.0passive-interface defaultno passive-interface Ethernet0/0no passive-interface Ethernet0/1
!
route-map REDCONN permit 10match interface Loopback3
!
router bgp 345bgp router-id 5.5.5.5bgp listen range 192.168.0.0/21 peer-group IBGPredistribute connected route-map REDCONNneighbor IBGP peer-groupneighbor IBGP remote-as 345neighbor IBGP update-source Loopback5
!
end

以上添加完成R1~R5的基本配后对上述清单做添加配置如下:

注释:定义前缀列表的名称——LONG是相对掩码较长的定义;SHORT是聚合后变短的定义;LS是Left Source,即此拓扑图左侧邻居的路由来源;RS则是Right Source,右侧邻居的来源。

R3添加的配置如下:

ip prefix-list LONG seq 5 permit 172.22.1.0/24
!
ip prefix-list SHORT seq 5 permit 172.22.0.0/22
!
ip prefix-list LS seq 5 permit 10.1.13.1/32
!
route-map LONG permit 10set ip address prefix-list LONGset community no-export
!
route-map SHORT permit 10match ip address prefix-list SHORTmatch ip route-source prefix-list LS
!
router bgp 345bgp inject-map LONG exist-map SHORT copy-attributesneighbor IBGP send-community
!
end

R4添加的配置如下:

ip prefix-list LONG seq 5 permit 172.22.3.0/24
!
ip prefix-list SHORT seq 5 permit 172.22.0.0/22
!
ip prefix-list RS seq 5 permit 10.2.24.2/32
!
route-map LONG permit 10set ip address prefix-list LONGset community no-export
!
route-map SHORT permit 10match ip address prefix-list SHORTmatch ip route-source prefix-list RS
!
router bgp 345bgp inject-map LONG exist-map SHORT copy-attributesneighbor IBGP send-community
!
end

添加完成以上配置查看注入的BGP表和邻居来源的表项如下:

应用路由拆分部署后在对等AS可操控的情况下,在本地注入确定的明细路由条目可实现最长匹配原则的选路控制。

PS://在通常情况下,eBGP的防环规则就是不允许as-path属性中有包含本地ASN的路由进入本AS内。

相关文章:

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

续接上(2)的实验。其拓扑如下: 路由聚合的负向也就是拆分,在有双出口的情况下,在多出口做流量分担是优选方法之一。 BGP可以根据指定来源而聚合路由,在产生该聚合路由的范围内的条目注入到本地BGP表后再向…...

无用的知识又增加了:is_assignable means?

std::pair的默认operator被delete掉了,取而代之的是两个enable_if版本。 为什么这么设计,我的理解是在std::map里,已经保存的元素的key值是不能被修改的,比如 注意,下面的代码会修改key值,编译时出现错误…...

MOS的体二极管能通多大电流

第一个问题:MOS导通之后电流方向可以使任意的,既可以从D到S,也可以从S到D。 第二个问题:MOS里面的体二极管电流可以达到几百安培,这也就解释了MOS选型的时候很少考虑体二极管的最大电流,而是考虑DS之间电流…...

C语言【基础篇】之流程控制——掌握三大结构的奥秘

流程控制 🚀前言🦜顺序结构💯 定义💯执行规则 🌟选择结构💯if语句💯switch语句💯case穿透规则 🤔循环结构💯for循环💯while循环💯do -…...

Node.js下载安装及环境配置教程 (详细版)

Node.js:是一个基于 Chrome V8 引擎的 JavaScript 运行时,用于构建可扩展的网络应用程序。Node.js 使用事件驱动、非阻塞 I/O 模型,使其非常适合构建实时应用程序。 Node.js 提供了一种轻量、高效、可扩展的方式来构建网络应用程序&#xff0…...

【PySide6拓展】QCalendarWidget 日历控件

文章目录 PySide6拓展:QCalendarWidget 日历控件前言什么是QCalendarWidget?特点: 如何使用QCalendarWidget?1. 基本用法2. 获取当前选中的日期 QCalendarWidget 常用函数分类介绍1. 日期选择与管理函数2. 日期格式与显示函数3. 日…...

新型人工智能“黑帽”工具:GhostGPT带来的威胁与挑战

生成式人工智能的发展既带来了有益的生产力转型机会,也提供了被恶意利用的机会。 最近,Abnormal Security的研究人员发现了一个专门为网络犯罪创建的无审查AI聊天机器人——GhostGPT,是人工智能用于非法活动的新前沿,可以被用于网…...

【文星索引】搜索引擎项目测试报告

目录 一、项目背景二、 项目功能2.1 数据收集与索引2.2 API搜索功能2.3 用户体验与界面设计2.4 性能优化与维护 三、测试报告3.1 功能测试3.2 界面测试3.3 性能测试3.4 兼容性测试3.5 自动化测试 四、测试总结4.1 功能测试方面4.2 性能测试方面4.3 用户界面测试方面 一、项目背…...

【PostgreSQL内核学习 —— (WindowAgg(一))】

WindowAgg 窗口函数介绍WindowAgg理论层面源码层面WindowObjectData 结构体WindowStatePerFuncData 结构体WindowStatePerAggData 结构体eval_windowaggregates 函数update_frameheadpos 函数 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊…...

Maya快捷键

旋转 ALT鼠标左键 平移 ALT鼠标中键 缩放 ALT鼠标右键 / 滑动鼠标滚轮 切换视图 空格键 [Q] 选择状态 [W] 移动状态 [E] 旋转状态 [R] 绽放状态 1正常显示 2正常也圆滑同时显示 3圆滑显示 4线框显示 5材质显示 6贴图显示 7灯光显示 CTRLZ 撤销命令…...

Go反射指南

概念: 官方对此有个非常简明的介绍,两句话耐人寻味: 反射提供一种让程序检查自身结构的能力反射是困惑的源泉 第1条,再精确点的描述是“反射是一种检查interface变量的底层类型和值的机制”。 第2条,很有喜感的自嘲…...

深入理解 C 语言函数指针的高级用法:(void (*) (void *)) _IO_funlockfile

深入理解 C 语言函数指针的高级用法 函数指针是 C 语言中极具威力的特性,广泛用于实现回调、动态函数调用以及灵活的程序设计。然而,复杂的函数指针声明常常让即使是有经验的开发者也感到困惑。本文将从函数指针的基本概念出发,逐步解析复杂…...

【观察】甲骨文:以AI为中心,开启企业级平台架构“新革命”

知名科技杂志《连线》创始主编凯文凯利曾预测:“在未来的 100 年里,人工智能将超越任何一种人工力量,将人类引领到一个前所未有的时代。” 可以看到,随着近两年AIGC与大模型的快速爆发,AI在千万行业中的重要性愈发突出…...

react native在windows环境搭建并使用脚手架新建工程

截止到2024-1-11,使用的主要软件的版本如下: 软件实体版本react-native0.77.0react18.3.1react-native-community/cli15.0.1Android Studio2022.3.1 Patch3Android SDKAndroid SDK Platform 34 35Android SDKAndroid SDK Tools 34 35Android SDKIntel x…...

C语言从入门到进阶

视频:https://www.bilibili.com/video/BV1Vm4y1r7jY?spm_id_from333.788.player.switch&vd_sourcec988f28ad9af37435316731758625407&p23 //枚举常量 enum Sex{MALE,FEMALE,SECRET };printf("%d\n", MALE);//0 printf("%d\n", FEMALE…...

Python案例--养兔子

兔子繁殖问题是一个经典的数学问题,最早由意大利数学家斐波那契在13世纪提出。这个问题不仅在数学领域具有重要意义,还广泛应用于计算机科学、生物学和经济学等领域。本文将通过一个具体的Python程序,深入探讨兔子繁殖问题的建模和实现&#…...

Mybatis——sql映射文件中的增删查改

映射文件内的增删查改 准备工作 准备一张数据表,用于进行数据库的相关操作。新建maven工程, 导入mysql-connector-java和mybatis依赖。新建一个实体类,类的字段要和数据表的数据对应编写接口编写mybatis主配置文件 public class User {priva…...

goframe 博客分类文章模型文档 主要解决关联

goframe 博客文章模型文档 模型结构 (BlogArticleInfoRes) BlogArticleInfoRes 结构体代表系统中的一篇博客文章,包含完整的元数据和内容管理功能。 type BlogArticleInfoRes struct {Id uint orm:"id,primary" json:"id" …...

人工智能在医疗领域的应用有哪些?

人工智能在医疗领域的应用十分广泛,涵盖了诊断、治疗、药物研发等多个环节,以下是一些主要的应用: 医疗影像诊断 疾病识别:通过分析 X 光、CT、MRI 等影像,人工智能算法能够识别出肿瘤、结节、骨折等病变,…...

学习第七十六行

提高github下载速度方法 1.github转码云 2.https://github.com.cnpmjs.org com后面加东西 对于面试笔试,最好方法刷力扣,1000题包进大厂的...

C#System.Threading.Timer定时器意外回收注意事项

System.Threading.Timer定时器使用时会出现意外回收的情况。具体解释如下: 只要在使用 Timer,就必须保留对它的引用。对于任何托管对象,如果没有对 Timer 的引用,计时器会被垃圾回收。即使 Timer 仍处在活动状态,也会被回收。 实例对比测试 实例 定义两个类,其中一个…...

若依基本使用及改造记录

若依框架想必大家都了解得不少,不可否认这是一款及其简便易用的框架。 在某种情况下(比如私活)使用起来可谓是快得一匹。 在这里小兵结合自身实际使用情况,记录一下我对若依框架的使用和改造情况。 一、源码下载 前往码云进行…...

Java基础教程(007):方法的重载与方法的练习

文章目录 6.5 方法的重载6.6 方法练习数组遍历数组最大值 6.5 方法的重载 在 Java 中,方法的重载是指在同一个类中定义多个方法,这些方法具有相同的名称,但参数列表不同。方法的重载是一种实现多态的方式,允许一个方法名以不同的…...

Day27-【13003】短文,线性表两种基本实现方式空间效率、时间效率比较?兼顾优点的静态链表是什么?如何融入空闲单元链表来解决问题?

文章目录 本次内容总览第四节,两种基本实现方式概览两种基本实现方式的比较元素个数n大于多少时,使用顺序表存储的空间效率才会更高?时间效率比较?*、访问操作,也就是读运算,读操作1、插入,2、删…...

Linux 小火车

1.添加epel软件源 2.安装sl 3. 安装完成后输入: sl...

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(四)

Understanding Diffusion Models: A Unified Perspective(四) 文章概括学习扩散噪声参数(Learning Diffusion Noise Parameters)三种等效的解释(Three Equivalent Interpretations) 文章概括 引用&#xf…...

python 统计相同像素值个数

目录 python 统计相同像素值个数 最大值附近的值 python 统计相同像素值个数 import cv2 import numpy as np import time from collections import Counter# 读取图像 image cv2.imread(mask16.jpg)# 将图像转换为灰度图像 gray_image cv2.cvtColor(image, cv2.COLOR_BGR2…...

YOLOv8:目标检测与实时应用的前沿探索

随着深度学习和计算机视觉技术的迅速发展,目标检测(Object Detection)一直是研究热点。YOLO(You Only Look Once)系列模型作为业界广受关注的目标检测框架,凭借其高效、实时的特点,一直迭代更新…...

docker配置mysql并使用mysql connector cpp编程

mysql 配置mysql使用docker 这里使用docker安装了,比较简洁,不想使用了直接就可以把容器删掉,首先获取下镜像,如下命令 docker pull container-registry.oracle.com/mysql/community-server这里直接默认使用最新版本的mysql了 …...

go理论知识——Go Channel 笔记 [特殊字符]

go理论知识——Go Channel 笔记 📝 1. 基本概念 🧠 1.1 Channel 是什么? Channel 是 Go 语言中用于在不同 Goroutine 之间进行通信的机制。Channel 是类型安全的,意味着你只能发送和接收特定类型的数据。 1.2 Channel 的创建 …...