BGP原理

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

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和OSPF协议的工作原理及区别 #### 工作原理 **BGP(边界网关协议)**是一种基于路径矢量的协议,主要用于自治系统(AS)之间的路由选择。BGP通过建立对等体(peer)之间的TCP连接来交换路由信息,确保网络中的路由信息可靠传输。BGP路由选择依赖于路由表中的现有路由条目,通过`network`命令选择性注入路由,并结合路径属性(如AS路径、本地优先级等)决定最佳路径[^1]。 **OSPF(开放最短路径优先协议)**是一种链路状态路由协议,主要用于自治系统内部的路由选择。OSPF通过洪泛法(flooding)将链路状态信息传播到整个区域,每个路由器根据链路状态数据库(LSDB)构建全网拓扑图,并通过Dijkstra算法计算最短路径,生成路由表。OSPF的`network`命令用于激活接口,使其参与路由进程,通过通配符掩码匹配接口的IP地址。 #### 主要区别 **1. 应用范围** BGP主要用于自治系统之间的路由(AS间路由),而OSPF用于自治系统内部的路由(AS内路由)。BGP路由信息传播范围通常跨越多个自治系统,而OSPF的路由信息传播限制在单个区域或整个OSPF域内[^1]。 **2. 路由生成方式** BGP路由生成依赖于路由表中的现有路由条目,需要通过`network`命令显式注入路由。如果路由表中没有匹配条目,BGP会生成路由信息。相比之下,OSPF通过接口的IP地址自动参与路由进程,通过链路状态信息动态生成路由表项。 **3. 掩码类型** BGP使用子网掩码(如255.255.255.0),而OSPF使用通配符掩码(如0.0.0.255)。两者的掩码格式同,可互换。例如,OSPF中误用子网掩码会导致配置错误,必须使用通配符掩码进行匹配[^1]。 **4. 协议机制** BGP基于TCP连接进行路由信息交换,具有较高的可靠性和稳定性。BGP路由选择过程涉及多个路径属性,如AS路径、本地优先级等,最终选择最优路径。OSPF通过洪泛法传播链路状态信息,确保所有路由器维护一致的链路状态数据库。OSPF使用Dijkstra算法计算最短路径,生成路由表[^2]。 **5. 收敛速度与复杂性** BGP的收敛速度较慢,通常用于大规模网络环境,且需要较多的配置和管理。OSPF的收敛速度较快,适用于中大型网络,通过区域划分优化网络性能,减少路由表的规模。 **6. 配置示例** BGP的配置需要指定自治系统号,并通过`network`命令注入路由条目。例如: ```shell router bgp 100 network 192.168.1.0 mask 255.255.255.0 neighbor 10.0.0.1 remote-as 200 ``` OSPF的配置需要指定进程号,并通过`network`命令启用接口参与OSPF进程。例如: ```shell router ospf 1 network 192.168.1.0 0.0.0.255 area 0 network 10.1.0.0 0.0.255.255 area 1 ``` #### 常见误区 **掩码混淆** 在OSPF中误用子网掩码会导致配置错误。OSPF要求使用通配符掩码进行匹配,而是子网掩码。例如,`network 192.168.1.0 255.255.255.0 area 0`是错误的,应使用`network 192.168.1.0 0.0.0.255 area 0`。 **BGP依赖路由表** BGP的`network`命令会自动生成路由条目,必须确保路由表中存在匹配的路由条目。如果没有匹配条目,可以通过静态路由或其他协议生成路由,例如: ```shell ip route 192.168.1.0 255.255.255.0 Null0 ``` 此命令创建静态路由BGP注入。 **OSPF的区域划分** OSPF的`network`命令必须指定区域,否则配置会报错。例如,`network 192.168.1.0 0.0.0.255`缺少区域参数会导致错误,应使用`network 192.168.1.0 0.0.0.255 area 0`。 #### 核心公式 BGP使用子网掩码进行路由注入,而OSPF使用通配符掩码匹配接口。两者之间的关系为: ```math OSPF通配符掩码 = 255.255.255.255 - 子网掩码 ``` #### 总结 BGP和OSPF在工作原理、应用范围、路由生成方式等方面有显著区别。BGP适用于自治系统间的路由选择,依赖路由表并使用子网掩码;而OSPF适用于自治系统内的路由选择,通过链路状态信息动态生成路由,并使用通配符掩码匹配接口。两者的配置和管理复杂度同,需根据网络需求选择合适的协议。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值