BGP在数据中心的应用6——BGP在服务器上的应用

news2024/12/24 20:34:02

注:

  • 本文根据《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/0
      
      route-map ACCEPT_ONLY_ANYCAST permit 10
      	match ip address prefix-list ANYCAST_VIP
      route-map ADVERTISE_DEFONLY permit 10
      	match ip address prefix-list DEFONLY
      	
      neighbor 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路由交互方式,并且比较了它们的优缺点,以帮助我们在真实应用时根据自己的网络环境灵活选择不同的模型和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/138657.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频如何在线生成二维码?视频转二维码的2种方法

现在很多小伙伴都喜欢将视频转二维码,通过这种方式来分享传递内容,那么如何将视频生成二维码更加的简单快捷呢?大家可以用一下小编分享的这款在线二维码生成工具来制作二维码,通过浏览器在线生成二维码,更加的简单快捷…

设计模式——迭代器模式

迭代器模式一、基本思想二、结构图三、代码一、基本思想 提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式,其主要优点如下: 访问一个聚合对象的内容而无须暴露它的内部表示。遍…

【Kotlin】函数 ④ ( 匿名函数参数 | 匿名函数 it 关键字 )

文章目录一、匿名函数参数二、匿名函数 it 关键字一、匿名函数参数 匿名函数 可以不带参数 , 也可以带多个参数 ; 不带参数的匿名函数 : // 声明 函数类型 变量, 并为其赋值 匿名函数val helloFun: ()->String {"Hello World"}带参数的匿名函数 : 匿名函数 的 参…

安装一个Excel插件,轻松网罗50+主流数据库

电子表格软件(Smartbi Spreadsheet)是思迈特软件推出的企业报表产品,产品以“真Excel”为特色,只需要安装一个小小插件,就能解决Excel最头疼的数据连接和性能问题。电子表格软件的数据源范围涵盖了本地数据库、关系型数…

如何学习虚幻引擎的Blueprint?

(虚幻学习路线-方法概括版) 【写在前面】:本篇内容颇多,并不是一大堆全学,把这篇当成一个字典,选择性学习,缺哪学哪~ 一、Blueprint (一)什么是虚幻引擎的Blueprint&…

C++STL之list容器

一:list特性list为带哨兵位双向循环链表,支持任意位置的插入和删除。与(array,vector,deque)相比,list的移除元素效率更高。最大缺陷是不支持[]重载,不支持随机访问,只能…

基于 EventBridge API Destination 构建 SaaS 集成实践方案

作者:赵海 引言 事件总线 EventBridge 是阿里云提供的一款无服务器事件总线服务,支持阿里云服务、自定义应用、SaaS 应用以标准化、中心化的方式接入,并能够以标准化的 CloudEvents 1.0 协议在这些应用之间路由事件,帮助您轻松构…

Mockjs入门基础概念与使用

文章目录Mockjs入门使用1、概述2、安装引入3、语法规范3.1 数据模板定义规范(DTD)3.1.1 DTD介绍3.1.2 规范实例演示字符串String数字Number布尔Boolean对象Object数组Array函数Function正则表达式RegExp3.2 数据占位符定义规范DPD4、关于Mock.mock()方法4.1 参数介绍…

RabbitMQ 常见面试题

RabbitMQ 常见面试题 1.为什么要用消息队列? (消息队列的应用场景?) 2.各种消息队列产品的比较? 3.消息队列的优点和缺点? 4.如何保证消息队列的高可用? 5.如何保证消息不丢失? 6.如何保证消息不被重复消费?(如何保证消息消费的幂等性) 7.如何保证消息消费的…

PMP证书好考吗?

PMP 还是很好考的,各大机构 3A 的人也很多,我的备考经验分享给大家参考下,大家可以取长补短,找到适合自己的备考方法:一、复习计划的制定根据之前在培训班共同奋斗的小伙伴学习时间统计,平均每天的学习时间…

我的第一门编程语言

元旦节在家重温了一遍《三体》,看到下面一段描写:监听部的计算机系统也远比发射部庞大复杂,叶文洁第一次走进主机房时,看到一排阴极射线管显示屏,她惊奇地发现,屏幕上竟滚动着一排排程序代码,可…

KITTI评价指标学习

在pointpillars完成训练后,可以看到对于目标检测的评估,据了解,这是kitti的标准目标检测格式,所以了解了一下. 在generate label finished后,可以看到类别Car对应的AP(Average precision)有3个0.70,分别对应的是Kitti object detection中,被分为Easy, Moderate,和Hard三种级别物…

算法训练 —— 哈希

目录 1. LeetCode242. 有效字母的异位词 2. LeetCode349. 两个数组的交集 3. LeetCode350. 两个数组的交集II 4. LeetCode202. 快乐数 5. LeetCode1. 两数之和 1. LeetCode242. 有效字母的异位词 有效字母的异位词 本题的含义就是判断两个字符串是否相同; 我们…

文档管理降低运营成本的 5 大方法

文档管理降低运营成本的 5 大方法 正在寻找降低成本和最大化生产力的方法的首席财务官和首席信息官已经知道,良好的文档管理可以在几个月内收回成本。数字文档管理(有时称为“企业内容管理”或 ECM)通过自动化工作流程和消除耗时的手动任务来…

第三十四讲:神州路由器远程管理

1、路由器的带外管理 Username: admin Password: Router>ena Router#conf Router_config#username dcn password 123456 Router_config#enable password 0 789 Router_config#aaa authentication enable default enable Router_config# aaa authentication login de…

Spring学习笔记1

1.核心概念 IoC(Inversion of Control)控制反转 对象的创建控制权由程序转移到外部,这种思想称为控制反转 Spring技术对IoC思想进行了实现 Spring提供了一个容器,称为IoC容器,用来充当IoC思想中的“外部” IoC容器负责…

测试小白必备!初级软件测试面试题题库,你绝对要用

软件测试的面试过程中,面试官往往都会根据你面试的职位,提问一些相关的软件测试知识,而很多人为了能够提高的自己在面试当中的通过率,都会在面试前做好充足的准备。比如刷面试题,背答案、准备面试话术这些。今天&#…

JSP ssh 桌面网站系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh 桌面网站系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模 式开发。开发环境为TOMCAT7.0,My…

mes制造执行系统软件适用于哪些行业,有你所处的行业吗?

MES作为一种面向企业工厂生产加工的软件,为企业制造做出了巨大的贡献。虽然MES很实用很简单,但是也凸显了一个问题,有一些企业的生产方式是不适用于MES系统的。那具体哪些行业适合使用MES,哪些不适合。本文将为大家做详细的介绍。…

【Threejs】关于物体在场景中的阴影问题

一、基础知识 1、摄像机的属性结构 先了解一下摄像机THREE.Camera的四个基本参数 2、渲染器设置 render需要开启阴影渲染,这一点是大前提: renderer new THREE.WebGLRenderer();renderer.setSize(width, height);renderer.setClearColor(0x274F80,…