dpdk

DPDK — IGB_UIO,与 UIO Framework 进行交互的内核模块

独自空忆成欢 提交于 2020-05-09 09:27:12
目录 文章目录 目录 前文列表 IGB_UIO 前文列表 《 DPDK — 安装部署 》 《 DPDK — 数据平面开发技术 》 《 DPDK — 架构解析 》 IGB_UIO 虽然 PMD 是在用户态实现的网卡驱动程序,但实际上还是会依赖于内核提供的策略。其中 UIO 内核模块,是内核提供的用户态驱动框架,而 IGB_UIO(igb_uio.ko)是 DPDK 用于与 UIO 交互的内核模块,通过 igb_uio 来 bind 指定的 PCI 网卡设备到 DPDK 使用。IGB_UIO 借助 UIO 技术来截获中断,并重设中断回调行为,从而绕过内核协议栈后续的处理流程。并且 IGB_UIO 会在内核初始化的过程中将网卡硬件寄存器映射到用户态。 IGB_UIO 内核模块主要功能之一就是用于注册一个 PCI 设备 。可以使用 DPDK 提供个一个 Python 脚本 dpdk-devbind 来完成,当执行 dpdk-devbind 来 bind 网卡时,会通过 sysfs 与内核交互,让内核使用指定的驱动程序来匹配网卡。具体的行为是向文件 /sys/bus/pci/devices/{pci id}/driver_override 写入指定驱动的名称,或者向 /sys/bus/pci/drivers/igb_uio(驱动名称)/new_id 写入要 bind 的网卡设备的 PCI

Linux性能优化实战学习笔记:第四十四讲

梦想的初衷 提交于 2020-05-06 03:19:28
一、上节回顾 上一节,我们学了网络性能优化的几个思路,我先带你简单复习一下。 在优化网络的性能时,你可以结合 Linux 系统的网络协议栈和网络收发流程,然后从应用程序、套接字、传输层、网络层再到链路层等每个层次,进行逐层优化。上一期我们主要 学习了应用程序和套接字的优化思路,比如: 在应用程序中,主要优化 I/O 模型、工作模型以及应用层的网络协议; 在套接字层中,主要优化套接字的缓冲区大小。 今天,我们顺着 TCP/IP 网络模型,继续向下,看看如何从传输层、网络层以及链路层中,优化 Linux 网络性能。 二、网络性能优化-传输层 传输层最重要的是 TCP 和 UDP 协议,所以这儿的优化,其实主要就是对这两种协议的优化。 我们首先来看 TCP 协议的优化。 TCP 提供了面向连接的可靠传输服务。要优化 TCP,我们首先要掌握 TCP 协议的基本原理,比如流量控制、慢启动、拥塞避免、延迟确认以及状态流图(如下图所示)等 关于这些原理的细节,我就不再展开讲解了。如果你还没有完全掌握,建议你先学完这些基本原理后再来优化,而不是囫囵吞枣地乱抄乱试。 掌握这些原理后,你就可以在不破坏 TCP 正常工作的基础上,对它进行优化。下面,我分几类情况详细说明。 第一类 ,在请求数比较大的场景下,你可能会看到大量处于 TIME_WAIT 状态的连接,它们会占用大量内存和端口资源。这时

Linux性能优化实战学习笔记:第十五讲

北城余情 提交于 2020-05-05 01:14:32
一、内存映射 内存管理也是操作系统最核心的功能之一,内存主要用来存储系统和应用程序的指令、数据、缓存等 1、我们通说的内存指的是物理内存还是虚拟内存? 我们通常说的内存容量,其实这指的是物理内存,物理内存也称为主存,大多数计算机用的主存都是动态随机访问内存(DRAM)。只有内核才可以直接访问物理内存。 那么,进程要访问内存时,该怎么办呢? 2、进程是如何访问内存的? Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样,进程就可以很方便地访问内存,更确切地说是访问虚拟内存 3、虚拟内存的内核空间和用户空间分布图 4、进程是如何访问内核空间内存的? 进程在用户态时,只能访问用户内存;只有进入内核态后,才可以访问内核空间内存,虽然每个进程的地址空间都包含了内核空间,但这些内核空间,其实关联的都是想同的物理内存 这样、 进程切换到内核态后,就可以很方便地访问内核空间内存 5、并不是所有的虚拟机内存都会分配物理内存 既然每个进程都有一个这么大的地址空间,那么所有进程的虚拟内存加起来, 自然要比实际的物理内存大得多 所以并不是所有的虚拟机内存都会分配物理内存,只有那些实际使用的虚拟机内存才分配物理内存,并且分配后的物理内存,是通过内存映射来管理的 6、什么是内存映射? 内存映射,其实就是将虚拟内存地址映射到物理内存地址,为了完成内存映射

异数OS TCP协议栈测试(四)--网卡适配篇

偶尔善良 提交于 2020-05-02 19:43:52
异数OS TCP协议栈测试(四)–网卡适配篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 异数OS-织梦师(消息中间件)群: 476260389 为了实际走向应用,异数OS目前适配了netmap平台,DPDK平台,暂时每端口单核单队列的模式,后面各项问题解决后,开始适配RSS FDIR方案,下面是目前适配各个网卡驱动平台的测试结果。 测试说明 测试硬件平台 CPU : E5 2670 V1 2.3G 内存:64G 网卡: intel 82599 双口,5GT PCI E限制(损失30%满载收发包性能) 测试用例 1.双口双核,将网卡两个口用光纤回环链接,CPU3 创建TCP server,CPU 5创建 指定连接数量的TCP Client线程(每链接4线程),测试方案使用 异数OS TCP协议栈测试(三)–长连接篇的的测试方法,成绩是ECHO的iops成绩。 1.单口单核,将网卡1个口的TX RX光纤回环链接,CPU3 创建TCP server,同时创建 指定连接数量的TCP Client线程,测试方案使用 异数OS TCP协议栈测试(三)–长连接篇的的测试方法,成绩是ECHO的iops成绩。 3.UDP NIC回环,分别在双口双核 单口单核模式下,创建两个线程

DPDK盒子使用手册——DPDK入门zz

半城伤御伤魂 提交于 2020-05-02 10:19:43
https://www.sdnlab.com/20524.html 本章分为两节,第一节介绍数据平面开发套件DPDK(Data Plane Development Kit)的基础知识,第二节介绍DPDK盒子的使用方法。 一、DPDK简介 本节首先介绍DPDK出现的行业背景,然后介绍DPDK概述、DPDK关键技术、DPDK开源代码,最后介绍DPDK Lib库。 1.1 DPDK背景 在过去10年里,以太网接口技术也经历了飞速发展。从早期主流的10Mbit/s与100Mbit/s,发展到千兆网(1Gbit/s)。到如今,万兆(10Gbit/s)网卡技术成为数据中心服务器的主流接口技术,近年来,Intel等公司还推出了40Gbit/s、100Gbit/s的超高速网络接口技术。而CPU的运行频率基本停留在10年前的水平,严重阻碍了速度的提升,为了迎接超高速网络技术的挑战,DPDK(Data Plane Development Kit),一个以软件优化为主的数据面技术应时而生,它为今天NFV(Network Function Virtualization)技术的发展提供了绝佳的平台可行性。 网络处理器能够迅速将数据报文接收入系统,比如将64字节的报文以10Gbit/s的线速也就是14.88Mp/s(百万报文每秒)收入系统,并且交由CPU处理,这在早期Linux和服务器平台上无法实现。传统上

加速NFV(网络功能虚拟化)数据面:SR-IOV和DPDK[原文意译]

拥有回忆 提交于 2020-05-02 10:19:11
事实确实如此 - 过去很多人都在谈论SR-IOV和DPDK,即使在我们自己的博客上也是如此。我认为这是一个挑战:有机会以稍微不同的方式讲述数据平面加速的故事。当然,我们的审查编辑也认为这是一个挑战,因为她正在浏览大量潜在的资料,在我的作品中寻找剽窃的例子。显然,“最诚恳的奉承”在写作界并没有价值。 <center>***查尔斯·卡莱布·科尔顿(英国作家)***</center> 真是惭愧,因为我与说这句话(指上段最后一句)的查尔斯·卡莱布·科尔顿有许多共同之处......不仅仅是因为我也逃离了英国,以逃避我的债权人。查尔斯在他的着作《Lacon, or Many Things in Few Words: Addressed to those who think》说:“当追随自己的经验时,错误比无知让自己更难到达终点”。写这样一篇文章的主要原因是:为了帮助我在前进之前控制我的无知,防止直撞悬崖。另外,我们网站上的其他页面也欢迎浏览,谢谢。 英特尔作为SR-IOV和DPDK的领导者或直接创始者,都是关于两者的绝佳信息来源。基于AMD(IOV),Inte(VT-d)等的输入/输出内存管理单元(IOMMU)技术的建立和标准化,“单根I/O虚拟化和共享规范”于2007年9月<sup>[1]</sup>首次发布,同时服务器虚拟化的概念正在大踏步前进。到目前为止,I/O虚拟化选项是严格基于软件的

复刻smartbits的国产网络测试工具minismb-如何测试DPI引擎

别说谁变了你拦得住时间么 提交于 2020-05-02 02:29:30
复刻smartbits的 网络性能测试工具 MiniSMB,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具。可以通过此以太网测试工具测试任何ip网络设备的端口吞吐率,带宽,并发连接数和最大连接数等诸多参数指标。 与软件 Iperf,netperf, dpdk trafficgen相比较,MiniSMB属于专业硬件网络发包测试仪, 具备精准测试速率,高吞吐率,可模拟千万级连接数等特点. 类似于Spirent思博伦,Ixia,北京信而泰网络IP性能测试仪。 MiniSMB网络数据性能测试仪最新版本为3.3.0版。 本次使用 MiniSMB网络数据性能测试仪以爱快公司的软件路由器为例进行DPI引擎测试。 本次被测试主机设备( DUT)硬件环境为:intel赛扬G1800:2.7GHz,2G内存。软件环境为:iKuai8_3.1.5_Build201901241133(免费版)。默认配置启用NAT。 测试拓扑图: 在 MiniSMB软件中进行如下配置(模拟5台客户机:172.16.0.100~172.16.0.104)。 在 iKuai软件的“流控分流-自定义协议”中配置自定义协议 启动 MiniSMB中发包 在 iKuai软件中可以看到wan2口有数据接收 在 iKuai软件中收到来自5台客户机发送的数据包 在 iKuai软件中接收到5台客户机发出的协议包

飞凌5G工业网关集2G/3G/4G/5G全兼容的FCU2301嵌入式控制单元震撼上市

|▌冷眼眸甩不掉的悲伤 提交于 2020-04-27 13:50:50
每一次前行,都有创新的力量 每一次创新,都是极致突破 我们积极探索,不断尝试,力求改变 一次又一次,一次又一次 终于,又迎来了我们的新产品 5G工业网关 FCU2301 震撼上市! 5G工业网关 5G工业网关简介 FCU2301嵌入式控制单元是一款具有高性能、多接口、高带宽、大链接、低时延的5G工业网关,从芯片到模组全部采用工业级设计,支持4G/5G全网通、6路千兆网、RS485、DI、DO等多种接口;内部集成高性能64位四核ARM处理器LS1046A,主频高达1.8GHz,CoreMark跑分45000;搭载华为5G工业模组MH5000配合LS1046A的网络加速引擎,可帮助用户快速接入互联网,实现安全可靠的数据传输。开放式系统设计,便于用户二次开发。支持Ubunut18.04操作系统,且集成丰富的第三方组件;适用于智慧工厂、智慧城市、智慧医疗、无人驾驶、虚拟现实等领域。 FCU2301嵌入式控制单元是一款具有高性能、多接口、高带宽、大链接、低时延的5G工业网关。适用于智慧工厂、智慧城市、智慧医疗、无人驾驶、虚拟现实等领域。 一、5G工业网关平台特性 从芯片到模组全部采用工业级设计,支持4G/5G全网通、6路千兆网、RS485、DI、DO等多种接口。 内部集成高性能64位四核ARM处理器LS1046A,主频高达1.8GHz,CoreMark跑分45000。 搭载华为 5G工业模组

Linux性能优化实战学习笔记:第三十五讲

冷暖自知 提交于 2020-04-26 22:36:24
一、上节回顾 前面内容,我们学习了 Linux 网络的基础原理以及性能观测方法。简单回顾一下,Linux网络基于 TCP/IP 模型,构建了其网络协议栈,把繁杂的网络功能划分为应用层、传输层、网络层、网络接口层等四个不同的层次,既解决了网络环境中设备异构的问题,也解耦了网络协议的复杂性。 基于 TCP/IP 模型,我们还梳理了 Linux 网络收发流程和相应的性能指标。在应用程序通过套接字接口发送或者接收网络包时,这些网络包都要经过协议栈的逐层处理。我们通常 用带宽、吞吐、延迟、PPS 等来衡量网络性能。 今天,我们主要来回顾下经典的 C10K 和 C1000K 问题,以更好理解 Linux 网络的工作原理,并进一步分析,如何做到单机支持 C10M 注意,C10K 和 C1000K 的首字母 C 是 Client 的缩写。C10K 就是单机同时处理 1 万个请求(并发连接 1 万)的问题,而 C1000K 也就是单机支持处理 100 万个请求(并发连接100 万)的问题。 二、C10K C10K 问题最早由 Dan Kegel 在 1999 年提出。那时的服务器还只是 32 位系统,运行着Linux 2.2 版本(后来又升级到了 2.4 和 2.6,而 2.6 才支持 x86_64),只配置了很少的 内存(2GB)和千兆网卡。 1、怎么在这样的系统中支持并发 1 万的请求呢? 1

产品优势及发展方向

不问归期 提交于 2020-04-26 17:00:26
产品优势及发展方向 1)安狮产品系统基于久经考验的FreeBSD内核深度定制,安全稳定,BSD授权许可允许我们自由改写或扩展系统组件,而无需担心GPL等风险。可以安全的作为商业产品系统使用。并且可以随时合并FreeBSD的上游安全补丁,保持系统的安全性。 2)安狮产品系统在用户层实现了高效的网络协议栈框架,此框架的流量处理性能比肩英特尔的DPDK框架,可以确保每个处理器核心都在高速处理业务流量,最大程度提升系统响应速度。 3)英特尔的DPDK框架的源码为GPL和LGPL授权,作为商业系统使用时,如果按照自己的需求修改了源码,如果不开源,可能存在法律风险。如果开源,则存在泄露信息风险。安狮系统的多核并行框架则完全没有此风险,没有此类风险,可以安全稳定作为商业产品系统进行开发扩展。 4)安狮系统的管理服务资源是独立的,即使系统正在满速处理业务流量状态,也不影响系统的管理配置。 5)安狮的多核并行框架是一种高性能的并行处理框架,可以使多个核心资源并行处理业务流量,在极低的延迟时间内实现极高的吞吐流量处理。多核并行框架使用了引擎核心零共享技术和对称流量调度技术。引擎核心零共享技术确保了每个流量处理引擎之间的相互独立,不共享任何数据,避免数据禁止和同步等待问题。对称流量调度技术可以确保在多核处理器系统上使报文在多个CPU核心之间高效调度分发流量。 6)安狮系统支持多达32个节点的集群模式