DPDK
文章平均质量分 92
qq_0105
这个作者很懒,什么都没留下…
展开
-
dpdk报文收发流程
当应用层从软件队列中获取到mbuf后, 需要重新从内存池申请一个mbuf空间,并将mbuf地址放到描述符队列中, 相当于告诉dma控制器,后续将收到的报文保存到这个新的mbuf中, 这也是狸猫换太子的过程。和传统报文接收不同,当应用层想要接收来自网卡的报文时, 应用层通过while死循环的方式,调用rte_eth_rx_burst接口轮询接收来自网卡的报文,相当于绕过了内核协议栈,将内核旁路了。当应用层需要发送报文时,调用rte_eth_tx_burst接口,将报文放到软件发送空间,也就是mbuf空间中。转载 2024-06-02 15:41:57 · 262 阅读 · 0 评论 -
dpdk应用层对网卡进行配置
需要注意的是,这里仅是开辟软件发送空间,并没有将e1000_adv_tx_desc描述符与软件发送空间,也就是mbuf关联起来,这两者的关联在rte_eth_dev_start中完成。软件接收空间,也就是mbuf空间,是用来告诉dma控制器,收到的报文存放到e1000_adv_rx_desc描述符成员pkt_addr指向的位置,这个pkt_addr指向的位置就是mbuf的地址。这个接口大部分是对寄存器进行设置,例如将发送描述符队列的位置,队列总大小,队列的开始位置,队列的结束位置等信息写入寄存。转载 2024-06-02 11:38:47 · 209 阅读 · 0 评论 -
dpdk pmd驱动初始化
应用层之所以可以对这个配置空间中的寄存器进行操作,得益于igb_uio驱动,igb_uio驱动将网卡的配置空间暴露到应用层来,应用层才能知道网卡的寄存器地址在哪里,进而对这些寄存器进行读写操作。pmd里面会维护一个网卡数组,对于每一个网卡结构,都会维护这个网卡的接收发送数据的回调,关联的驱动等信息。在每一个网卡的配置目录下,都有一个resouce文件,里面记录了这个网卡的配置空间的开始位置,结束位置,以及配置空间的总大小。相应的,nvm层,vbx层都是这样的一种框架结构,掌握了mac层,其他层也是类似的。转载 2024-06-02 11:26:58 · 78 阅读 · 0 评论 -
DPDK igb_uio驱动分析
本文整理下之前的学习笔记,基于DPDK17.11版本源码分析。主要分析一下igb_uio驱动源码。转载 2024-06-02 10:56:19 · 53 阅读 · 0 评论 -
DPDK探测设备并初始化
遍历驱动链表rte_pci_bus.driver_list,调用 RTE_PMD_REGISTER_PCI时将驱动插入此链表。如果网卡绑定到 igb_uio 或者 uio_pci_generic,则调用 pci_uio_map_resource。rte_eth_dev_pci_generic_probe是个通用的封装函数,用来申请 rte_eth_dev 内存,遍历设备链表rte_pci_bus.device_list,rte_pci_scan 阶段会把扫描到的设备插入此链表。本文重点介绍网卡相关。转载 2024-06-02 10:40:02 · 69 阅读 · 0 评论