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

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

  1. 第一章——不谋全局不足以谋一域
  2. 第二章计算第1节——计算虚拟化技术总述
  3. 第二章计算第2节——主流虚拟化技术之VMare ESXi
  4. 第二章计算第3节——主流虚拟化技术之Xen
  5. 第二章计算第4节——主流虚拟化技术之KVM
  6. 第二章计算第5节——商用云主机方案
  7. 第二章计算第6节——裸金属方案
  8. 第三章云存储第1节——分布式云存储总述
  9. 第三章云存储第2节——SPDK方案综述
  10. 第三章云存储第3节——Ceph统一存储方案
  11. 第三章云存储第4节——OpenStack Swift 对象存储方案
  12. 第三章云存储第5节——商用分布式云存储方案
  13. 第四章云网络第一节——云网络技术发展简述
  14. 第四章云网络4.2节——相关基础知识准备
  15. 第四章云网络4.3节——重要网络协议
  16. 第四章云网络4.3.1节——路由技术简述
  17. 第四章云网络4.3.2节——VLAN技术
  18. 第四章云网络4.3.3节——RIP协议
  19. 第四章云网络4.3.4节——OSPF协议
  20. 第四章云网络4.3.4.3节——OSPF协议工作原理
  21. 第四章云网络4.3.4.4节——[转载]OSPF域内路由
  22. 第四章云网络4.3.4.5节——[转载]OSPF外部路由
  23. 第四章云网络4.3.4.6节——[转载]OSPF特殊区域之Stub和Totally Stub区域详解及配置
  24. 第四章云网络4.3.4.7节——[转载]OSPF特殊区域之NSSA和Totally NSSA详解及配置
  25. 第四章云网络4.3.5节——EIGRP协议
  26. 第四章云网络4.3.6节——IS-IS协议
  27. 第四章云网络4.3.7节——BGP协议
  28. 第四章云网络4.3.7.2节——BGP协议概述
  29. 第四章云网络4.3.7.3节——BGP协议实现原理
  30. 第四章云网络4.3.7.4节——高级特性
  31. 第四章云网络4.3.7.5节——实操
  32. 第四章云网络4.3.7.6节——MP-BGP协议
  33. 第四章云网络4.3.8节——策略路由
  34. 第四章云网络4.3.9节——Graceful Restart(平滑重启)技术
  35. 第四章云网络4.3.10节——VXLAN技术
  36. 第四章云网络4.3.10.2节——VXLAN Overlay网络方案设计
  37. 第四章云网络4.3.10.3节——VXLAN隧道机制
  38. 第四章云网络4.3.10.4节——VXLAN报文转发过程
  39. 第四章云网络4.3.10.5节——VXlan组网架构
  40. 第四章云网络4.3.10.6节——VXLAN应用部署方案
  41. 第四章云网络4.4节——Spine-Leaf网络架构
  42. 第四章云网络4.5节——大二层网络
  43. 第四章云网络4.6节——Underlay 和 Overlay概念
  44. 第四章云网络4.7.1节——网络虚拟化与卸载加速技术的演进简述
  45. 第四章云网络4.7.2节——virtio网络半虚拟化简介
  46. 第四章云网络4.7.3节——Vhost-net方案
  47. 第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案
  48. 第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现
  49. 第四章云网络4.7.6节——virtio-blk存储虚拟化方案
  50. 第四章云网络4.7.8节——SR-IOV方案
  51. 第四章云网络4.7.9节——NFV
  52. 第四章云网络4.8.1节——SDN总述
  53. 第四章云网络4.8.2.1节——OpenFlow概述
  54. 第四章云网络4.8.2.2节——OpenFlow协议详解
  55. 第四章云网络4.8.2.3节——OpenFlow运行机制
  56. 第四章云网络4.8.3.1节——Open vSwitch简介
  57. 第四章云网络4.8.3.2节——Open vSwitch工作原理详解
  58. 第四章云网络4.8.4节——OpenStack与SDN的集成
  59. 第四章云网络4.8.5节——OpenDayLight
  60. 第四章云网络4.8.6节——Dragonflow
  61. 第四章云网络4.9.1节——网络卸载加速技术综述

  62. 第四章云网络4.9.2节——传统网络卸载技术

  63. 第四章云网络4.9.3.1节——DPDK技术综述

  64. 第四章云网络4.9.3.2节——DPDK原理详解

  65. 第四章云网络4.9.4.1节——智能网卡SmartNIC方案综述

  66. 第四章云网络4.9.4.2节——智能网卡实现

  67.  《云原生进阶之容器》专题第六章容器6.1.1节——容器综述

  68. 【云原生进阶之PaaS中间件】第一章Redis-1.1简介

  69. 【云原生进阶之PaaS中间件】第二章Zookeeper-1-综述

  70. 【云原生进阶之PaaS中间件】第三章Kafka-1-综述

  71. 【云原生进阶之PaaS中间件】第四章RabbitMQ-1-简介及工作模式

  72. 【云原生进阶之数据库技术】第一章MySQL-1-基础概述

  73. 【云原生进阶之数据库技术】第二章-Oracle-1-简介

  74. 【云原生进阶之数据库技术】第三章-PostgreSQL-1-综述

  《云原生进阶之容器》专题索引:

  1. 第一章Docker核心技术1.1节——Docker综述

  2. 第一章Docker核心技术1.2节——Linux容器LXC

  3. 第一章Docker核心技术1.3节——命名空间Namespace

  4. 第一章Docker核心技术1.4节——chroot技术

  5. 第一章Docker核心技术1.5.1节——cgroup综述

  6. 第一章Docker核心技术1.5.2节——cgroups原理剖析

  7. 第一章Docker核心技术1.5.3节——cgroups数据结构剖析

  8. 第一章Docker核心技术1.5.4节——cgroups使用

  9. 第一章Docker核心技术1.6节——UnionFS

  10. 第一章Docker核心技术1.7节——Docker镜像技术剖析

  11. 第一章Docker核心技术1.8节——DockerFile解析

  12. 第一章Docker核心技术1.9节——docker-compose容器编排

  13. 第一章Docker核心技术1.10节——Docker网络模型设计

  14. 第二章——Kubernetes概述

  15. 第二章Controller Manager原理剖析--2.1节Controller Manager综述

  16. 第二章Controller Manager原理2.2节--client-go剖析

  17. 第二章Controller Manager原理2.3节--Reflector分析

  18. 第二章Controller Manager原理2.4节--Informer机制剖析

  19. 第二章Controller Manager原理2.5节--DeltaFIFO剖析

  20. 第二章Controller Manager原理2.6节--Informer controller

  21. 第二章Controller Manager原理2.7节--Indexer剖析

  22. 第二章Controller Manager原理2.8节--Resync机制

  23. 第三章List-Watch机制3.1节-- List-Watch机制剖析

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江中散人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值