DPDK初始化流程
- 1.初始化EAL环境,
rte_eal_init()
; - 2.解析参数,因为DPDK的参数在EAL初始化时就进行了解析,所以,这里主要解析的是我们自己的参数,可以使用
getopt_long
函数。 - 3.初始化内存池等,这里要注意放在接口的初始化之前,为接收数据包做准备。
- 4.初始化接口。这里具体说一下,在初始化接口时,主要有三部分工作:
-
- 首先配置接口的属性-
rte_eth_dev_configure()
,如支持大帧下的包长检查等,然后很重要的是配置发送和接收队列。
- 首先配置接口的属性-
-
- 当以上的配置完整以后,接下来就是启动队列-
rte_eth_rx_queue_setup()
。
- 当以上的配置完整以后,接下来就是启动队列-
-
- 最后一步就是当都准备好了以后,就可以启动设备了-
rte_eth_dev_start()
,同时还可以使能混杂模式等设置。有时也会设置接收和发送的回调函数-rte_eth_add_rx_callback()
.
- 最后一步就是当都准备好了以后,就可以启动设备了-
-
- 5.启动所有核上的线程。
rte_eal_mp_remote_launch()