BGP总结

本文详细介绍了边界网关协议(BGP)的运作原理,包括其作为TCP上的一种路由协议,无类别路径矢量的特点,报文类型(如Open、Update、Notification),处理过程,对等体交互原则,路由黑洞和同步问题,以及路由选择策略和社团属性的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BGP简介

边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。

BGP特点:

  1. 无类别路径矢量 -----距离矢量的升级版---AS--BY--AS
  2. 使用单播更新来发送所有信息;基于TCP 179端口工作
  3. 增量更新--仅触发无周期
  4. 具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议
  5. 可以在进项和出项对流量实施强大的策略--可控性
  6. 默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径
  7. BGP支持认证和聚合(汇总)

BGP报文类型


BGP对等体间通过以下5种报文进行交互,其中Keepalive报文为周期性发送,其余报文为触发式发送:

Open报文:是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。

Update报文:用于在对等体之间交换路由信息。Update消息可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。

Notification报文:用于中断BGP连接。当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。

Keepalive报文:用于保持BGP连接。BGP会周期性的向对等体发出Keepalive消息,用来保持连接的有效性。

Route-refresh报文:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文。

BGP处理过程

        因为BGP的传输层协议是TCP协议,所以在BGP对等体建立之前,对等体之间首先进行TCP连接。BGP邻居间会通过Open报文协商相关参数,建立起BGP对等体关系。建立连接后,BGP邻居之间交换整个BGP路由表。BGP会发送Keepalive报文来维持邻居间的BGP连接,BGP协议不会定期更新路由表,但当BGP路由发生变化时,会通过Update报文增量地更新路由表。当BGP检测到网络中的错误状态时(例如收到错误报文时),BGP会发送Notification报文进行报错,BGP连接会随即中断。如图所示

 
 

BGP对等体


BGP报文交互中分为Speaker和Peer两种角色。

Speaker:发送BGP报文的设备称为BGP发言者(Speaker),它接收或产生新的报文信息,并发布(Advertise)给其它BGP Speaker。

Peer:相互交换报文的Speaker之间互称对等体(Peer)。若干相关的对等体可以构成对等体组(Peer Group)
 

BGP对等体之间的交互原则


BGP设备与对等体建立邻居关系后,采取以下交互原则:

1.从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。

2.从EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体。

3.当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体。

4.路由更新时,BGP设备只发送更新的BGP路由。

5.所有对等体发送的路由, BGP 设备都会接收。 

IBGP水平分割规则 用于AS内部防环

1、AS _Path属性可以用于BGP路由在EBGP对等体之间传递时发生环路,然而当路由在IBGP对等体之间传递时,AS_Path属性的值是不会发生改变的

2、水平分割规则:当路由器从一个对等体学习到某条BGP路由时,它将不能再把这条路由通告给任何IBGP对等体

3、但水平分割规则会产生新加设备学习不到路由的问题,可以通过在AS内部建立IBGP对等体关系的全互联模型(AS中所有的BGP路由器两两之间建立IBGP对等体关系)

4、还有两种解决方案:路由反射器和联邦

路由黑洞问题及BGP同步问题 (回包时无路由)


1、路由黑洞的产生是由于BGP和IGP同步检查默认关闭导致的

2、为了规避路由黑洞问题,BGP引入了同步规则:当一台路由器从自己的IBGP对等体学习到BGP路由时,它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议学习到这条路由,也就是要求IBGP与IGP同步

3、同步方法(路由黑洞解决方法):

①将数据包所经过的路径运行BGP

②将部分BGP路由引入到IGP

③使用MPLS,即使中间路由器没有路由,数据包也根据标签转发

BGP下一跳

在本地BGP表中 新出现的BGP会继承下一跳,如果没有下一跳,那么默认为0.0.0.0

在本地GBP表中路由下一跳为0.0.0.0发送给任何邻居,下一跳都会变为表更为自身针对邻居的更新源地址;本地BGP表里包含下一条的路由发送给IBGP邻居的时候下一跳不变,发送给EBGP邻居的时候变更为自身针对邻居的更新源地址。

通过邻居收到的IBGP只能把路由通告给EBGP邻居不能通告给IBGP邻居(IBGP水平分割),通告给EBGP的时候下一条变更为针对邻居的更新源地址;通过邻居收到的EBGP路由可以通告给任何邻居 通过给IBGP邻居的时候下一跳不变,通告给EBGP邻居的时候下一跳变更为针对邻居的更新源地址。

 BGP在MA网络中下一跳问题:

   

图中1、2、3在一个MA网段,但不在同一AS;正常R1从R2学习到的R4的路由,下一跳自动显示为R3(最佳路径)

原理:

        1.R1/2/3必须使用MA网段的物理接口建立邻居关系

         2.ICMP重定向开启(默认开启)  --- 一台路由器在转发一个流量时,发现流量在本地的入口和查询完路由表的出口为同一接口时,将告知上一跳设备本地的下一跳地址;帮助上一跳设备找到最佳的下一跳地址;   

在BGP中仅查看某个邻居发送或接收到BGP路由

[r1]display  bgp routing-table peer 10.1.1.2 received-routes  

仅查看本地从邻居10.1.1.2接收到BGP路由

[r1]display  bgp routing-table peer 10.1.1.2 advertised-routes

仅查看本地发送给邻居10.1.1.2的BGP路由

 BGP的自动汇总问题

当代的路由器设备,默认就关闭了BGP的自动汇总功能;

自动汇总规则与正常BGP协议邻居共享的路由,或在BGP协议通过network宣告命令产生的路由条目无关;

仅针对从IGP重发布到BGP的路由条目;

BGP中的宣告可以理解为是逐条的重发布IGP路由到BGP

BGP中中将IGP重发布到BGP,可以理解为是批量的将IGP路由宣告到BGP 协议

但两种操作产生的路由条目其起源属性不同,宣告优于重发布;

在开启了自动汇总的前提下,重发布进入的路由将不携带子网掩码,按主类掩码进入;不携带本地到达目标的度量值,度量为0;若关闭自动汇总,进入路由将正常携带掩码,且携带度量;此时和宣告路由仅起源属性不同;故建议不要开启自动汇总;

既然在一个AS中建议所有运行BGP协议的设备均宣告相同路由,那么若进行重发布配置,也建议所有运行BGP协议的设备均进行重发布

BGP 的路由优选规则和负载分担

      在 BGP 路由表中,到达同一目的地可能存在多条路由。此时 BGP 会选择其中一条路由作为最佳路由,并只把此路由发送给其对等体。BGP 为了选出最佳路由,会根据 BGP 的路由优选规则依次比较这些路由的 BGP 属性。

1、BGP属性

路由属性是对路由的特定描述,所有的 BGP 路由属性都可以分为以下 4 类

① 公认必须遵循(Well-known mandatory):所有 BGP 设备都可以识别此类属性,且必须存在于 Update 报文中。如果缺少这类属性,路由信息就会出错。

② 公认任意(Well-known discretionary):所有 BGP 设备都可以识别此类属性,但不要求必须存在于 Update 报文中,即就算缺少这类属性,路由信息也不会出错。

③ 可选过渡(Optional transitive):BGP 设备可以不识别此类属性,如果 BGP 设备不识别此类属性,但它仍然会接收这类属性,并通告给其他对等体。

④ 可选非过渡(Optional non-transitive):BGP 设备可以不识别此类属性,如果 BGP 设备不识别此类属性,则会被忽略该属性,且不会通告给其他对等体。

BGP选择路由的策略

当到达同一目的地存在多条路由时, BGP 依次对比下列属性来选择路由:

① 优选协议首选值(PrefVal)最高的路由。

协议首选值(PrefVal)是华为设备的特有属性,该属性仅在本地有效。

② 优选本地优先级(Local_Pref)最高的路由。

如果路由没有本地优先级, BGP 选路时将该路由按缺省的本地优先级 100 来处理。

③ 依次优选手动聚合路由、自动聚合路由、 network 命令引入的路由、 import-route 命令引入的路由、从对等体学习的路由。

④ 优选 AS 路径(AS_Path)最短的路由。

⑤ 依次优选 Origin 类型为 IGP、 EGP、 Incomplete 的路由。

⑥ 对于来自同一 AS 的路由,优选 MED(Multi Exit Discriminator)值最低的路由。

⑦ 依次优选 EBGP 路由、 IBGP 路由、 LocalCross 路由、 RemoteCross 路由。

⑧ 优选到 BGP 下一跳 IGP 度量值(metric)最小的路由。

说明:在IGP中,对到达同一目的地址的不同路由, IGP根据本身的路由算法计算路由的度量值。

⑨ 优选 Cluster_List 最短的路由。

⑩ 优选 Router ID 最小的设备发布的路由。

说明:如果路由携带Originator_ID属性,选路过程中将比较Originator_ID的大小(不再比较RouterID),并优选Originator_ID最小的路由。

⑪ 优选从具有最小 IP Address 的对等体学来的路由。
​​​​​​​

BGP的社团属性

    BGP的扩展属性   默认大多数厂商的产品在BGP协议中不携带社团属性

例:控制传播范围的社团属性

[r1]route-policy com permit node 10

[r1-route-policy]apply community no-advertise  针对所有的流量修改属性

[r1]bgp 1

[r1-bgp]peer 12.1.1.2 route-policy com export

默认华为设备也不传递社团属性,故使用社团属性时,必须定义传递性  

[r1-bgp]peer 12.1.1.2 advertise-community   逐跳行为,每台设备均需开启传递性

no-advertise  接收到的条目中若存在该社团属性,将不再传递该路由

no-export   接收到的条目若存在该社团属性,将不传递给下一个AS

no-export-subconfed  接收到的条目若存在该社团属性,将不传递给下一个小AS

若网络没有小AS,仅存在大AS时no-export和no-export-subconfed作用一致

[r1-bgp]load-balancing as-path-ignore  BGP协议开启负载均衡,仅针对EBGP路由有效

条件为均衡的这些路径,其对端一定为同一个AS;且在BGP表中仅显示优最佳;但路由表中出现负载均衡现象;

Nex-hop-locai 仅针对本地通过外部AS--EBGP邻居学习到的路由条目才修改下一跳为本地;

联邦内的EBGP关系,传递的路由其属性遵循IGBP关系;传递性遵循EBGP关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值