DPDK 报文调度与保序终极解决方案 EventDev 简介

1、背景介绍 网络报文的分发以及保序一直以来是让人头痛的问题, 为了完整的解释Event Dev的背景,我们可以从两个基本概念的定义开始: 报文分发是指针对网络通信报文的某种特征(例如 5 tuples)对网络报文进行分类以及对这个分类进行对应的特定处理。这种分类通常称为是flow, 例如 src ip, src port, dest ip, dest port, 一致的报文被认为是一个flow, 还可以更进一步提取特征来加强判断同一flow的条件, 例如协议类型, tunnel id 等等。 ... 继续阅读

Hyperscan中的 NFA模型演化

我们知道,正则语言等价于NFA(Nondeterministic Finite Automata,非确定有限状态自动机)。Hyperscan作为一款正则表达式匹配引擎,其核心部分是对NFA的构造和处理,编译期将正则表达式转化为与其等价的NFA图并构造NFA引擎,运行期根据输入语料运行NFA引擎来确定匹配位置。 NFA构造方法 NFA中一个状态在遇到相同输入时可能跳转至多个状态。将正则表达式转化为NFA图,常见的有两种构造方法:Thompson构造法和Glushkov构造法。 Thompson构造... 继续阅读

DPDK Release 17.08

17.08新功能 1. x86 ISA的最低版本要求增加到SSE4.2 从17.08开始,DPDK要求在x86上运行的最低版本是SSE4.2。旧版本的最低要求是SSE3。 2. 增加了Service Core功能 EAL新增的Service Core功能允许DPDK在没有应用程序手动运行的情况下在lcores上运行诸如软件PMD之类的服务。 Service core基础架构使得DPDK在同一个 service lcore上运行多个服务时保持灵活性,并为应用程序提供了强大的API来配置从servi... 继续阅读

SSD性能测试第一神器:FIO

对于SSD性能测试来说,最好的工具莫过于FIO了。 上面这个可爱的小伙子名字叫Jens Axboe,他是丹麦哥本哈根大学计算机系没毕业的学生,他还有一个有名的同乡叫Linus,没想到老乡后来也成了他的领导。Jens今年(2017年)40岁,16岁开始就接触Linux,后来也成了Linux开发者,现在是Linux Kernel大拿了,负责块设备层的维护。这个块设备层就是跟我们SSD关系最紧密的层级,联系了上层文件系统和下层设备驱动程序。他开发了不少有用的程序,比如Linux IO Schedule... 继续阅读

Hsbench的Hyperscan性能分析

Hyperscan是Intel的一个正则表达式匹配引擎,其重点是高性能,大规模匹配和流模式操作。本文主要介绍Hyperscan的性能测试工具,并包含了可以在您自己的机器上重现的一些测试用例。 简介 Hyperscan 4.4及更高版本包含了标准的性能测试工具hsbench,旨在提供一种简便的方法来测量在特定的规则集和语料库下的Hyperscan性能。 Hsbench工具已在Hyperscan Developer Reference 中有所介绍。本文旨在阐明如何使用Hsbench在一系列不同的应用... 继续阅读

VM高性能网络I/O:DPDK +SR-IOV配置

配置过程(Ubuntu 14.04) 1、给VM所在的Host打开iommu 以及 sriov,以Intel CPU为例(AMD CPU iommu打开方式略有不同) [crayon-5c3f9bd813028134526842/] 重启之后可以查看到所有的PF和VF,表示配置成功 [crayon-5c3f9bd81302f240254024/] 结果如下: 使用ip link show 命令也能够看到每个物理interface下对应的VFs 2、VF能够收发包的前提是相应的PF必须处于UP的状... 继续阅读

CPU到底在忙啥?CPU利用率的正确计算方法

我们平时使用的CPU利用率方法是极具误导性的,并且一年更甚一年。那么什么是CPU利用率?是你的CPU到底有多忙,是像“% CPU”这样到处在用的指标所显示的那样吗? 在top命令里,你看到90%的CPU利用率是这样: 然而它真正想表达的是这个意思: Stall(这里译作“怠速”)是说这个处理器没有在跑指令,比如在等待内存I/O的时候。我上图所画的比例(“忙”与“怠速”之间)是我在真实生产环境中遇到的,并且你的CPU也很可能是处于“怠速”状态。 这些对你有什么意义呢?理解CPU怠速多少,会直接影响... 继续阅读

静态PCPU变量

内核中通常会定义很多的pcpu变量,这样有几个好处: 增加数据访问的并发量 减少数据访问的时延 从定义上就可以看出pcpu变量就是每个cpu都有某个变量的副本,各自访问各自的。那在实现上是怎么做的呢?我们今天就来看一下。 如何定义 我们先来看静态pcpu变量是如何定义的。 通常我们定义一个pcpu变量使用这样的语句。 [crayon-5c3f9bd813895408793824/] 这样就定义了一个int类型,名字为numa_node的变量。接下来就深入研究一下。 DEFINE_PER_CPU ... 继续阅读

网闸的技术要求

安全网闸技术是模拟人工拷盘的工作模式,通过电子开关的快速切换实现两个不同网段的数据交换的物理隔离安全技术。安全网闸技术在安全技术领域源于被称之为GAP,又称为Air Gap的安全技术,它本意是指由空气形成的用于隔离的缝隙。在网络安全技术中,主要指通过专用的硬件设备在物理不连通的情况下,实现两个独立网络之间的数据安全交换和资源共享。 它由三个组件构成:A网处理机、B网处理机和GAP开关设备。我们可以很清楚地看到连接两个网络的GAP设备不能同时连接到相互独立的A网和B网中,即GAP在某一时刻只与其中... 继续阅读

Hyperscan在Suricata中的应用

Suricata简介 Hyperscan作为一款高性能的正则表达式匹配库,极适用于部署在IDS/IPS等网络解决方案中。 Suricata(https://suricata-ids.org)是一款免费、开源、成熟、快速、健壮的网络威胁检测引擎,该引擎能够进行实时入侵检测(IDS),嵌入式入侵防御(IPS),网络安全监控(NSM)和离线pcap处理。Suricata与其竞争对手Snort类似,有着相似的设计和规则样式,同样涉及到大量纯字符串及正则表达式匹配。本文重点介绍Hyperscan在Suri... 继续阅读