DPDK
Try1024
曾经沧海难为水
展开
-
(零)DPDK-基础概念
CPU 中的内存结构CPU 和各级缓存、内存、硬盘之间的关系缓存一致性:目前结构每个core都会持有自己私有的L1/L2 Cache, 但L3 cache是所有core共有的. 那么就存在一个cache一致性的问题MESI 为了保证多个缓存中共享数据的一致性,定义了 cache line 的四种状态,而线程对 cache line 的四种操作可能会产生不一...原创 2019-10-09 17:13:49 · 1210 阅读 · 0 评论 -
(一)DPDK环境搭建及Helloworld
开发环境系统: Ubuntu Server 18.04.3 LTS 版本: dpdk-18.11.2DPDK安装依赖项合集 环境合集更新软件apt updateapt upgradeGNU make一种构建工具,控制应用程序源代码的可执行代码和其他部分代码生成。sudo apt-get install makeCoreutils...原创 2019-09-19 21:18:19 · 1819 阅读 · 0 评论 -
(二)DPDK-OverView
目录DPDK-概述DPDK是什么DPDK特点DPDK的优劣DPDK架构DPDK框架环境适配层EAL核心组件以太网轮询驱动架构PMD报文转发算法支持网络协议库(librte_net)DPDK-概述DPDK是什么Intel® DPDK全称Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为...原创 2019-09-25 14:41:50 · 467 阅读 · 0 评论 -
(三)DPDK-Core Libraries
环形缓冲区管理(librte_ring)简介dpdk的无锁队列ring是借鉴了linux内核kfifo无锁队列。ring的实质是FIFO的环形队列。ring的特点:无锁出入队(除了cas(compare and swap)操作) 多消费/生产者同时出入队使用方法: structrte_ring * rte_ring_create(constchar *nam...原创 2019-09-26 19:12:18 · 274 阅读 · 0 评论 -
(四)DPDK-PMD
Ethernet controller overviewPHY (物理层的模拟信号) ----> MAC(数字信号)---->FIFO(buff 先进先出)---->DMA&Queue mangement (维护管理多个Queue DMA描述符环形队列 把网卡数据搬移到内存or缓存过程)---->PCIe (主机和网卡的接口 )...原创 2019-10-09 16:47:12 · 1997 阅读 · 1 评论 -
(五)DPDK-skeleton/basicfwd
学习这个例子用于理解单纯的 dpdk 转发过程,L2 和 L3 的转发是基于此:在rte_eth_rx_burst()收包后进行解包,提取 mac、ip 等信息然后在转发到输出网卡。main 函数main函数的内容:初始化 EAL 以太网端口数需要为偶数(在这个程序中一个口接收,往另一个口转发) 分配mbufrte_pktmbuf_pool_create() 初始化所有...原创 2019-10-09 16:48:24 · 737 阅读 · 0 评论 -
(六)DPDK-l2fwd
概述在计算机网络中,二层是链路层,是以太网所在的层,识别的是设备端口的MAC地址。DPDK作为用户态驱动,主要的目的也就是不需要让报文经过操作系统协议栈而能实现快速的转发功能。网卡驱动在二层上的作用就是根据设定的目的端口,转发报文到目的端口程序流程程序的主要流程如下:每个逻辑核在任务分发后会执行如下的循环,直到退出其中打印时间片在命令行参数中是可以自...原创 2019-10-11 11:40:32 · 1534 阅读 · 0 评论 -
(七)DPDK-testpmd
简介Testpmd是dpdk自带的测试工具,也可以被看做一个APP。当运行testpmd时,可以展示和验证网卡支持的各种PMD相关功能。1-testpmd的基础代码包括testpmd的启动运行,参数解析,设备的检测和配置。包括如下文件config.c //这个文件名可能有些误导。实际上,这个文件中包含的是UI相关的配置和显示的代码cmdline.cbpf_cmd.c...原创 2019-10-15 11:13:01 · 3952 阅读 · 0 评论