【重识云原生】第四章云网络4.3.7.5节——BGP协议实操

时间:2024-10-04 07:28:36

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

  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机制剖析

5 实操-BGP邻居关系和配置

5.1 建立TCP连接

        BGP协议被设计运行在AS之间传递路由,AS之间是广域网链路,数据包在广域网上传递是可能出现不可预测的链路拥塞或丢失等情况,因此BGP使用TCP作为其承载协议来保证可靠性。

        相当于TCP连接一直存在,BGP通过Keep alive机制(不断、定时发送keepalive报文)时TCP连接不会断掉。

        BGP使用TCP封装建立邻居关系,端口号为179,TCP采用单播建立连接,因此BGP协议并不像RIP和OSPF一样使用组播发现邻居。单播建立连接也使BGP只能手动指定邻居。(配置的时候需要自己手动指定邻居)。

        先看起BGP的一端发起TCP的连接。

TCP连接(三次握手)简单介绍:

        一下图为例:RTB向RTA发起建立TCP连接请求,RTA收到之后,返回一个连接请求和确认消息,RTB收到之后返回一个确认消息。连接建立完成。

5.2 BGP邻居类型

        BGP邻居类型分为两种:

  • EBGP(External BGP):运行在不同AS之间的BGP路由器建立的邻居关系为EBGP邻居关系;
  • IBGP(Inter BGP):运行在相同AS内的BGP路由器建立的邻居关系为IBGP邻居关系;

        EBGP只用于不同AS之间传递路由。如图,AS 100内的RTB与BTC分别从AS 200与AS 300学习到不同的路由,怎么实现AS 200与AS 300之间路由在AS 100内的交换?

        在AS 100内实现将学到的AS 200和AS 300路由进行交换,可以在拓扑中的RTB与RTC路由器上将BGP的路由引入IGP协议(图中为OSPF协议),再将IGP协议的路由在RTB与RTC路由器上引入回BGP协议,实现AS 200与AS 300路由的交换。

        上述方法存在以下几个缺点:

  • 公网上BGP承载的路由数目非常大,引入IGP协议后,IGP协议无法承载大量的BGP路由;
  • BGP路由引入IGP协议时,需要做严格的控制,配置复杂,不易维护;
  • BGP携带的属性在引入IGP协议时,由于IGP协议不能识别,可能会丢失。

        因此我们用IBGP来邻居关系来解决上述问题:如上图,因为BGP使用TCP作为其承载协议,所以可以跨设备建立邻居关系。如图所示,RTB与RTC之间建立IBGP邻居关系,并各自将从其他AS学到的路由传递给对端,实现BGP路由在AS内的传递。

        注意:建立IBGP邻居关系建立一般使用Loopback口IP地址,因为Loopback口为逻辑接口,且不会down,非常稳定,这样邻居关系一直处于稳定状态。EBGP邻居关系建立使用直连接口IP地址。

5.3 BGP简单邻居关系配置

5.3.1 第一步

        搭建拓扑,规划网段并配置各个接口IP地址。

以RTB举例:

[RTB]int g0/0/0

[RTB-GigabitEthernet0/0/0]ip ad 10.1.24.2 24

[RTB-GigabitEthernet0/0/0]int g0/0/1

[RTB-GigabitEthernet0/0/1]ip ad 10.1.12.2 24

[RTB-GigabitEthernet0/0/1]int lo0

[RTB-LoopBack0]ip ad 22.22.22.22 32

[RTB-LoopBack0]quit

[RTB]

5.3.2 第二步

        AS 100内部使用IGB:OSPF协议通信。配置OSPF协议。

        注意:不要忘记宣告Loopback接口所在网段。

以RTB为例其余路由器相同:

[RTB]ospf

[RTB-ospf-1]a 0

[RTB-ospf-1-area-0.0.0.0]network 22.22.22.22 0.0.0.0

[RTB-ospf-1-area-0.0.0.0]network 10.0.12.0 0.0.0.255

        验证RTB环回口是否能与RTC环回口通信,若正确则进行下一步:

ping -a 22.22.22.22 33.33.33.33

PING 33.33.33.33: 56 data bytes, press CTRL_C to break

Reply from 33.33.33.33: bytes=56 Sequence=1 ttl=254 time=40 ms

Reply from 33.33.33.33: bytes=56 Sequence=2 ttl=254 time=30 ms

Reply from 33.33.33.33: bytes=56 Sequence=3 ttl=254 time=30 ms

Reply from 33.33.33.33: bytes=56 Sequence=4 ttl=254 time=30 ms

Reply from 33.33.33.33: bytes=56 Sequence=5 ttl=254 time=30 ms

--- 33.33.33.33 ping statistics ---

5 packet(s) transmitted

5 packet(s) received

0.00% packet loss

round-trip min/avg/max = 30/32/40 ms

5.3.3 第三步

        配置BGP邻居关系:

  1. 配置Router ID:标识路由器
  2. 配置EBGP邻居关系:AS之间传递路由

        以RTB、RTD之间建立EBGP关系为例:

[RTB]

[RTB]bgp 100

[RTB-bgp]peer 10.1.24.4 as-number 200 //BGP邻居关系的类型主要靠配置的AS号区别,peer关键字后面是对端邻居的接口IP地址,as-number后面是邻居路由器所在的AS号,AS号相同则为IBGP邻居关系;AS号不同,则为EBGP邻居关系。

[RTD]

[RTD]bgp 200

[RTD-bgp]peer 10.1.24.2 as-number 100

5.3.4 第四步

        配置IBGP邻居关系:本例中RTB和RTC建立IBGP邻居关系(本例使用逻辑接口建立IBGP邻居关系):

[RTB]

[RTB]bgp 100

[RTB-bgp]peer 33.33.33.33 as-number 100 //AS号相同则为IBGP邻居关系

[RTB-bgp]peer 33.33.33.33 connect-interface LoopBack 0

[RTC]

[RTC]bgp 100

[RTC-bgp]peer 22.22.22.22 as-number 100

[RTC-bgp]peer 22.22.22.22 connect-interface LoopBack 0

[RTC-bgp]

额外提供直连接口配置方法:

[RTB-bgp]peer 10.1.12.1 as-number 100

查看邻居关系display bgp peer:

以RTB为例:

[RTB]display bgp peer

BGP local router ID : 2.2.2.2

Local AS number : 100

Total number of peers : 2 Peers in established state : 2

Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pre

fRcv

10.1.24.4 4 200 41 42 0 00:39:16 Established 0

33.33.33.33 4 100 37 37 0 00:35:27 Established 0

        注意:此时BGP邻居关系已经建立,但是由于没有路由引入所以没有路由表,查看BGP路由表命令:display bgp routing-table。路由引入命令下一遍文章介绍

 参考链接 

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

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

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

边界网关协议_百度百科

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

BGP协议介绍 - 知乎

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

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

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

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