vxlan-gpe 使用哪个端口

vxlan-gpe 使用哪个端口,第1张

要解决这些问题,VMware和微软采取了 装和隧道2大策略,分别是:VXLAN和NVGRE。
VXLAN和NVGRE都使用 装和隧道方式来创建大量的VLAN子网,这些子网可以扩展到2层和3层网络。这是为了解决IEEE8021Q定义的数量有限的VLAN,实现云和专有网络中共享负载均衡的多租赁网络。
如果VXLAN和NVGRE都采取相同的措施,哪个更好?或者它们都能正常使用吗?这没有统一答案。
VXLAN标准:扩展VLAN,支持远距离VM迁移
VMware的VXLAN是为了实现多租户云网络所需要的远距离分割支持, 它使用一个名为VXLAN网络标识符(VNI)的24位标识符,将与应用程序关联的VLAN分组到一个片段中,来分离应用程序数据。这可以使虚拟机在多租户的数据中心间进行迁移。
虚拟机软件不需要修改就能够在VXLAN环境中运行。虚拟机会创建与非VXLAN和非虚拟环境相同的数据包。在VXLAN环境里,数据包被 装在一个外在以太网数据包中,它带有目标服务器或转发数据包的路由器的目标MAC 。然而,在VXLAN环境里,虚拟机间通信需要将广播数据包用通信虚拟机所在的VXLAN片段发到关联IP多路广播分组。
虚拟机也需要进行VXLAN环境以外的通信,这种情况不需要对源虚拟机或目标设备做修改。VXLAN网关会取下VXLAN和UDP的头信息,将这个数据包转发到虚拟机所发数据包的目标MAC上。
VXLAN标准看起来代表着虚拟网络天堂,但是SearchNetworkingcom的Fast Packet博主Ivan Pepelnjak持怀疑态度。在他的Fast Packet 博客中,Pepelnjak提出了严肃的问题,网络专业人员在承认这项技术前应该先问下自己:是否真正需要VXLAN,他建议很多人根本不需要VXLAN。
Pepelnjak还指出了VXLAN的不足之处,包括它在如交换机,负载均衡器或防火墙等物理设备的环境内缺乏有效通信。在任何IP网络的VXLAN里, IP多路广播的2层网络洪泛都必须进行这类通信。
和VXLAN标准一样,微软的NVGRE标准提案都使用 装策略来创建大量的VLAN子网,这些子网可以扩展到分散的数据中心和2、3层网络。二者都旨在实现在云和专有网络中共享负载均衡的多租赁网络。然而它们还是有一些区别的。
一些NVGRE标准的重要特点包括指定24位的租赁网络标识符(TNI),NVGRE解决了一些和多租户网络相关的问题。并且使用GRE来创建一个独立的虚拟2层网络,限制物理2层网络或扩展超过子网边界。NVGRE终端通过在GRE头插入INT指示符的方式分隔各个TNI。
两种提案都认为负载均衡是实现有效运营的必要条件,但是VXLAN可以随机分配端口号来分散负载,而NVGRE使用GRE关键域中的保留8位。
博主Martìn Casado认为,VXLAN和NVGRE还是有发展空间的。但他同时指出没有哪个标准完全成熟网络虚拟化没有完整的答案。目前两种标准的多点传送功能有限,并且只支持2层的逻辑网络。随着标准的成熟,它们非常有可能提高控制能力。

来源于: 为什么集群需要overlay网络

Overlay 网络建立在另一个计算机网络之上的虚拟网络(不能独立出现),Overlay 底层依赖的网络是 Underlay 网络。

Underlay 网络是专门用来承载用户 IP 流量的基础架构层,它与 Overlay 网络之间的关系有点类似物理机和虚拟机。Underlay 网络和物理机都是真正存在的实体,它们分别对应着真实存在的网络设备和计算设备,而 Overlay 网络和虚拟机都是依托在下层实体使用软件虚拟出来的层级。

在实践中我们一般使用虚拟局域网扩展技术VxLAN(Virtual Extensible LAN)组建 Overlay 网络。VxLAN 使用虚拟隧道端点VTEP (Virtual Tunnel End Point)设备对服务器发出和收到的数据包进行二次封装和解封。

两台物理机可以通过三层的 IP 网络互相访问:上图中两个 VTEP 会相互连接并获得网络中的 MAC 地址、IP 地址等信息,例如,服务器 1 中的 VTEP 需要知道想要访问绿色网络中的 10002 虚拟机需要先访问 IP 地址为 20479197200 的服务器 2。这些配置可以被网络管理员手动配置、自动学习、也可以通过上层的管理器设置。

当绿色的 10001 虚拟机想要向绿色的 10002 发送数据时,经过以下步骤:
1) 绿色的 10001 会将 IP 数据包发送给 VTEP;

2) 服务器 1 的 VTEP 收到 10001 发送的数据包后;

    a) 从收到的 IP 数据包中获取目的虚拟机的 MAC 地址;

    b) 在本地的转发表中查找该 MAC 地址所在服务器的 IP 地址,即 20479197200;

    c) 将绿色虚拟机所在的虚拟网络标识符(VxLAN Network Identifier、VNI)以及原始的 IP 数据包作为负载,构建新的 UDP 数据包;

    d) 将新的 UDP 数据包发送到网络中;

3) 服务器 2 的 VTEP 收到 UDP 数据包后;

    a) 去掉 UDP 数据包中的协议头;

    b) 查看数据包中 VNI;

    c) 将 IP 数据包转发给目标的绿色服务器 10002;

4) 绿色的 10002 会收到绿色服务器 10001 发送的数据包。

笔记:以上步骤中的VNI(VxLAN Network  Identifier)是干嘛的 2) c) 和3) b) 中vni做了什么处理整个过程中VTEP起到网关的重要性。
在数据包的传输过程中,通信的双方都不知道底层网络做的这些转换,它们认为两者可以通过二层的网络互相访问, 但是实际上经过了三层 IP 网络的中转,通过 VTEP 之间建立的隧道实现了连通。 除了 VxLAN 之外,Overlay 网络还有很多实现方案,不过也都大同小异。Overlay 网络虽然能够利用底层网络在多数据中心之间组成二层网络,但是它的封包和拆包过程也会带来额外开销,所以 为什么我们的集群需要 Overlay 网络呢,本文将介绍 Overlay 网络解决的三个问题 :

        1) 云计算中集群内的、跨集群的或者数据中心间的 虚拟机和实例的迁移 比较常见;
        2) 单个集群中的虚拟机规模可能非常大, 大量的 MAC 地址和 ARP 请求会为网络设备带来巨大的压力 ;

        3) 传统的 网络隔离技术 VLAN 只能建立 4096 个虚拟网络 ,公有云以及大规模的虚拟化集群需要更多的虚拟网络才能满足网络隔离的需求;

Kuberentes 目前已经是容器编排领域的事实标准了,虽然很多传统行业仍然在使用物理机部署服务,但是越来越多的计算任务在未来都会跑在虚拟机上。 虚拟机迁移是将虚拟机从一个物理硬件设备移到另一个设备的过程,因为日常的更新维护,集群中的大规模虚拟机迁移是比较常见的事情 ,上千台物理机组成的大集群使得集群内的资源调度变得更加容易,我们可以 通过虚拟机迁移来提高资源的利用率、容忍虚拟机的错误并提高节点的可移植性 。

当虚拟机所在的宿主机因为维护或者其他原因宕机时,当前实例就需要迁移到其他的宿主机上, 为了保证业务不中断,我们需要保证迁移过程中的 IP 地址不变,因为 Overlay 是在网络层实现二层网络,所以多个物理机之间只要网络层可达就能组建虚拟的局域网, 虚拟机或者容器迁移后仍然处于同一个二层网络,也就不需要改变 IP 地址。

如上图所示,迁移后的虚拟机与其他的虚拟机虽然位于不同的数据中心,但是由于上述 两个数据中心之间可以通过 IP 协议连通,所以迁移后的虚拟机仍然可以通过 Overlay 网络与原集群的虚拟机组成二层网络 ,集群内部的主机也完全不清楚、不关心底层的网络架构,它们只知道不同虚拟机之间是可以连通的。

我们在 为什么 Mac 地址不需要全球唯一 曾经介绍过二层网络的通信需要依赖 MAC 地址,一个传统的二层网络需要网络设备中存储着从 IP 地址到 MAC 地址的转发表。

目前 Kuberentes 官方支持的最大集群为 5000 节点 ,如果这 5000 个节点中的每个节点都仅仅包含一个容器,这对于内部的网络设备其实没有太大的压力, 但是在实际情况下 5000 节点的集群中都包含几万甚至几十万个容器 , 当某个容器向集群中发送 ARP 请求,集群中的全部容器都会收到 ARP 请求,这时会带来极高的网络负载 。

在 使用 VxLAN 搭建的 Overlay 网络中 ,网络会将虚拟机发送的数据重新封装成 IP 数据包,这样网络只需要知道不同 VTEP 的 MAC 地址,由此可以 将 MAC 地址表项中的几十万条数据降低到几千条 , ARP 请求也只会在集群中的 VTEP 之间扩散 ,远端的 VTEP 将数据拆包后也仅会在本地广播,不会影响其他的 VTEP,虽然这对于集群中的网络设备仍然有较高的要求,但是已经极大地降低了核心网络设备的压力。

Overlay 网络其实与软件定义网络(Software-defined networking、SDN)密切相关,而 SDN 引入了数据平面和控制平面 ,其中 数据平面负责转发数据 ,而 控制平面负责计算并分发转发表 。VxLAN 的 RFC7348 中只定义了数据平面的内容,由该技术组成的网络可以通过传统的自学习模式学习网络中的 MAC 与 ARP 表项,但是在大规模的集群中,我们仍然需要引入控制平面分发路由转发表

大规模的数据中心往往都会对外提供云计算服务,同一个物理集群可能会被拆分成多个小块分配给不同的租户(Tenant), 因为二层网络的数据帧可能会进行广播,所以出于安全的考虑这些不同的租户之间需要进行网络隔离,避免租户之间的流量互相影响甚至恶意攻击 。传统的网络隔离会使用虚拟局域网技术(Virtual LAN、VLAN),VLAN 会使用 12 比特表示虚拟网络 ID,虚拟网络的上限是 4096 个(2的12次方)。

4096 个虚拟网络对于大规模的数据中心来说远远不够,VxLAN 会使用 24 比特的 VNI 表示虚拟网络个数,总共可以表示 16,777,216 个虚拟网络,这也就能满足数据中心多租户网络隔离的需求了。

更多的虚拟网络其实是 VxLAN 顺手带来的好处,它不应该成为使用 VxLAN 的决定性因素。 VLAN 协议的扩展协议 IEEE 8021ad 允许我们在以太网帧中加入两个 8021Q 的协议头,两个 VLAN ID 组成的 24 比特也可以表示 16,777,216 个虚拟网络 ,所以想要解决网络隔离不是使用 VxLAN 或者 Overlay 网络的充分条件。

今天的数据中心包含多个集群以及海量的物理机, Overlay 网络是虚拟机和底层网络设备之间的中间层,通过 Overlay 网络这一个中间层,我们可以解决虚拟机的迁移问题、降低二层核心网络设备的压力并提供更大规模的虚拟网络数量 :

        在使用 VxLAN 构成二层网络中,虚拟机在不同集群、不同可用区和不同数据中心迁移后,仍然可以保证二层网络的可达性,这能够帮助我们保证线上业务的可用性、提升集群的资源利用率、容忍虚拟机和节点的故障;
        集群中虚拟机的规模可能是物理机的几十倍,与物理机构成的传统集群相比,虚拟机构成的集群包含的 MAC 地址数量可能多一两个数量级,网络设备很难承担如此大规模的二层网络请求,Overlay 网络通过 IP 封包和控制平面可以减少集群中的 MAC 地址表项和 ARP 请求;

        VxLAN 的协议头使用 24 位的 VNI 表示虚拟网络,总共可以表示 1600 万的虚拟网络,我们可以为不同的虚拟网络单独分配网络带宽,满足多租户的网络隔离需求;

需要注意的是,Overlay 网络只是一种在物理网络上的虚拟网络,使用该技术并不能直接解决集群中的规模性等问题,而 VxLAN 也不是组建 Overlay 网络的唯一方法,在不同场景中我们可以考虑使用不同的技术,例如:NVGRE、GRE 等。到最后,我们还是来看一些比较开放的相关问题,有兴趣的读者可以仔细思考一下下面的问题:

        VxLAN 将原始数据包封装成 UDP 在网络上分发,那么 NVGRE 和 STT 分别使用哪些方法传输数据呢?

        在 Kubernetes 中部署 Overlay 网络应该使用什么技术或者软件?


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10759029.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存