当前位置: 首页 > ops >正文

BGP边界网关协议

 前言:

  1. 网络划分

    • IGP(内部网关协议):用于在单一自治系统(AS)内部交换路由信息的协议。
    • EGP(外部网关协议):用于在不同自治系统之间交换路由信息的协议。
  2. 自治系统(AS)

    • 定义:由一个或多个网络组成的集合,通常由一个组织或机构控制。
    • AS号:用于区分和标识不同的AS。原本是16位,范围是0-65535。由于AS号资源有限,IANA组织提出了扩展到32位的方案。(中国骨干网AS号——4134)
  3. 外部网关协议(EGP)

    作用:负责在AS之间传递路由信息。
  4. 边界网关协议(BGP)

    • 是EGP的一种具体实现,是互联网上用于连接不同AS的主要协议。
    • 版本:
      • BGP V4:主要用于传递IPv4路由信息。
      • BGP V4+:增强版本,可以适应多种网络环境,包括IPv4和IPv6。

 

BGP(边界网关协议):

类型:路径矢量路由协议。

特点:直接传递网段信息(路由条目信息)。

矢量定义:该路由信息的下一跳就是发送(传递)该路由的设备。

分类:无类别路由协议。

工作原理:以一个AS作为一跳进行路由的传递,不涉及算法,仅传递运行了BGP协议的设备路由表中存在的路由信息。

RIP(路由信息协议):

类型:距离矢量路由协议。

  • 对内部网关协议的关注点:
    1. 选路:选择最佳路径。
    2. 收敛速度:网络拓扑发生变化时,路由器更新其路由表的速度。
    3. 资源占用:协议运行时对网络设备资源的消耗。

路由信息的可控性:

  • BGP设计理念之一是为了在AS之间传递路由信息时实现更好的路由控制。由于存在多台运行BGP协议的设备,BGP通过设计路径属性来实现对路由信息的精细控制。

路由传递的可靠性:

  • BGP没有周期更新机制,它在传输层利用TCP协议(端口179)来确保报文传输的可靠性。这是BGP与其他内部网关协议(如RIP和OSPF)的一个重要区别,后者通常使用UDP或进行跨层封装。

 TCP协议的影响:

  1. 收敛速度慢:由于TCP的连接建立和确认机制,BGP的收敛速度可能相对较慢。
  2. 一对一的单播协议:TCP连接是点对点的,这意味着BGP更新是单播发送的,而不是广播或多播,这有助于减少网络流量。

补充点:

  • BGP的路径属性:BGP路由信息包含多种属性,如AS路径、下一跳、本地优先级、MED(多路径外部指标)等,这些属性决定了路由的选择和传递。
  • BGP的可靠性:除了使用TCP协议外,BGP还通过其他机制(如路由刷新能力、路由持稳能力等)来确保路由信息的可靠性。
  • BGP的会话建立:BGP设备之间首先通过TCP建立连接,然后交换Open消息以建立BGP会话,之后才能交换路由信息。

BGP对等体关系的建立

先启动BGP的一端先发起TCP连接,如上图所示,R1先启动BGP,R1使用随机端口号向R2的179端口发起TCP连接,完成TCP连接的建立。

三次握手建立完成之后,R1、R2之间相互发送Open报文,携带参数用于对等体建立,参数协商正常之后双方相互发送Keepalive报文,收到对端发送的Keepalive报文之后对等体建立成功,同时双方定期发送Keepalive报文用于保持连接。

其中Open报文中携带:

  • My Autonomous System:自身AS号
  • Hold Time:用于协商后续Keepalive报文发送时间
  • BGP Identifier:自身Router ID

BGP建立对等体的对等体都会发起TCP三次握手,所以会建立两个TCP连接,但是实际BGP只会保留其中一个TCP连接,从Open报文中获取对端BGP Identifier之后BGP对等体会比较本端的Router ID和对端的Router ID大小,如果本端Router ID小于对端Router ID,则会关闭本地建立的TCP连接,使用由对端主动发起创建的TCP连接进行后续的BGP报文交互。

BGP的AS-BY-AS原则:

BGP将一个自治系统(AS)视为一个整体。在一个AS内部,所有运行了BGP的设备学习到的路由信息是一致的。

BGP的邻居(对等体):

BGP邻居或对等体是指运行BGP协议的设备之间建立的关系。

EBGP对等体:

定义:运行BGP的设备来自不同的AS,建立的对等体关系被称为EBGP对等体。

特点:EBGP对等体通常使用直连建立对等体关系。

注意事项:不建议EBGP对等体之间有中间节点设备,因为无法保证自治性。为了限制EBGP直连建立对等体,EBGP设备之间传递的报文信息TTL值设置为1,只能传递一跳。

IBGP对等体:

定义:BGP协议支持在同一个AS内部非直连设备之间建立对等体关系,这种对等体称为IBGP对等体。

特点:IBGP对等体允许非直连建立,这是因为AS内部可能存在众多设备,无法保证所有设备都运行BGP协议。

注意事项:IBGP对等体设备之间传递的BGP报文TTL值设置为最大255。

BGP的负载均衡:

默认情况下,BGP不支持负载均衡。这意味着BGP通常会选择最佳路径进行数据包转发,而不是在多个路径之间分配流量。

BGP的数据包

报文名称作用发送时刻
Open协商BGP对等体参数,建立对等体关系BGP TCP连接建立成功之后
Update发送BGP路由更新BGP对等体关系建立之后有路由需要发送或路由变化时向对等体发送Update报文
Notification报告错误信息,中止对等体关系当BGP在运行中发现错误时,发送Notification报文将错误通告给BGP对等体
Keepalive标志对等体建立,维持BGP对等体关系BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送keepalive报文用于保持连接
Route-refresh用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文当路由策略发生变化时,触发请求对等体重新通告路由

 open报文——>建立对等体

AS号一致性:

描述:AS号是由对端设备传递的,需要与本地的配置进行比对。

注意事项:如果AS号不一致,将导致建立对等体失败。

路由器标识符(Router ID):

生成规则:与OSPF协议完全一致。

注意事项:必须保证Router ID不能重复。

认证:BGP支持对等体之间的认证,以确保安全性。

路由刷新功能:用于同步策略,需要两端设备都支持该功能才能使用路由刷新功能。

保活时间(Keepalive Time):

描述:用于检查BGP设备能否正常工作的检查时间,类似于OSPF的Dead Time。

默认值:180秒。

注意事项:两端设备配置不一致不会导致建立对等体失败,但会协商更小的时间作为保活时间。Open报文仅协商该时间,不进行周期保活。

 keeplive报文

周期保活:

描述:Keepalive报文用于周期性地确认BGP对等体的连通性。

发送频率:默认情况下,发送频率等于保活时间的1/3,即默认保活时间为60秒,因此Keepalive报文默认每20秒发送一次。

作为Open报文的临时确认包:

描述:在BGP对等体建立过程中,Open报文用于协商对等体参数。如果参数协商成功,设备会主动发送Keepalive报文作为临时确认,反馈协商结果。

注意事项:如果参数协商失败,设备将不会发送Keepalive报文。

BGP公共报文头部

BGP的六种状态机

Peer状态名称用途
Idle开始准备TCP的连接并监视远程对等体,启用BGP时,要准备足够的资源
Connect正在进行TCP连接,等待完成中,认证都是在TCP建立期间完成的。如果TCP连接建立失败则进入Active状态,反复尝试连接
ActiveTCP连接没建立成功,反复尝试TCP连接
OpenSentTCP连接已经建立成功,开始发送Open包,Open包携带参数协商对等体的建立
OpenConfirm参数、能力特性协商成功,自己发送Keepalive包,等待对方的Keepalive包
Established已经收到对方的Keepalive包,双方能力特性经协商发现一致,开始使用Update通告路由信息

Idle空闲状态:在指定建立对等体对象时,监测设备是否存在路由,如果存在则进入下一状态并准备建立三次握手,如果没有路由则停留在Idle状态。

 BGP的工作过程

1.基于IGP实现路由可达:BGP需要建立TCP会话,因此要求邻居之间路由可达。这是BGP工作的前提。

2.指定对等体关系并建立TCP会话:邻居之间通过三次握手建立TCP会话通道。所有的BGP通信都基于此TCP会话通道传输,依靠TCP提供传输的可靠性。

3.使用OPEN和Keepalive报文建立邻居关系:OPEN报文携带建邻参数,Keepalive报文用于确认OPEN报文参数和保活。最终完成对等体关系建立,生成邻居表存储对等体信息。

4.使用Update报文共享路由信息:建立对等体关系后,使用Update报文共享路由条目信息,包括目标网络号、掩码和路径属性。这些信息记录在BGP表中。

5.加载最优路由信息到路由表:从BGP表中选择最优路由信息(通过路径属性)加载到路由表中。BGP默认没有负载均衡,只有一个最优解。

6.使用Keepalive报文周期保活:收敛完成后,使用Keepalive报文进行周期性保活,默认保活时间(hold time)为180秒,发送周期为60秒。

7.使用Notification报文告警:如果过程中出现任何问题,使用Notification报文进行告警。

8.使用Update报文触发更新:如果出现结构突变(如网段消失或新增),使用Update报文触发更新并通告给其他对等体。

http://www.xdnf.cn/news/7681.html

相关文章:

  • 9、AI测试辅助-代码Bug分析提示词优化
  • 静态代理有哪些优势
  • 深入理解指针(一)
  • HarmonyOS实战:3秒实现一个自定义轮播图
  • 纯前端实现 导入/导出/模板下载功能
  • 变频器如何通过Profibus DP主站转Modbus RTU/TCP接入到上位机
  • DeepSeek的走红,会不会带动芯片市场新一轮增长?
  • Java中的ImageIo支持webp解析
  • 小白成长之路-Linux磁盘管理(一)
  • 如何管理和优化内核参数
  • [IMX] 07.LCD 显示
  • 【高斯函数】
  • 驱动相关基础
  • leetcode刷题日记——从前序与中序遍历序列构造二叉树
  • MES管理系统电子看板驱动企业智能制造
  • python Numpy-数组
  • 探索nsupdate:动态DNS更新的终极指南
  • 码钉枪行业2025数据分析报告
  • Java程序员从0学AI(二)
  • 使用F5-tts复刻音色
  • ArrayList源码分析
  • 实现商品列表
  • 建站系统哪个好?
  • 基于CATIA参数化圆锥建模的自动化插件开发实践——NX建模之圆锥体命令的参考与移植(二)
  • 笔记:显示实现接口如何实现,作用是什么
  • ollama部署模型
  • 工单派单应用:5 大核心功能提升协作效率
  • Ai学习之LangChain框架
  • STM32外设应用详解——从基础到高级应用的全面指南
  • 差分数组:原理与应用