Ubuntu虚拟机编译netmap环境搭建

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。
ip
用记事本打开这个文件C:\Windows\System32\drivers\etc\hosts
2将刚才查到的ip和网站复制进去,中间一个空格。之后再进浏览器就发现可以下载了。
下载完代码如下图:
34

3 编译

编译文件

./configure && make && make install

之后就有很多报错,主要意思就是文件夹缺少很多库文件。
5需要将如图的库文件下载放到netmap-master/LINUX/ext-drivers文件夹下面,前边具体路径根据自己的加上,需要下载如图这些文件。
6这里需要知道自己系统的网卡是哪个,我的为e1000.
查看方式:
netmap支持的网卡型号:
f自己系统网卡:

lspci -v

h
之后根据网卡型号和下边网址下载包,如果出现下载不动的情况,也可以通过上面的方法进行操作:

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
h加载ko

insmod netmap.ko

查看

lsmod | grep netmap

恢复

rmmod netmap.ko
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
netmap是一个基于零拷贝思想的高速网络I/O架构,它通过在网卡运行在netmap模式下与主机协议栈断开连接,并创建一个netmap环来实现高效的数据包处理。\[2\]netmap的架构包括了网卡环、netmap环和用于与主机协议栈交互的环。网卡环是网卡直接将数据包存入的缓存,而netmap环是应用程序可以通过调用netmap API访问的缓存。这些缓存位于共享空间,应用程序可以直接访问数据包内容,实现了网络数据包的零拷贝。\[2\] netmap的数据结构包括了netmap_if、nmreq、netmap_ring等。netmap_if是一个结构体,用于表示一个netmap接口,其中包含了与接口相关的信息。nmreq是一个结构体,用于向内核注册一个netmap接口。netmap_ring是一个结构体,用于表示一个netmap环,其中包含了环的相关信息,如可用的数据包数量、当前处理的数据包索引等。\[3\] 在使用netmap时,可以通过打开字符设备"/dev/netmap"来获取一个文件描述符,然后使用ioctl函数来注册网卡。接下来,可以使用mmap函数将共享内存映射到用户空间,从而可以访问netmap环中的数据包内容。最后,可以使用poll函数来等待数据包的到达,并通过遍历netmap环中的数据包来处理数据。\[3\] 需要注意的是,上述提供的代码示例是一个官方的例子,可能已经过时,不能直接使用。但是它可以大致说明netmap的使用过程。\[3\] #### 引用[.reference_title] - *1* *3* [netmap 介绍](https://blog.csdn.net/fengfengdiandia/article/details/52869290)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Netmap分析(一)](https://blog.csdn.net/superbfly/article/details/51224920)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值