DPDK
何进哥哥
这个作者很懒,什么都没留下…
展开
-
DPDK之(二)——如何利用 mTCP 和 DPDK 构造千万百万并发TCP连接
在F5 Networks Seattle 总部从事大型企业网络应用交付使用的维护支持经历中, 经常碰到客户应用达到百万至千万级TCP连接时BIGIP可能会遇到的各种瓶劲,如内存分配使用状态,CPU 负荷, TCP 协议栈性能. TCP software syncookie 和 TCP hardware (FPGA) assisted syncookie accelearation 协同工作性能转载 2017-05-15 14:30:10 · 4844 阅读 · 0 评论 -
DPDK之(十一)——内存管理---rte_mbuf
本文主要介绍rte_mbuf与rte_mempool数据结构之间的组织关系、以及网卡接收到的数据是如何存储在rte_mbuf中的。 一、rte_mbuf、rte_mempool及网卡收到的数据包在内存中的组织结构 调用rte_mempool_create()函数创建rte_mempool的时候,指定申请多少个rte_mbuff及每个rte_mbuf中elt_size的大小转载 2017-05-18 16:25:29 · 2277 阅读 · 1 评论 -
dpdk之(十)——基础模块之rte_mbuf详解
Rte_mbuf本文假定报文的长度不超过rte_mbuf->buf_len的长度。内存结构分配操作Mbuf由缓冲池rte_mempool管理,rte_mempool在初始化时一次申请多个mbuf,申请的mbuf个数和长度都由用户指定。宏MBUF_SIZE是例子程序中使用的mbuf长度:#define MBUF_SIZE (2048 + sizeof(struct rte_m转载 2017-05-18 16:16:37 · 5727 阅读 · 0 评论 -
DPDK之(九)——收发包分析
前言:DPDK收发包是基础核心模块,从网卡收到包到驱动把包拷贝到系统内存中,再到系统对这块数据包的内存管理,由于在处理过程中实现了零拷贝,数据包从接收到发送始终只有一份,对这个报文的管理在前面的mempool内存池中有过介绍。这篇主要介绍收发包的过程。一、收发包分解收发包过程大致可以分为2个部分1.收发包的配置和初始化,主要是配置收发队列等。2.数据包的获取和发送,主要是从队列中获转载 2017-05-17 16:56:17 · 10206 阅读 · 0 评论 -
DPDK之(八)——vhost库
转:http://www.cnblogs.com/danxi/p/6652725.htmlvhost库实现了一个用户空间的virtio net server,允许用户直接处理virtio ring队列。换句话说,它让用户可以从VM virtio网络设备读取或写入数据包,为了达到这个目的,vhost库应该可以:访问客户虚拟机内存,对于QEMU,这个是通过设置 -objec转载 2017-05-15 17:19:12 · 1791 阅读 · 0 评论 -
DPDK之(七)—— support for vhost-user学习笔记
转地址:http://www.lai18.com/content/1851237.htmlX86体系早期没有在硬件设计上对虚拟化提供支持,因此虚拟化完全通过软件实现。一个典型的做法是通过优先级压缩(Ring Compression)和二进制代码翻译(Binary Translation)相结合,VMM在特权级ring 0, Guest操作系统在非特权级ring 1, Guest应用转载 2017-05-15 17:18:15 · 3925 阅读 · 0 评论 -
DPDK之(六)——内存管理
(一)初始化1 前言 DPDK通过使用hugetlbfs,减少CPU TLB表的Miss次数,提高性能。2 初始化DPDK的内存初始化工作,主要是将hugetlbfs的配置的大内存页,根据其映射的物理地址是否连续、属于哪个Socket等,有效的组织起来,为后续管理提供便利。2.1 eal_hugepage_info_init()eal_hugepage_in转载 2017-05-15 14:41:06 · 4104 阅读 · 0 评论 -
DPDK之(五)——多核多线程机制简析
DPDK通过在多核设备上,创建多个线程,每个线程绑定到单独的核上,减少线程调度的开销,以提高性能。DPDK的线程分为控制线程和数据线程,控制线程一般绑定到MASTER核上,主要是接受用户配置,并传递配置参数给数据线程等;数据线程主要是处理数据包。一、初始化1、rte_eal_cpu_init()函数中,通过读取/sys/devices/system/cpu/cpuX/下的相关信息,确定转载 2017-05-15 14:35:29 · 1581 阅读 · 0 评论 -
DPDK之(四)——中断机制简析
DPDK通过在线程中使用epoll模型,监听UIO设备的事件,来模拟操作系统的中断处理。 一、中断初始化在rte_eal_intr_init()函数中初始化中断。具体如下:1、首先初始化intr_sources链表。所有UIO设备的中断都挂在这个链表上,中断处理线程通过遍历这个链表,来执行设备的中断。2、创建intr_pipe管道,用于epoll模型的消息通知。3、创建线程转载 2017-05-15 14:34:20 · 868 阅读 · 0 评论 -
DPDK之(三)——收发包处理流程--网卡初始化
本文基于DPDK-1.8.0分析。网卡驱动模型一般包含三层,即,PCI总线设备、网卡设备以及网卡设备的私有数据结构,即将设备的共性一层层的抽象,PCI总线设备包含网卡设备,网卡设备又包含其私有数据结构。在DPDK中,首先会注册设备驱动,然后查找当前系统有哪些PCI设备,并通过PCI_ID为PCI设备找到对应的驱动,最后调用驱动初始化设备。一、网卡驱动注册以e1000网卡驱动为例说明。转载 2017-05-15 14:33:33 · 2518 阅读 · 0 评论 -
dpdk 之(一)——代码分析 内存初始化
一 前言http://www.dpdk.org/ dpdk 是 intel 开发的x86芯片上用于高性能网络处理的基础库,业内比较常用的模式是linux-app模式,即利用该基础库,在用户层空间做数据包处理,有了这个基础库,可以方便地在写应用层的网络包处理高性能程序,目前该库已经开源。Main librariesmulticore framework 多核框架,dpdk转载 2017-05-15 14:25:51 · 1970 阅读 · 0 评论