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路由协议:

  1. BGP基于TCP,只要能够建立TCP连接即可建立BGP

  2. 只传递路由信息,不会暴露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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/53498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++速通LeetCode中等第3题-盛最多水的容器

双指针法:两个指针分别指向左右边界,记录最大面积,由于面积由短板决定,两个指针中较短的短指针向内移动一格,再次记录最大面积, 直到两指针相遇,得出答案。 class Solution { public:int maxAr…

安卓13设置动态修改设置显示版本号 版本号增加信息显示 android13增加序列号

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 设置 =》关于平板电脑 =》版本号 在这里显示了系统的一些信息,但是这里面的信息并不包含序列号之类的信息,我们修改下系统设置,在这里增加上相关的序列号。 2.问题分析…

打造以太坊数据监控利器:InfluxDB与Grafana构建Geth可视化分析平台

前言 以太坊客户端收集大量数据,这些数据可以按时间顺序数据库的形式读取。为了简化监控,这些数据可以输入到数据可视化软件中。在此页面上,将配置 Geth 客户端以将数据推送到 InfluxDB 数据库,并使用 Grafana 来可视化数据。 一…

多比特AI事业部VP程伟光受邀为第四届中国项目经理大会演讲嘉宾

全国项目经理专业人士年度盛会 武汉市多比特信息科技有限公司AI事业部VP程伟光先生受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾,演讲议题为“AI对于项目经理工作的影响和变化解析”。大会将于10月26-27日在北京举办&am…

深度学习02-pytorch-04-张量的运算函数

在 PyTorch 中,张量(tensor)运算是核心操作之一,PyTorch 提供了丰富的函数来进行张量运算,包括数学运算、线性代数、索引操作等。以下是常见的张量运算函数及其用途: 1. 基本数学运算 加法运算&#xff1a…

计算机组成体系与组成结构错题解析【软考】

目录 前言进制转换码制补码 CPU的组成输入/输出技术中断相关概念输入/输出技术的三种方式比较周期相关知识 主存编址计算流水线技术层次化存储体系可靠性 前言 本文专门用来记录本人在做软考中有关计算机上组成体系与组成结构的错题,我始终认为教学相长是最快提高的…

如何利用 opencv 进行 ROI(感兴趣)获取和实现 VR(虚拟现实) 演播室的播放

我是从事医疗软件的开发的。 经常需要从拍摄的医疗视频中获取出病理区域。并计算病理区域的周长和面积。 用 opencv 的术语,这就是感兴趣区域的获取。 (因为都是实时视频,所以速度很关键。代码效率很重要) 有时,需要标注出病理区域,并将非病理区域从视频中去除掉。 如果将…

[教程]如何在iPhone上启用中国移动/联通/电信RCS消息

目前 苹果已经在 iOS 18 中带来 RCS 富媒体消息的支持,该消息基于网络传递,用户可以通过 RCS 免费将消息发送到其他 iPhone 或 Android 设备。在苹果面向测试版用户推出的 iOS 18.1 Beta 版中,中国网络运营商包括中国移动、中国联通、中国电信…

STL-常用算法 遍历/查找/排序/拷贝和替换/算数生成/集合算法

STL常用算法 常用的遍历算法 for_each #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #include<vector> #include<algorithm>void myPrint(int v) {cout << v << " "; }class MyPrint { public:void op…

产品经理需要了解的AI模型

随着人工智能技术的迅猛发展&#xff0c;AI已经成为各行各业不可或缺的一部分。对于产品经理而言&#xff0c;了解AI模型不仅能促进产品的创新&#xff0c;还能帮助我们更好地理解用户需求&#xff0c;提升产品价值。 下面我将详细介绍四类重要的AI模型——自然语言处理&#…

【云原生安全篇】一文掌握Harbor集成Trivy应用实践

【云原生安全篇】一文掌握Harbor集成Trivy应用实践 目录 1 概念 1.1 什么是 Harbor 和 Trivy&#xff1f; 1.1.1 Harbor 1.1.2 Trivy 1.2 Harbor 与 Trivy 的关系 Trivy 在 Harbor 中的作用&#xff1a; 1.3 镜像扫描工作流程 2 实战案例&#xff1a;在Harbor 配置 Trivy …

2018年国赛高教杯数学建模D题汽车总装线的配置问题解题全过程文档及程序

2018年国赛高教杯数学建模 D题 汽车总装线的配置问题 一&#xff0e;问题背景   某汽车公司生产多种型号的汽车&#xff0c;每种型号由品牌、配置、动力、驱动、颜色5种属性确定。品牌分为A1和A2两种&#xff0c;配置分为B1、B2、B3、B4、B5和B6六种&#xff0c;动力分为汽油…

Golang | Leetcode Golang题解之第416题分割等和子集

题目&#xff1a; 题解&#xff1a; func canPartition(nums []int) bool {n : len(nums)if n < 2 {return false}sum, max : 0, 0for _, v : range nums {sum vif v > max {max v}}if sum%2 ! 0 {return false}target : sum / 2if max > target {return false}dp …

fastadmin 根据选择数据来传参给selectpage输入框

文章目录 js代码php代码&#xff1a;完结 js代码 $(document).on(change,#table .bs-checkbox [type"checkbox"],function(){let url$(#chuancan).attr(data-url)urlurl.split(?)[0]let idsTable.api.selectedids(table)if(ids.length){let u_id[]ids.forEach(eleme…

Seata学习笔记

目录 Seata的三大角色 角色 相关流程 相关事务模式 AT 模式&#xff08;默认模式&#xff09; 概述 整体机制 分析 XA 模式 概述 机制 分析 TCC 模式 概述 机制 分析 SAGA 模式 概述 机制 分析 参考&#xff1a; Seata的三大角色 角色 TC (Transaction Co…

虚拟机:4、配置12.5的cuda和gromacs

前言&#xff1a;本机环境是win11&#xff0c;通过wsl2安装了ubuntu实例并已实现gpu直通&#xff0c;现在需要下载12.5的cuda 一、查看是否有gpu和合适的cuda版本 在ubuntu实例中输入 nvidia-smi输出如下&#xff1a; 说明该实例上存在gpu驱动&#xff0c;且适合的CUDA版本…

智能新突破:AIOT 边缘计算网关让老旧水电表图像识别

数字化高速发展的时代&#xff0c;AIOT&#xff08;人工智能物联网&#xff09;技术正以惊人的速度改变着我们的生活和工作方式。而其中&#xff0c;AIOT 边缘计算网关凭借其强大的功能&#xff0c;成为了推动物联网发展的关键力量。 这款边缘计算网关拥有令人瞩目的 1T POS 算…

VS Code 技巧

在编程世界里&#xff0c;工具的好坏取决于使用者的水平。Visual Studio Code&#xff08;VS Code&#xff09;就像一把锋利的刀&#xff0c;它功能强大&#xff0c;但需要熟练的技巧才能发挥出色。然而&#xff0c;对于初学者来说&#xff0c;它可能显得有些复杂&#xff0c;因…

9.Branch-and-Bound 方法

Branch-and-Bound 方法 Branch-and-Bound&#xff08;分支限界&#xff09;是一种用于解决优化问题的算法框架&#xff0c;尤其适用于组合优化问题&#xff0c;如整数规划、旅行商问题&#xff08;TSP&#xff09;、指派问题等。该方法通过系统地搜索解空间树来找到问题的最优…

[spring]springboot日志

文章目录 一. 日志的用途二. 打印日志三. 日志框架门面模式(外观模式)SLF4J框架介绍 四. 日志格式日志级别配置日志级别日志持久化配置日志文件分割配置日志格式 五. 更简单的日志输出 一. 日志的用途 二. 打印日志 得到日志对象: 需要使用日志工厂LoggerFactory RestControl…