智能网卡原生分叉:实现内核和DPDK的优势结合

随着服务器网络带宽快速增长,Linux内核网络协议栈逐渐成为性能瓶颈。在需要高性能报文处理的场景,用户态DPDK得到越来越多的应用。DPDK通过bypass内核、大页等机制,实现了高性能、低时延的网络IO能力。
尽管 Linux 内核网络协议栈的处理性能低于 DPDK,但其支持的网络协议类型更为丰富,且配套的调试、监控工具链成熟完善,在兼容性与可运维性上具备显著优势。为充分结合两者的核心价值,智能网卡通常会提供流量分叉机制:目前多数网卡厂商的方案基于SR-IOV技术的分叉,即PF通过ethtool配置Flow Director将流量分流到VF。


这种方式存在如下问题:
需要配置的管理SR-IOV,使用较为复杂
在不使能OVS流卸载情况下,SR-IOV与bonding互斥,需要牺牲bonding带来的高可用性。
为了解决这些问题,星云智联推出智能网卡原生分叉技术(Native Bifurcation)。
原生:指的是内核空间和用户态空间(DPDK),共用同一个PCI设备(PF)。通过PF的共存技术,支持PF在内核驱动与DPDK驱动共享。
原生分叉的常见使用方法:DPDK配置为isolated mode,流量默认到内核。通过配置rte flow将选出的流量引到DPDK。ARP、路由等表项仍然通过内核维护。


原生分叉的优势在于
简化运维管理:不需要开启SR-IOV。且对外报文的源MAC地址是固定的MAC,不像VF通常为随机MAC,需用户在额外分配MAC地址
高可用:支持bonding。不需要因为SR-IOV而关闭bonding。
工具丰富:可以继续使用内核ethtool/ifconfig等工具,以及成熟稳定的协议栈
降成本:支持流量默认在内核,只过滤部分流量到DPDK,可以节省一个管理网卡
为了更好地支持原生分叉,星云智联网卡中进行了专门技术设计:
数据通道:具备较多硬件队列、并且支持一个PCIe设备多协议栈的队列调度
硬件DMA引擎:支持多协议栈地址隔离
eswitch引擎:支持客户的精细化引流
已经有较多优秀的项目,在使用原生分叉技术:
用户态协议栈:如字节跳动基于原生分叉开发libtpa
高性能存储Fabric应用:星云智联与客户联合开发,实现替代传统的内核协议栈
订购信息
想要了解更多订购信息,请联系星云智联销售代表
sales@nebula-matrix.com 或致电400-8936-986

新闻中心
获取星云智联最新动态和新闻资讯
销售咨询:sales@nebula-matrix.com
售后服务支持邮箱: service@nebula-matrix.com
售后服务支持热线: 400-8936-986
联系我们