netmap配置
1.配置流程
环境:centos 7.2.1511,内核版本3.10.0-327.el7.x86_64
[1]下载内核源码,https://buildlogs.cdn.centos.org/c7.1511.00/kernel/20151119220809/3.10.0-327.el7.x86_64/kernel-devel-3.10.0-327.el7.x86_64.rpm
1)cp kernel-devel-3.10.0-327.el7.x86_64.rpm /usr/local/src
2)cd /usr/local/src/
3)rpm -ivh kernel-devel-3.10.0-327.el7.x86_64.rpm //此时内核源码就安装到了/usr/src/kernels/3.10.0-327.el7.x86_64
[2]下载netmap源码:https://github.com/luigirizzo/netmap
1)cp netmap-master /usr/local/src
2)cd /usr/local/src/netmap-master/LINUX
3)./configure --drivers=igb --kernel-sources=/usr/src/kernels/3.10.0-327.el7.x86_64 //表示只编译igb驱动
4)make
5)make install //此时在当前目录会生成netmap.ko和igb/igb.ko
[3]加载驱动(在当前LINUX目录下执行)
1)rmmod igb //卸载当前的igb驱动
2)insmod netmap.ko //加载netmap.ko驱动
3)insmod igb/igb.ko //加载netmap的igb驱动,这个igb驱动和之前的igb驱动是不一样的,另外如果当前管理口网卡用的就是igb驱动,执行第一步后会连不上设备,所以可以把这三步写到脚本里面执行。
2.测试代码
下面的代码从网卡eth1收包:
#include <stdio.h>
#include <poll.h> #define NETMAP_WITH_LIBS
#include <net/netmap_user.h> unsigned long pps = ; static void receive_packets(struct netmap_ring *ring)
{
int i;
char *buf; while (!nm_ring_empty(ring)) {
i = ring->cur;
buf = NETMAP_BUF(ring, ring->slot[i].buf_idx);
pps++; ring->head = ring->cur = nm_ring_next(ring, i);
}
} int main(void)
{
struct nm_desc *d;
struct pollfd fds;
struct netmap_ring *ring;
int i; d = nm_open("netmap:eth1", NULL, , ); fds.fd = d->fd;
fds.events = POLLIN; while () {
if (poll(&fds, , ) < ) {
perror("poll()");
exit();
} for (i = d->first_rx_ring; i <= d->last_rx_ring; i++) {
ring = NETMAP_RXRING(d->nifp, i);
receive_packets(ring);
}
} return ;
}
3.说明
[1]安装netmap的igb驱动后,所有当前使用igb的网卡都支持使用netmap处理报文。
[2]如果不调用nm_open()函数,所有网卡还是正常进内核处理。对一个网卡调用了nm_open()函数之后,这个网卡的所有包就不会进内核处理,所以此时需要在程序中处理这些报文。
netmap配置的更多相关文章
- 009.CentOS 6.7安装运行netmap
一.netmap简介: 1.netmap是一个高性能收发原始数据包的框架,由Luigi Rizzo等人开发完成,其包含了内核模块以及用户态库函数.其目标是,不修改现有操作系统软件以及不需要特殊硬件支持 ...
- [DPI][suricata] suricata 配置使用
前文: [DPI] suricata-4.0.3 安装部署 至此, 我们已经拥有了suricata可以运行的环境了. 接下来,我们来研究一下它的功能, 首先,分析一下配置文件: /suricata/e ...
- Linux内核配置选项
http://blog.csdn.net/wdsfup/article/details/52302142 http://www.manew.com/blog-166674-12962.html Gen ...
- 深入linux kernel内核配置选项
============================================================================== 深入linux kernel内核配置选项 ...
- 配置android sdk 环境
1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/
- Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记
以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...
- react-router 组件式配置与对象式配置小区别
1. react-router 对象式配置 和 组件式配置 组件式配置(Redirect) ----对应---- 对象式配置(onEnter钩子) IndexRedirect -----对应-- ...
- 总结:Mac前端开发环境的搭建(配置)
新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...
- Android Studio 多个编译环境配置 多渠道打包 APK输出配置
看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...
随机推荐
- 团队合作one
一.项目介绍 为生活在长大的学生提供方快捷的生活服务,通过帖子发现自己志同道合的朋友,记录自己在长大点滴.本项目的意义在于锻炼团队的scrum能力,加强团队合作能力.确定本项目采用的技术方向:本项目整 ...
- PowerDesigner生成PowerBuilder扩展属性~
PowerDesigner版本:11.0.0.1363 步骤: 一.打开PowerDesigner新建模型->物理数据模型(Physical Data Model). 二.在常规选项 DBM ...
- 多个DispatcherServlet有什么用处.md
有看到一些应用在 web.xml 文件中配置了多个 DispatcherServlet,例如: <servlet> <servlet-name>en</servle ...
- Visual C++ 6.0中if..else..的简单用法和基本格式
# include <stdio.h> int main (void) { float score; printf("请输入您的考试成绩:"); scanf(" ...
- UNION ALL 心得
TABLE_A 表 UNION ALL TABLE_B 表 UNION 或者 UNION ALL 之后 1.字段长度 必须相同 (如A 10 个列,则B 也要10个列) 2.查询条件也要相同 (A ...
- 小妖精的完美游戏教室——人工智能,A*算法,导航网络篇
//================================================================//// Copyright (C) 2017 Team Saluk ...
- MyEclipse2017创建Spring项目
1.创建一个Web Project 2.右击项目-->Properties 3.搜索Spring -->Peoject Facets-->在右边找到Spring,打勾并保存 4.测试 ...
- Javascript 2.9
对象:属性和方法属性:隶属于某个特定对象的变量方法:只有某个特定对象才能调用的函数 对象和方法都用"."来访问: Object.property Object.method() 由 ...
- 523. Continuous Subarray Sum
class Solution { public: bool checkSubarraySum(vector<int>& nums, int k) { unordered_map&l ...
- jenkins如何获取gitlab上的代码
如何安装jenkins和gitlab我就不重复了,请自行搜索我的博客 那么,jenkins如何获取gitlab上的代码呢? 具体配置步骤如下 1.在gitlab上配置个人访问令牌.注意事项:姓名那里需 ...