前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【重识云原生】第四章云网络4.3.7.2节——BGP协议概述

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

作者头像
江中散人_Jun
发布2022-06-05 10:58:36
7970
发布2022-06-05 10:58:36
举报

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

  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) - 知乎

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2  BGP协议概述
    • 2.1BGP使用场景简述
      • 2.2 BGP工作机制
        • 2.3 BGP报文格式
          • 2.3.1 BGP报文的5种消息类型
          • 2.3.2 BGP报文头格式
          • 2.3.3 BGP Open报文体格式
          • 2.3.4 KeepAlive报文及格式
          • 2.3.5 Update报文格式
          • 2.3.6 Notification报文
          • 2.3.7 Route-Refresh报文
        • 2.4 BGP数据库
        • 参考链接 
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档