BGP扩展知识总结
一、BGP的宣告问题
- 在BGP协议中每台运行BGP的设备上,宣告本地直连路由
- 在BGP协议中运行BGP协议的设备,来宣告通过IGP学习到的未运行BGP协议设备产生的路由;(常见)

在BGP协议中宣告本地路由表中路由条目时,将携带本地到达这些目标的IGP度量值;传递到BGP邻居处;其他AS设备便于选择离目标最近的EBGP邻居;
若一台BGP设备,通过IBGP邻居学习到一条路由,存在度量值;同时本地需要将这些路由传输给本地其他的EBGP邻居时,只能将度量取消,按0进行传输;导致选路参考值不优;故,建议在一个AS中若需要BGP设备宣告某条路由,那么该AS内所有运行BGP协议的设备均宣告;--便于其他AS的BGP设备判断自己的EBGP邻居,哪台离目标更近;
(一台设备宣告,会将自己的度量带着,其他没有宣告的设备会通过BGP学到第一台设备宣告的路由,并且将度量洗为0,会导致选路不佳)
二、BGP的自动汇总问题
当代的路由器设备,默认就关闭了BGP的自动汇总功能;
自动汇总规则与正常BGP协议邻居共享的路由,或在BGP协议通过network宣告命令产生的路由条目无关;
仅针对从IGP重发布到BGP的路由条目;
BGP中的宣告可以理解为是逐条的重发布IGP路由到BGP;
BGP中中将IGP重发布到BGP,可以理解为是批量的将IGP路由宣告到BGP 协议;
但两种操作产生的路由条目其起源属性不同,宣告优于重发布;
在开启了自动汇总的前提下,重发布进入的路由将不携带子网掩码,按主类掩码进入;不携带本地到达目标的度量值,度量为0;若关闭自动汇总,进入路由将正常携带掩码,且携带度量;此时和宣告路由仅起源属性不同;故建议不要开启自动汇总;
既然在一个AS中建议所有运行BGP协议的设备均宣告相同路由,那么若进行重发布配置,也建议所有运行BGP协议的设备均进行重发布;
三、BGP的认证 ---邻居间进行身份核实的方法;
[r1-bgp]peer 12.1.1.2 password cipher cisco123
邻居间需要秘钥一致,传递出去的秘钥必然被加密
四、BGP的聚合(汇总)
1.不是BGP的标准汇总思路,而是利用了BGP的宣告的特征来简化了汇总配置量;
宣告特征—本地路由表中任何方式产生的路由均可被BGP宣告;
不逐条宣告明细路由,仅在更新源BGP设备上配置一条到达聚合地址的空接口防环路由,然后将其宣告到BGP协议中;
在实际工程中,由于AS之间一定存在大量的EBGP邻居关系;因此仅汇总不一定能做到优选路径,必须在传递聚合条目的同时,再传递部分的明细路由来进行选路控制;
以上的汇总配置完成后,若还需要同时传输部分明细路由,再逐一宣告需要传递的明细路由即可;
2.标准的BGP聚合配置
- 先逐条宣告所有的明细路由
- 再在更新源路由上进行聚合配置,自动产生空接口防环路由
[r5-bgp]aggregate 100.100.0.0 22 此时聚合与所有明细条目均传递[r5-bgp]aggregate 100.100.0.0 22 detail-suppressed 仅传递聚合条目,所有明细路由被抑制
若需要在传递聚合条目的同时,再传递部分的明细路由;需要进行路径传递干涉策略;
五、路由传递干涉策略
1.抑制列表 – 先让设备将所有路由传递出去,再调用抑制策略(只能在汇总的时候才能用)
[r5]ip ip-prefix a permit 100.100.1.0 24 抓流量[r5]route-policy a permit node 10[r5-route-policy]if-match ip-prefix a 匹配[r5-route-policy]q[r5]bgp 3[r5-bgp]aggregate 100.100.0.0 22 suppress-policy a被抑制调用时,表中允许的流量最终反而被抑制传输
2.Route-map 在BGP中将route-map当分发列表用
[r5]ip ip-prefix b permit 100.100.1.0 24 [r5]route-policy b deny node 10[r5-route-policy]if-match ip-prefix b[r5-route-policy]q[r5]route-policy b permit node 20 空表允许所有[r5-route-policy]q[r5]bgp 3[r5-bgp]peer 4.4.4.4 route-policy b ? 在邻居间直接调用export Specify export policy 控制层面的出项import Specify import policy 控制层面的入向[r5-bgp]peer 4.4.4.4 route-policy b export
3.分发列表
[r5]ip ip-prefix c deny 100.100.1.0 24[r5]ip ip-prefix c permit 0.0.0.0 0 less-equal 32 允许所有[r5]bgp 3[r5-bgp]filter-policy ip-prefix c export(控制层面方向) 所有接口都会执行这个策略,不能精确
4.前缀列表 – BGP协议中可以直接将前缀列表作为分发列表调用(常用)
[r5]ip ip-prefix d deny 100.100.1.0 24[r5]ip ip-prefix d permit 0.0.0.0 0 less-equal 32[r5]bgp 3[r5-bgp]peer 4.4.4.4 ip-prefix d export
六、有条件的打破IBGP水平分割
IBGP水平分割----AS-BY-AS,一个条目在一个AS中传递属性不变
在一个AS中一台设备运行了BGP协议,那么正常应该都连接了其他的AS,存在EBGP邻居关系;又由于IBGP的水平分割规则,导致从外部学习到的路由传递给本地AS时,需要和本AS中所有运行BGP协议的设备逐一建立IBGP邻居关系;----两两间均为IBGP邻居关系,建立数量成指数上升;
所谓有条件的打破,是指在保障无环的前提下消除IBGP水平分割机制;--AS-BY-AY
1.路由反射器
角色:RR反射器 客户端 非客户端 只有RR才能决定该不该反射
无论客户端还是非客户端都必须是RR的IBGP邻居; 由RR作为中心点与多个客户端、非客户端构成一个簇(组);在一个簇内存在一台RR和至少一台客户端;也可以一台RR和多个客户端、多个非客户端;或者一个RR与多个客户端,没有非客户端;

反射规则:不优路由不能被传递,自然也不能被反射;
- RR从一个EBGP邻居处学习到的路由,可以传输给客户端、非客户端,已经本地的其他EBGP邻居;
- RR从一个客户端学习到的路由,可以传递给本地其他的客户端、非客户端、其他的EBGP邻居;
- RR从一个非客户端学习到的路由,可以传递给本地的其他客户端、EBGP邻居;不能传递给其他的非客户端;(非非不传)
[r3-bgp]peer 2.2.2.2 reflect-client 邻居2.2.2.2成为本地的客户端,同时本地成为RR
2.联邦
将一个大AS,逻辑的分为多个小AS(联邦);对外依然遵循大AS号传递规则;
但小AS间为联邦内的EBGP邻居关系,可以像EBGP关系一样传递路由,但默认不对属性进行修改;
联邦内的EBGP关系,传递的路由其属性遵循IGBP关系;传递性遵循EBGP关系;

- 所有操作基于小AS号进行;
- AS内所有设备需要定义自己所在的大AS号
- 小AS间的BGP设备需要告知对端的小AS号
[r3]bgp 64512[r3-bgp]router-id 3.3.3.3[r3-bgp]confederation id 2 申明本地的大AS号[r3-bgp]confederation peer-as 64513 告知本地直连的其他小AS号,若没有直连到其他小AS不用配置[r3-bgp]peer 2.2.2.2 as-number 64512[r3-bgp]peer 2.2.2.2 connect-interface LoopBack 0[r3-bgp]peer 4.4.4.4 as-number 64513[r3-bgp]peer 4.4.4.4 connect-interface LoopBack 0[r3-bgp]peer 4.4.4.4 ebgp-max-hop 2
注:在实际工程中,反射器与联邦技术协同工作在一个网络拓扑中;
[r2]bgp 64512
[r2-bgp]peer 172.16.1.3 next-hop-local 该命令表面上意思为本地将路由传递给邻居172.16.1.3时,修改BGP条目中下一跳地址为本地R2的ip地址;
但实际仅针对R2从本地的EBGP邻居学习到的路由传递给172.16.1.3才修改;本地从其他IBGP邻居处学习到的所有路由再传递给172.16.1.3这个IBGP邻居时不修改下一跳地址;
意义在于,IBGP邻居间传递路由在一个AS内部,若贸然修改属性,极易出现环回--维持AS-BY-AS特性
七、BGP在MA网络中下一跳问题:

- 图中1、2、3在一个MA网段,但不在同一AS;R2和R3通过物理接口建立邻居关系
正常R1从R2学习到的R4的路由,下一跳自动显示为R3(最佳路径),若用环回建邻,下一条为正常R2
原理:
- R1/2/3必须使用MA网段的物理接口建立邻居关系
- ICMP重定向开启(默认开启) --- 一台路由器在转发一个流量时,发现流量在本地的入口和查询完路由表的出口为同一接口时,将告知上一跳设备本地的下一跳地址;帮助上一跳设备找到最佳的下一跳地址;
在BGP中仅查看某个邻居发送或接收到BGP路由
[r1]display bgp routing-table peer 10.1.1.2 received-routes
仅查看本地从邻居10.1.1.2接收到BGP路由
[r1]display bgp routing-table peer 10.1.1.2 advertised-routes
仅查看本地发送给邻居10.1.1.2的BGP路由
相关文章:
BGP扩展知识总结
一、BGP的宣告问题 在BGP协议中每台运行BGP的设备上,宣告本地直连路由在BGP协议中运行BGP协议的设备,来宣告通过IGP学习到的未运行BGP协议设备产生的路由;(常见) 在BGP协议中宣告本地路由表中路由条目时,将…...
华为OD-C卷-按身高和体重排队[100分]
题目描述 某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列;对于身高体重都相同的人,维持原有的编号顺序关系。请输出排列后的学生编号…...
云原生(八)、Kubernetes基础(一)
K8S 基础 # 获取登录令牌 kubectl create token admin --namespace kubernetes-dashboard1、 NameSpace Kubernetes 启动时会创建四个初始名字空间 default:Kubernetes 包含这个名字空间,以便于你无需创建新的名字空间即可开始使用新集群。 kube-node-lease: 该…...
Linux 系统解压缩文件
Linux系统,可以使用unzip命令来解压zip文件 方法如下 1. 打开终端,在命令行中输入以下命令来安装unzip: sudo apt-get install unzip 1 2. 假设你想要将zip文件解压缩到名为"target_dir"的目录中,在终端中切换到目标路…...
linux如何使 CPU使用率保持在指定百分比?
目录 方法1:(固定在100%) 方法2:(可以指定0~100%) 方法3:使用ChaosBlade工具(0~100%) 方法1:(固定在100%) for i in seq 1 $(cat /pro…...
LLMs之Morphic:Morphic(一款具有生成式用户界面的人工智能答案引擎)的简介、安装、使用方法之详细攻略
LLMs之Morphic:Morphic(一款具有生成式用户界面的人工智能答案引擎)的简介、安装、使用方法之详细攻略 目录 Morphic的简介 1、技术栈 Morphic的安装和使用方法 1、克隆仓库 2、安装依赖 3、填写密钥 4、本地运行应用 部署 Morphic的简介 2024年4月初发布ÿ…...
[react] useState的一些小细节
1.无限循环 因为setState修改是异步的,加上会触发函数重新渲染, 如果代码长这样 一秒再修改,然后重新触发setTImeout, 然后再触发,重复触发循环 如果这样呢 还是会,因为你执行又会重新渲染 2.异步修改数据 为什么修改多次还是跟不上呢? 函数传参解决 因为是异步修改 ,所以…...
蓝桥杯【第15届省赛】Python B组
这题目难度对比历届是相当炸裂的简单了…… A:穿越时空之门 【问题描述】 随着 2024 年的钟声回荡,传说中的时空之门再次敞开。这扇门是一条神秘的通道,它连接着二进制和四进制两个不同的数码领域,等待着勇者们的探索。 在二进制…...
CSS aspect-ratio属性设置元素宽高比
aspect-ratio 是CSS的一个属性,用于设置元素的期望宽高比。它设置确保元素保持特定的比例,不受其内容或容器大小的影响。 语法: aspect-ratio: <ratio>;其中 <ratio> 是一个由斜杠(/)分隔的两个数字&…...
Jones矩阵符号运算
文章目录 Jones向量Jones矩阵 有关Jones矩阵、Jones向量的基本原理,可参考这个: 通过Python理解Jones矩阵,本文主要介绍sympy中提供的有关偏振光学的符号计算工具 Jones向量 Jones向量是描述光线偏振状态的重要工具,例如一个偏振…...
解决 App 自动化测试的常见痛点!
App 自动化测试中有些常见痛点问题,如果框架不能很好的处理,就可能出现元素定位超时找不到的情况,自动化也就被打断终止了。很容易打消做自动化的热情,导致从入门到放弃。比如下面的两个问题: 一是 App 启动加载时间较…...
2016NOIP普及组真题 1. 买铅笔
线上OJ: 一本通:http://ybt.ssoier.cn:8088/problem_show.php?pid1973 核心思想: 向上取整的代码 (m (n-1))/n 。(本题考点与2023年J组的第一和第二题一样) 比如需要买31支笔,每包30支,则需要…...
机器学习—数据集(二)
1可用数据集 公司内部 eg:百度 数据接口 花钱 数据集 学习阶段可用的数据集: sklearn:数据量小,方便学习kaggle:80万科学数据,真实数据,数据量大UCI:收录了360个数据集,覆盖科学、生活、经济等…...
华为S5735S核心交换配置实例
以下脚本实现创建vlan2,3,IP划分,DHCP启用,接口划分,ssh,telnet,http,远程登录启用 默认用户创建admin/admin123提示首次登录需要更改用户密码S5735产品手册更多功能配置,移步官网参考手册配置 system-viewsysname t…...
Mysql主从复制安装配置
mysql主从复制安装配置 1、基础设置准备 #操作系统: centos6.5 #mysql版本: 5.7 #两台虚拟机: node1:192.168.85.111(主) node2:192.168.85.112(从)2、安装mysql数据库 #详细安装和卸载的步骤…...
【刷题】图论——最小生成树:Prim、Kruskal【模板】
假设有n个点m条边。 Prim适用于邻接矩阵存的稠密图,时间复杂度是 O ( n 2 ) O(n^2) O(n2),可用堆优化成 O ( n l o g n ) O(nlogn) O(nlogn)。 Kruskal适用于稀疏图,n个点m条边,时间复杂度是 m l o g ( m ) mlog(m) mlog(m)。 Pr…...
使用uniapp实现小程序获取wifi并连接
Wi-Fi功能模块 App平台由 uni ext api 实现,需下载插件:uni-WiFi 链接:https://ext.dcloud.net.cn/plugin?id10337 uni ext api 需 HBuilderX 3.6.8 iOS平台获取Wi-Fi信息需要开启“Access WiFi information”能力登录苹果开发者网站&…...
回忆杀之手搓当年搓过的Transformer
整体代码 import mathimport paddle import paddle.nn as nn import paddle.nn.functional as Fclass MaskMultiHeadAttention(nn.Layer):def __init__(self, hidden_size, num_heads):super(MaskMultiHeadAttention, self).__init__()assert hidden_size % num_heads 0, &qu…...
【AR】使用深度API实现虚实遮挡
遮挡效果 本段描述摘自 https://developers.google.cn/ar/develop/depth 遮挡是深度API的应用之一。 遮挡(即准确渲染虚拟物体在现实物体后面)对于沉浸式 AR 体验至关重要。 参考下图,假设场景中有一个Andy,用户可能需要放置在包含…...
python-pytorch实现skip-gram 0.5.001
python-pytorch实现skip-gram 0.5.000 数据加载、切词准备训练数据准备模型和参数训练保存模型加载模型简单预测获取词向量画一个词向量的分布图使用词向量计算相似度参考数据加载、切词 按照链接https://blog.csdn.net/m0_60688978/article/details/137538274操作后,可以获得…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...
