r2p2之DPDK学习记录(2)

名称解释

简称全称备注
DPDKData Plane Development Kit数据平面开发套件
RTERunTime Environment运行时环境
EALEnvironment Abstraction Layer环境抽象层
lcorelogical coreEAL pthread
TLSThread Local Storage线程本地存储

dpdk函数

dpdk的主要对外函数接口都以rte_作为前缀,抽象化函数接口是典型软件设计思路,可以帮助DPDK运行在多个操作系统上。

rte_eth_tx_burst()

对于要发送的每个包,rte_eth_tx_burst()函数会执行下列操作:

  • 在传输ring中选择下一个可用的描述符。
  • 释放先前与该描述符一起发送的网络缓冲区,如果有的话。
  • 使用*rte_mbuf数据结构中提供的信息初始化传输描述符。
static uint16_t rte_eth_tx_burst(uint16_t port_id,
  uint16_t queue_id,
  struct rte_mbuf ** tx_pkts,
  uint16_t nb_pkts 
 )

参数

 port_id:以太网设备的端口标识符。

queue_id:必须通过其发送输出数据包的传输队列的索引。该值必须在先前提供给rte_eth_dev_configure()的[0,nb_tx_queue - 1]范围内。

tx-pkts:包含输出包的rte_mbuf结构的nb_pkts指针数组的地址。

nb_pkts:要传输的最大数据包数。

return发送成功的数据包的个数。

lcore

一个lcore是一个基于pthread实现的线程。

rte_eal_init(int argc, char **argv)

主线程运行入口是main函数,调用了rte_eal_init入口函数,启动基础运行环境。

函数参数是启动DPDK的命令行,比较复杂,它将被解析并且保存作为DPDK运行的系统信息。

 rte_lcore_count()

返回当前系统上存在的lcore的个数。

rte_eth_dev_count()

获取在PCI探测阶段由匹配的以太网驱动程序成功初始化的以太网设备总数。所有端口标识符在[0,rte_eth_dev_count() - 1]范围内的设备都可以在调用rte_eal_init()后立即被网络应用程序操作。

rte_eth_dev_configure(port_id, nb_rx_queue, nb_tx_queue, eth_conf)

配置以太网设备。

参数

port_id: 需要配置的以太网设备的端口id。

nb_rx_queue: 为以太网设备设置的接收队列的数量。

nb_tx_queue: 为以太网设备设置的发送队列的数量。

eth_conf: 指向用于以太网设备的配置数据的指针。

rte_eth_tx_queue_setup(port_id, tx_queue_id, nb_tx_desc, socket_id, tx_conf)

给以太网设备分配并配置一个传输队列。

参数

tx_queue_id: 要设置的传输队列的索引。该值必须在先前提供给rte_eth_dev_configure()的[0,nb_tx_queue-1]范围内。

nb_tx_desc: 分配给传输ring的传输描述符的数量。这取决于网卡硬件。

socket_id: 在r2p2的dpdk_init()中,socket_id = rte_eth_dev_socket_id(port_id),socket_id这里指的是什么?使用rte_eth_dev_socket_id(port)获取port所对应的以太网设备所连接上的socket的id。

tx_conf: 指向传输队列的配置数据的指针。

rte_eth_dev_socket_id()

返回以太网设备所连接的NUMA socket.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值