DPDK 学习 网络协议栈-vpp-OvS-DDos-虚拟化专家之路

Posted 勿忘初心呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DPDK 学习 网络协议栈-vpp-OvS-DDos-虚拟化专家之路相关的知识,希望对你有一定的参考价值。


DPDK

一、什么是DPDK

对于用户来说,它可能是一个性能出色的包数据处 理加速软件库;对于开发者来说,它可能是一个实践包处理新想法的创 新工场;对于性能调优者来说,它可能又是一个绝佳的成果分享平台。

DPDK 用软件的方式在通用多核处理器上演绎着数据包处理的新篇 章,而对于数据包处理,多核处理器显然不是唯一的平台。支撑包处理 的主流硬件平台大致可分为三个方向。

  • 硬件加速器
  • 网络处理器
  • 多核处理器

在类似 IA(Intel Architecture)多核处理器为目标的平台上,网络数据包处理远早于 DPDK 而存在。从商业版的 Windows 到开源的 Linux操作系统,所有跨主机通信几乎都会涉及网络 协议栈以及底层网卡驱动对于数据包的处理。然而,低速网络与高速网 络处理对系统的要求完全不一样。

二、DPDK源码目录结构

lib/ : DPDK的库源代码

drivers/ : DPDK轮询模式驱动程序源代码

app/ : DPDK应用程序源代码

examples/ : DPDK的一些应用程序例子源代码

config/ : DPDK关于arm和x86平台的一些编译配置

buildtools/ : DPDK一些编译配置的脚本

mk/ : DPDK的Makefile

usertools/ : DPDK提供给用户的一些实用工具

三、常用术语及缩写

ACL:Access Control List,访问控制列表,是路由器和交换机接口的指令列表,用来控制端口进出的数据包;简而言之就是用来控制数据流。

SSL:Secure Sockets Layer,安全套接层,是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密。

RSS:Receive Side Scaling,是一种能够在多处理器系统下使接收报文在多个CPU之间高效分发的网卡驱动技术。

NUMA:Non Uniform Memory Access Architecture,非统一内存访问架构;

QOS:Quality of Service,服务质量,指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力, 是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。

NIC:Network Interface Card,网卡,网卡是局域网中最基本的部件之一,它是连接计算机与网络的硬件设备。

PCI:Peripheral Component Interconnect,计算机一种标准总线,NIC就是使用的这种总线方式。

PMD:Poll Mode Drive,轮询模式驱动,DPDK就是采用的这种模式。

RTE:Run Time Environment,通过PMD实现快速分组处理数据的一个框架。

MPLS:Multi-Protocol Label Switching,多协议标签交换,是一种用于快速数据包交换和路由的体系,它为网络数据流量提供了目标、路由地址、转发和交换等能力。更特殊的是,它具有管理各种不同形式通信流的机制。

四、 DPDK 学习虚拟化专家之路

DPDK/网络协议栈/vpp/OvS/DDos/SDN/NFV/虚拟化/高性能专家之路 系统性学习

DPDK/网络协议栈 入门讲解篇

​手把手带你用 DPDK 实现 tcp 网络传输​

​DPDK 如何支持千万级别并发,c10m的极限瓶颈在哪里?​

DPDK 知识点学习大纲

DPDK 网络

网络协议栈项目

  • dpdk-arp
  • dpdk-icmp
  • dpdk-udp
  • dpdk-ip
  • dpdk-tcp

dpdk组件项目

  • dpdk-mp
  • dpdk-acl
  • dpdk-kni
  • dpdk-timer
  • dpdk-bpf
  • dpdk-mbuf

dpdk经典项目

  • dpdk-dns
  • dpdk-gateway
  • dpdk-nat
  • dpdk-ddos
  • dpdk-firewall
  • dpdk-switch
  • dpdk-pktgen

DPDK 框架

可扩展的矢量数据包处理框架vpp( c/c++)

  • vpp 命令详解
  • mac/ ip 转发 plugin
  • ddos node
  • load_balance plugin
  • NAT plugin
  • flowtable plugin
  • vpp源码

DPDK的虚拟交换机框架OvS

  • OvS三大组件ovs-vswitchd,ovsdb-server,openvswitch.ko
  • OvS报文处理机制
  • OvS4种数据路径
  • VXLAN数据协议

golang的网络开发框架nff-go(golang)

  • antiddos
  • firewall
  • ipsec
  • netcap

轻量级的switch框架snabb( lua)

  • 12vpn
  • snabbnfv
  • ipfix
  • lwaftr

高效磁盘io读写spdk ( C )

  • NVMe,1/OAT,IDXD,Virtio,VMD
  • 后端块设备 NVMe/RBD/AIO
  • 存储服务 bdev与Blobstore
  • 存储协议 iSCSI,NVMe , vhost-scsi

DPDK 源码

内核驱动

  • igb_uio
  • vfio
  • kni

内存

  • mbuf
  • mempool

协议

  • ipsec
  • bpf
  • pci
  • Flow_classify

虚拟化

  • vhost
  • virtio

cpu

  • rcu
  • ring
  • sched

安全

  • security
  • cryptodev
  • compressdev

性能测试

性能指标

  • 吞吐量bps
  • 拆链/建链pps
  • 并发
  • 最大时延
  • 最小时延
  • 平均时延
  • 负载
  • 包速fps
  • 丢包率

测试方法

  • 测试用例
  • vpp sandbox
  • perf3灌包
  • rfc2544

测试工具

  • perf3
  • trex
  • testpmd
  • pktgen-dpdk

工作岗位

  • 高级网络开发工程师
  • DPDK开发工程师
  • 云产品研发工程师
  • 云基础开发工程师
  • 高性能优化工程师
  • SDN开发工程师
  • NFV开发工程师


以上是关于DPDK 学习 网络协议栈-vpp-OvS-DDos-虚拟化专家之路的主要内容,如果未能解决你的问题,请参考以下文章

零声dpdk网络协议栈

突破Linux内核网络协议栈瓶颈的技术方案-dpdk+vpp

从netmap到dpdk,从硬件到协议栈,4个维度让网络体系构建起来

基于dpdk的用户态协议栈f-stack

基于dpdk的用户态协议栈f-stack

基于dpdk的用户态协议栈f-stack