实战录 | 云端卫士之DPDK技术简介

云端卫士的新栏目《实战录》将会定期分享一些我们的工程师伙伴们在产品研发的过程中总结的实践经验,希望对于热爱技术且关注安全领域的受众有所裨益。本期分享人为云端卫士安全运营工程师陶涛。

技术背景随着互联网飞速发展,基础网络技术也面临多需求和挑战:·网络服务运营商在业务拓展等问题上,提出NFV(网络功能虚拟化)方案。·互联网数据中心需求更高级的网络处理能力,提出了SDN(软件定义网络)方案。

在这两股强大需求的推动下,开源的DPDK(DATA PLANE DEVELOPMENT KIT)目前显得比较热门,被普遍采用作为硬件抽象的解决方案。功能简介传统操作系统,一个报文的收发,都需要有内核协调。内核身兼多职,每次都找内核协调,性能不好,发挥不出网卡的实力。

DPDK是一套开发工具,提供应用程序直接处理报文的方法,跳过内核协调部分,性能大大提高。技术构成上图看似简单,实际涉及的技术非常多,单拉出任一点讨论都可能打不住,所以这里单说下其使用了哪些技术。用户态驱动想跳过内核玩硬件,得跟内核打好招呼。目前内核提供了UIO驱动和VFIO驱动来支持。个人认为,二者的区别在于,UIO把硬件设备映射给用户态后,内核不会在参与其调度,完全交给用户自定义使用。

VFIO则在映射后,内核仍旧会为其提供部分规范方法的支持(如中断,iommu等)。大页内存利用大页内存,提高页表命中率。其另一个优点,则是内存资源隔离,大页内存是不会参与系统swap等调度的。CPU亲和性将某个进程/线程绑定到特定的cpu上运行。可以降低被系统调度时,上下文切换的性能损耗。

抛开性能优化,也是资源分配等优化的前提条件。CAS原子操作DPDK利用原子操作规避线程锁,实现了多消费者,多生产者模式的环形队列。在多进程/线程模式下,DPDK的应用程序有不俗的表现。

技术特点回头一看,DPDK用的技术并不是独有的,但合并在一起,构成了它独有的技术特点。驱动可靠操作物理硬件,可不同于软件,开发失误很有可能造成硬件不可用,甚至损坏。DPDK是intel旗下的,适配自己的网卡,只能说是没有比这更可靠的驱动来源了。

资源隔离DPDK提供了eal(环境抽象)层,利用上面提到的技术,将eal大部分资源(cpu、内存、计时器等),与其他程序(甚至内核)隔离。

为基于DPDK的程序稳定性得到保障。开源,文档全作为开源项目非常适合研究学习,难得的是文档和用例也非常全,学习和使用的成本进一步降低。由于篇幅有限,简单介绍了DPDK所使用到的关键技术,和其作为开发工具的技术特点。以后有机会将结合业务,逐个介绍DPDK的功能模块。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值