BGP相关知识笔记
技术背景:
在只有IGP(诸如OSPF、IS-IS、RIP等协议,因为最初是被设计在一个单域中进行一个路由操纵,因此被统一称为Interior Gateway Protocol,内部网关协议)的时代,域间路由无法实现一个全局路由控制(如,精细的操纵一个路由在不同域之间的一个流量路径)或产生次优路径(由于IGP只能看到自己域内的一个路由,这种情况通常发生在两个路由协议之间的一个双点双向引入)
后面发明了EGP(一个具体的协议,而现在我们常说的EGP则是一类协议统称,外部网关协议)被用于实现在AS之间动态交换路由信息。但是EGP设计得比较简单,只发布网络可达的路由信息,而不对路由信息进行优选,同时也没有考虑环路避免等问题,很快就无法满足网络管理的要求
BGP是为取代当初的EGP而设计的另一种外部网关协议。不同于最初的EGP,BGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息
1、AS的基本概念:
OSPF、IS-IS等IGP在组织机构网络内部广泛应用,随着网络规模扩大,网络中路由数量不断增长,IGP已无法管理大规模网络,AS(Autonomous System,自治系统)的概念由此0诞生。
AS是指在同一机构管理下,使用同一个选路策略的设备集合
AS之间需要直连链路,或通过VPN协议构造逻辑直连(例如GRE Tunnel)进行邻居建立
AS之间可能是不同的机构、公司,相互之间无法完全信任,使用IGP可能存在暴露AS内部的网络信息的风险。
2、BGP概述:
整个网络规模扩大,路由数量进一步增加,路由表与LSDB规模变大,路由收敛变慢,设备性能消耗加大
为此在AS之间专门使用BGP协议进行路由传递,相较于传统的IGP路由协议:
-
BGP基于TCP,只要能够建立TCP连接即可建立BGP
-
只传递路由信息,不会暴露AS内的拓扑
3、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对等体重新发送路由信息,只有支持路由刷新能力的设备会发送和响应此报文
4、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关系的源地址
5、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]。)
6、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消息通告路由信息
7、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(起源者)
8、路由反射器(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,内部网关协议)的时代,域间路由无法实现一个全局路由…...

在 Windows 上运行 Vue 项目时解决 ‘NODE_OPTIONS‘ 错误
在 Windows 上运行 Vue 项目时解决 ‘NODE_OPTIONS’ 错误 在 Windows 系统上启动 Vue 项目时,遭遇报错。具体报错信息如下: ‘NODE_OPTIONS‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。这个错误通常意味着 Windows 系统无法识…...

面试真题:谈一谈Mysql的分库分表
分表和分库是什么?有什么区别? 分库是一种水平扩展数据库的技术,将数据根据一定规则划分到多个独立的数据库中。每个数据库只负责存储部分数据,实现了数据的拆分和分布式存储。分库主要是为了解决并发连接过多,单机 my…...

玄机靶场--蚁剑流量
木马的连接密码是多少 黑客执行的第一个命令是什么 id 黑客读取了哪个文件的内容,提交文件绝对路径 /etc/passwd 黑客上传了什么文件到服务器,提交文件名 黑客上传的文件内容是什么 黑客下载了哪个文件,提交文件绝对路径 蚁剑流量特征总结 …...
uniapp map设置高度为100%后,会拉伸父容器的高度
推荐学习文档 golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔…...

CICD从无到会
一 CICD是什么 CI/CD 是指持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery) 1.1 持续集成(Continuous Integration) 持续集成是…...

责任链模式优化 文章发布的接口(长度验证,敏感词验证,图片验证等环节) 代码,示例
需求:后端需要提供一个文章发布的接口,接口中需要先对文章内容进行如下校验,校验通过后才能发布 1. 文章长度不能超过1万个字符 2. 不能有敏感词 3. 文章中图片需要合规 责任链相当于一个链条一样,链条上有很多节点,节…...

Java流程控制语句——条件控制语句详解(附有流程图)#Java条件控制语句有哪些?#if-else、switch
在 Java 编程中,条件控制语句用于控制程序的执行路径,决定根据某些条件来选择执行某段代码或跳过某段代码。它们是 Java 编程的重要组成部分,帮助开发者根据不同的输入、状态或数据流来编写更加灵活和动态的代码。在本文中,我们将…...
十一、SOA(SOA的具体设计模式)
我们现在深入学习SOA的具体设计模式。SOA架构中的设计模式主要是指导服务如何设计、实现、部署和管理,确保服务的松耦合、高可用性、扩展性和复用性。SOA常见的设计模式可以分为以下几类: 1. 服务层次设计模式 1.1. 基础服务(Fundamental S…...

Mybatis原理
一. 为什么要使用Mybatis? 1.1 jdbc的使用步骤 首先,在pox.xml中引入MySQl驱动的依赖 第一步, Class.forName 注册驱动 第二步,获取一个Connection。 第三步,创建一个Statement对象。 第四步,execute()方法执行SQL。execute()方…...

黑马头条day3-2 自媒体文章管理
前边还有一个 素材列表查询 没什么难度 就略过了 查询所有频道和查询自媒体文章也是和素材列表查询类似 就是普通的查询 所以略过了 文章发布 这个其实挺复杂的 一共三张表 一个文章表 一个素材表 一个文章和素材的关联表 区分修改与新增就是看是否存在id 如果是保存草稿…...

JinDouYun性能测试工具使用方法
1.功能介绍 2. 安卓端支持安卓6及以上的版本,ios支持大部分版本 3. 可以测试游戏,视频,普通应用的性能数据,数据精准,低延迟,无侵入 4.工具下载链接 筋斗云 5.后续功能添加,高版本支持&…...

操作系统 | 学习笔记 | | 王道 | 5.3 磁盘和固态硬盘
5.3 磁盘和固态硬盘 5.3.1 磁盘 磁盘结构 磁盘:磁盘的表面由一些磁性物质组成,可以用这些磁性物质来记录二进制数据 磁道:磁盘的盘面被划分成一个个磁道。这样的一个“圈”就是一个磁道 扇区:一个磁道又被划分成一个个扇区&am…...

【Oauth2整合gateway网关实现微服务单点登录】
文章目录 一.什么是单点登录?二.Oauth2整合网关实现微服务单点登录三.时序图四.代码实现思路1.基于OAuth2独立一个认证中心服务出来2.网关微服务3产品微服务4.订单微服务5.开始测试单点登录 一.什么是单点登录? 单点登录(Single Sign On&…...

WEB领域是不是黄了还是没黄
进入2024年后,WEB领域大批老表失业,一片哀嚎,个个饿的鬼叫狼嚎,为啥呢,下面是我个人的见解和看法。 中国程序员在应用层的集中 市场需求:中国的互联网行业在过去几年中经历了爆炸性增长,尤其是…...
Android系统:系统架构
文章目录 分层设计分块设计总结 分层设计 自上而下分为:应用层、应用架构层、系统运行层、硬件抽象层、Linux内核层 应用层 封装一系列系统App 应用架构层(Framework) 封装一系列运行App需要的Java框架 提供App开发需要的API 系统运行层(Libraries) 封装一系…...

NCNN 源码(1)-模型加载-数据预处理-模型推理
参考 ncnn 第一个版本的代码。 0 整体流程 demo:squeezenet ncnn 自带的一个经典 demo:squeezenet 的代码: // 网络加载 ncnn::Net squeezenet; squeezenet.load_param("squeezenet_v1.1.param"); squeezenet.load_model("squeezenet_…...
重修设计模式-结构型-享元模式
重修设计模式-结构型-享元模式 复用不可变对象,节省内存 享元模式(Flyweight Pattern)核心思想是通过共享对象方式,达到节省内存和提高性能的目的。享元对象需是不可变对象,因为它会被多处代码共享使用,要避…...
JavaScript 运算符
JavaScript 中的运算符可以根据其功能和用途分为几类。以下是主要的运算符类型及其用法: 1. 算术运算符 用于执行基本的数学运算。 : 加法 let sum 5 3; // 8- : 减法 let difference 5 - 3; // 2* : 乘法 let product 5 * 3; // 15/ : 除法 let quotient 5…...

3.js - 运动曲线
这个球,绕着这个红色的线圈转 代码 import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControlslet scene,camera,renderer,controls nulllet moon,earth null// 根据,一系列的点,创建曲线 le…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...