009.CentOS 6.7安装运行netmap

一.netmap简介:

1.netmap是一个高性能收发原始数据包的框架,由Luigi Rizzo等人开发完成,其包含了内核模块以及用户态库函数。其目标是,不修改现有操作系统软件以及不需要特殊硬件支持,实现用户态和网卡之间数据包的高性能传递。(照搬的!)

2.netmap通过自带的网卡驱动直接接管网卡,运行时申请一块固定的内存池,用于接受网卡上到来的数据包以及需要发送给网卡的数据包。

3.netmap目前只支持几种网卡的驱动,官网上介绍的是Intel ixgbe (10G),ixl (10/40G), e1000/e1000e/igb (1G), Realtek 8169 (1G) and Nvidia (1G).

二.安装说明

    1.使用ubuntu安装netmap,只需要内核源代码,不需要编译内核。而centos上就需要编译并使用新内核了(若有不编译内核的方法,希望指正!)。

2.netmap上支持的网卡驱动有限,所以本次实验使用实在虚拟机(vmware)下面操作,虚拟的e1000网卡。

3.所有操作均在root权限下进行,没有管那些权限问题啦!

三.安装新的内核

centos升级内核的教程网上很多,但对于netmap而言,需要选取正确的linux内核源代码,本次安装使用的是linux-4.1.14.tar.xz的linux内核(使用3.10.94版本的内核编译过一次,不能运行netmap。)Linux内核下载地址:https://www.kernel.org/

本次实验参考的内核升级教程:http://www.linuxidc.com/Linux/2014-01/95511.htm

1.1 下载新的内核,并解压:

[[email protected] ~]# cd /usr/local/src
[[email protected] src]# wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.1.14.tar.xz
[[email protected] src]# tar -Jxvf linux-4.1.14.tar.xz
[[email protected] src]# mv linux-4.1.14 /usr/src/
[[email protected] src]# cd /usr/src/

1.2 更新当前系统:

[[email protected] src]# yum update
[[email protected] src]# yum upgrade

1.3 安装必要软件:

[[email protected] src]# yum groupinstall "Development Tools" # 一口气安装编译时所需的一切工具
[[email protected] src]# yum install ncurses-devel            #必须这样才能让 make *config 这个指令正确地执行。
[[email protected] src]# yum install qt-devel                 #如果你没有 X 环境,这一条可以不用
[[email protected] src]# yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel #创建 CentOS-6 内核时需要它们

2.1 查看当前系统的内核:

[[email protected] src]# uname -r
2.6.32-573.el6.i686

2.2 将当前系统的配置文件拷贝到当前目录

[[email protected] src]# cd linux-4.1.14/
[[email protected] linux-4.1.14]# cp /boot/config-2.6.32-573.el6.i686 .config

2.3 使用旧内核配置,并自动接受每个新增选项的默认设置

[[email protected] linux-4.1.14]# sh -c ‘yes "" | make oldconfig‘

make oldconfig会读取当前目录下的.config文件,在.config文件里没有找到的选项则提示用户填写,然后备份.config文件为.config.old,并生成新的.config文件

3.编译

[[email protected] linux-4.1.14]# make -j4 bzImage              #生成内核文件,大概需要十几分钟
[[email protected] linux-4.1.14]# make -j4 modules              #编译模块,大概需要半小时
[[email protected] linux-4.1.14]# make -j4 modules_install      #编译安装模块,比较快

要严格按照这个先后顺序进行编译,不能一起执行。

-j后面的数字是线程数,用于加快编译速度,一般的经验是,有多少G内存,就填写那个数字,例如有8G内存,则为-j8

4.安装

[[email protected] linux-4.1.14]# make install

如果出现了 ERROR: modinfo: could not find module xxx,数量少的话,可以忽略。

5.修改grub引导顺序,让新安装的内核作为默认内核

[[email protected] linux-4.1.14]# vim /boot/grub/grub.conf

将default=1配置行改为default=0(数一下刚刚新安装的内核在哪个位置,从0开始,然后设置default为那个数字,一般新安装的内核在第一个位置,所以设置default=0。)

6.关机

四.修改虚拟CentOS的网卡类型

找到虚拟机存储路径,找到.vmx为后缀的配置文件(本人使用的vmware虚拟机),使用编辑工具打开,添加或修改如下配置(位置无所谓):

ethernet0.virtualDev = "e1000"

注意:改的是eth0的网卡配置

五.使用netmap收发数据包

1.开启虚拟机,查看当前内核版本:

[[email protected] src]# uname -r
4.1.14

2.查看当前网卡类型:

[[email protected] ~]# lsmod |grep e1000
e1000                 118376  0 

3.下载netmap

[[email protected] ~]# git clone https://github.com/luigirizzo/netmap.git

netmap官网:http://info.iet.unipi.it/~luigi/netmap/

netmap的githab网址:https://github.com/luigirizzo/netmap

netmap手册:man /root/netmap/share/man/man4/netmap.4

4.编译netmap,生成网卡驱动程序以及测试程序

[[email protected] ~]# cd netmap/LINUX/
[[email protected] LINUX]# make KSRC=/usr/src/linux-4.1.14/
[[email protected] LINUX]# cd build-apps/
[[email protected] build-apps]# vim Makefile 

将Mackfile中"CFLAGS += -Werror -Wall -Wunused-function"配置行的-Werror参数删掉,不然生成测试程序会报错,保存退出!

[[email protected] build-apps]# cd ..
[[email protected] LINUX]# make KSRC=/usr/src/linux-4.1.14/ apps

没报错的话,生成的测试接收包的可执行文件都在build-apps目录下面。

5.替换网卡驱动(写成了一个小脚本,方便每次替换)

[[email protected] LINUX]# cd
[[email protected] ~]# cat mount_netmap.sh
#!/bin/bash
rmmod e1000
insmod /root/netmap/LINUX/netmap.ko
insmod /root/netmap/LINUX/e1000/e1000.ko
lsmod |grep e1000

6.运行测试程序

[[email protected] ~]# cd netmap/LINUX/build-apps/
[[email protected] build-apps]# ./pkt-gen -i eth0 -f tx
843.803242 main [1930] interface is eth0
843.806747 main [2050] running on 1 cpus (have 2)
843.808433 extract_ip_range [367] range is 10.0.0.1:0 to 10.0.0.1:0
843.808493 extract_ip_range [367] range is 10.1.0.1:0 to 10.1.0.1:0
843.813622 main [2148] mapped 334980KB at 0xa3080000
Sending on netmap:eth0: 1 queues, 1 threads and 1 cpus.
10.0.0.1 -> 10.1.0.1 (00:00:00:00:00:00 -> ff:ff:ff:ff:ff:ff)
843.813828 main [2233] Sending 512 packets every  0.000000000 s
843.813851 main [2235] Wait 2 secs for phy reset
845.814327 main [2237] Ready...
845.816526 sender_body [1211] start, fd 3 main_fd 3
846.816691 main_thread [1720] 69.345 Kpps (69.424 Kpkts 33.324 Mbps in 1001145 usec) 14.98 avg_batch 0 min_space
847.268327 sender_body [1293] drop copy
847.817915 main_thread [1720] 69.176 Kpps (69.261 Kpkts 33.245 Mbps in 1001229 usec) 14.98 avg_batch 99999 min_space
848.819100 main_thread [1720] 65.934 Kpps (66.012 Kpkts 31.686 Mbps in 1001183 usec) 14.99 avg_batch 99999 min_space
849.820296 main_thread [1720] 67.257 Kpps (67.337 Kpkts 32.322 Mbps in 1001192 usec) 14.99 avg_batch 99999 min_space
850.821500 main_thread [1720] 67.220 Kpps (67.301 Kpkts 32.304 Mbps in 1001207 usec) 14.98 avg_batch 99999 min_space
851.822731 main_thread [1720] 68.520 Kpps (68.602 Kpkts 32.929 Mbps in 1001202 usec) 14.99 avg_batch 99999 min_space
852.823912 main_thread [1720] 65.321 Kpps (65.400 Kpkts 31.392 Mbps in 1001217 usec) 14.99 avg_batch 99999 min_space
853.825202 main_thread [1720] 61.373 Kpps (61.452 Kpkts 29.497 Mbps in 1001291 usec) 14.99 avg_batch 99999 min_space
^C854.321161 sigint_h [404] received control-C on thread 0xb77a2b30
854.321204 main_thread [1720] 60.650 Kpps (30.082 Kpkts 14.439 Mbps in 495996 usec) 14.98 avg_batch 99999 min_space
854.321370 sender_body [1326] flush tail 6 head 6 on thread 0xa307fb70
854.321472 sender_body [1334] pending tx tail 6 head 6 on ring 0
854.321849 sender_body [1334] pending tx tail 6 head 6 on ring 0
855.322625 main_thread [1720] 15.000 pps (15.000 pkts 7.200 Kbps in 1001404 usec) 15.00 avg_batch 99999 min_space
Sent 564886 packets 33893160 bytes 37695 events 60 bytes each in 8.50 seconds.
Speed: 66.419 Kpps Bandwidth: 31.881 Mbps (raw 44.634 Mbps). Average batch: 14.99 pkts
[[email protected] build-apps]# 

六,到此,netmap安装完成。

原文地址:http://www.cnblogs.com/ruo-yu/p/5083290.html

时间: 2024-08-03 17:54:03

009.CentOS 6.7安装运行netmap的相关文章

CentOS 7 yum安装Zabbix

CentOS 7 yum安装Zabbix 一.Zabbix简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题. 下面是Centos7上yum安装zabbix的步骤. 二.Zabbix安装 本文档在同一台机器上安装了zabbix-server 和zabbix-agent 自己监控自己. 1.配置LAMP 参照下面的链接 Centos

CentOS 6.5 安装部署iSCSi共享存储

 CentOS 6.5 安装部署iSCSi共享存储 一.前言 1.什么是iSCSI? iSCSI技术是一种由IBM公司研究开发的,是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择.iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换资料. iSCSI:Internet 小型计算机系统接口 (iSCSI:

centos的软件安装方法rpm和yum

centos的软件安装大致可以分为两种类型: [centos]rpm文件安装,使用rpm指令  类似[ubuntu]deb文件安装,使用dpkg指令 [centos]yum安装   类似[ubuntu]apt-get安装 rpm命令 (一)查询系统装已经安装的软件信息 对于一个rpm包来说,都是有"-"和"."构成的,基本上有以下几部分组成: * 包名 * 版本信息 * 发布版本号 * 运行平台,当出现noarch,代表的是软件可以平台兼容 1)查询系统中已经安装的

在CentOS 7中安装nginx服务器

简要地介绍一下,如何在CentOS 7中安装nginx服务器  下载对应当前系统版本的nginx包(package) # wget  http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm  建立nginx的yum仓库 # rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm  下载并安装nginx # yum inst

CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL)

CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL) 一.准备篇: 1 /etc/init.d/iptables stop #关闭防火墙 2 关闭SELINUX 3 vi /etc/selinux/config 4 #SELINUX=enforcing #注释掉 5 #SELINUXTYPE=targeted #注释掉 6 SELINUX=disabled #增加 7 :wq 8 shutdown -r now #重启系统 二.安装篇 1.安装nginx 1 yum re

centos单用户 救援 运行级别 第二节课

centos单用户 救援 运行级别 第二节课 yum工具在minimal安装级别就已经安装 yum list:列出远程服务器端的所有的包的列表 安装桌面套件,安装图形化桌面 yum groupinstall -y "desktop"yum groupinstall -y "X window system" 临时显示英文 LANG=en

CentOS 7.0安装配置Vsftp服务器步骤详解

安装Vsftp讲过最多的就是在centos6.x版本中了,这里小编看到有朋友写了一篇非常不错的CentOS 7.0安装配置Vsftp服务器教程,下面整理分享给各位. 一.配置防火墙,开启FTP服务器需要的端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止

CentOS 7.0安装配置LAMP服务器(Apache+PHP+MariaDB)

原文 CentOS 7.0安装配置LAMP服务器(Apache+PHP+MariaDB) 一.配置防火墙,开启80端口.3306端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 2.安装iptables防火墙 yum insta

centos 5.5 安装 lnmp

centos5.5 安装 lnmp,一定要事先选好版本安装,建议自己下载安装. 1.相关文件目录: nginx: /www/nginx/下面mysql: /usr/share/mysql /usr/bin/mysql (安装时没有配置路径)php : /usr/local/php53 2 A) nginx 启动:/www/nginx/sbin/nginx -c /www/nginx/conf/nginx.conf查看: ps -ef | grep nginx停止:强制停止所有Nginx进程 ps