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

news/2024/11/29 8:38:13/

说明

BGP,即边界网关协议(Border Gateway Protocol),是一个用于自治系统(Autonomous Systems, AS)之间路由和可达性信息交换的协议。其主要思想是通过网络节点之间的互联,实现网络路由的优化和控制,使得数据能够通过正确的路径从一点传输到另一点。

BGP在网络中的作用主要体现在以下几点:

路由传播:BGP使得不同网络节点(如ISP供应商)能够分享他们的路由信息。这使得数据能够更有效地从一点传输到另一点,通过动态调整传输路径以实现最优效果。

路由决策:BGP不仅通过权重、本地偏好、多路径、起源、AS序列、下一跳等属性来进行路由决策,选择最合适的路径将数据从源头传输到目的地。

策略控制:BGP给予网络管理员更大的控制权,使得他们能够管理和优化自己的网络流量。

在Kubernetes(K8s)设计中,BGP也有其重要作用。为了在集群之间正确路由流量,很多Kubernetes的网络插件策略采用了BGP。举个例子,像 Calico、BGP、Cilium 都实现了 BGP 协议。

在典型的BGP-on-K8s的设计理念中,每个节点都运行一个BGP代理(如bird),这个代理会宣布该节点上所有Pod的子网给所有的其他节点。每个节点最终会有一张完整的路由表,列出如何通过网络到达其他节点上的Pod。

这涉及下面几个方面的BGP设计思想:

使得Pod网络互通:每个节点运行一个BGP代理,告诉其它节点如何找到该节点上运行的Pod。

负载均衡和高可用性:BGP可以动态地路由流量,使得负载均衡器无需进行复杂的配置,通过动态调整,可以最大化节点的利用率,提供高可用性。

跨集群和高速访问:使用BGP,Pods可以直接通过IP通讯,而无需额外的路由转发和NAT负载。这使得不同节点之间的通讯更加高效。

总的来说,BGP协议在K8s中被用来实现互操作性、可扩展性和高级流量控制,来创建一个可以动态适应其负载需求的高效和强大的网络环境。

扁平网络:

扁平网络是一种网络模型,在这种模型中,所有计算设备都可以互相连接,因为它们在同一网络层次中,也就是所谓的同一广播域。这就意味着在这样的网络中,任何设备发送的广播消息都会被网络中每个其他设备接收到。扁平网络不使用路由,这使得网络配置更简单,也减少了在网络中传输数据时所需的跳跃次数。

BGP Peering:

BGP Peering是指两个BGP运行设备(或称为"对等体")之间的连接。在这种情况下,两个设备会交换路由信息,对方会知道如何找到彼此。这种做法使得在Internet服务提供商(ISP)或者大型网络环境(例如云计算数据中心)中数据的传输更加高效。通过BGP Peering,可以建立复杂的,分层的网络,因为每个设备知道如何通过最有效的路径找到其它设备。

在一起

尽管扁平网络和BGP Peering可能看起来是互斥的(因为扁平网络是没有路由层次的,而BGP Peering正是通过建立路由层次来优化网络传输),但它们实际上可以一起使用。例如,在一个使用了扁平网络结构的数据中心,我们可能会使用BGP Peering来管理网络中的数据流,以优化特定类型的通信(例如,南-北流量)。在Kubernetes中,计算节点之间的网络连接可以是扁平的,而BGP Peering可以用于建立Pod之间的路由信息,使得数据在Pod之间更有效的传输。

Calico网络插件

Project Calico 是一个开源项目,它为虚拟和物理网络提供了一个基于规则的网络和跨主机网络建筑方案。这种基于规则的网络允许网络定义更加详细,准确和精细。此外,Calico 还提供了各种网络接入模式,由纯三层网络模式到主机网络(Overlay)模式模型。

在 Kubernetes 中,Calico 可以提供如下几项功能:

  • 网络策略:Calico 通过基于标签的政策定义,对 Pod 网络通信进行细粒度控制,这样就能够让开发者具有强大的网络隔离和安全性能。

  • 网络路由:Calico 通过 BGP 协议,实现集群内部 Pod 网络的互通,同时通过与外部物理网络的 BGP Peering,实现了 Pod 网络对外的路由发布。这就能在无需额外的负载均衡设备的情况下,从外部访问 Pod。

  • 网络性能:由于 Calico 使用纯三层网络,而不是常见的 Overlay 网络,它的网络性能损失非常小,能够有效地提升应用的性能。

使用 Calico 的步骤:

具体应用到 Kubernetes 中,部署 Calico的步骤如下:

  • 首先,你需要在每个 Kubernetes 机器上安装 Calico Node 组件。这个组件包含了一些核心网络和网络策略处理的依赖。

  • 接着,你需要创建相关的 Default 网络策略,并将 Calico 设置为 Kubernetes 的网络插件。

  • 最后,你可以定义你自己的网络策略,来对微服务进行精细化控制。

主机网络(overlay)模式模型

主机网络(Overlay)模式是一种网络模型,用于在底层物理网络之上创建逻辑网络。在这种模型中,每个主机都可以通过软件定义网络(SDN)技术创建一个虚拟网络,这个虚拟网络是在物理网络之上构建的。

主机网络模式的核心思想是利用软件定义的网络功能,例如隧道技术和网络虚拟化,将主机之间的通信流量隔离开来,就像它们在独立的物理网络中一样。每个主机都有一个虚拟网络标识,并且可以通过该标识来识别和路由数据包。

在主机网络模式中,虚拟网络可以采用不同的拓扑结构,例如扁平网络或层次网络。虚拟网络中的主机可以与同一虚拟网络中的其他主机进行通信,就好像它们直接连接在同一个物理网络中一样。底层物理网络只负责传输数据包,而网络功能如路由和转发则由虚拟网络的软件定义部分负责处理。

主机网络模式的优势之一是它提供了灵活性和可伸缩性。通过虚拟化网络,可以轻松地添加、移动或删除主机,并且网络配置可以根据需要进行调整。此外,主机网络模式还可以提供更好的隔离性和安全性,每个虚拟网络可以独立配置和管理,防止不同网络之间的干扰。

总的来说,主机网络(Overlay)网络模式是一种通过软件定义网络技术在物理网络之上创建虚拟网络的方法。它提供了灵活性、可伸缩性和隔离性,使得主机之间的通信就像它们直接连接在同一个物理网络中一样。这种模式在现代网络中得到了广泛应用,尤其是在云计算和容器化环境中。

One more thing

In the strikingly vivid metropolis nested within cyber-realm, the ever-evolving landscape of network nodes, which people fondly referred to as “The Cyberspace”, thrived alive. The foundations of this intricate world rested on a universal language – BGP, or Border Gateway Protocol. BGP was the key, the secret whisper between nodes, enabling the sprawling expanse of the Cyberspace to function like a well-oiled machine.

Our protagonist, a gifted, young hacker named Ray, had one objective - to traverse the countless interconnected pathways of the Cyberspace, seeking an ancient code buried deep within its intricate labyrinth. No one had ever dared to venture this far, let alone hoped to return unscathed, as the farther you ventured, the greater the risks posed by the perilous data storms and malicious cyberspace predators.

Despite the dangers, Ray remained undeterred. Armed with an unprecedented understanding of BGP, he navigated through the vast network. Each node was a city, a planet, a unique world on its own; each served as a pathway to the next destination. BGP was Ray’s compass, using its complex routing algorithms to guide him, avoiding congested pathways and finding the quickest routes through the interconnected maze.

As he journeyed deeper, Ray witnessed the powerful role of BGP - enabling communication, propagating routes, instilling order amidst potential chaos. He also realized how precariously balanced everything was; a single misrepresented route or a rogue node could cripple the entire system, a genuine testimony to the power resting at every node’s fingertips.

Eventually, after what felt like a digital eternity, Ray stumbled upon the ancient code embedded in the primal node. He had finally found the origin, the Genesis, of the Cyberspace. This was untapped information, inscribed in the very blueprint of this digital universe, encrypted with the original BGP.

Ray realized the monumental significance of his discovery, understanding now why this code was guarded so fiercely. The BGP was more than a mere navigation tool - it was the gospel of Cyberspace and the ultimate manifestation of power within it. It wasn’t merely shaping the architecture; it was the architecture.

With the code in his possession, Ray had two choices - use it for personal gain, potentially to dictate the networking world, or protect BGP’s sanctity, preserving the natural order of Cyberspace.

As Ray navigated homewards, he found himself pondering not the exhilaration of his journey, but the gravity of the decision awaiting him. His final verdict would have profound implications, shaping the destiny of the interconnected universe he had grown to revere.

So, our tale fades at the cusp of Ray’s decision, leaving a lingering question - in this world imbued with the power of BGP, what would you have done?


http://www.ppmy.cn/news/906069.html

相关文章

idea生成类关系图Diagrams

打开或选择该类,此处我以FutureTask类为例 在打开的该类内容内随意地方右键(或选中该类文件)》选择Diagrams》Show Diagrams》Java Classes此时就可以看到该类的关系图了

Clickhouse数据一致性和物化视图

Clickhouse 一、数据一致性的保证1.通过Group by对数据去重2.通过 FINAL 查询 二、物化视图1.物化视图与普通视图的区别2.优缺点3.基本语法 三、MaterializeMySQL引擎1.特点2.使用细则 四、常见问题排除分布式 DDL某数据节点的副本不执行数据副本表和数据不一致副本节点全量恢复…

什么是元学习?外循环和内循环?支持集和查询集?

一、前言 元学习近几年也算是一个比较热门的研究方向,大部分被用来解决低资源少样本零样本学习的任务场景中。 那么为什么元学习可以提升低资源少样本的学习效果呢?或者说元学习到底是一个什么样的算法呢? 这里做一个简单的概念阐述。元学…

fw_setenv

fw_setenv --help The program fw_setenv is currently not installed. You can install it by typing: sudo apt install u-boot-tools

交叉编译fw_printenv

source /opt/poky/environment... 创建交叉编译环境。 更改u-boot/tools/env/Make 添加CC 9 CCaarch64-poky-linux-gcc -marcharmv8-a -mtunecortex-a57.cortex-a53 --sysroot/opt/poky/2.4.2/sysroots/aarch64-poky-linux 10 override HOSTCC $(CC)$(warning $(HOSTCC)) 编…

win10台式机rtl8188eu(FW 150 UM V2.0)无线网卡无法连接wifi(无法连接到这个网络)

同一个网卡,同一个WiFi,在笔记本上能用,能连接wifi,但是在台式机上就不能连接wifi,提示“无法连接到这个网络”,如下图。 win10版本都是1903。尝试换各种驱动都没解决。 最后更新主板bios,然后从…

linux升级网卡fw,一种linux下进行SSDFW升级的方法与流程

本发明涉及服务器刷新技术领域,尤其是一种linux下进行SSD FW升级的方法。 背景技术: 服务器市场已经囊括各个领域,客户对硬盘的要求也越来越高,服务器产品提供商如何能满足用户多样化的需求,同时确保各种应用环境的稳定、可靠是技术人员必须面临和考虑的问题。这就需要对硬…

嵌入式Linux读写uboot的环境变量 —— fw_printenv 的使用

下载 u-boot-2010.06 官网下载ftp://ftp.denx.de/pub/u-boot/ 积分多的可以去这里下载,网速会快一点https://download.csdn.net/download/laifu_ma/5688297 解压 uboot tar -jxf u-boot-2010.06.tar.bz2 fw_printenv 的源码在 u-boot-2010.06/tools/env 单独编译…