BGP原理

本文介绍了BGP边界网关协议的基础知识,包括自治系统概念、AS编号、协议特性如AS防环机制、TCP基础、路由选择及报文类型。同时,探讨了BGP邻居建立条件、状态机和路由发布规则,以及解决BGP黑洞问题的方法,如路由反射器和静态路由配置。

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

BGP基础
BGP,边界网关协议,用于在自治系统之间传递路由的协议。
自治系统概念:自治系统,就是一组被统一管理,并且运行同一种IGP协议的路由器组成的网络范围。
自治系统编号:分为私有AS,以及公有AS,公有AS范围为1-54511;私有AS范围为64512-65535。

BGP的协议特性:

  • BGP一条就是一个自治系统,从其他AS区域传来的路由在本区域中传播时,下一跳还是为上一个AS区域的出接口。
  • BGP只负责把路由从自治系统传递到另一个自治系统,从其他区域中传来的路由需要考本区域IGP协议进行传输。
  • BGP不产生路由,所有需要我们人为的下发路由,宣告在BGP中。
  • BGP有用自己独特的防环机制,AS防环机制:当当一跳路由从一个区域传出时,会把自己本区域的AS编号按照从右往左的顺序记录在AS-path属性中;一个路由器收到从其他AS收到的路由时,会第一时间检查此路由的AS-path属性,如果该属性中没有自己AS的编号,就会学习此路由,如果该属性出现了自己AS区域的编号,那就不学习该路由。
  • BGP基于TCP,必须手动配置邻居关系,目的端口号为179。
  • BGP为距离矢量协议,只会在第一次交互时发送完整的路由表,之后只会发送增量更新。
  • BGP有着多种属性可以控制路由选择

BGP的相关术语:

  • BGPspeaker:BGP发言者,表示运行了BGP的路由器。

  • BGP对等体,代表着BGP邻居,有两种邻居关系,IBGP邻居以及EBGP邻居。
    IBGP邻居:在同一个AS中的BGP邻居。
    EBGP邻居:运行在不同AS的的BGP邻居

BGP黑洞问题:
由于在IBGP邻居之间有没有运行BGP协议的路由器无法传输BGP路由从而导致数据包进入路由器后被丢弃
解决方法:
1:将BGP引入到IGP;(BGP路由表庞大,引入IGP中会造成IGP的路由表资源浪费,以及对设备性能有很大压力,慎重选择)
2:在黑洞路由器上配置到目的网段的静态路由。
3:IBGP全连接, AS中两两建立邻居关系,但是会导致环路,所有要运行IBGP放缓机制水平分割;IBGP邻居学到的路由不回传递给IBGP邻居,但是从EBGP邻居传来的路由,会传递给所有邻居。
4:BGP路由反射器,在AS中选一台为反射器,其他IBGP邻居只和反射器建立UBGP邻居;反射器原理:从IBGP邻居传递的路由会反射给其他的IBGP邻居。
5:通过使用私有的AS编号,把AS区域划分成若干小区域。

BGP报文

  • open报文,用于建立邻居关系,相当于OSPF的hello报文。
  • keeplive报文,保活报文,用于维持邻居关系。
  • Update,用于发送路由更新,以及路由撤销删除。
  • notification,用于BGP的报错消息。
  • Router-refrehs,用于通告邻居路由器重新发送制定地址族下的完整路由器。当入方向路由策略发生变化时,会发送Router-refresh报文通告对方发送指定地址族完整路由表,只有支持路由刷新能力的路由器才会相应Router-refresh报文。

BGP邻居建立条件
IBGP邻居建立条件

  • IBGP双方ip地址必须TCP可达,建议使用环回口地址指定IBGP邻居。
  • 如果使用环回口建立邻居,那么必须要更改更新源为环回口,而且必须和邻居指定的ip地址我一致。
  • IBGP不需要建立直连
    EBGP邻居建立条件
  • 对方的ip地址TCP可达,且需要直连
  • 更新源地址必须和邻居指定的ip地址一致

BGP的状态机

  • ldle 空闲状态,初始化时停留30秒,系统不分配任何资源,也拒绝所有的BGP连接。
  • Connect 连接中状态,等待对方向自己建立TCP连接
  • Active 活跃状态,,在Connect的时候失败会转换为活跃状态,此状态BGP会主动尝试与对方建立TCP连接。
  • Open-sent 开始发送状态 发出open报文,等待对方发送open报文。
  • Open-confirm 开始确认状态,收到了open报文,等待对方第一个keepalive报文
  • Established 已连接状态,收到对方的Keepalive报文,成功建立邻居。
    如果在任何状态下没有进行成功,就会回到初始状态

BGP计时器

  • Connect Rertry 重传计时器 为32秒
  • Keepalive 保活 一般为60秒,如果超过三个周期没有收到对方的Keepalive消息则判断邻居故障,保持时间可以改大,但是不能小区三个周期,如果两端Hoidtime不一致,双方接收较少的那一方

BGP路由发布规则

  • 只将本机最优的路由发布给邻居

  • 只将自己使用的路由发布给邻居

  • 从IBGP邻居学到的路由不传给其他IBGP邻居

### BGP协议的基本原理与工作机制 BGP(Border Gateway Protocol)是一种增强的路径矢量路由协议,主要用于AS(自治系统)之间的路由信息交换[^2]。作为一种外部网关协议(EGP),BGP在互联网中扮演着至关重要的角色,确保同AS之间能够高效、可靠地传输数据。 #### 1. 基本概念 - **AS(自治系统)**:一个AS是由单一管理机构控制的一组路由器和网络,使用相同的路由策略。BGP分为两种类型:EBGP(External BGP)和IBGP(Internal BGP)。EBGP运行于同AS之间,而IBGP运行于同一AS内部[^1]。 - **邻居关系**:BGP通过TCP连接建立邻居关系,并通过特定的报文进行通信。常见的BGP报文包括Open、Update、Notification和Keepalive等[^3]。 - **路由属性**:BGP路由携带多种属性,用于描述路由的特性和优先级。这些属性包括AS_Path、Next_Hop、Local_Pref、MED等。其中,AS_Path是一个关键属性,用于防止路由环路并帮助选择最优路径[^5]。 #### 2. 工作机制 BGP的工作机制可以分为以下几个方面: - **邻居建立**:BGP设备通过发送Open报文协商参数,建立TCP连接并形成邻居关系。一旦邻居关系建立成功,设备会定期发送Keepalive报文以维持连接状态[^3]。 - **路由交换**:当路由发生变化时,BGP设备通过Update报文向邻居通告新的路由信息。Update报文中包含可达路由可达路由的信息[^3]。 - **路由优选**:每个BGP路由器都会根据预定义的规则对收到的路由进行优选。优选过程通常基于路由属性,例如Local_Pref、AS_Path长度、MED等。最终,路由器会选择一条最优路径并将其加入到路由表中[^4]。 - **防止环路**:为了防止路由环路,BGP采用AS_Path属性来记录路由经过的所有AS号。如果EBGP接收到的Update报文中包含自身的AS号,则该路由会被丢弃。对于IBGP,为了避免环路问题,BGP设备会将从IBGP对等体学到的路由通告给其他IBGP对等体[^1]。 #### 3. 报文类型及其作用 BGP协议使用以下几种报文实现邻居交互和路由更新: - **Open报文**:用于协商BGP对等体参数,建立对等体关系[^3]。 - **Update报文**:用于发送BGP路由更新信息。当有新路由需要通告或路由发生变化时,设备会发送Update报文[^3]。 - **Notification报文**:用于报告错误信息并中止邻居关系。当BGP在运行过程中发现错误时,会发送Notification报文通知对端设备[^3]。 - **Keepalive报文**:用于标志邻居已建立,并维持BGP邻居关系。设备定期发送Keepalive报文以确认连接状态。 - **Route-refresh报文**:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文。 ```python # 示例:BGP配置命令 router bgp 65001 neighbor 192.168.1.2 remote-as 65002 network 10.0.0.0 mask 255.0.0.0 ``` 上述代码片段展示了如何在路由器上配置BGP协议,指定本地AS号为65001,并与远程AS号为65002的邻居建立连接。 ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值