BGP第二日
上图为今日所用拓扑 ,其中R1和R4,R3和R5为EBGP邻居,R1和R3为IBGP邻居,AS200区域做OSPF动态路由
一.BGP建立邻居的六种状态
1.idle
空闲状态:建立邻居最初的状态
2.Connect
连接状态:在这个状态下会尝试建立TCP连接
3.Active
活跃状态:TCP建立连接失败会进入这个状态,一直失败则一直在这个状态,若建立成功则由Active->OpenSent状态
4.OpenSent
Open报文发送状态:在TCP建立连接成功后会进入这个状态,这个状态下双方会发送Open报文以尝试建立邻居关系
5.OpenConfirm
Open报文确认状态:收到对方的Open报文后就进入这个状态了,这个状态下会向对方发送KeepAlive保活报文以维持邻居关系
6.Established
建立状态:收到对方的KeepAlive保活报文后进入的状态,在这个状态下邻居关系达到完满
二.流量黑洞
出现原因:
当路由下一跳地址非直连的网段ip地址就有可能出现流量黑洞,其原因是路由表是按照目的地址寻址的,当路由下一跳非直连网段ip时,下一跳所在路由器不一定有目的ip的路由条目,这时就会将路由数据传到Null口,形成流量黑洞。
在IBGP中,若两台建立IBGP路由器之间有没有配置IBGP的路由设备时,就会出现流量黑洞问题,虽然两台IBGP路由器学习了对方所搬运的路由,但是由于中间路由器没有所搬运路由的路由信息,所以外部AS设备无法相互连接。
解决方案:
1.配置静态路由:
在中间路由器R2中配置两条静态路由:
[R2]ip route-s 10.10.4.4 32 192.168.12.1
[R2]ip route-s 10.10.5.5 32 192.168.23.3
有了这两条静态路由,中间设备就有了目的IP地址为外部AS区域的路由信息,就可以继续路由转发了。这种方法看似完美,实际工作中外部AS区域路由何其之多,BGP搬运多少条路由中间设备均要配置多少条静态路由,何其繁琐,实不可取。
2.在ospf中引入外部BGP路由:
[R1]ospf 1
[R1-ospf-1]import-route bgp
[R3]ospf 1
[R3-ospf-1]import-route bgp
这样ASBR就会生成五类LSA通告全区域外部AS某一IP的路由信息了,这样做也是看似合理,因为BGP搬运的路由条数庞大,OSPF所引入BGP路由条数也很庞大,会产生大量的五类LSA,对ASBR设备压力非常大,虽然可以用第五类路由聚合技术缓解压力,但治标不治本,且BGP所引出的问题最终还是想在BGP中解决。(将五层问题转换成三层问题这种解决方法会伤了五层高傲的心的)
3.IGBP全互联
既然问题是由两台IBGP路由器之间有非IBGP路由器导致的,那我们直接让非IBGP路由器成为IBGP路由器不就成了?
[R1]bgp 200
[R1-bgp]peer 192.168.12.2 as 200
[R1-bgp]peer 192.168.12.2 next-hop-local #IBGP邻居间传路由时不会修改下一跳
[R2]bgp 200
[R2-bgp]peer 192.168.12.1 as 200
[R2-bgp]peer 192.168.23.3 as 200
[R3]bgp 200
[R3-bgp]peer 192.168.23.2 as 200
[R3-bgp]peer 192.168.23.2 next-hop-local
这样R2就有从IBGP邻居那边学来的外部AS区域路由了,看似又是很完美但是图示仅仅一台中间设备就要建立3次IBGP邻居,若总共有N台路由器则要建立N*(N-1)/2次IBGP邻居了,工程量不可谓不大,因此,也不可取。
先卖个关子,先不“引玉”,讲讲别的先。
三.BGP通告原则
1.BGP路由器会将自己状态码为“*>”的路由给状态为“Established”的邻居
2.从EBGP那边搬运的路由会传递给所有邻居
3.从IBGP那边搬运的路由不会传递给别的IBGP邻居
由于第三条规则,引出了下面我们要讲的内容。
四.IBGP水平分割 ps:也叫内内不相传
出现原因:
在同一个AS中,若有三台及以上的IBGP邻居存在,则有可能产生路由环路(互相来回传递从EBGP邻居那边搬运来的路由),为了防止这种现象的出现,出现了IBGP水平分割的规则
打开一扇门,就关闭一扇窗
IBGP水平分割解决了IBGP路由环路问题,可却导致AS内部BGP无法传递
解决方案:
1)IBGP全互联
2)Route Reflector 路由反射器
3)BGP联盟 (已基本淘汰)
4)OSPF 引入BGP
5)静态路由
五.路由反射器
1.Role:
1)RR :Router Reflector
2)Client
3)Non-Client
2.路由反射器反射规则
1)从Non-Client设备上搬运的路由,会传递给EBGP邻居,会反射给Client设备,但是不会反射给其它Non-Client设备 (非非不反射规则)
2)从Client设备上搬运的路由,会传递给EBGP邻居,会反射给Non-Client设备和Client设备
3)从EBGP邻居设备上搬运的路由,会反射给Client设备、Non-Client设备
3.隐患
路由反射器突破了IBGP的水平分割,但也面临着路由环路的风险
4.解决方案:
在BGP报文内加入两个字段:
Origin-id:始发id,集群内部Client与RR间防环
Cluster_id:簇列表,集群间防环
相关文章:
BGP第二日
上图为今日所用拓扑 ,其中R1和R4,R3和R5为EBGP邻居,R1和R3为IBGP邻居,AS200区域做OSPF动态路由 一.BGP建立邻居的六种状态 1.idle 空闲状态:建立邻居最初的状态 2.Connect 连接状态:在…...
rabbitmq集群创建admin用户之后,提示can access virtual hosts是No access状态
问题描述: 因业务需要使用的rabbitmq是3.7.8版本的,rabbitmq在3.3.0之后就允许使用guest账号的权限了,所以需要创建一个administrator标签的用户。 如下操作创建的用户: 创建完成之后就提示如下的报错: 注:…...
ARM功耗管理之多核处理器启动
安全之安全(security)博客目录导读 思考:SecureBoot?多核处理器启动流程?PSCI启动方式? 一般嵌入式系统使用的都是对称多处理器(Symmetric Multi-Processor, SMP)系统,包含了多个cpu, 这几个cp…...
java使用easypoi模版导出word详细步骤
文章目录 第一步、引入pom依赖第二步、新建导出工具类WordUtil第三步、创建模版word4.编写接口代码5.导出结果示例 第一步、引入pom依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><…...
Android 内部保持数据的方式
Android内部保持数据的方式主要有五种,每种方式都有其特定的用途和优点。以下是详细的介绍: SQLite数据库 定义:SQLite是一个轻量级的、跨平台的数据库,所有的信息都存储在单一文件内,占用内存小,并且支持…...
uniapp 表格,动态表头表格封装渲染
1.接口表格数据: {"headers": [{"label": "实例名","name": "v1","order": 1,"hide": false,"dateTypeValue": null},{"label": "所属科室","name&quo…...
beyond Compare连接 openWrt 和 VsCode
连接步骤总结 1. 新建会话 -> 文件夹比较 2.点击浏览文件夹 3.在弹出页面 配置 ftp 3.1)选中ftp 配置文件 3.2)选中ssh2 3.3)填写我们需要远端连接的主机信息 先点击连接并浏览 得到下方文件夹 弹出无效登录,说明需要密码 我们返回右键刚刚创建的新 …...
量化机器人能否识别市场机会?
量化机器人的设计和应用是为了通过高级算法和大数据分析,精确地识别和把握市场中的交易机会。这些机器人的能力不仅仅局限于执行预定的交易策略,更包括在复杂和快速变化的市场环境中识别利润机会。 首先,量化机器人能够处理和分析大量的市场…...
香橙派AIpro开发板评测:部署yolov5模型实现图像和视频中物体的识别
OrangePi AIpro 作为业界首款基于昇腾深度研发的AI开发板,自发布以来就引起了我的极大关注。其配备的8/20TOPS澎湃算力,堪称目前开发板市场中的顶尖性能,实在令人垂涎三尺。如此强大的板子,当然要亲自体验一番。今天非常荣幸地拿到…...
MongoDB教程(二):mongoDB引用shell
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、MongoD…...
A133 Android10 root修改
1.前言 客户应用需求root相关的权限,我们需要修改系统的权限才可以满足客户需求 2.修改方法 frameworks层:注释掉 diff --git a/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp b/frameworks/base/core/jni/com_android_internal_os_…...
实验场:在几分钟内使用 Bedrock Anthropic Models 和 Elasticsearch 进行 RAG 实验
作者:来自 Elastic Joe McElroy, Aditya Tripathi 我们最近发布了 Elasticsearch Playground,这是一个新的低代码界面,开发人员可以通过 A/B 测试 LLM、调整提示(prompt)和分块数据来迭代和构建生产 RAG 应用程序。今天…...
代理详解之静态代理、动态代理、SpringAOP实现
1、代理介绍 代理是指一个对象A通过持有另一个对象B,可以具有B同样的行为的模式。为了对外开放协议,B往往实现了一个接口,A也会去实现接口。但是B是“真正”实现类,A则比较“虚”,他借用了B的方法去实现接口的方法。A…...
Laravel - laravel-websockets 开发详解
1.我laravel-websockets 的开发环境 Laravel 9.0Laravel WebSockets (最新版)Laravel Vite 2. 安装服务器端包 beyondcode/laravel-websockets 运行以下命令安装laravel-websockets composer require beyondcode/laravel-websockets 安装完后&#…...
vue3 学习笔记04 -- axios的使用及封装
vue3 学习笔记04 – axios的使用及封装 安装 Axios 和 TypeScript 类型定义 npm install axios npm install -D types/axios创建一个 Axios 实例并封装成一个可复用的模块,这样可以在整个应用中轻松地进行 API 请求管理。 在 src 目录下创建一个 services 文件夹&…...
键盘快捷键设置录入
效果图: 代码: import React, {useContext, useEffect, useRef} from react import {message} from "antd"; import lodash from "lodash"; import {StateContext} from ../../index.tsx import {useUpdateEffect} from "ahoo…...
刷题Day49|647. 回文子串、516.最长回文子序列
647. 回文子串 647. 回文子串 - 力扣(LeetCode) 思路:递推公式的含义是[i, j]内的子串是否为回文子串(bolean[][])。一共两种情况:s[i] s[j],i和j相差1以外就得判断中间包含的的字符串是否为回文了&…...
关于transformers库验证时不进入compute_metrics方法的一些坑
生成式任务输入就是标签 transformers在进入compute_metrics前会有一个判断,源码如下: # 版本 transformers4.41.2 # 在trainer.py 的 3842 行 # Metrics! if (self.compute_metrics is not Noneand all_preds is not Noneand all_labels is not Nonea…...
苹果提出RLAIF:轻量级语言模型编写代码
获取本文论文原文PDF,请在公众号【AI论文解读】留言:论文解读 代码生成一直是一个充满挑战的领域。随着大型语言模型(LLM)的出现,我们见证了在自然语言理解和生成方面的显著进步。然而,当涉及到代码生成&a…...
[leetcode] shortest-subarray-with-sum-at-least-k 和至少为 K 的最短子数组
. - 力扣(LeetCode) class Solution { public:int shortestSubarray(vector<int>& nums, int k) {int n nums.size();vector<long> preSumArr(n 1);for (int i 0; i < n; i) {preSumArr[i 1] preSumArr[i] nums[i];}int res n…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...
