ToB企服应用市场:ToB评测及商务社交产业平台
标题:
什么是云盘算?云网络与发展
[打印本页]
作者:
干翻全岛蛙蛙
时间:
2024-6-15 02:49
标题:
什么是云盘算?云网络与发展
1.云盘算
根据官方提供的资料“
云盘算就是指通过互联网,以按需服务的形式提供盘算资源。这样企业就无需自行采购、配置或管理资源,而且只需要为实际使用的资源付费
。”很好理解。总结一句话就是说:云服务商有多种资源,根据客户需求,把相应资源租给客户使用。这就是云盘算。
云盘算也包含了许多种:
如果把云服务商的所有资源比做成一个资源池,如图1所示
图1
1.1 公有云
公有云就是将资源池所有的资源都放在一起,一起来给客户使用。但是客户和客户之间和无法感知的。可以理解为服务运行在外部(云服务厂商的公有池子)。
1.2 私有云
私有云就是将资源池分成多部分,也可以看成有多个资源池,每个客户都对应不同的资源池。资源池中所有的办法都只为这个客户提供服务,云服务商只负责提供技能支持等服务。私有云对客户而言可操控性更强。可以理解为服务运行在内部(云服务厂商提供给客户私有的池子)。
图2 下面这张图可以更明显的说明公有云和私有云的区别:
图3
1.3 混合云
顾名思义,混合云融合了至少一个公有云和一个私有云。那么为什么会有混合云的出现呢?最本质的原因一定是钱!也就是成本控制,其次就是有一些客户部分服务数据要严格保密但是有些可以公开,同时混合云的容灾和业务一连性更强。可以理解为以下三点:
成本控制:
组织可以使用混合云模子来优化成本。一些工作负载可能更经济地在私有云中运行,而其他工作负载则可以通过按需访问的方式利用公有云的弹性盘算资源。
合规性和数据隐私:
某些行业或组织可能面对法规和合规性要求,要求敏感数据留存在特定的地理位置或基础办法中。混合云允许企业在私有云中处理惩罚这些敏感数据,同时利用公有云的灵活性。
容灾和业务一连性:
混合云模子可以提供更强盛的容灾和业务一连性办理方案。通过将关键工作负载在当地和云之间分布,组织可以更好地应对可能发生的故障或灾难。
所有的私有云和混合云都是根据客户需求衍生出来的。可以看到产物一定离不开需求。将来的趋势一定是混合云。
1.4 托管云
托管云实际上就是:云服务+托管服务。紧张体现在云盘算中基础办法、网络、存储、盘算、安全的运维。目前,市面上许多云服务都具有托管功能。
2.云盘算的交付模式
下面说一下云盘算的三种交付模子:基础办法即服务(Iaas)、平台即服务(Paas)、软件即服务(Saas)
Iaas
基础办法即服务,用户可以控制操作系统、网络、存储等,是对于硬件和底层系统的管理是由云服务提供商负责的。。也就是说用户可以控制底层的基础办法。 IaaS 适用于那些需要更高级别的灵活性和控制的场景,允许用户在虚拟环境中创建、配置和管理本身的应用程序。
Paas
平台即服务,提供了一个应用程序开辟和运行的平台,包罗开辟工具、数据库、中心件等。它隐藏了底层的基础办法,使开辟者可以或许专注于应用程序的设计和开辟。
Saas
用户直接使用云服务商提供的软件,其他什么都不消干。
3.虚拟化与云网络
Iaas基础架构可以看做:
盘算机虚拟化、网络虚拟化、存储
*三部分构成。这也是云盘算团体服务底层的架构。
3.1 盘算机虚拟化
盘算机虚拟化包罗:
CPU虚拟化、内存虚拟化、io虚拟化
。实现CPU虚拟化和内存虚拟化的工具就是
KVM
3.1.1 什么是kvm?
KVM 全称是基于内核的虚拟机(Kernel-based Virtual Machine),它是 Linux 的一个内核模块,该内核模块使得 Linux 酿成了一个
Hypervisor
也叫Virtual Machine Monitor(VMM)虚拟机监控器。
3.1.2 为什么会出现KVM?
传统的虚拟化技能已经很成熟,但是在性能上和物理机差距很大。说白了,kvm就是为了进步虚拟机的性能!
3.1.3 kvm虚拟化CPU和内存
kvm虚拟化CPU和内存
3.2 I/O虚拟化
IOMMU(I/O Memory Management Unit)是一个内存管理单元,紧张针对外设访问系统内存市举行内存管理。
IOMMU的两个基础功能:地点重映射和 停止重映射。
overlay:Overlay方案便是从事服务器虚拟化技能的IT厂商主推的大二层网络办理方案。其原理就是通过用隧道封装的方式,将源主机发出的原始二层报文封装后,再在现有网络中举行透传,到达目的地之后再解封为原始报文,转发给目标主机,从而实现主机之间的二层通讯。报文的封装/解封装都是在服务器内部的虚拟交换机vSwitch上举行,外部网络只对封装后的报文举行普通的二层交换和三层转发即可,以是网络技能控制权就都回到了IT厂商手里。典型技能实现包罗VXLAN、NVGRE、STT等。
SDN:软件定义网络(Software Define Network,SDN)技能是对传统网络架构的一次重构,其焦点思想是通过控制面(Control Plane)与数据面(Data Plane)的分离,将网络的管理权限交给控制层的控制器软件,在通过OpenFlow协议通道,同一下达指令给数据转发层设备,从而实现网络控制与数据转发的充实解耦,一举排除传统网络设备的封闭性。
https://developer.huawei.com/consumer/cn/forum/topic/0211128259827674019
3.2.1 openflow协议
openflow协议并非雷同于tcp、udp等协议。openflow协议而是一种控制层面的协议。传统的流量传输需要查询路由表,也就是说路由器的控制层面和数据层面没有分开。但是,SDN所使用的openflow协议可以理解为将路由表全部联合到一起放在SDN控制器中,流量的传输通过查询SND控制器的流表即可,这整个的查询过程就叫做openflows协议。
https://chentingz.github.io/2019/12/30/%E3%80%8COpenFlow%E3%80%8D%E5%8D%8F%E8%AE%AE%E5%85%A5%E9%97%A8/#0x02-openflow%E7%AE%80%E4%BB%8B
3.2.2 vhost-net协议
最经典的vhost-net图
图4 vhost-net实行的流程
图5 参考链接:https://cloud.tencent.com/developer/article/2030947
3.2.3 vhost-user协议
图6 vhost-user实际上就是将vhost-net的virtqueue通过dpdk提取到了物理机的用户态,同时通过dpdk调用底层kvm和网卡接口,跳过了之前的linux内核部分。也就真正意义上实现了零拷贝(慢路径不算)。以是目前主流云盘算网络都是基于dpdk+ovs绕过内核。但是存在的缺陷:
a.ovs轮询模式非常占用cpu
b.dpdk固然NAPI模式,但是大部分都是在轮询运行,依然对资源的斲丧很大。
对dpdk的优化有
:
1)
增长内核启动参数
:isolcpus=2,3,4,5,6,7,8使处理惩罚器上的ID为上述的逻辑和不能陪操作系统调度。
2)
可以修改编译时间的参数
:修改编译参数来使能“extended tag”, 具体就是修改“config/common_linux”里如下的两项参数。 Extended Flag(8位宽) 被打开后, (在一些老的系统上, 默认不打开) 只有5位会被有效使用,支持32路并发, 完全Enable后, 8位同时使用, 能最大支持256个并发哀求, 在40Gbit/s大概更高速端口会体现出性能差别。 修改PCIe Extended Tag可能涉及BIOS的配置与升级。CONFIG_RTE_PCI_CONFIG=y CONFIG_RTE_PCI_EXTENDED_TAG=“on”
3)
收发队列的长度收队列长度dpdk默认是128发包队列长度
,dpdk默认是512。有512个形貌符。 当处理惩罚更高速率的网卡设备时, 大概发现有丢包的时间, 就应该考虑更长的发包队列,
4)
收发包可释放形貌符数目阈值
( rx_free_thresh)每读出一个包, 与之对应的收包形貌符就是可以释放的了, 可以配置好用来后续收包过程。 由收发包过程知道, 需要更新表示收包队列尾部索引的寄存器来通知硬件。 实际上, DPDK驱动程序并没有每次收包都更新收包队列尾部索引寄存器, 而是在可释放的收包形貌符数目达到一个阈值(rx_free_thresh) 的时间才真正更新收包队列尾部索引寄存器。 这个可释放收包形貌符数目阈值在驱动程序内里的默认值一般都是
32。
5)**发包形貌符释放阈值(tx_free_thresh)**只有当可以用来重新配置的发包形貌符数目少于阈值的时间, 才会启动形貌符和Mbuf的释放动作, 而不是每次看到有发包完成就释放相应的发包形貌符和Mbuf。
调试过这些参数,性能会有所提升。但是时延和吞吐性能是成反比的,这种环境需要根据具体业务二舍去了。
4.总结
云盘算真正发展起来紧张还是依赖过剩的硬件资源和SDN(Software Define Network)大二层网络的到来。过剩的硬件资源包罗CPU、内存、网卡等,最近技能也支持集成式GPU也可以通过雷同网卡的SR-IOV技能举行虚拟化,但是笔者并没用过。今天紧张讨论的是基于SND控制器大二层网络的云网络技能的发展。
什么是SND控制器?
软件定义网络,顾名思义创建在软件基础上。学过网络技能的都应该知道,
网络分为两个层面:控制面和数据面
。控制面通知数据面以什么样的形式和规则举行传输,数据面负责团体数据的传输。传统的网络控制面和数据面是耦合的。简单来讲:一张网卡干两个活,即负责调控数据转发战略,也要举行数据转发。如果我们只操作一张网卡那并没什么思索的,但是如果我们有多张网卡,每张网卡的业务逻辑都不一样,那么转发战略就都不同。想要修改网卡的转发战略只能一个网卡一个网卡的修改,重复工作+浪费时间。这就是传统网络最大的题目。以是SND网络应运而生,
SND网路将网卡中的控制面提取出来用软件实现,使网卡只负责转发,控制面同一使用SDN调配
。极大简化了传统网络实现和运维的工作量,同时使网络更加白盒化。
图7 以是说,目前各大云盘算厂商都会有一套本身完整的SND控制器,承载着业务和基础办法。有了SDN集群化管理,才会使得云盘算的飞速发展。SDN催化着网络技能的飞速发展,同时网络虚拟技能也逐渐成熟。
网络虚拟化
网络虚拟化离不开网卡的虚拟化。最初网卡的虚拟化是纯软件来实现的,也称为全虚拟化,但是全虚拟化的性能很低,紧张的原因是客户虚拟机产生的IO哀求需要颠末KVM内核(可以理解为linux内核),在传到qemu线程中,这就使得传输路径较多,虚拟机存在频繁的entry和exit操作。以是,半虚拟化的出现就是为了办理这个题目。半虚拟化通过前后端的协商使得传输阶段省去了kvm内核和qemu线程阶段,同时增长了环形队列。这个环形队列实际存储的是消息通知形貌符(eventfd),同时环形队列可以批量存储后将存储的消息批量发送到硬件中。制止了频繁的IO操作也节省了部分的性能开销(固然吞吐会有所增长,但是如果环形队列每次存储消息过多会增大传输时延。以是并不是环形队列越大越好)。但是,半虚拟化需要在客户机中安装相应的virtio-net、virtio-blk等驱动,在兼容性上存在缺陷。
同时,为了办理性能题目,另一种方案也被提出----网卡直通。网卡直通,实际上就是将物理机上的物理网卡的控制权交给了虚拟机,这就是vfio技能。固然在性能上有所提升,但是一个客户机对应一张网卡,资源上浪费了许多。
SR-IOV技能办理了这个题目,sriov可以将物理网卡(并非所有的硬件网卡都支持sriov技能)虚拟出多个VF(一般256VF个最多)然后将VF通过vfio技能直通到虚拟机中,在性能上和物理网卡直通相差无几。但是不支持虚拟机的热迁移。(之前的调研mellanox在qemu基础上,通过failover技能支持了这个热迁移,但是实践的时间并没乐成。)
为了办理热迁移题目,近几年产生了
vdpa
技能。主流的vdpa技能是通过dpdk来实现的,以是也叫作dpdk-vdpa。
目前支持dpdk-vdpa的网卡有intel和NVIDIA-mellanox智能网卡两种
。以mellanox网卡为例,实际上是再vhost-user协议基础上来实现的vdpa技能。通过vdpa技能,将vf包装成virtio类型网卡传输到虚拟机中,这样虚拟机不消安装相应驱动,同时也支持了热迁移。智能网卡,并没有将业务全部卸载到网卡上,ovs和dpdk-vdpa线程依然运行在主机上,而且资源斲丧也不容忽略。以是mellanox开辟了DPU(data processing unit),将ovs和dpdk在dpu网卡中运行,这就做到了主机资源最大程度的释放。但是DPU技能目前来看并不成熟。市面上有多重DPU卡,他们的技能方案和实施环境都差别极大。雷同NVIDIA的BF2卡,以一种vfe技能取代了智能网卡的vdpa,实际上实现的效果是一样的,但是在开辟过程中坑许多,而且性能不颠末专家调试根本达不到POC性能。同时国内代表,华为的SP680的DPU在2024年初可能会推出。小编测试过SP680和CX6卡。他们的性能在X86和ARM架构的环境上体现的天差地别。
上述总结起来如图2所示
图8 将来一定是面向全卸载功能,DPU在云盘算和大模子等领域的应用是必然的。但是DPU技能相干的积累较少,国内除了阿里华为等大规模使用其他云服务厂商并没有真正的把DPU业务完善落地。真正需要攻关的依然是DPU的落地方案以及在热迁移上的兼容性。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4