注:

  • 本文根据《BGP in the Datacenter》整理,有兴趣和英文阅读能力的朋友可以直接看原文:https://www.oreilly.com/library/view/bgp-in-the/9781491983416/
  • 上一部分笔记请参考:https://blog.csdn.net/tushanpeipei/article/details/128539042

一、虚拟服务的兴起

作为本次阅读整理的最后一份笔记,本篇研究了BGP是如何部署在终端服务器上,以及我们如何实现服务器与Tor或Leaf节点进行路由交换,以实现网络的接入。

首先我们需要了解目前服务器在数据中心的部署模式。在传统的数据中心里,一般通过分级的互连网络模型(hierarchical inter-networking model)来架构网络。一般分发层(Distribution Layer)作为L2-L3的分界线,将下连的多个L2网络进行分离。同时,我们也在此边界部署防火墙以保护其下的服务器免于遭受网络攻击。然而,由于数据中心的规模不断增大,传统的分级的互连网络模型无法支撑。因此,我们改用了更方便扩张,冗余性更高,以及更易管理运维的Clos网络架构模型。Clos网络的出现,还摧毁了L2-L3的边界,也就是说,Clos架构的底层(Underlay)完全是通过L3路由协议进行连通的。

在另一方面,由于应用架构的改变,物理服务器逐渐被终端主机上运行的虚拟机(VM)提供或微服务(microserver)所替代。结合Overlay的VXLAN技术,我们可以实现这些服务器分布式的部署在数据中心的各个位置,并支持快速迁移。在这种情况下,IP地址不能再固定到单个机架或Tor/Leaf上。相反,可能有几个机架可以宣布相同的IP地址。借助路由的ECMP转发功能,数据包将流向提供该服务的最近的节点之一。这些由多个端点宣布的IP地址称为任播(Anycast)IP地址。任播IP地址是一种特殊的单播IP地址,这意味着去往它们的流量被发送到单个目的地(而不是多目的地地址,如多播或广播),但选择的具体目的地由路由决定。并且,拥有相同任播IP地址的服务器需要提供相同的服务。

最后,一个子网通常分配给一个机架。例如,每个机架有40台服务器,我们可以利用Tor宣告/26子网。但是,ToR如何发现或宣告非子网的任播IP地址呢?答案依然是BGP。

二、与服务器建立邻居的BGP模型

总的来说,服务器与Tor或Leaf设备建立BGP邻居存在两种模式。分别是之前笔记4中提到过的BGP无编号模型(BGP unnumbered model)和动态邻居模型(dynamic neighbors model)。接下来,我们来看一下两种模型的相同点,不同点以及各自的优劣势。

相同点:

  • ASN分配:

    1. 最常见的部署方式是为所有服务器配置一个专用ASN。这种方法的优点是配置和自动化运维简单,并且简化了服务器路由的识别和过滤(都来自同一个ASN)。但是,这种方法的两个主要缺点是:1)如果我们需要声明的不仅仅是到服务器的默认路由,那么服务器上配置的复杂性就会增加;2)跟踪哪个服务器发布的路由变得困难,因为所有服务器都共享相同的ASN。
    2. 另一种方法是为连接到同一交换机的所有服务器分配单个ASN,但为不同的交换机分配不同的ASN。这意味着每个机架都有一个单独的服务器ASN。这种模型的好处是服务器看起来只是 Clos 网络的另一层。该模型的主要缺点与之前的模型相同,尽管我们可以将路由通告缩小到特定机架。
    3. 最后一种方法是将每个服务器视为一个单独的节点,并为每个服务器分配单独的 ASN。这种方法的主要好处是它非常适合为 Clos 网络规定的模型,并且很容易确定哪个服务器发布了路由。但考虑到服务器的数量巨大,使用 4 字节 ASN 似乎是采用这种方法的明智之举。
  • 路由交换模型:
    1. 由于现在每一个服务器就像一台路由器一样与Leaf/Tor设备建立BGP邻居关系,交换路由。所以,我们首先需要在Leaf/Tor对服务器发布的路由进行控制,以避免一些不应该出现的路由被发布到整个数据中心的网络中。例如,服务器可能意外或恶意地宣布默认路由(或它不拥有的任何其他路由),从而将流量传送到错误的目的地。

    2. 第二,我们需要确保 Leaf/Tor交换机永远不会认为服务器是传输(Transit)节点。如果我们将过多的流量转发到该服务器,将导致严重的流量丢失。因为服务器并非设计用于处理每秒数百G比特的流量负载。

    3. 最后,连接到服务器的Leaf/Tor节点只通告默认路由。这是为了避免向服务器推送太多路由,填满服务器的路由表,并使其无法在每次某些路由更改时运行最佳路径算法。

      为了解决上述这些问题,我们可以在Leaf或Tor设备上通过route map来实现,一个示例如下所示:

      ip prefix-list ANYCAST_VIP seq 5 permit 10.1.1.1/32
      ip prefix-list ANYCAST_VIP seq 10 permit 20.5.10.110/32
      ip prefix-list DEFONLY seq 5 permit 0.0.0.0/0route-map ACCEPT_ONLY_ANYCAST permit 10match ip address prefix-list ANYCAST_VIP
      route-map ADVERTISE_DEFONLY permit 10match ip address prefix-list DEFONLYneighbor server route-map ACCEPT_ONLY_ANYCAST in
      neighbor server route-map ADVERTISE_DEFONLY out
      neighbor server default-originate
      

      通过上述措施的应用,我们可以看到Leaf/Tor交换机与服务器交路由的过程中,仅仅会接收服务器发送的Anycast路由,以及向服务器通告默认路由。

不同点: 两种模型中,服务器与Tor/Leaf节点的BGP邻居建立方式明显不同。

  • Dynamic neighbors模型:因为 BGP 运行在 TCP 之上,只要其中一个对等体发起连接,另一端就可以以被动的方式完成TCP握手。基于此原理,BGP Dynamic neighbors模型中一端被设置为被动的。它只是被告知要接受来自哪个IP子网的连接。例如,我们可以在一台Tor设备上配置进行如下的配置,监听所有的10.1.0.0/26网段,TCP端口号为179的,并且ASN为65530的连接:

    neighbor servers peer-group
    neighbor servers remote-as 65530
    bgp listen range 10.1.0.0/26 peer-group servers
    

    其下行的服务器只需要以正常的方式与该Tor建立邻居即可。需要注意的是,目前该特性不支持直接监听接口。此外,我们还可以在Tor设备上配置命令neighbor listen limit limit-number来限制Dynamic neighbors的个数。如图1所示,它展示了该模型下的物理组网方式:

图1:Dynamic neighbors网络模型

  • BGP unnumbered模型:和Dynamic neighbors网络模型共享子网的方式不同,BGP unnumbered没有共享的子网,就像路由器一样,服务器的 IP 地址独立于接口,通常分配给环回(Loopback)地址。每个服务器都可以分配一个独立的 /32 地址,因为服务器将使用IPv6链路本地地址 (LLA) 用于与路由器建立BGP邻居关系,如图2所示。交换机和服务器端的关键配置如下:

    交换机:
    neighbor peer-group servers
    neighbor servers remote-as external
    neighbor swp1 peer-group servers
    neighbor swp2 peer-group servers服务器:
    neighbor eth0 remote-as external
    

    该模型的最大的优点就使数据中心成为了一个纯路由的网络。但是,由于采用unnumbered接口的方式,它不能实现DHCPv4。此外,当共享链路位于交换机和服务器组之间时,共享接口上的BGP unnumbered模型在理论上是可行的,但目前尚未实现。

图2:BGP unnumbered网络模型

三、主机路由程序

根据上面的描述,我们能意识到,运行在服务器端端BGP仅仅是一个BGP的通告和接收者,它不需要执行最优路径算法等其他BGP的额外功能。所以我们在服务器端运行BGP是大材小用了,并且会导致服务器资源被浪费。因此,我们可以在服务器上运行其他的简化版本的BGP程序,例如ExaBGP。ExaBGP 是一个新的应用程序,它主要的功能就是与其他运行了BGP的设备建立BGP邻居,并简单通告和接收路由。

总的来说,本篇笔记总结了数据中心中常用的服务器与Tor/Leaf节点的对接、BGP路由交互方式,并且比较了它们的优缺点,以帮助我们在真实应用时根据自己的网络环境灵活选择不同的模型和方法。

BGP在数据中心的应用6——BGP在服务器上的应用相关推荐

  1. BGP在数据中心的应用2——BGP如何适应数据中心网络

    注: 本文根据<BGP in the Datacenter>整理,有兴趣和英文阅读能力的朋友可以直接看原文:https://www.oreilly.com/library/view/bgp ...

  2. BGP在数据中心的应用5——BGP生命周期管理

    注: 本文根据<BGP in the Datacenter>整理,有兴趣和英文阅读能力的朋友可以直接看原文:https://www.oreilly.com/library/view/bgp ...

  3. VR技术在数据中心3D机房中的应用(上)

    VR技术在数据中心3D机房中的应用(上)   前两天跟朋友A吃饭,吃着吃着就说到了VR.近几年来,VR技术越来越火,感觉能跟VR沾点边的都特别高大上,朋友A也是,一提到VR,就怎么都掩盖不住他发自肺腑 ...

  4. VR技术在数据中心3D机房中的应用(上) 1

    VR技术在数据中心3D机房中的应用(上) 前两天跟朋友A吃饭,吃着吃着就说到了VR.近几年来,VR技术越来越火,感觉能跟VR沾点边的都特别高大上,朋友A也是,一提到VR,就怎么都掩盖不住他发自肺腑的敬 ...

  5. 登台区无效_使用事务数据复制来重放和测试登台服务器上的生产负载

    登台区无效 大纲 (Outline) In this article, you'll see how to simulate production loads on a test server wit ...

  6. BGP在数据中心的应用1——数据中心网络介绍

    注: 本文根据<BGP in the Datacenter>整理,有兴趣和英文阅读能力的朋友可以直接看原文:https://www.oreilly.com/library/view/bgp ...

  7. 有限服务器延时计算_新建三座超级数据中心,增超百万台服务器 阿里云数据中心选址有何逻辑?...

    每经记者:刘春山 每经编辑:梁枭 今日(7月31日),阿里云正式宣布,其位于南通.杭州和乌兰察布的三座超级数据中心正式落成,陆续开服,新增超100万台服务器的计算力.加上之前的张北.河源,阿里云已经建 ...

  8. 数据中心解决方案之灾备方案设计(上)

    1.数据中心容灾备份解决方案 随着社会的发展和科技的进步,政府日常工作越来越依赖于数据处理来进行,政务系统的连续性依赖于数据中心系统的稳定运行.然而,灾难就像灰尘一样伏击在运营环境周围,政务系统的数据 ...

  9. 2022 极术通讯-2021中国云数据中心考察报告发布,Arm服务器促进多元算力发展

    导读:极术社区与E-learning平台联合推出极术通讯,引入行业媒体和技术社区.咨询机构优质内容,定期分享产业技术趋势与市场应用热点. 芯方向 新一代Armv9架构如何助力CPU安全和性能提升? 本 ...

最新文章

  1. John the Ripper
  2. 003_Redis配置
  3. 014_CSS伪类选择器
  4. matlab滤波仿真
  5. tensorflow学习(5.实际图片的读取以及lenet-5的搭建)
  6. 华工软院17级“软件需求分析”课程大作业
  7. javascript 学习教程
  8. [工具] 解决sublime text运行javascript console无输出问题
  9. android custom toast,Android自定义Toast
  10. 2-5-666:放苹果
  11. 【C++深度剖析教程27】多态的概念与意义
  12. 搜狗浏览器收藏夹在哪_安卓Edge浏览器最新版42.0.2轻体验,整体优良但无特别惊喜...
  13. 小程序 cover-view 字体_【企商云】2021年,要知道的9个小程序开发流程清单
  14. 华为惨遭围剿;京东人工智能养猪;三星承认中国市场失败 | 极客头条
  15. 在Git中更改文件名的大小写
  16. 提升研发效率 保障数据安全——阿里云宣布数据管理DMS企业版正式商业化 1
  17. Vscode关闭自动更新
  18. isbn书号查询php代码,eoLinker-API Shop ISBN书号查询 PHP调用示例代码
  19. 2020COSMO时尚盛典即将闪耀启幕
  20. win10系统查看占用端口

热门文章

  1. UOJ 179 线性规划
  2. 基于RRT自动探索算法的多智能体SLAM仿真实验
  3. 王学岗Retrofit初探(二)——文件的上传
  4. 豆瓣读书练习-介绍filter高阶函数
  5. 代数几何导引(德文版)【瑞士 马库斯·布罗德曼(Markus Brodmann)】的读书笔记,翻译和感想(1)
  6. 用matlab画水晶球,如何在内部绘制带有双色颗粒的水晶球
  7. 使用react实现后台管理系统项目
  8. hc05与单片机连接图_单片机开发一个数据采集系统,一看就是高手
  9. 新年趣事之打牌【01背包】【输出方案】
  10. TailWindCSS入门