1. netmap简介
Netmap 是一个高性能收发原始数据包的框架,由 Luigi Rizzo 等人开发完成,其包含了内核模块以及用户态库函数。其目标是,不修改现有操作系统软件以及不需要特殊硬件支持,实现用户态和网卡之间数据包的高性能传递。其原理图如下,数据包不经过操作系统内核进行处理,用户空间程序收发数据包时,直接与网卡进行通信。
2. 准备工作
更新源
sudo apt-get update
下载netmap
git clone https://github.com/luigirizzo/netmap.git
这里我使用浏览器下载代码复制进虚拟机的,但发现Github下载很慢,这里教大家一个方法快速下载代码。后边一些包下载的慢也可以用这个方法。
首先找一个域名查询网站,我随便找了一个https://site.ip138.com/。之后查询github.com的ip。
用记事本打开这个文件C:\Windows\System32\drivers\etc\hosts
将刚才查到的ip和网站复制进去,中间一个空格。之后再进浏览器就发现可以下载了。
下载完代码如下图:
3 编译
编译文件
./configure && make && make install
之后就有很多报错,主要意思就是文件夹缺少很多库文件。
需要将如图的库文件下载放到netmap-master/LINUX/ext-drivers文件夹下面,前边具体路径根据自己的加上,需要下载如图这些文件。
这里需要知道自己系统的网卡是哪个,我的为e1000.
查看方式:
netmap支持的网卡型号:
自己系统网卡:
lspci -v
之后根据网卡型号和下边网址下载包,如果出现下载不动的情况,也可以通过上面的方法进行操作:
http://content.mellanox.com/ofed/MLNX_EN-5.3-1.0.0.1/mlnx-en-5.3-1.0.0.1-ubuntu18.04-x86_64.tgz
https://sourceforge.net/projects/e1000/files/i40e%20stable/2.4.6/i40e-2.4.6.tar.gz
https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/4.3.2/ixgbevf-4.3.2.tar.gz
https://sourceforge.net/projects/e1000/files/ixgbe%20stable/5.3.8/ixgbe-5.3.8.tar.gz
https://sourceforge.net/projects/e1000/files/igb%20stable/5.3.5.20/igb-5.3.5.20.tar.gz
https://sourceforge.net/projects/e1000/files/e1000e%20stable/3.4.0.2/e1000e-3.4.0.2.tar.gz
https://raw.githubusercontent.com/torvalds/linux/v4.9/drivers/net/virtio_net.c
之后如果都下载了应该就没啥问题了。如果ifconfig发现网卡不是eth0,则需要修改网卡名,这里就不赘述了。
运行
查看是否安装成功,ls -l /dev/netmap
加载ko
insmod netmap.ko
查看
lsmod | grep netmap
恢复
rmmod netmap.ko