有哪些比较好的基于dpdk实现的tcp/ip stack?

本文介绍了如何使用DPDK从特定port/queue捕获网络流量,涉及rte_lcore_id、rte_eth_rx_burst和rte_ring_enqueue_burst等关键函数。内容涵盖丢包统计、vlan过滤、剥离及checksum验证,提供了实例代码和分析,帮助读者理解DPDK在TCP/IP栈中的应用。
摘要由CSDN通过智能技术生成

简介

dpdk编程之从给定的port/queue tuple捕获流量。

首先推荐一篇非常好的文章:DPDK之KNI原理 - 云+社区 - 腾讯云

rte_lcore_id

rte_lcore_id()返回当前运行的lcore id。

lcore指的是EAL linux线程。

EAL创建和管理eal线程通过remote_launch来实现任务分配。

在每个EAL线程中,有一个称为_lcore_id TLS是线程的独一无二的id。

通常EAL线程绑定物理cpu,lcore_id通常等于cpu id。

当使用多线程时,绑定不再在线程和指定物理cpu之间总是1:1,EAL线程设为对cpu集的亲和性,而lcore id不再和cpu id一样。所以dpdk 提供了EAL选项-lcores,设置lcore的cpu亲和性,指定lcore id或组对EAL线程设置cpu set。

EAL为环境抽象层,DPDK运行时对linux操作系统进行初始化,并为用户态 DPDK App提供了一个通用接口,隐藏封装了与底层交互能力。做了一些实dpdk运行初始化工作,大页内存分配、numa亲和性、cpu绑定、内存/buffer/ring分配等,并通过 UIO 或 VFIO 技术将 PCI/PCIe 设备地址映射到用户空间。

rte_eth_rx_burst

nb_rx = rte_eth_rx_burst(arg0࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值