GENEVE

news/2024/11/28 14:09:29/文章来源:https://www.cnblogs.com/tryst/p/18574178

我第一次使用覆盖式隧道是在 2003 年,当时我正在参与一个项目,创建一个基于 Squid 和 Cisco WCCP(Web 缓存通信协议)的透明代理。Cisco 路由器和 Squid 代理之间的部分配置需要使用 GRE(通用路由封装)隧道进行通信。那时,我并不完全了解隧道协议的必要性,到了现在,我已经知道它们的重要性了,因为在大型多租户云中,VLAN 已经不够用了。

VLAN 的开发旨在将网络流量划分成较小、较不复杂的网络。缺点是它们只有一个固定的 12 位字段,这意味着一个网络拓扑中只能有大约 4000 个 VLAN。在 1990 年代末和 2000 年代初,这种规模尚可支持联网。但是,随着云时代和多租户环境的到来,需要更多独立的网络隧道。

为解决这个问题,各家供应商提出了各种解决方案:VXLAN(虚拟可扩展局域网)、NVGRE(使用通用路由封装的网络虚拟化)和 STT(无状态传输隧道)。这三者都将应用数据封装在一个全新的更大的固定标头字段中。VXLAN 和 NVGRE(后者主要由 Microsoft 使用)的标头大小为 24 位,而 STT 则具有 64 位的标头大小。这些封装隧道方法都不需要对硬件网络基础架构进行任何更改,但有些供应商提供的硬件可以帮助提高解决方案的效率。但是,这些解决方案之间互不兼容。

然而,在当前大型多租户云时代,过去的成果并没有完全失去意义。一种新的网络虚拟化标准已经出现:GENEVE(通用网络虚拟化封装),它有望解决早期规范的局限性,并支持 VXLAN、NVGRE 和 STT 的所有功能。许多人认为,GENEVE 最终可能会完全取代这些较早的格式。

GENEVE 的既定目标是仅定义一种封装数据格式。与早期格式不同,它不包含控制平面的任何信息或规范。作者是这样说的:

“确定数据格式时有一个明显的优势:大多数协议只是表面上不同,重复他人的工作不会带来任何优势。但控制平面却并非如此,它们存在很多本质上的区别。考虑到需求、目标和部署方案的多样性,实现标准化也没有很明确的依据。”

为实现这些目标,GENEVE 作者一致认为数据格式应尽可能灵活和可扩展。虽然 VXLAN 和 NVGRE 中当前的 24 位隧道标识符字段以及 STT 中的 64 位足以指定所需的所有虚拟网络,但他们预计未来的开发人员会希望细分这一字段以承载除虚拟网络标识符以外的信息。他们将此字段的潜在用途与当前在虚拟服务器内或机箱交换机中的线卡之间交换的系统状态信息进行了比较。他们发现,无法指定足以供将来所有可能用途使用的固定字段大小。此外,GENEVE 的作者还借鉴了许多其他已证明生命周期较长的协议。诸如 BGP(边界网关协议)、LLDP(链路层发现协议)、IS-IS(中间系统 - 中间系统)等许多协议已经存在了几十年,而且仍然像以往一样受欢迎。

原因很简单:它们是可扩展的。它们会随着时间的推移而增加新的功能,但不是通过修改基础协议,而是通过添加新的可选功能。

GENEVE 封装的数据包设计为通过标准网络设备传输。利用单播或多播寻址,数据包从一个隧道端点发送到一个或多个隧道端点。客户端应用及其执行所在的主机不会以任何方式被修改。应用生成相同的 IP 数据包,就好像它们通过硬件交换机和路由器进行通信一样。数据包中包含的目标 IP 地址仅在云租户的虚拟网络内有效。然后,隧道端点将最终用户 IP 数据包封装在 GENEVE 标头中,并添加指定租户虚拟网络的隧道标识符,后面可以跟任何选项。标头由表示这是 GENEVE 数据包的字段、选项(如果有)的总长度、隧道标识符和一系列选项组成。然后,完成的数据包以 IPv4 和 IPv6 支持的标准 UDP 数据包传输到目的地端点。接收方隧道端点剥离标头,解释所包含的任何选项,并将最终用户数据包定向到其在隧道标识符所指示的虚拟网络内的目的地。

 

GENEVE 规范提供了有关如何通过避免碎片化并利用 ECMP(等成本多路径)和 NIC 硬件卸载工具来实现高效运维的方法建议。该规范还提供了有关如何支持差异化服务和显式拥塞通知的选项。作者认为,在同一系统上使用 GENEVE 和一种或多种其他封装方法时,不会出现问题。GENEVE 隧道端点将仅互相通信,网络基础架构对数据包的处理方式与任何其他 UDP 数据包相同。这种数据格式支持 VXLAN、NVGRE 和 STT 的所有功能,因此最终这三种较早格式的使用量可能会下降。由于没有指定控制平面协议,作者希望它支持将任何协议与其他封装方法一起使用。与其他封装方法相比,一个关键优势在于 GENEVE 灵活的选项格式,以及使用 IANA(互联网号码分配局)来指定选项类。开发人员可以动态包含任意数量的选项,不必限制为 24 位,也不会在只需要 64 位字段的一小部分时产生 64 位字段的开销。

过渡到 GENEVE 无法一蹴而就。其他封装方法已经使用了一段时间,并且可以在同一系统内运行多种方法。不过,GENEVE 目前正被用作 OVN(开放虚拟网络)的默认隧道协议,在未来的 OpenStack 版本中,OVN 又会作为 OVS(OpenvSwitch)的实施进行推广。

使用大型多租户云的经验将会越来越多,没有一种封装方法会成为公认的标准。但 GENEVE 凭借其灵活的选项格式,并且支持其他方法的所有功能,将成为广泛采用的热门选择。

2017年 6月 22日Benjamin Schmaus

Benjamin Schmaus 是北美中部地区的红帽云 TAM(大客户技术经理)。他自 1998 年开始参与 Linux 的相关工作,曾为多个行业的业务环境提供支持,包括零售、国防、软件、金融、高等教育和初级教育。最近,他一直专注于帮助我们的客户部署、运维和支持红帽 OpenStack 平台和红帽 Ceph 存储。

https://www.redhat.com/zh/blog/what-geneve

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

外委项目进度控制全攻略:产品经理如何实现精准把控

在现代企业的项目管理中,尤其是面对外委项目,产品经理扮演着至关重要的角色。作为项目的核心负责人,产品经理需要不仅要把控产品质量,还要合理安排开发进度、协调各方资源,并确保项目能够按期、按质交付。尤其对于外委项目来说,由于涉及到第三方供应商和多个团队的协作,…

新型大语言模型的预训练与后训练范式,苹果的AFM基础语言模型Aq

前言:大型语言模型(LLMs)的发展历程可以说是非常长,从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初,LLM的训练过程只关注预训练,但后来逐步扩展到了包括预训练和后训练在内的完整流程。后训练通常涵盖监督指导微调和对齐过程,而这些在ChatGPT的…

15个必备项目管理软件与10款最常用的,最终你选哪款?

项目管理软件在现代项目管理中扮演着至关重要的角色,它能帮助团队理清项目脉络、实时追踪进度、确保任务按时完成,提升团队工作效率和协作能力。 在当今竞争激烈的商业环境中,项目的复杂性和多样性不断增加,项目管理软件成为了不可或缺的工具。它可以将庞大的项目分解为具体…

【NLP高频面题 - LLM架构篇】LLM为何使用GQA代替MHA?

【NLP高频面题 - LLM架构篇】LLM为何使用GQA代替MHA? 重要性:★★ 💯 NLP G【NLP高频面题 - LLM架构篇】LLM为何使用GQA代替MHA? 重要性:★★ 💯NLP Github 项目:NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部…

【NLP高频面题 - LLM架构篇】LLM对Transformer都有哪些优化?

【NLP高频面题 - LLM架构篇】LLM对Transformer都有哪些优化? ⚠︎ 重要性:★★【NLP高频面题 - LLM架构篇】LLM对Transformer都有哪些优化? ⚠︎ 重要性:★★★ 💯NLP Github 项目:NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、…

Win7 .lnk快捷方式被绑定到以wps打开导致所有快捷方式失效

最终通过FileTypesMan解决问题,FileTypesMan可以非常详细的编辑文件类型,找到.lnk,把用户选择项内容按退格键删除:让.lnk属性保持这样:正常的.lnk配置如下:保证类型名称是inkfile,用户选择处为空。 .lnkfile有的电脑没有,也是正常的 重启电脑或者结束explorer进程,重新打…

【应急响应】Linux 计划任务与 DFIR 排查实践(二)

#linux应急响应 at服务 #cron 服务 #隐藏任务 🔖 在上一节【linux应急响应】Linux 计划任务与 DFIR 排查实践(一)中,我们深入探讨了 cron 服务,从基础排查到隐藏任务的分析排查,这一节我们一块看看cron的小兄弟at服务。免责声明 本公众号文章中的程序、方法、信息和工具…

vxe-table 表格中使用 element-ui 组件库的

在公司开发大型项目中,使用主流表格库 vxe-table 和 element-ui 组件库,可以在可编辑单元格中渲染非常简单的使用更多的组件 官网:https://vxetable.cn 安装 npm install vxe-pc-ui@3.3.9 vxe-table@3.11.10 @vxe-ui/plugin-render-element@3.0.0// ... import { VxeUI } fr…

独立开发者应该如何设计产品网站

我看到很多产品开发者习惯于先去“找模板”,再就着模板向里面填充内容,这是不对的。首先自己的思路是否理清了,其次所谓的模板,其内容层次结构是否适合自己的产品?我看到一些产品网站虽然看起来还算漂亮,但是传递的内容十分有限。背景 我在业余时间开发了一款自己的独立产…

七种方式监听前端代码报错

错误类型 1 SyntaxError SyntaxError是构建阶段错误,非运行阶段。解析时候发生语法错误无法捕获 2 TypeError TypeError 指的是:值不是所期待的类型3 ReferenceError ReferenceError 指的是:引用未声明的变量4 RangeErrorRangeError 指的是:当一个值不在其所允许的范围或者…

如何记录网站来访者的IP地址

js如何记录来访者ipEdit2 • 2024年9月23日 下午12:49 • 百科 JS如何记录来访者IP:使用服务器端语言、调用第三方API服务、结合前端和后端技术在JavaScript中,直接获取来访者的IP地址并不容易,因为JavaScript运行在客户端环境中,而IP地址信息通常在服务器端获取。为了实…

responsively-lazy 可实现响应式图片懒加载的js插件

在线演示 下载 responsively-lazy是一款非常实用的可实现响应式图片懒加载的插件。它可以根据容器的大小来智能选择加载适合尺寸的图片,做到图片的响应式效果。并且使用它对于SEO是十分友好的。该图片懒加载插件的特点还有:响应式图片 不做任何不必要的请求 可以在任何支持…