BGP学习笔记

news/2024/7/7 21:15:32

概念

动态路由协议按照按照工作范围可以分为IGP和EGP,IGP工作在一个AS之内,主要用来发现和计算路由,常见的IGP包括OSPF,RIP,ISIS等。EGP工作在AS与AS之间,在AS之间提供无环路的路由信息交换。BGP(Border Gateway Protocol)就是EGP的一种。

与IGP不同,BGP的着眼点不在于自动发现网络拓扑,而在与在AS之间选择最佳路由和控制路由传播。

BGP的几个特点

使用TCP作为传输协议:BGP使用TCP作为传输层协议,监听端口号为179(目的端口号),本地端口号任意,为单播传递。由于BGP进行的是AS之间的路由传播,对可靠性的要求是比较高的,因此选用TCP作为传输协议。
支持CIDR:支持无类域间路由?
增量更新:路由更新时,BGP只发送更新的路由,因为BGP存储的路由信息与IGP相比是十分巨大的(几百万条)。
增强型的距离矢量路由协议:BGP使用AS-Path作为距离矢量,在将路由发布给EBGP邻居时,会在AS-Path属性中添加自身的AS号
无环路:包括AS内防环和AS间防环。AS在进行EBGP发布时会携带自身的AS号,在接收EBGP信息时会丢弃携带自身AS号的路由信息,达成AS间防环。IBGP学到的路由只会通告给EBGP Peer,不会通告给IBGP Peer,形成水平分割,完成AS内防环。
路由策略丰富:能够对路由实现灵活的过滤和选择
可防止路由震荡:
易于扩展:主要是通过TLV进行扩展

AS

自治系统AS(Autonomous System)是由同一个技术管理机构管理,使用统一路由策略的一些路由器的集合。

每个AS都有唯一的AS号,AS号由IANA分配,编号范围为165535。其中1到64511是注册的因特网编号,6451265535是私有网络编号。

BGP的分类

运行在一个AS内部的IBGP和运行在AS之间的EBGP。

IBGP:在一个AS内,各个路由之间通常都是通过IGP(OSPF)互通的,因此可以使用回环口来与各个IBGP Peer建立TCP连接,实现IBGP。由于一个回环口可以走多个物理链路,因此这样的链接更加稳定。

EBGP:在不同的AS之间,往往是只有直连接口的,此时只能通过直连接口建立TCP连接。在某些场景下,通过制定EBGP的最大跳数和静态路由,也可以使用环回口建立BGP邻居关系。

工作原理

报文分类

open:TCP建立之后发送的第一个消息,作用为协商BGP参数,包括版本号、AS号等。试图建立连接的两个BGP peer会互相发送open报文。
update:用于交换路由信息,包括撤销路由信息和可达路由信息,及其各种路由属性。
keepalive:用于维护邻居关系,建立邻居关系的peer之间会周期性的发送该报文。
notification:BGP中的差错校验。在BGP的整个流程中,一旦检测到任何形式的差错,Speaker都会发送该报文,同时解除对应的邻居关系。对应的peer在接收到notification报文之后也会解除邻居关系。
route-refresh:用于在改变路由策略后,请求对等体重新发送路由信息。在不断开TCP连接的情况下,更新一次路由信息。

BGP报文

在这里插入图片描述
Marker:全部为1
Length:报文长度
Type:报文类型(open,keepalive…)
Message:具体报文信息

open报文

在这里插入图片描述
Version:BGP版本
My Autonomous System:自身AS号
Hold Time:保持时间,如果在保持时间内没有接收到keepalive报文则断开邻居关系。Hold Time一般为keepalive发送周期的三倍,为180s。
BGP Identifier:BGP id,通常为route-id。
Opt Param Len:可选参数长度
Opt Param:可选参数

keepalive报文

在这里插入图片描述
keepalive报文只有报文头

update报文

在这里插入图片描述
Withdraw Routes Length:不可达路由信息长度
WIthdraw Routes:不可达路由信息
Path Attribute Length:可达路由信息长度
Path Attribute:可达路由属性
Network Layer Reachability Information:可达路由信息

notification报文

在这里插入图片描述
Error Code:错误码
Error SubCode:二级错误代码

Route-Refresh报文

在这里插入图片描述
AFI:路由类型,ipv4、ipv6

BGP状态机

BGP共有6个状态,分别是Idle,Connect,Active,Open Sent,Open Confirm,Established。在实际设备上能看到的稳定状态包括Idle,Active,Connect,以及Established。

一个正常的BGP Peer流程如下:
首先给当前设备输入一个想要建立Peer的IP地址,如果该地址不可达,则会一直处于Idle状态。
如果可达,当前设备会发送一个SYN报文,进入Connect状态尝试与对端建立TCP连接。
如果TCP连接建立成功,会给对端发送一个Open报文,进入Open sent状态,等待对端的回复
如果收到对端发送过来的Open报文,则进入Open Confirm状态,等待对方发送的keep alive报文
在收到Keep Alive报文之后,BGP邻居关系正式建立,进入Established状态
Established状态中的Peer会每隔一段时间(默认是30秒)给对端发送keep alive报文,如果一段时间(默认三个Keep alive周期,90s)没有收到对端发送的keep alive报文,则会进入Idle状态
如果在任何一个环节收到Notification报文,则会接触邻居关系,进入Idle状态
如果TCP建立连接失败,则会进入Active状态,继续尝试建立TCP连接,在重试超时过后,则会重新回到Connect状态。因此如果有默认路由,但是TCP连接建立不起来,当前设备会处于Connect和Active状态的循环。
在这里插入图片描述

BGP对等体之间的交互原则

IBGP路由,只发送给EBGP对等体
EBGP路由,发布给所有IBGP和EBGP对等体
只将最优路由发布给对等体
只将更新信息发布给对等体

交互细则

在连接刚建立时,BGP Speaker会将自己产生的所有路由发布给新的对等体。
多条路径时,BGP Speaker只会选择最优路径给自己使用,因此发布给对等体的只有最优路径。
BGP Speaker会将接受到的EBGP路由发布给所有的IBGP邻居和EBGP邻居,同时还要保证IBGP邻居的下一跳可达。
BGP Speaker从IBGP学到的路由不会再发布给IBGP邻居,这也称为BGP的水平分割,可以有效避免AS内部产生回路。这种连接方式称为全互联。
BGP Speaker从IBGP学到的路由是否发布给EBGP对等体要视IGP和BGP的同步情况决定。如果IGP中存在相关路由则发布。

路由反射器

为了防止环路,通过IBGP学到的路由是不会发布给IBGP邻居的,因此为了实现AS内部的路由传递,有两个办法:
一是为所有路由器建立Fullmesh连接,在网络较小时尚可实施,但在网络较大时显然是不现实的。
二是设置一个路由反射器,由路由反射器发布IBGP的所有路由。路由发射器是一个与AS内所有路由器都建立Peer关系的路由器,在反射器收到IBGP路由时,会将该路由发布给其他所有IBGP邻居。

BGP数据库

IP路由表(IP-RIB):存储全局路由信息,用于转发
BGP路由表(Loc-RIB):BGP路由信息库,包括本地BGP Speaker学习到的所有路由信息。其中的最优路径会被复制到IP路由表中用于转发。
邻居表:BGP对等体列表
Adj-RIB-In:其他对等体发布给本地BGP Speaker且尚未处理的路由信息。
Adj-RIB-Out:本地BGP Speaker发布给其他对等体的路由信息。
在这里插入图片描述

BGP属性

BGP路由属性是一套参数,它是对特定理由的进一步描述。

BGP属性分类

公认必遵(Well-known mandatory):所有BGP路由器均可识别,Update时必须携带,否则路由会报错。
公认任意(Well-known discretionary):所有BGP路由器均可识别,Update时可以选择携带。
可选过度(Optional transitive):部分BGP路由可识别,如果BGP路由不识别,在接收到该种类的属性之后可以选择性的发送给其他路由。
可选非过渡(Optional non-transitive):部分BGP路由可识别。如果BGP路由器不识别该类型属性,不会对其进行记录,同时也不会发布给其他对等体。

常见BGP路由属性

Origin(Well-known mandatory):定义路径信息的来源。IGP(i),EGP(e),Incomplete(?),分别是从通过IGP学到的,从BGP学到的,还有通过其他方式(import)学到的。
AS_PATH(Well-known mandatory):按矢量顺序记录某条路由从本地到目的地址所要经过的所有AS编号。相当于AS的路由信息。
Next hop(Well-known mandatory):记录下一跳信息。在IBGP传输过程中,该值默认不变。而在EBGP传输中,该值会被修改为建立TCP连接的IP地址。
Local_Preference(Well-known discretionary):标识流量离开本AS之后所走路径的优先级,数值越大优先级越高。在IBGP的发布中会携带该属性,可以通过配置该属性控制流量从自身AS的出路径。
Atomic_Aggregate(Well-known discretionary):
Aggregator(Optional transitive):
Community(Optional transitive):相当于给路由打上一个标签,分为公共团体属性和私有属性。常用标签:NO_ADVERTISE,带有此标签的路由不会被通告给任何对等体。NO_EXPORT,带有此标签的路由只会在AS内部传播,这里的AS是包括联盟的大AS。NO_EXPORT_SUBCONFED:带有此标签的路由只会在小AS内传播。
Originator-ID(Optional non-transitive):
Cluster-List(Optional non-transitive):
MP_Reach _NLRI:
MP_Unreach_NLRI:
Extended_Communities:
MED:可以通过EBGP发布该属性,在两个AS之间有多条线路可以互通时可以通过该属性为各个线路设置优先级,MED值越小优先级越高。通过该属性可以控制其他AS到当前AS入流量的路径,前提是对端AS的路由器支持该属性。

BGP选路规则

当BGP对等体接收到到达同一目的地的多条路由时,会逐条按照下面的方式进行优选:
如果路由的下一跳不可达,忽略此路由。
优选协议首选值(PreVal)最高的路由。PreVal每个BGP对等体可以单独设置,默认为0。这个不是BGP传播的属性,相当于在设备上直接对各个路由打上的优先级。
优选本地优先级(Loc_Pre)最高的路由。默认为100. Loc_Pre只会在本地AS内通过IBGP传播。Loc_Pre只会在没有值的时候被添加,一条路由如果已经有了Loc_Pre,便不会再做修改。
优选本地生成的路由。在本地路由中,优选聚合路由,在聚合路由中,优选aggregate生成的手动聚合路由,其次summary automatic自动聚合路由。network引入的路由优先级高于import-route引入的路由。
优选AS_PATH最短的路由。
比较Origin属性,按照IGP,BGP,incomplete的顺序进行优选。
优选MED值最低的路由。
优选EBGP的路由,相比IBGP。
优选BGP下一跳IGP Metric较小的路由。
当以上条件全部相同时,视为等价路由,可以进行负载均衡。


http://www.niftyadmin.cn/n/13599.html

相关文章

[激光原理与应用-29]:典型激光器 -1- 固体激光器

目录 第1章 什么是固体激光器 1.1 什么是固体激光器 1.2 固体激光器特点 1.3 特性 1.4 分类 1.5 波长 第2章 固体激光器的组成 2.1 固体工作物质 2.2 激励源 第1章 什么是固体激光器 1.1 什么是固体激光器 用固体激光材料作为工作介质的激光器。 固体激光材料是在作…

LabVIEW比较LabVIEW类对象 LabVIEW接口

LabVIEW比较LabVIEW类对象 LabVIEW接口 使用比较功能比较LabVIEW类对象。 如比较同一个类的两个对象,例如,卡车类的两个对象,LabVIEW将比较类层次结构中所有层次的数据,类似于LabVIEW比较由簇组成的簇。 如比较不同类的两个对…

力扣hot100——第5天:22括号生成、23合并K个升序链表、31下一个排列

文章目录1.22括号生成1.1.题目1.2.题解2.23合并K个升序链表2.1.题目2.2.解答3.31下一个排列3.1.题目3.2.解答1.22括号生成 参考:力扣题目链接;题解1,题解2 1.1.题目 1.2.题解 这道题目是使用递归的方法来求解,因为要求解所有的…

洛谷千题详解 | P1019 [NOIP2000 提高组] 单词接龙【C++、Java语言】

博主主页:Yu仙笙 专栏地址:洛谷千题详解 目录 题目描述 输入格式 输出格式 输入输出样例 解析: C源码: Java源码: -----------------------------------------------------------------------------------------------…

Linux基本工具——yum

Linux基本工具软件包管理器yum什么是软件包Linux的软件包yum的三板斧yum的扩展软件包管理器yum 工具的本质就是指令 什么是软件包 我们平时用手机与电脑的时候,如果想安装一个软件就需要去下载它的安装包(软件包),下载安装包的…

极客时间 - Vim学习

文章目录Vim script打印输出和字符串变量数字复杂数据结构表达式控制结构函数和匿名函数重要命令事件内置函数四种模式正常(normal)模式插入(insert)模式可视(visual)模式:v/V命令行&#xff08…

什么是云计算?什么是边缘计算?为什么需要云边协同?

一、云计算的发展有哪些弊端? **云计算(cloud computing)**是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序…

【PTA-训练day14】L2-026 小字辈 + L1-054 福到了

L2-026 小字辈 - dfs建树 求最大深度 PTA | 程序设计类实验辅助教学平台 思路: 用vector存关系 v[父辈下标]{孩子1下标,孩子2下标……}dfs建树 从树根开始建dfs逐层向下 深搜每一个节点如果是叶子节点 则用res存 res[深度]{叶节点下标} 并及时更新最…