前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BGP in the Data Center

BGP in the Data Center

作者头像
heidsoft
发布2021-08-26 16:59:53
2.5K0
发布2021-08-26 16:59:53
举报

摘自:https://arthurchiao.art/blog/bgp-in-data-center-zh/#chap_1

BGP(Border Gateway Protocol):边界网关协议

  1. 现代数据中心网络设计的目标是什么?
  2. 这些目标与其他网络(例如企业网和园区网,enterprise and campus)的设计目标有什么不同?
  3. 数据中心为什么选择 BGP 作为路由协议?

核心需求:

  1. 服务器到服务器通信越来越多(Increased server-to-server communication) 单体应用到微服务化的转变,导致南北向流量减少,东西向流量增加。
  2. 规模(Scale) 过去,几百台服务器就已经是一个大数据中心;现在,现代数据中心一个机 房可能就有上万台服务器。
  3. 弹性(Resilience) 老式数据中心的设计都是假设网络是可靠的,而现代数据中心应用都是假设网络 是不可靠的 —— 总会由于各种原因导致网络或机器故障。弹性就是要保证发生故障时 ,受影响的范围可控,尽量做到不影响用户体验。

多租户网络需要额外考虑:支持虚拟网络的快速部署和拆除(rapid deployment and teardown)。

传统网络设计的扩展方式:scale-in(垂直扩展),即通过更换性能更高的设备实现。缺点:

  1. 高性能设备特别贵
  2. 这些设备大部分都是两方冗余(two-way redundancy),存在同时挂掉的风险,可用性 不是足够高
  3. 发生故障时,故障范围特别大(尤其是核心设备)

1.2 Clos 网络拓扑

大型互联网公司最后采用了一种称为 Clos 的架构。Clos 架构最初是贝尔实验室的 Charles Clos 在 1950s 为电话交换网设计的。

可以实现无阻塞架构(non-blocking architecture):上下行带宽都充分利用。

图 1-1 简单的两级(two-tier) Clos 网络

特点:

  1. 连接的一致性(uniformity of connectivity):任意两个服务器之间都是 3 跳
  2. 节点都是同构的(homogeneous):服务器都是对等的,交换机/路由器也是
  3. 全连接(full-mesh):故障时影响面小(gracefully with failures);总带宽高 ,而且方便扩展,总带宽只受限于 Spine 的接口数量

注意,在以上模型中,Spine 仅仅用于连接 Leaf,因此在这种模型中,所有的功能( functionality)都集中在 Leaf 上。

扩展方式:scale-out(水平扩展)。

最大服务器数量(无阻塞架构下):n * m / 2,其中 n 是一个 Leaf 节点的端口 数量,m 是一个 Spine 节点的端口数量。

典型带宽,分为接入(leaf-server)和互连(leaf-spine):

  • 接入 10G,互连 40G
  • 接入 25G,互连 100G

受电源限制,单个机柜最大不超过 40 台服务器。

三级 Clos 网络

图 1-2 三级(three-tier) Clos 网络

一组 ToR 和 Leaf 组成一个二级 Clos,称为一个 pod 或 cluster;pod/cluster 作为一个独立单元再和 Spine 组成一个二级 Clos。

最大服务器数量:n * n * n /4,其中 n 是交换机端口数量。

Clos 架构的魅力:无论从哪一级看,每个组成部分都是类似的,可以方便地替换和扩容。

为了解决规模瓶颈,大型互联网公司甚至会考虑 4 级甚至 6 级 Clos 架构。

Clos 网络的副作用

由于 Spine 和 Leaf 之间是 full-mesh,网线会特别多,排线会复杂一些。

设备故障影响面比较小,排障和更换设备方便(resilience)。

设备都是对等的,管理比较方便。

1.3 Clos Network 网络架构

传统网络架构中,接入层和汇聚层走二层交换,因此需要运行 STP 协议消除二层环路。如果在 Clos 网络中交换机也走二层,那可用(active)链路就会大大减少,如图 1-3 所 示:

图 1-3 启用 STP 之后的网络连接

如果有链路发生故障,那可用链路的效率会更低:

图 1-4 启用 STP 并且一条链路发生故障之后的网络连接

由此可见,走二层会导致非常低效和不均匀的连接(highly inefficient and nonuniform connectivity)。

而另一方面,如果走三层路由,那就可以充分利用 Spine 和 Leaf 之间的 full-mesh 连接。而且路由还可以判断最短路径,或者为了达到更高整体利用率设置特定的路径。

因此,第一个结论:对于 Spine-Leaf 网络,路由(三层)比交换(二层)更合适。通 过二层连接的网络称为桥接网络(bridged network);通过路由连接的网络称为路 由网络(routed network)。

使用路由的另一个好处是,避免了各种厂商相关的 STP 优化方案(将多条物理链路聚合成 一条虚拟链路提高利用率)。

典型的传统桥接网络需要运行:

  1. STP
  2. 一个单向链路检测协议(虽然现在已经合并到 STP 了)
  3. 一个 VLAN 分发协议
  4. 一个 first-hop 路由协议,例如 HSRP(Host Standby Routing Protocol) 或 VRRP(Virtual Router Redundancy Protocol)
  5. 一个路由协议,用于连接多个桥接网络
  6. 一个独立的单向链路检测协议,用于走路由的链路(routed links)

如果是路由网络,那只需要:

  1. 一个路由协议(例如 BGP)
  2. 一个单向链路检测协议

和服务器直连的路由器(leaf)会充当 anycast gateway(也可以称为分布式网关), 此外就不需要其他协议了。

以上,就是 Clos 网络如何实现高度可扩展和弹性伸缩的。

1.4 服务器接入模型(Server Attach Model)

  • 单接入(single-attach)
  • 双接入(dual-attach)

大型互联网公司采用单接入方式(single-attach servers),即,每个服务器只连接 到单个置顶交换机。这种设计背后的逻辑是:服务器数量足够多,由于网络问题导致单个机 柜挂掉时,影响不是很大。

但是对于小型网络,乃至部分大型公司的网络,挂掉一个机柜带来的影响是不能接受的。因此这些公司采用双接入(dual-attach servers)方式:每个服务器连接到两个置顶 交换机。

双接入方式为了提高链路利用率,会将两个链路聚合成一个虚拟链路,这个技术是厂商相关 的,因此叫法不太一样:

  1. Cisco 叫 vPC(virtual Port Channel)
  2. Cumulus 叫 CLAG
  3. Arista 叫 MLAG(Multi-Chassis Link Aggregation Protocol)

这需要宿主机运行链路聚合控制协议(Link Aggreration Control Protocol, LACP) 以创建 bond 链路。如图 1-5 所示。

图 1-5 双接入方式下的链路聚合

1.5 连接到外部网络(Connectivity to the External World)

对于中型或大型网络,通过 border leaf 连接到外网。

主要好处:将数据中心的网络和外部网络隔开(isolate)。数据中心内的路由协议无需和 外部交互(interact),更加稳定和安全。

图 1-6 通过 border leaf 将一个 Clos 网络连接到外部网络

小型数据中心出于成本考虑,不会部署单独的 border leaf 节点,而是通过 Spine 连接到 外部网络,如图 1-7 所示。需要注意:这种方案中所有 Spine 都需要连接到外部网络,而 不是一部分 Spine。这非常重要,因为 Clos 网络中所有 Spine 都是对等的。

图 1-7 通过 spine 将一个 Clos 网络连接到外部网络

1.6 多租户(或 Cloud)支持

Clos 拓扑也适用于云计算网络,不管是公有云还是私有云。

云计算架构的额外需求:

  1. 敏捷性(Agility):能快速创建/删除虚拟网络
  2. 隔离性(Isolation):租户之间互相不可见
  3. 规模(Scale):能够支持大量的租户

1.7 现代数据中心设计的运维考虑

数据中心的设计会影响到数据中心的运维。

自动化是最基本的要求(Automation is nothing less than a requirement for basic survial)。在设计的时候要考虑能使自动化运维简单、可重复(simple and repeatable)。

1.8 选择路由协议(Choice of Routing Protocol)

对企业网(enterprise network),两种协议比较合适:

  1. OSPF(Open Shortest Path First)
  2. IS-IS(Intermediate System to Intermediate System)

它们都设计用于企业网内部,大部分企业网管理员对此应该很熟悉。

但是,OSPF 不支持多协议(例如对 IPv4 和 IPv6 需要运行两个独立协议),因此并没有 被大型互联网厂商采用。

IS-IS 支持 IPv4/IPv6,但是可选的实现比较少。而且,一些管理员认为,IS-IS 这样的链 路状态(link-state)协议不适用于 Clos 这样的富连接(richly connected)网络。

BGP 的特点:

  1. 成熟
  2. 支撑着互联网(powers the internet)
  3. 容易理解(fundamentally simple to understand),虽然名声可能不佳(despite its reputation)
  4. 实现很多,包括很多开源实现
  5. 支持多协议(例如 IPv4/IPv6,MPLS)和 VPN(内置)

只需对 BGP 做一些改造,就可以将它高效地应用中数据中心中。微软的 Azure 团队是最早 对 BGP 进行改造用于数据中心的。现在,我接触的大部分客户都是部署 BGP。

在下一章中,我们将看到人们对传统 BGP 进行了哪些改造,然后将它应用到数据中心的。

2 BGP 是如何适配到数据中心的

在 BGP 用于数据中心之前,它主要用于服务提供商网络(service provider network)。这导致的一个问题就是,数据中心不能运行 BGP,不然会和底层供应商的网络有冲突。如 果你是网络管理和运维人员,那意识到这一点非常重要。

不同网络场景:

  • 数据中心:高密度连接(dense connectivity)
  • 服务提供商(连接不同域):相对低密度连接(relatively sparse connectivity)

因此,服务提供商的网络首先是考虑可靠性(stability),其次才是(路由等)变化的快 速通知(rapid notification of changes)。因此,BGP 发送通知的实时性比较低。而在 数据中心中,管理员更希望路由更新(routing updates)越快越好。

另外,由于 BGP 自身的设计、行为,以及它作为路径矢量协议(path-verctor protocol) 的特性,单个链路挂掉会导致节点之间发送大量 BGP 消息。

第三个例子,BGP 从多个 ASN 收到一条 prefix(路由网段前缀)之后,最 终只会生成一条最优路径。而在数据中心中,我们希望生成多条路径。

为适配数据中心而对 BGP 进行的改造,见 FRC 7938。

本章描述这些改动,以及背后的考虑(rationale for the change)。这里再次强调,数 据中心使用的 BGP 和传统的 BGP 并不一样,如果不理解这一点,管理员很容易误操作造成 网络故障。

2.1 有几路由协议

传统 BGP 从 OSPF、IS-IS、EIGRP(Enhanced Interior Gateway Routing Protocol) 等 协议接收路由通告,这些称为内部路由协议(internal routing protocols),用于控制 企业内的路由。无怪乎很多人当时认为,要在数据中心中落地 BGP,还需要另一个协议。但实际上,在数据中心中 BGP 就是(特定的)内部路由协议,不需要再运行另一个协议 了。

2.2 iBGP 和 eBGP

数据中心内部是该使用内部网关协议(iBGP)还是外部网关协议(eBGP)?很多人觉得应 该是 iBGP,因为在数据中心内部,但其实不是。

数据中心中 eBPG 是使用最广泛的。原因;

  1. 主要原因是 eBGP 比 iBGP 更易理解和部署 iBGP 的最优路径选择算法很复杂,而且存在一些限制,使用、配置、管理复杂。
  2. eBGP 的实现比 iBGP 多,选择面比较大

2.3 ASN 编号

每个 BGP 节点都有一个 ASN(Autonomous System Number)。ASN 用于识别路由环境、 判断最优路径、关联路由策略等等。

ASN 有两个版本:老版用 2 个字节表示,新版用 4 个字节表示。

数据中心 BGP 中 ASN 的分配方式和公网 BGP ASN 的分配方式不同。

公网的 BGP 使用 well-known ASN,但数据中心中使用的一般都是私有 ASN,因为一般不需 要和公网做 peer。

私有 ASN

私有 ASN 和 私有网段类似。

但注意:如果管理员真要用公网 ASN,那也是没人能阻止的。有两个原因不建议这样做:

  • 造成管理的混乱,包括人和工具
  • 会将内网信息泄露到公网,造成极大的安全问题

私有 ASN 数量:

  1. 老版本(2 字节):大概 1023 个(64512~65534)
  2. 新版本(4 字节):大概 95 million(4200000000~4294967294)
Path Hunting 问题

有多种分配 ASN 的方式。

如果采用每个节点一个 ASN 的方案,那会存在一个 count-to-infinity 问题。简单说就是 :每个节点不知道其他节点的物理链路状态(physical link state),因此无法判断一条 路由是真的不通了(节点挂掉)还是通过其他路径还是可达的。

当一个节点挂到后,其他节点陆续撤回(withdraw)可达路由时,导致网络内大量的 BGP 消 息。这个问题称为 path hunting。

图 2-1 一个简单拓扑,解释 path hunting

ASN Numbering Model

为了避免 path hunting 问题,Clos 网络内的 ASN 编号模型如下:

  1. 每个 ToR 都有自己的 ASN
  2. pod 边缘的 leaf 有自己的 ASN,但同一个 pod 内的 leaf,共用同一个 ASN
  3. pod 之间的 spine,共享一个 ASN

图 2-2 是一个三级 Clos 的例子:

图 2-2 Clos 拓扑 ASN 编号模型示例

这种编号模型是如何解决 path hunting 问题的:以图 2-1 为例,如果 R2 和 R3 有 相同的 ASN,那 R1 收到 R2 的一条到 10.1.1.1 的消息后,再收到 R3 来的到 10.1.1.1 消息时(检测到有环路),就会拒绝后者。当 R4 挂掉时,消息回撤会很简单。

这种编号模型的缺点:无法做路由聚合或摘要(route aggregation or summarization )。还是拿图 2-1 为例,如果 R2 和 R3 通过直连的服务器总共收集到了 10.1.1.2/32 ~ 10.1.1.250/32 的可达消息。如果 R2 和 R3 做路由聚合,那只需要向 R1 通告一条 10.1.1.0/24 可达消息,而不用通告 250 次,每次一个 IP。在这种情况下,如果 R2-R4 链路挂了,那 R1 仍然认为 10.1.1.0/24 到 R4 仍然是可达的,因为可以通过 R1-R3-R4 ,但实际上有些 IP 是只能通过 R2-R4 才通的。也即路由聚合在这种情况下带来了问题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云数智圈 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.2 Clos 网络拓扑
    • 三级 Clos 网络
      • Clos 网络的副作用
      • 1.3 Clos Network 网络架构
      • 1.4 服务器接入模型(Server Attach Model)
      • 1.5 连接到外部网络(Connectivity to the External World)
      • 1.6 多租户(或 Cloud)支持
      • 1.7 现代数据中心设计的运维考虑
      • 1.8 选择路由协议(Choice of Routing Protocol)
      • 2 BGP 是如何适配到数据中心的
        • 2.1 有几路由协议
          • 2.2 iBGP 和 eBGP
            • 2.3 ASN 编号
              • 私有 ASN
              • Path Hunting 问题
              • ASN Numbering Model
          相关产品与服务
          弹性伸缩
          弹性伸缩(Auto Scaling,AS)为您提供高效管理计算资源的策略。您可设定时间周期性地执行管理策略或创建实时监控策略,来管理 CVM 实例数量,并完成对实例的环境部署,保证业务平稳顺利运行。在需求高峰时,弹性伸缩自动增加 CVM 实例数量,以保证性能不受影响;当需求较低时,则会减少 CVM 实例数量以降低成本。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档