江中散人

V1

2022/09/29阅读:10主题:默认主题

【重识云原生】第四章云网络4.3.7.2节——BGP协议概述

 《重识云原生系列》专题索引:

  1. 第一章——不谋全局不足以谋一域
  2. 第二章计算第1节——计算虚拟化技术总述
  3. 第三章云存储第1节——分布式云存储总述
  4. 第四章云网络第一节——云网络技术发展简述
  5. 第四章云网络4.2节——相关基础知识准备
  6. 第四章云网络4.3节——重要网络协议
  7. 第四章云网络4.3.1节——路由技术简述
  8. 第四章云网络4.3.2节——VLAN技术
  9. 第四章云网络4.3.3节——RIP协议
  10. 第四章云网络4.3.4节——OSPF协议
  11. 第四章云网络4.3.4.3节——OSPF协议工作原理
  12. 第四章云网络4.3.4.4节——[转载]OSPF域内路由
  13. 第四章云网络4.3.4.5节——[转载]OSPF外部路由
  14. 第四章云网络4.3.4.6节——[转载]OSPF特殊区域之Stub和Totally Stub区域详解及配置
  15. 第四章云网络4.3.4.7节——[转载]OSPF特殊区域之NSSA和Totally NSSA详解及配置
  16. 第四章云网络4.3.5节——EIGRP协议
  17. 第四章云网络4.3.6节——IS-IS协议
  18. 第四章云网络4.3.7节——BGP协议
  19. 第四章云网络4.3.7.2节——BGP协议概述
  20. 第四章云网络4.3.7.3节——BGP协议实现原理
  21. 第四章云网络4.3.7.4节——高级特性
  22. 第四章云网络4.3.7.5节——实操
  23. 第四章云网络4.3.7.6节——MP-BGP协议
  24. 第四章云网络4.3.8节——策略路由
  25. 第四章云网络4.3.9节——Graceful Restart(平滑重启)技术

2  BGP协议概述

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

2.1BGP使用场景简述

        BGP用于在不同的自治系统(AS)之间交换路由信息。当两个AS需要交换路由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。这个节点可以是一个主机。但通常是路由器来执行BGP。两个AS中利用BGP交换信息的路由器也被称为边界网关(Border Gateway)或边界路由器(Border Router)。

        由于可能与不同的AS相连,在一个AS内部可能存在多个运行BGP的边界路由器。同一个自治系统(AS)中的两个或多个对等实体之间运行的BGP 被称为 IBGP(Internal/Interior BGP)。归属不同的AS的对等实体之间运行的BGP称为EBGP (External/Exterior BGP)。在AS边界上与其他AS交换信息的路由器被称作边界路由器(border/edge router)。在互联网操作系统(Cisco IOS)中,IBGP通告的路由的距离为200,优先级比EBGP和任何内部网关协议(IGP)通告的路由都低。其他的路由器实现中,优先级顺序也是EBGP高于IGP,而IGP又高于IBGP。

  • EBGP:运行于不同 AS 之间的 BGP 称为 EBGP。为了防止 AS 间产生环路,当 BGP 设备接收 EBGP 对等体发送的路由时,会将带有本地 AS 号的路由丢弃。
  • IBGP:运行于同一 AS 内部的 BGP 称为 IBGP。为了防止 AS 内产生环路, BGP 设备不将从IBGP 对等体学到的路由通告给其他 IBGP 对等体,并与所有 IBGP 对等体建立全连接。为了解决 IBGP 对等体的连接数量太多的问题, BGP 设计了路由反射器和 BGP 联盟。

        BGP是沟通Internet广域网的主用路由协议,例如不同省份、不同国家之间的路由大多要依靠BGP协议。BGP的邻居关系(或称通信对端/对等实体)是通过人工配置实现的,对等实体之间通过TCP(端口179)会话交互数据。BGP路由器会周期地发送19字节的保持存活keep-alive消息来维护连接(默认周期为30秒)。在路由协议中,只有BGP使用TCP作为传输层协议。

        IETF先后为BGP制定了多个建议,分别为:

  • RFC 4271:当前正使用的BGP协议版本,称之为BGP4。
  • RFC 1654:BGP4协议的第一个规范。
  • RFC 1105、RFC 1163、RFC 1267、RFC1771:BGP4之前的BGP版本。

2.2 BGP工作机制

        BGP 其着眼点不在于自动发现网络拓扑,而在于在AS之间选择最佳路由和控制路由的传播:

  1. BGP使用TCP作为其传输层协议(监听端口号为179),提高了协议的可靠性,且不需要专门的机制来确保连接的可控性。
    1. BGP进行域间的路由选择,对协议的稳定性要求非常高。因此用TCP协议的高可靠性来保证BGP协议的稳定性。
    2. BGP的对等体之间必须在逻辑上连通,并进行TCP连接。目的端口号为179,本地端口号任意。
  2. 路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。
  3. BGP从设计上避免了环路的发生。
    1. AS之间:BGP通过携带AS路径信息来标记途经的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路。
    2. AS内部:BGP在AS内学到的路由不再通告给AS内的BGP邻居,避免了AS内产生环路。
  4. 支持CIDR 无类域间路由;
  5. BGP提供了丰富的路由策略,提供了防止路由振荡的机制,BGP也易于扩展。

2.3 BGP报文格式

2.3.1 BGP报文的5种消息类型

        BGP报文头中的type定义了BGP的报文类型。BGP对等体之间通过5种报文进行路由信息的交互,

  1. Open消息:是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。对等体在接收到Open消息并协商成功后,将发送Keepalive消息确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification、Keepalive和Route-Refresh消息的交换。
  2. Update消息:用于在对等体之间交换路由信息。Update消息可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。
  3. Keepalive消息:BGP会周期性的向对等体发出Keepalive消息,用来保持连接的有效性。
  4. Notification消息:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。
  5. Route-Refresh消息:通过OPEN消息告知BGP peer本地支持路由刷新能力(Route-Refresh capability)。

        这5种消息的应用场景:

  1. 通过TCP建立BGP连接时,发送OPEN消息;
  2. 连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端;
  3. 稳定后要定时发送KEEPALIVE消息以保持BGP连接的有效性;
  4. 当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对等体;
  5. ROUTE-REFRESH消息用来通知对等体自己支持路由刷新;

        然后看一下报文格式。

2.3.2 BGP报文头格式

                上图展开了BGP报文中的报文头Header:

  • Marker(标记):16字节,固定为1。
  • Length(长度):两字节无符号整数。指定了消息的全长,包括头部。
  • Type(类型):1 字节,指示报文类型,如OPEN、UPDATE报文等
    • 1 – OPEN
    • 2 – UPDATE
    • 3 –NOTIFICATION
    • 4 – KEEPALIVE

2.3.3 BGP Open报文体格式

  1. Version:1字节,表示BGP版本,缺省为BGP4;
  2. My AS:2字节,表示发送端对等体的AS号;
  3. Hold Time:2字节,表示发送端对等体的保持时间,缺省为KeepAlive时间的3倍,180s;
    1. 如果在保持时间内没有收到Keepalive或Update报文,则认为邻居失效;
    2. 如果对等体之间协商的保持时间不一致,将会采用较短的时间作为保持时间;
    3. 如果保持时间为0,对等体之间不发送Keepalive报文,BGP连接永远UP;
  4. BGP identifier:4字节,表示对等体的RouterID;
    1. RouterID优选Loopback地址大的,其次是物理接口地址大的;
  5. Opt Param Len:1字节,表示可选参数字段长度;
  6. Optional parameters:用于BGP能力协商,如4字节AS号、路由刷新、BGP多协议扩展等;

        在向对等体发送Open消息的时候,对等体之间根据可选参数进行能力协商,如果对等体之间都支持就可以使用该能力;

        如果一端对等体不支持该能力,会发送Notification报文,说明对等体不支持该能力,BGP邻居会重建;

2.3.4 KeepAlive报文及格式

        KeepAlive报文,用于维护对等体邻居关系.缺省为保持时间180s的1/3倍60s,Update报文会抑制KeepAlive报文的发送。如果保持时间为0,那么不会发送KeepAlive消息;

        KeepAlive报文只包含BGP报头;

2.3.5 Update报文格式

        Update报文,用来通告可达路由和不可达路由;可达路由携带路径属性;不可达路由只携带不可达路由前缀和前缀长度;

  1. Withdrawn Routes Length:2字节,表示不可达路由的长度;
  2. Withdrawn Routes:表示不可达路由的前缀和前缀长度;
  3. NLRI:表示可达路由的前缀和前缀长度;
  4. Path Attribute Length:2字节,表示可达路由携带的路径属性长度;
  5. Path Attribute :表示可达路由携带的路径属性;

2.3.6 Notification报文

        Notification报文,用于错误信息通告,然后断开 BGP邻居。Notification报文由错误代码、错误子代码以及数据字段构成。

  1. Error Code:1字节,表示每个错误对应的错误码,每个错误码可以包含多个错误子代码;
  2. Error SubCode:1字节,表示每个错误码对应的错误子代码;
  3. Data:包含了错误相关信息,用来诊断差错原因;

   

2.3.7 Route-Refresh报文

        Route-Refresh报文,用于请求对等体重新发送路由信息。

  • 对等体之间发送Open报文进行能力协商时,会进行路由刷新能力协商。
  • 当BGP的邻居入口路由策略改变后,会自动向邻居发送Refresh消息请求对等体重新发送路由信息。
  • 当BGP的邻居出口路由策略改变后,BGP会向邻居重新发送路由信息;

2.4 BGP数据库

        BGP数据库是BGP正常工作所需要的存储空间,基于保存的内容不同,可分为以下几种:

  • IP路由表(IP-RIB):全局路由信息库,包括所有最优的IP路由信息。
  • BGP路由表(Loc-RIB):BGP路由信息库,包括本地BGP Speaker通告的路由信息,将其中最优路由添加到IP路由表中。注意:先要关注BGP路由表、若BGP路由表中不是最优路由,则无法在IP路由表中可见。
  • 邻居表:对等体邻居清单列表,包括对等体两端的邻居信息即邻居列表。
  • Adi-RIB-In:对等体宣告给本地Speaker的未处理的路由信息库。
  • Adj-RIB-Out:本地Speaker宣告给指定对等体的路由信息库。

参考链接 

BGP协议原理(一)BGP协议基本概念:BGP作用与特点、BGP邻居关系建立与配置_Skye_Zheng的博客-CSDN博客_bgp协议作用

【网络干货】最全BGP路由协议技术详解 - 知乎

BGP协议总结(比较详细,好理解)_Looo~ye的博客-CSDN博客_bgp协议

边界网关协议_百度百科

BGP协议详解(一)_liboyang990814的博客-CSDN博客_bgp协议

BGP协议介绍 - 知乎

BGP报文及格式(2) - 简书

【干货】万字详解BGP路由技术原理及配置命令! - 知乎

32张图详解BGP路由协议:BGP基本概念、BGP对等体、BGP报文类型、BGP状态机等 - 知乎

BGP优雅重启(Graceful Restart) - 知乎

分类:

后端

标签:

云计算

作者介绍

江中散人
V1