问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

BGP 技术详解:邻居、报文、状态与路由全解析

创作时间:
作者:
@小白创作中心

BGP 技术详解:邻居、报文、状态与路由全解析

引用
CSDN
1.
https://blog.csdn.net/m0_74172897/article/details/146773446

目录
BGP邻居
BGP报文
Open关键报文
BGP工作原理
BGP状态
BGP路由
产生方式
得到BGP路由
BGP路由通告原则
BGP的防环机制
BGP同步
BGP下一跳属性
路由黑洞
BGP选路属性
协议首选值(PrefVal)
本地优先级(Local-pref)
修改方式
优选本地生成的路由
优选AS路径(AS_Path)最短的路由
Origin(起源属性)
OSPF,IS-IS,BGP概念区分

BGP邻居

IBGP:邻居的AS号和自身的AS号相同,建立的BGP邻居叫IBGP邻居 默认TTL为255
EBGP:邻居的AS号和自身的AS号不同,建立的BGP邻居叫做EBGP邻居默认TTL为1

BGP报文

  • Open报文
  • 协商BGP参数
  • Update报文
  • 交换路由信息
  • Keepalive报文
  • 保持邻居关系
  • Notification报文
  • 差错通知
  • Route-Refresh报文
  • 用于在改变路由策略后请求对等体重新发送路由信息

Open关键报文

  • My AS:用于标识自身所处的AS,邻居的open报文中My AS要和本地配置的一致。
  • Version:用于标识当前的BGP版本,向下兼容。 BGP4
  • Hold Time:默认为180s,即keeplive时间的3倍,双方不一致将会协商使用一个小的。
  • Router ID:用于标识自身的BGP Router ID,不能和邻居冲突。
  • 认证:认证需要通过
  • 地址簇必须要有一种协商成功。(IPv4 单播 IPv4 组播 不能成功 IP四单播 IP四单播 可以成功)
  • 默认情况下在华为设备携带了3中可协商能力:1、IPV4单播路由功能 2、路由刷新能力 3、4字节AS号支持能力

BGP工作原理

BGP状态

  • Idle状态是BGP初始状态。在Idle状态下,BGP拒绝邻居发送的连接请求。也不会想邻居发送TCP syn,只有32s之才会向邻居发送TCP syn 并且将邻居转为connect状态。
  • 卡在idle状态的原因:本地没有去往邻居的路由。
  • connect状态下,BGP启动连接重传定时器(connect。Retry),等待TCP完成连接
  • 如果TCP连接成功,那么BGP向对等体发送open报文,并转至opensent状态。
  • 如果TCP连接失败,那么BGP转至Active状态。(邻居开BGP了 但是没配邻居)
  • 如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在connect状态
  • 常见卡在connect状态的原因:
  • 邻居没有启用BGP协议
  • 沿途路径存在流量过滤将TCP SYN拒绝了
  • EBGP邻居建立没有配置多跳。
  • Active状态下,BGP总是在试图建立ICP连接。
  • 如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至opensent状态
  • 如果TCP连接失败,那么BGP停留在Active状态
  • 如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至connect状态
  • opensent状态下,BGP等待对等体的open报文,并对收到的0pen报文中的AS号、版本号、认证码等进行检查。
  • 如果收到的open报文正确,那么BGP发送Keepalive报文,并转至openconfirm状态
  • 如果发现收到的open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。
  • Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文
  • 如果收到正确的Update或Keepalne报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接。
  • 如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至ldle状态
  • Route-refresh报文不会改变BGP状态。
  • 如果收到Notification报文,那么BGP转至ldle状态
  • 如果收到TCP拆链通知,那么BGP断开连接,转至ldle状态。

BGP路由

产生方式

  1. 通过network的方式,将本地路由中的路由发布出去。
  2. 通过import-route的方式,将其他协议的路由引入到BGP协议中。
  3. 通过手动聚合的方式,产生一条聚合路由(汇总)
  4. 通过自动聚合的方式,产生一条聚合路由。

得到BGP路由

  • IBGP邻居给我传递
  • EBGP邻居给我传递
  • 自身产生BGP路由

BGP路由通告原则

BGP只会将有效路由中的最优的BGP路由通告给邻居。
*** -valid 有效 > - best 最优**

  • 自身产生的BGP路由通告给所有的BGP邻居。
  • 从IBGP邻居收到的路由,不会传递给IBGP邻居。(防环)
  • 从IBGP邻居收到的路由,会传递给EBGP邻居
  • 从EBGP邻居收到的路由,会传递给IBGP邻居
  • 从EBGP邻居收到的路由,会传递给EBGP邻居
  • [AR2-bgp] peer 4.4.4.4 next-hop-local //从EBGP邻居接受的路由,发送给IBGP邻居的时候修改下一跳地址。
  • @只需要在AS的边界设备上,针对本AS内的IBGP邻居配置。

BGP的防环机制

  • AS内的防环使用IBGP水平分割机制(只传一跳),即从IBGP邻居收到的路由不会传递给另一个IBGP邻居
  • AS之间的防环原则:利用了BGP的路由属性,即BGP将路由发送给EBGP邻居的时候会将自身的AS号添加到as-path列表中;并且规定,从EBGP邻居收到的路由如果携带自身AS号 则不接受该路由

BGP同步

BGP下一跳属性

  • 自身产生的路由发送给所有BGP邻居的时候,下一跳自动修改。
  • 从EBGP邻居接受的路由发送给IBGP邻居的时候,下一跳不会自动修改。
  • 从EBGP邻居接受的路由发送给EBGP邻居的时候,下一跳自动修改。
  • 从IBGP邻居接受的路由发送给EBGP邻居的时候,下一跳自动修改。
  • 从IBGP邻居接受的路由不存在发送给IBGP邻居的情况(防环)
    自动修改,指的是将路由传递给该邻居的时候,下一跳修改为自身与该其建立邻居的接口IP。

路由黑洞

  • BGP同步:用于防止BGP路由黑洞问题。
  • BGP同步机制:即从IBGP邻居接受的路由,需要在IGP表中存在,才会发送给EBGP邻居如果IGP表中不存在,则不会发送给EBGP邻居。
  • 为什么不使用BGP同步解决路由黑洞问题呢?
    1、BGP同步并不能完全解决路由黑洞问题。
    2、出现了更好的解决方案:
  • AS内部采用全互联的IBGP邻居架构,让所有路由器都运行BGP协议,从而使每台路由器都能够学到BGP路防止黑洞产生。
  • 在ASBR上将BGP路由引入到IGP协议中。(该方法已被淘汰)
  • 在ASBR之间建立GRE隧道,解决路由黑洞问题。(节约成本)
  • 通过LSP隧道解决路由黑洞问题。

BGP选路属性

  • 如果此路由的下一跳不可达,忽略此路
  • 由优选协议首选值(PrefVal)最高的路由
  • 优选本地优先级(LocalPref)最高的路由
  • 优选本地生成的路由
  • 优选AS路径(AS_Path)最短的路由
  • 比较Origin属性,依次优选Origin类型为IGP、EGP、Incomplete的路由
  • 优选MED值最低的路由
  • 优选从EBGP邻居学来的路由(EBGP路由优先级高于IBGP路由)
  • 优选到BGP下一跳IGP Metric较小的路由
  • 优选Cluster_List最短的路由
  • 起源ID
  • 优选RouterID最小的路由器发布的路由
  • 比较对等体的IP Address,优选从具有较小IP Address的对等体学来的路由

协议首选值(PrefVal)

  • 华为BGP私有属性
  • 只在本地有效,不会传递给任何的BGP邻居
  • 默认等于0
  • BGP的选路属性
  • 越大越优
  • 针对发送给邻居的BGP路由,无法修改协议协议首选值,因为报文中并不携带
  • 针对接受BGP邻居的路由,才可修改协议首选值
  • 当不想影响其他设备的选路,只针对单台设备的选路进行控制的时候,建议使用协议首选值。

本地优先级(Local-pref)

  • 公认任意属性
  • 只在一个AS内部进行传递,不会传递给EBGP邻居。
  • 用于BGP路由的路径选择(默认100,越大越优先。)
  • 应用在AS内存在多个出口的时候选择一个出口访问外部网络
  • EBGP路由不携带本地优先级属性,对于不携带本地优先级属性的BGP路由,设备将会认为这个BGP路由的本地优先级为默认本地优先级(默认的本地优先级为100)

修改方式

  • 针对接受或者发送给BGP邻居的路由进行修改(Route-policy)
  • EBGP邻居之间out方向不可以修改 (图AR2上 写路由策略的方向)
  • EBGP邻居之间in方向可以修改
  • IBGP邻居之间in,out方向可以修改
  • 修改默认的本地优先级
  • [AR2-bgp]default local-preference //修改默认的本地优先级。
  • 关键点:在只会在对没有本地优先级属性的路由生效
  • 哪些BGP路由没有本地优先级
  1. 自身产生的:network和import-route指令变成的BGP路由没有本地优先级。
  2. 邻居传递的:EBGP邻居传递的路由默认没有本地优先级。

优选本地生成的路由

  • 手动聚合>自动聚合>etwork>import-route>邻居传递的
  • 当下一跳等于127.0.0.1(手动聚合,自动聚合)或者0.0.0.0(network,import-route)的时候,路由即为本地产生的。

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

  • 公认必遵属性
  • 用于AS之间的防环属性
  • 用于BGP路由的路径选择。
    AS之间防环:
  1. BGP设备将路由发送给EBGP邻居的时候,将会在路由的as-path属性中添加自身的AS号
  2. BGP设备从EBGP邻居接受路由的时候,将会检查路由的AS-PATH属性列表,如果存在自身的AS号,那么将忽略这条BGP路由。
  3. IBGP邻居之间不会做AS-PATH的防环检测。
  • 路径选择:当存在去往同一个目的地的多条BGP路由时,比较两条路由的AS-PATH列表,越短越优。
  • 修改方式:AS-path在任何BGP邻居之间的in/out方向都可以进行修改。
  • @apply as-path 100 100 additive //在原有的As-path列表中添加新的AS号,
  • @apply as-path 100 100 overwrite //使用指定的AS-path覆盖原有的as-path
  • @apply as-path none overwrite //清空原有的as-path列表。

Origin(起源属性)

  • 公认必遵属性
  • 描述了这条路由是如何成为BGP路由的
  • 用于BGP路径选择
  • i:表明该路由是通过network的方式变成的BGP路由。
  • ?:表明该路由是通过import-route的方式变成BGP路由。
  • e:表明是从EGP协议学到的该路由。
  • 选路规则:i > e > ?

MED

  • 可选非过渡属性
  • 用于BGP路由的路径选择(越小越优)
  • 如果报文中不携带MED值,默认认为MED为0.

MED的修改方式:

  • 在所有BGP邻居之间 in/out方向均可修改。

MED选路方式:

  • @默认情况下,只有当两条BGP路由as-path列表中,最左边的AS号相同的时候,才会进行MED的比较
  • @compare-different-as-med //命令用来配置允许比较来自不同自治系统中的邻居的路由的MED值
    如何产生MED呢:
    当一条路由变为BGP路由的时候,这个路由在IP路由表中的Cost为多少,那么变为BGP路由之后MED为多少。

华为MED通告原则:

  1. 自身始发的路由,MED会通告为IBGP和EBGP邻居。
  2. 从IBGP邻居接受的路由,传递给EBGP邻居的时候,不携带MED值
  3. 从EBGP邻居接受的路由,传递给IBGP邻居的时候,携 带 MED值。
  4. 从EBGP邻居从EBGP邻居接受的路由传递给EBGP邻居的时候,不携带MED

OSPF,IS-IS,BGP概念区分

概念 \ 协议
OSPF
IS-IS
BGP
区域相关
区域是将自治系统划分的不同部分,每个区域有独立链路状态数据库,通过 ABR 实现区域间通信
区域用于划分网络,减少链路状态信息传播范围和处理复杂度
自治系统(AS)是由一个或多个网络运营商或组织管理的一组路由器和网络,具有唯一的自治系统编号(ASN),是 BGP 路由信息交换的基本单位
边界路由器
ABR(区域边界路由器)连接同一个自治系统内的不同区域,负责区域间路由信息传递和汇总ASBR(自治系统边界路由器)连接 OSPF 自治系统与其他自治系统,引入外部路由并通告内部路由到其他自治系统
Level-1/2 路由器兼具区域内和区域间路由功能,类似 OSPF 的 ABR,连接不同区域Level-2 路由器主要负责区域间路由,维护整个网络拓扑信息
EBGP(外部边界网关协议)用于不同自治系统之间的 BGP 连接,交换跨自治系统的路由信息IBGP(内部边界网关协议)用于同一个自治系统内部的 BGP 连接,在自治系统内传播路由信息
路由信息交换单元
链路状态通告(LSA),用于描述网络拓扑结构和链路状态
链路状态协议数据单元(LSP),类似于 LSA,描述路由器连接状态和邻居关系等
BGP 通过路径向量协议交换路由信息,携带丰富的属性来描述路由的特征和策略
特殊机制
路由反射器(RR)用于解决 IBGP 全连接问题,将从一个 IBGP 邻居学到的路由反射给其他邻居联盟(Confederation)将大型自治系统划分为多个子自治系统,简化管理和路由策略配置
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号