一、网络编程
DPDK的源码分析的很多了,也应该让他发挥一些作用了。前面的分析可以知道,DPDK的优势在于网络通信,那么它可不可以替代传统的Socket网络通信的底层协议栈呢?答案是肯定的。
一个框架最重要的意义就在能为上层所应用并且达到一个新的性能上的高度,DPDK正是如此。网络编程中常用的是TCP编程和UDP编程,本篇就用DPDK模拟实现网络通信的一个简单框架流程的分析说明。为下一步的TCP/UDP等网络编程进行一个基础的准备。
二、实现方式
利用DPDK实现网络编程,主要需要实现通过DPDK的相关接口来模拟实现与网卡的网络通信Socket编程。包括相关的设备初始化、通过DPDK与网卡进行数据交互、应用层的模拟通信接口和上层应用的数据收发处理。
三、源码分析
下面看一下主体框架的代码:
void init()
{
int ret;
ret = rte_eal_init(argc,argv);
// create devices
struct rte_eth_conf port_conf;
memset(&port_conf, 0, sizeof(struct rte_eth_conf));
//set config
......
// get port
uint16_t port;
port = rte_eth_find_next_owned_by(0, RTE_ETH_DEV_NO_OW