基于DPU与SmartNic的云原生SDN解决方案

1.  方案背景与挑战

随着云计算,大数据和人工智能等技术的蓬勃发展,数据中心面临着前所未有的数据洪流和计算压力,这对SDN提出了更高的性能和效率要求。自云原生概念被提出以来,Kubernetes为云原生应用的落地提供了一个轻量级,可移植的运行环境,逐渐成为云原生时代基础设施的事实标准。Kubernetes通过网络插件(CNI,Container Network Interface)实现灵活地配置和管理集群中的容器网络,确保容器之间的有效通信和网络安全。然而在追求极致性能和云计算IaaS深度整合过程中,CNI插件面临着诸多挑战,具体表现为以下几个方面:

1、网络性能瓶颈:在高性能计算场景中,网络延迟和吞吐量是关键指标,现有的CNI插件(如Flannel、Calico、Cilium等)在处理大规模数据传输时可能会出现严重的延迟和吞吐量瓶颈。这一问题的根源是传统CNI插件多采用基于软件的虚拟化网络方案,在数据包处理过程中需要经过多层封装和解封装,增加了处理延迟。另外,在高并发场景下,软件定义的网络转发表可能成为性能瓶颈,导致吞吐量下降。

2、硬件支持不足:当前的Kubernetes CNI插件普遍缺乏对智能网卡(SmartNIC)和数据处理单元(DPU)的支持,导致无法完全发挥这些硬件的潜力。例如,传统CNI插件可能无法充分使用网卡的物理功能(PF)、虚拟功能(VF)和共享功能(SF)资源,或者其提供的SDN网络服务(如EIP等)无法充分利用SmartNIC/DPU实现硬件流量卸载等功能。

3、SDN服务集成困难:云计算IaaS提供了丰富的SDN网络服务,如VPC、负载均衡、安全组,EIP,Qos等。然而,将这些SDN网络服务无缝集成到Kubernetes的网络架构中并非易事,IaaS层的网络模型通常基于虚拟机,而Kubernetes采用的是容器网络模型,两者在网络抽象和实现机制上存在差异。CNI插件需要与SDN网络服务深度集成,同时保持Kubernetes的网络模型的一致性。

2.  方案介绍

2.1. 整体架构

为了解决传统SDN方案的问题,中科驭数提出了基于DPU/SmartNic的云原生SDN解决方案,驭云SDN将DPU/SmartNic卡进行统一管理将其支持的网卡如PF/VF/SF/VFIO/VDPA等通过device-plugin发布给Kubernetes进行统一的管理和调度。同时,通过ovn/ovs机制将这些卡加入到同一个ovn集群,通过ovn/ovs对网络进行统一的虚拟化,如下图所示:

Host上的容器或者虚拟机能够使用DPU/SmartNic提供的VF,SF,或者是其生成VFIO,VDPA设备,通过这些设备加入虚拟化网络,达到近似物理机的性能。软件整体架构如下:

如图所示,驭云SDN是基于Kubernetes,将master节点,dpu卡,Host都作为node加入k8s集群,这些node上运行着驭云SDN的相关组件,下面分别进行介绍:

  • ycloud-controller,该组件执行Kubernetes内资源到ovn资源的翻译工作,是SDN系统的控制平面,也相当于ovn的cms云管理系统。其监听所有和网络相关资源的事件,并根据资源变化情况更新ovn内的逻辑网络。
  • ycloud,一个二进制程序,作为kubelet和ycloud-cni之间的交互工具,将相应的CNI请求发给ycloud-cni执行。
  • ycloud-cni,该组件作为一个DaemonSet运行在每个节点上,实现CNI接口,并监听api-server配置本地网络,其会根据工作模式做相应的网络配置,工作模式有以下几种:
    • Default模式: ycloud-cni的默认工作模式,master和带SmartNic卡的Host节点中的ycloud-cni均工作于此模式。在该模式下,会对安置在其上的容器配置完整的虚拟网络配置,如容器网络和ovs网络。
    • DPU模式:DPU节点中的ycloud-cni工作于此模式。在该模式下,会对安置在DPU内的容器配置完整的虚拟网络配置。而对安置在其Host的容器,会配置ovs网络。
    • Host模式:带DPU卡的Host节点中的ycloud-cni工作于此模式。在该模式下,只会去配置容器网络,而对应的底层网络如ovs网络,则交由其对应DPU上工作在DPU模式的ycloud-cni完成。

基于上述的软件架构,驭云SDN通过结合Kubernetes的能力,OVN控制器的能力,OpenVSwitch网络功能/卸载能力,DPU/SmartNic硬件能力,实现符合Kubernetes CNI标准规范,充分发挥DPU/SmartNic的硬件潜力,深度整合云计算IAAS等这些目标,为云计算在追求极致网络性能上提供了新的云原生SDN解决方案。

2.2. 方案描述

在基于DPU/SmartNic的云原生SDN方案下,实现了IAAS领域中的vpc,subnet,eip,安全组,qos等常用功能,以下将会对核心资源和部分主要功能做详细描述。

2.2.1.  核心资源

为了充分利用SmartNic/DPU网卡资源,且高效灵活的进行SDN网络虚拟化,驭云SDN抽象出3种核心资源,下面分别做介绍:

  • nic,对应Kubernetes中的pod在linux系统中的某个网卡,类型可以是pf/vf/sf/veth,由系统根据用户要求自动创建和删除。
  • vnic,对应一个逻辑网卡,即ovn的logical_switch_port,是虚拟网络的接口,可以是用户自动创建,也可以是系统自动生成。由系统自动和pod的nic进行绑定,绑定后,pod就加入到vnic对应的虚拟网络。
  • vnicip,对应一个逻辑ip,即ovn的logical_switch_port中的ip地址,由系统自动和vnic进行绑定,eip也是和vnicip进行绑定实现云上资源访问外网需求的。

通过上述nic/vnic,我们能够充分利用dpu/smartnic上的网卡资源,并进行网络虚拟化。通过vnicip,我们可以合理利用ip地址,如ip分配,预留等。传统的CNI插件,对于POD来说,其实都是有这些资源,只是没有将这些资源抽象出来,或者说只抽象出部分。对于DPU/SmartNic场景,抽象出NIC和VNIC尤为重要,NIC对应POD使用DPU/SmartNic中的卡资源,而VNIC对应虚拟网络的接口,两者解耦,又能绑定,为SDN灵活性上提供更多可能。

2.2.2.  vpc和subnet

vpc(virtual private cloud)是一种基于云计算的网络服务,它允许用户在云中创建一个逻辑上的隔离网络环境,用户可以在这个环境中启动虚拟机、存储、数据库等云资源,并且可以自由的配置网络、子网(subnet)、路由、安全组等网络设备和安全策略。驭云SDN包含两种vpc,一种是默认vpc(ovn-cluster),一种是租户vpc。默认vpc满足k8s CNI插件规范,系统pod会加入这个vpc,如驭云SDN系统组件。租户vpc之间是完全隔离的。pod与pod,node与pod之间通信,流量将会卸载到dpu/smartnic。网络模型如下:

vpc和subnet都是分布式的。流量能够按照最短路径进行转发,而不会出现绕路等现象,如下图所示,有一个vpc1,vpc1中创建了两个子网subnet1和subnet2,创建了6个pod分别安置在node-A和node-B。vpc和subnet会在每个node都存在,pod1和pod2,pod1和pod3会在本地直接进行转发,而不会经过其他节点。pod1和pod4则会在本地进行路由,然后通过隧道进行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值