BGP笔记的基本概要
技术背景:
在只有IGP(诸如OSPF、IS-IS、RIP等协议,因为最初是被设计在一个单域中进行一个路由操纵,因此被统一称为Interior Gateway Protocol,内部网关协议)的时代,域间路由无法实现一个全局路由控制(如,精细的操纵一个路由在不同域之间的一个流量路径)或产生次优路径(由于IGP只能看到自己域内的一个路由,这种情况通常发生在两个路由协议之间的一个双点双向引入)
后面发明了EGP(一个具体的协议,而现在我们常说的EGP则是一类协议统称,外部网关协议)被用于实现在AS之间动态交换路由信息。但是EGP设计得比较简单,只发布网络可达的路由信息,而不对路由信息进行优选,同时也没有考虑环路避免等问题,很快就无法满足网络管理的要求
BGP是为取代当初的EGP而设计的另一种外部网关协议。不同于最初的EGP,BGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息
AS的基本概念:
OSPF、IS-IS等IGP在组织机构网络内部广泛应用,随着网络规模扩大,网络中路由数量不断增长,IGP已无法管理大规模网络,AS(Autonomous System,自治系统)的概念由此0诞生。
AS是指在同一机构管理下,使用同一个选路策略的设备集合
AS之间需要直连链路,或通过VPN协议构造逻辑直连(例如GRE Tunnel)进行邻居建立
AS之间可能是不同的机构、公司,相互之间无法完全信任,使用IGP可能存在暴露AS内部的网络信息的风险。
BGP概述:
整个网络规模扩大,路由数量进一步增加,路由表与LSDB规模变大,路由收敛变慢,设备性能消耗加大
为此在AS之间专门使用BGP协议进行路由传递,相较于传统的IGP路由协议:
1)BGP基于TCP,只要能够建立TCP连接即可建立BGP
2)只传递路由信息,不会暴露AS内的拓扑
BGP报文格式与报文概述:
报文格式:
L2 Header | IP Header | TCP Header | BGP Packet | CRC
BGP Packet(BGP报文):
1.Open:在TCP连接建立成功之后,协商BGP对等体参数,建立对等体关系
2.Keepalive:在BGP对等体建立完成之后,以60秒为周期轮询发送以维护BGP对等体关系——拓展,HoldTime时间默认为Keepalive时间的3倍
3.Update:在BGP对等体关系建立完成之后,若有路由需要发送或路由发生变化时,则发送BGP路由更新报文
4.Notification:BGP在运行中发现错误时,向BGP对等体通告错误信息,然后中止对等体关系
5.Route-refresh:用于改变路由策略后请求BGP对等体重新发送路由信息,只有支持路由刷新能力的设备会发送和响应此报文
BGP对等体关系概述:
说明
BGP存在两种对等体:EBGP与IBGP
IBGP概述:
位于相同自治系统的BGP Speaker(BGP发言者)之间的BGP对等体关系,通常用环回口配置IBGP邻居关系
EBGP概述:
位于不同自治系统的BGP Speaker之间的BGP对等体关系,并且两台EBGP路由器之间peer所指定的对等体地址必须路由可达
EBGP与IBGP的BGP路由传递:
EBGP之间传递路由时,通常会改变下一跳,但若是本端EBGP设备收到对端发来的EBGP路由,然后再传递给IBGP,则下一跳不会改变,下一跳仍然在与EBGP建邻的直连口。因此,通常需要修改下一跳为本设备建立IBGP关系的源地址
TCP连接源地址:
1)缺省情况下,BGP采用报文出接口作为TCP连接的源地址
2)但是在部署IBGP的时候,建议使用环回口(Loopback)作为TCP连接的源地址(又叫更新源地址),因为环回口是逻辑口,因此它更稳定,不会因为物理接口down掉而导致对等体关系挂掉,而是会走冗余路径来继续维持对等体关系,因为AS内的冗余设计也是非常有必要的,保证了topo的一个网络运行可靠性
3)在部署EBGP对等体关系时,通常使用直连接口的IP地址作为源地址,若使用环回口建立EBGP对等体关系,则应多注意EBGP多跳问题(EBGP的TTL缺省=1,需配置ebgp-max-hop,是在peer [ip-addr]后面加上ebgp-max-hop [num,若不填则缺省为255]。)
BGP六大状态机:
1.Idle:开始准备TCP的连接并监视远程对等体
2.Connect:BGP发起第一个TCP连接,连接重试计时器超时后,重新发起TCP连接,TCP连接失败,转入Active状态
3.Active:BGP不断发起TCP连接建立,如果连接重试计时器超时,就回退到Connect状态,TCP连接失败,就继续保持在Active状态,并继续发起TCP连接。
4.OpenSent:TCP连接已建立成功,开始发送Open包,Open包携带参数协商对等体建立
5.OpenConfirm:参数、能力特性协商成功,自己发送Keepalive包,等待对方的Keepalive包
6.Established:已经收到对方的Keepalive包,双方能力特性经协商发现一致,开始使用Update消息通告路由信息
BGP路径属性:
简介:
任何一条BGP路由都拥有多个路径属性(Path Attributes),这些属性描述了BGP路由的各项特征,同时也会影响BGP路由的一个选路决策
BGP选路四大原则:
1)公认必遵:必须包含在每个Update消息里
1.Origin(起源)
2.AS_Path(所经过的AS号,从左到右按需排列)
3.Next_hop(下一跳地址)
2)公认任意:可能包含在某些Updata消息里
1.Local_Preference(出站选路,通常用于在AS内的选路控制,可以理解为IBGP之间的开销值Cost)
2.Atomic_Aggregate(原子聚合)
3)可选过渡:BGP不识别此类属性依然会接收该类属性并通告给其它对等体
1.Aggregater(聚合者)
2.Community(团体属性)
4)可选非过渡:BGP不识别此类属性会忽略该属性,且不通告给其它对等体
1.MED(入站选路,用于EBGP之间的路由控制,可以理解为EBGP之间的开销值Cost)
2.Cluster-List(集群列表)
3.Originator(起源者)
路由反射器(Route Reflector)概述:
技术背景:
IBGP水平分割规则用于防止AS内部产生环路,在很大程度上杜绝了IBGP路由产生环路的可能性,但是同时也带来了新的问题:BGP路由在AS内部只能传递一跳,如果建立IBGP对等体全互联模型又会加重设备的负担。
中转AS的IBGP问题(BGP路由黑洞):
由于水平分割的原因,为了保证中转AS200所有的BGP路由器都能学习到完整的BGP路由,就必须在AS内实现IBGP全互联。然而实现IBGP全互联存在诸多短板:
1.路由器需维护大量的TCP及BGP连接,尤其在路由器数量较多时
2.AS内BGP网络的可扩展性较差
3.为此可以采用路由反射器技术
而路由反射器RR正是作为该问题的一个最优解决方案横空出世:简单、高效、好用
角色:
引入路由反射器之后存在两种角色:
RR(Route Reflector):路由反射器
Client:RR客户端
RR会将学习的路由反射出去,从而使得IBGP路由在AS内传播无需建立IBGP全互联
AS内传播无需建立IBGP全互联
将一台BGP Speaker(BGP发言者)指定为RR的同时,还需要指定其Client。至于Client本身,无需做任何配置,它并不知晓网络中存在RR
路由反射规则:
RR(Route Reflector)在接收BGP路由时:
1)如果路由反射器从自己的非客户对等体学习到IBGP路由,则它会将路由反射给所有客户
2)如果路由反射器从自己的客户学习到一条IBGP路由,则它会将该路由反射给所有非客户,以及除了该客户之外的其他所有客户
3)如果路由学习自EBGP对等体,则发送给所有客户、非客户IBGP对等体
4)非非之间不会传递
路由反射器(Route Reflector)的防环机制:
RR反射出的路由会增加两个属性防环:
1)Originator(发起人):发送源的出口地址——针对RR客户端的防环
2)Cluster list(集群列表):记录了经过的所有路由反射器集群ID——针对RR的防环
1.路由反射簇包括反射器RR及其Client。一个AS内允许存在多个路由反射簇
2.当一条路由被反射器反射后,该RR的Cluster就会被添加至路由的Cluster_list属性
3.当RR收到一条携带Cluster_list属性的BGP路由,且该属性值中包含该簇的Cluster时,RR认为该条路由存在环路,因此将忽略关于该条路由的更新
配置:
peer x.x.x.x reflect-client //配置本端为RR,并指定peer x.x.x.x为它的反射客户端
聚合路由:
简介:
与众多IGP协议相同,BGP同样支持路由的手工聚合,在BGP配置视图中使用aggregate命令可以执行BGP路由手工聚合,在BGP已经学习到相应的明细路由情况下,设备会向BGP注入指定的聚合路由
BGP支持手工或者自动的路由汇总,一般情况下不用自动,因为自动只能汇总成主类网络路由
配置:
手动汇总:
在bgp视图下aggregate
抑制明细:在aggregate末尾加关键字 detail-suppressed,翻译过来为明细-抑制,更好理解,即抑制明细路由
自动汇总:
在BGP进程下summary automatic
相关文章:

BGP笔记的基本概要
技术背景: 在只有IGP(诸如OSPF、IS-IS、RIP等协议,因为最初是被设计在一个单域中进行一个路由操纵,因此被统一称为Interior Gateway Protocol,内部网关协议)的时代,域间路由无法实现一个全局路由…...

【Redis】复制(Replica)
文章目录 一、复制是什么?二、 基本命令三、 配置(分为配置文件和命令配置)3.1 配置文件3.2 命令配置3.3 嵌套连接3.4 关闭从属关系 四、 复制原理五、 缺点 以下是本篇文章正文内容 一、复制是什么? 主从复制 masterÿ…...

封装了一个仿照抖音效果的iOS评论弹窗
需求背景 开发一个类似抖音评论弹窗交互效果的弹窗,支持滑动消失, 滑动查看评论 效果如下图 思路 创建一个视图,该视图上面放置一个tableView, 该视图上添加一个滑动手势,同时设置代理,实现代理方法 (BOOL)gestur…...

【JavaWeb程序设计】Servlet(二)
目录 一、改进上一篇博客Servlet(一)的第一题 1. 运行截图 2. 建表 3. 实体类 4. JSP页面 4.1 login.jsp 4.2 loginSuccess.jsp 4.3 loginFail.jsp 5. mybatis-config.xml 6. 工具类:创建SqlSessionFactory实例,进行 My…...

php探针
php探针是用来探测空间、服务器运行状况和PHP信息用的,探针可以实时查看服务器硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息。 下面就分享下我是怎样利用php探针来探测服务器网站空间速度、性能、安全功能等。 具体步骤如下: 1.从网上下…...

泰勒级数 (Taylor Series) 动画展示 包括源码
泰勒级数 (Taylor Series) 动画展示 包括源码 flyfish 泰勒级数(英语:Taylor series)用无限项连加式 - 级数来表示一个函数,这些相加的项由函数在某一点的导数求得。 定义了一个函数f(x)表示要近似的函数 sin ( x ) \sin(x) …...

蔚来汽车:拥抱TiDB,实现数据库性能与稳定性的飞跃
作者: Billdi表弟 原文来源: https://tidb.net/blog/449c3f5b 演讲嘉宾:吴记 蔚来汽车Tidb爱好者 整理编辑:黄漫绅(表妹)、李仲舒、吴记 本文来自 TiDB 社区合肥站走进蔚来汽车——来自吴记老师的演讲…...

【Django+Vue3 线上教育平台项目实战】构建高效线上教育平台之首页模块
文章目录 前言一、导航功能实现a.效果图:b.后端代码c.前端代码 二、轮播图功能实现a.效果图b.后端代码c.前端代码 三、标签栏功能实现a.效果图b.后端代码c.前端代码 四、侧边栏功能实现1.整体效果图2.侧边栏功能实现a.效果图b.后端代码c.前端代码 3.侧边栏展示分类及…...

对比 UUIDv1 和 UUIDv6
UUIDv6是UUIDv1的字段兼容版本,重新排序以改善数据库局部性。UUIDv6主要在使用UUIDv1的上下文中实现。不涉及遗留UUIDv1的系统应该改用UUIDv7。 与 UUIDv1 将时间戳分割成低、中、高三个部分不同,UUIDv6 改变了这一序列,使时间戳字节从最重要…...

记一次饱经挫折的阿里云ROS部署经历
前言 最近在参加的几个项目测评里,我发现**“一键部署”这功能真心好用,省下了不少宝贵时间和力气,再加上看到阿里云现在有个开源上云**的活动。趁着这波热潮,今天就聊聊怎么从头开始,一步步搞定阿里云的资源编排服务…...

代码运行故障排除:PyCharm中的问题解决指南
代码运行故障排除:PyCharm中的问题解决指南 引言 PyCharm,作为一款流行的集成开发环境(IDE),提供了强大的工具来支持Python开发。然而,即使是最先进的IDE也可能遇到代码无法运行的问题。这些问题可能由多…...

css实现渐进中嵌套渐进的方法
这是我们想要的实现效果: 思路: 1.有一个底色的背景渐变 2.需要几个小的块级元素做绝对定位通过渐变filter模糊来实现 注意:这里的采用的定位方法,所以在内部的元素一律要使用绝对定位,否则会出现层级的问题&…...

JavaWeb后端学习
Web:全球局域网,万维网,能通过浏览器访问的网站 Maven Apache旗下的一个开源项目,是一款用于管理和构建Java项目的工具 作用: 依赖管理:方便快捷的管理项目以来的资源(jar包)&am…...

VUE_TypeError: Cannot convert a BigInt value to a number at Math.pow 解决方法
错误信息 TypeError: Cannot convert a BigInt value to a number at Math.pow vue 或 react package.json添加 "browserslist": {"production": ["chrome > 67","edge > 79","firefox > 68","opera >…...

Linux下mysql数据库的导入与导出以及查看端口
一:Linux下导出数据库 1、基础导出 要在Linux系统中将MySQL数据库导出,通常使用mysqldump命令行工具。以下是一个基本的命令示例,用于导出整个数据库: mysqldump -u username -p database_name > export_filename.sql 其中&a…...

Open3d入门 一文读懂三维点云
三维点云技术的发展始于20世纪60年代,随着激光雷达和三维扫描技术的进步,在建筑、考古、地理信息系统和制造等领域得到了广泛应用。20世纪90年代,随着计算机处理能力的提升,点云数据的采集和处理变得更加高效,推动了自…...

pyinstaller系列教程(一)-基础介绍
1.介绍 PyInstaller是一个用于将Python应用程序打包为独立可执行文件的工具,它支持跨平台操作,包括Windows、Linux和MacOS等操作系统。特点如下: 跨平台支持:PyInstaller可以在多个操作系统上运行,并生成相应平台的可…...

echarts图表:类目轴
category 类目轴,适用于离散的类目数据。 例如商品名称、时间等。 类目轴上的每个刻度代表一个类目,刻度之间没有量的关系,只是简单的分类。 在类目轴上,数据点会对应到相应的类目上。...

SSM贫困生申请管理系统-计算机源码84308
摘要 随着教育信息化的不断推进,越来越多的高校开始借助信息技术手段提升贫困生申请管理的效率与准确性。为此,我们设计并实现了SSM贫困生申请管理系统,旨在通过信息化手段优化贫困生申请流程,提高管理效率,为贫困生提…...

[C++]——同步异步日志系统(5)
同步异步日志系统 一、日志消息格式化设计1.1 格式化子项类的定义和实现1.2 格式化类的定义和实现 二、日志落地类设计2.1 日志落地模块功能实现与测试2.2 日志落地模块功能功能扩展 一、日志消息格式化设计 日志格式化模块的作用:对日志消息进行格式化,…...

Qt项目:基于Qt实现的网络聊天室---TCP服务器和token验证
文章目录 TCP服务器设计客户端TCP管理者ChatServerAsioIOServicePoolSession层LogicSystem总结 token验证模块完善protoStatusServer验证token客户端处理登陆回包用户管理登陆界面 本篇完成的模块是TCP服务器的设计和token验证 TCP服务器设计 客户端TCP管理者 因为聊天服务要…...

深入理解C++构造函数
目录 1.引言 2.默认构造函数 3.自定义构造函数 4.带继承关系类的构造函数 5.带多重继承关系类的构造函数 6.带虚继承关系类的构造函数 7.总结 1.引言 对于学过C的来说,构造函数是非常熟悉不过的了。但是你真正了解它吗?构造函数内部初始化变量的顺…...

J025_斗地主游戏案例开发(简版)
一、需求描述 完成斗地主游戏的案例开发。 业务:总共有54张牌; 点数:3、4、5、6、7、8、9、10、J、Q、K、A、2 花色:黑桃、红桃、方片、梅花 大小王:大王、小王 点数分别要组合4种花色,大小王各一张。…...

路径规划 | 飞蛾扑火算法求解二维栅格路径规划(Matlab)
目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 路径规划 | 飞蛾扑火算法求解二维栅格路径规划(Matlab)。 飞蛾扑火算法(Firefly Algorithm)是一种基于自然界萤火虫行为的优化算法,在路径规划问题中也可以应…...

优化Cocos Creator 包体体积
优化Cocos Creator 包体体积 引言一、优化图片文件体积:二、优化声音文件体积:三、优化引擎代码体积:四、 优化字体字库文件大小: 引言 优化Cocos Creator项目的包体体积是一个常见且重要的任务,尤其是在移动设备和网…...

TCPDump协议分析工具
TCPDump协议分析工具 TCPDump是一个强大的命令行工具,用于捕获和分析网络数据包。它能够实时监控和记录网络流量,帮助网络管理员和安全专家排查网络问题、分析流量和检测网络攻击。以下是TCPDump的详细介绍,包括其安装、基本使用、过滤规则和…...

土壤分析仪:解密土壤之奥秘的科技先锋
在农业生产和生态保护的道路上,土壤的质量与状况一直是我们关注的焦点。土壤分析仪,作为现代科技在农业和环保领域的杰出代表,以其高效、精准的分析能力,为我们揭示了土壤的奥秘,为农业生产提供了科学指导,…...

计算1的数量
1. 计算1的数量 题目ID:9809必做题100分 最新提交: Accepted 100 分 历史最高: Accepted 100 分 时间限制: 1000ms 空间限制: 524288kB 题目描述 给定一个n*m的二进制矩阵,请你数一数矩阵中完全被0上下左右包围的1的数…...

Linux udp编程
我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》࿱…...

【开源项目】Rust开发复制文件夹目录结构工具
说明 由于我经常需要在多个大容量的移动硬盘中查找和新增文件,我希望把硬盘的目录结构放到服务器的自建网盘中,因此开发了这个工具,使得在不同硬盘之间的文件管理变得更加便捷 项目地址:https://github.com/VinciYan/folder_clon…...