Centos7.5下DPDK+Hyperscan环境的搭建

DPDK的安装

安装环境查看

先给出本人机器的Linux版本、Linux kernel以及kernel-devel信息。
首先通过lsb_release -a查看Linux版本信息,输出如下:

[root@hw054 kevin]# lsb_release -a
...
Distributor ID: CentOS
Description: CentOS release 7.5.1804 (Core)
Release: 7.5.1804
Codename: Core

然后同过uname -r查看Linux kernel信息,输出如下:

[root@hw054 kevin]# uname -r
3.10..0-123.el7.x86_64

最后再用yum info kernel-devel查看一下内核头文件信息

[root@hw054 kevin]# yum info kernel-devel
Available Packages
Name : kernel-devel
Version : 3.10.0
Release : 123.el7
...
Description : This package provides kernel headers and makefiles sufficient to build
modules against the kernel package.

安装指定版本kernel-devel和kernel-headers

[root@hw054 kevin]# uanme -a; rpm -qa kernel* | sort


image.png

如果你的内核版本和kernel-devel以及kernel-headers和内核版本不一致,就需要手动安装kernel-devel和kernel-headers。可以看到我的是一致的,手动安装时,如果安装的版本低于机器自带版本,需要先卸载,然后手动安装手动安装。

卸载kernel-devel和kernel-headers

[root@hw054 kevin]# yum remove kernel-devel-3.10.0-957.1.3.el7.x86_64(替换成你的机器上的版本)

安装kernel-devel和kernel-headers

[root@hw054 kevin]# yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
如果通过yum安装失败,就下载源码包安装。

下载及安装DPDK

下载源码和解压

[root@hw054 kevin]# wget http://fast.dpdk.org/rel/dpdk-18.02.2.tar.gz
[root@hw054 kevin]# tar -zxvf dpdk-18.02.2.tar.gz

编译和安装

[root@hw054 kevin]# cd dpdk-stable-18.02.2/usertools/
[root@hw054 kevin]# ./dpdk-setup.sh
首先选择14使用gcc编译安装,然后选择17插入UIO module,再选择21配置大页,最后是选择23绑定网卡。

Hyperscan的安装

Hyperscan需要C99和C++11编译器的支持,目前支持C99和C++11的编译器有,

GCC, v4.8.1或者更高的版本
Clang, v3.4或者更高的版本
Intel C++ compiler v15 或者更高的版本

安装Hyperscan的环境依赖包要求如下:

CMake //版本号大于等于2.8.11
Ragel //版本号6.9
Python //版本号2.7
Boost //版本号大于等于1.57,而且Boost不需要安装,只需要头文件
Pcap //版本号大于等于0.8

首先查看本机有没有安装相关的工具,下面是我的机器的情况

[root@hw054 kevin]# rpm -qa | grep cmake
cmake-2.8.12.2-4.el6.x86_64
[root@hw054 kevin]# rpm -qa | grep ragel
[root@hw054 kevin]# rpm -qa | grep pcap
libpcap-devel-1.4.0-4.20130826git2dbcaa1.el6.x86_64
说明我的机器上已经安装了CMake和pcap,但是没有安装ragel。

安装 gcc

[root@hw054 kevin]# yum install gcc

安装g++

[root@hw054 kevin]# yum -y install gcc-c++

安装CMake

[root@hw054 kevin]# yum -y install cmake

安装ragel

[root@hw054 kevin]# wget http://www.colm.net/files/ragel/ragel-6.9.tar.gz
[root@hw054 kevin]# tar -zxvf ragel-6.9.tar.gz
[root@hw054 kevin]# cd ragel-6.9
[root@hw054 kevin]# ./configure
[root@hw054 kevin]# make && make install

Centos一般是自带Python2.7的,如果不是,也可以自行下载源码安装;最后关于Boost要说明一下,只需要下载Boost的源码,但不需要安装,这个是官网给的说明,

[root@hw054 kevin]# wget http://downloads.sourceforge.net/project/boost/boost/1.60.0/boost_1_60_0.tar.gz
[root@hw054 kevin]# tar -zxvf boost_1_6-_0.tar.gz
[root@hw054 kevin]# ln -s /home/kevin/boost_1_60_0/boost /home/kevin/hyperscan-4.0.0/include/boost

注意:这里的boost_1_60_0最好为绝对路径,刚开始我用的是相对路径报错了。

安装Hyperscan

注意:这里的hs_build和hyperscan是在平级目录,hyperscan源码是从github上clone来的,算了,我还是把获取hyperscan源码的方法贴出来吧。

git clone http://www.github.com/intel/hyperscan.git

[root@hw054 kevin]# mkdir hs_build
[root@hw054 kevin]# cd hs_build
[root@hw054 hs_build]# cmake ../hyperscan
如果gcc版本小于4.8,在这里会报错,也就需要先升级然后再安装。我就不说具体怎么升级GCC了,这里甩一篇升级GCC的博客。
CentOS gcc升级4.8步骤
注意:千万不要以为升级完后再cmake ../hyperscan就会解决问题,没那么简单。
升级完后,相当于现在你的Linux环境下有两个版本的gcc/g++,一个是4.4.7版本,一个是4.8.1版本。如果你运行命令cmake ../hyperscan后还是出现上面的g++版本bug,出现这个bug的具体原因就不说了。这时需要考虑为cmake指定gcc编译器了,指定的方法呢有好几种,在这里介绍两种,有兴趣深入了解的可以看看这篇博客。
How to specify new GCC path for CMake
方法一:
[root@hw054 hs_build]# export C=/usr/local/bin/gcc
[root@hw054 hs_build]# export CXX=/usr/local/bin/g++

方法二:

[root@hw054 hs_build]# cmake -DCMAKE_C_COMPILER=/usr/local/bin/gcc -DCMAKE_CXX_COMPILER=/usr/local/bin/g++ ../hyperscan

最后再编译就行了

[root@hw054 hs_build]# make
[root@hw054 hs_build]# make install

到这里Hyperscan的安装就完成了,有可能有人会在上面make时遇到一些奇怪问题,比如error with no such instruction这类的指令不匹配问题,同样还是甩一篇博客吧,真有遇到问题可以参考参考。
hyperscan compile error with no such instruction

运行测试用例

还是在hs_build目录下运行下面的命令

[root@hw054 hs_build]# ./bin/unit-hyperscan

在编译hyperscan/examples/下的示例程序时,可能会遇到下面所示问题:

In function Benchmark::scanBlock(char const*, int):
(.text+0x141): undefined reference to hs_scan
......
(.text+0x2f7): undefined reference to hs_compile_muliti

这些错误告诉你找不到函数定义,我采用的解决办法(当然不一定是最优雅的)是将相关头文件放到/usr/include/目录下,是那些相关头文件呢,看下面的code:

[root@hw054 hs_build]# ls /usr/local/include/hs/
hs_common.h hs_compile.h hs.h hs_runtime.h
[root@hw054 hs_build]# cp /usr/local/include/hs/* /usr/include/

好后再次编译示例程序应该就没有问题了。
如果make告诉你找不到动态库文件,错误如下

/usr/bin/ld: cannot find -lhs
那可能是动态库文件没有生成,或者路径不对,先找一下libhs.so文件有没有,如果没有就再找一下libhs.a文件,在makefile中指定其中一个就行了,比如指定libhs.a文件,具体路径根据自己机器而定。
...
LDLIBS += -L/user/local/lib64

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 1. 简介 本文档包含DPDK软件安装和配置的相关说明。旨在帮助用户快速启动和运行软件。文档主要描述了在Linux...
    半天妖阅读 17,777评论 0 22
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,754评论 0 5
  • http://blog.csdn.net/mathewsking/article/details/8211273 ...
    liuboxx1阅读 5,979评论 1 1
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,016评论 2 34
  • 我们说的Linux其实指的就是 内核(kernel)而已。这个内核控制你主机的所有硬件并提供系统所有的功能,所以它...
    Zhang21阅读 7,275评论 0 18