netmap

利用netmap抓ixgbe网卡上的以太网帧,跟e1000e网卡有区别。

使用e1000、e1000e网卡发以太网帧只要以太网帧的格式正确就可以了。只要格式和 目的MAC、源MAC地址正确,网卡就可以收到以太网帧,类型可以自定义,也可以使用已经定义的类型 0x0800(IP报文),0x0806(ARP报文)。

以太网帧格式:

6字节         6字节      2字节    46-1500字节   4字节
+-----------+-----------+-------+--------------+-------+
|  目的MAC  |   源MAC   |  类型  |      数据        |  FCS  |
+-----------+-----------+-------+--------------+-------+

但是上面说的这些放到ixgbe网卡上就不适用了。使用e1000e网卡测试的程序用的类型是自己随便写的 0x0102,根据以太网类型对照表来看,对应的协议是实验,e1000e网卡是可以收到以太网帧的,但是向ixgbe网卡发送,就收不到。刚开始猜想是不是ixgbe网卡坏掉了,后来用udp测试程序收发数据包,ixgbe网卡可以收到udp数据包,那就猜想是不是ixgbe网卡对以太网帧的类型会有过滤,把类型改成 0x0806后,ixgbe网卡确实可以收到了。

跟e1000e网卡还有不同的就是,长度接近1500字节的以太网帧,e1000e网卡是可以接收的,但是ixgbe网卡不可以。

时间: 2024-10-28 14:53:09

netmap的相关文章

009.CentOS 6.7安装运行netmap

一.netmap简介: 1.netmap是一个高性能收发原始数据包的框架,由Luigi Rizzo等人开发完成,其包含了内核模块以及用户态库函数.其目标是,不修改现有操作系统软件以及不需要特殊硬件支持,实现用户态和网卡之间数据包的高性能传递.(照搬的!) 2.netmap通过自带的网卡驱动直接接管网卡,运行时申请一块固定的内存池,用于接受网卡上到来的数据包以及需要发送给网卡的数据包. 3.netmap目前只支持几种网卡的驱动,官网上介绍的是Intel ixgbe (10G),ixl (10/40

010 使用netmap函数接管网卡,接收数据包,回应ARP请求

一.本文目的: 上一节中,我们已经在CentOS 6.7 上安装好了netmap,也能接收和发送包了,这节我们来调用netmap中的API,接管网卡,对网卡上收到的数据包做分析,并回应ARP请求. 二.netmap API简要介绍: 1.netmap API 主要包含在两个头文件中:netmap.h和netmap_user.h.在netmap/sys/net/目录下,其中netmap_user.h调用netmap.h. 2.netmap API一共七八个函数调用:nm_open()生成文件描述符

012.对netmap API的解读

一.简要说明: 1.netmap API主要为两个头文件netmap.h 和netmap_user.h ,当解压下载好的netmap程序后,在./netmap/sys/net/目录下,本文主要对这两个头文件进行分析. 2.我们从netmap_user.h头文件开始看起. 二.likely()和unlikely() 这两个宏定义是对编译器做优化的,并不会对变量做什么改变.后面看到这两个宏的调用自动忽略就好了. #ifndef likely #define likely(x) __builtin_e

Netmap to VALE—— 从高性能网络框架到高性能虚拟网络交换机

我在上一篇文章也提到过,对于全虚拟化和半虚拟化,需要分配给虚拟机一个虚拟网络接口,这些就需要一个虚拟交换机vswitch(可以和hypervisor一同使用),从而将虚拟网络接口的数据包从物理接口转发出去.但是在复杂的系统中,这个虚拟交换机的性能往往并不好.开源项目netmap[1]做了一个高性能网络框架,并且同样使用这个原理完成了高性能虚拟网络交换机vale的设计[2],在多种场景下Vale测量的性能[3]也非常好.  note:由于项目需要,我常常思考一个高性能的虚拟交换机应该怎么做.从ne

Linux下针对路由功能配置iptables的方法详解

作为公司上网的路由器需要实现的功能有nat地址转换.dhcp.dns缓存.流量控制.应用程序控制,nat地址转换通过iptables可以直 接实现,dhcp服务需要安装dhcpd,dns缓存功能需要使用bind,流量控制可以使用tc,应用程序控制:例如对qq的封锁可以使用 netfilter-layer7-v2.22+17-protocols-2009-05-28.tar.gz来实现 1.网络规划 操作系统是centos5.8 2.安装dhcpd yum install dhcp-3.0.5-3

iptables之layer7扩展

L7-filter:    提供了更多的netfilter模块,可以基于应用层为iptables提供更多功能.类似的还有ipp2p. 注意:软件官网上表明支持的最新内核版本为2.6.x,已经好久没有更新了.3.x的内核未测试. 需要软件包:        kernel-xxx.tar.gz 内核源码包        iptables-xxx.tar.bz2 iptables源码包        netfilter-layer7-xxx.tar.gz l7源码包        l7-protoco

如何实现内核旁路(Kernel bypass)?

转到 :http://blog.jobbole.com/94976/ 在前两篇文章中,我们讨论了<如何生成每秒百万级别的HTTP 请求?> 以及 如何减少往返时间 .我们在 Linux 上做试验,因为它是一个性能非常好的通用操作系统. 不幸的是,对于一些更加专业的工作,Vanilla Linux(译注:Linux 的内核版本,代号“香草”) 内核的网络速度是不够的.举个例子,在 CloudFlare,我们持续地处理洪水般的数据包. Vanilla Linux 处理速度仅能达到约 1M pps

iptables学习笔记之编译内核和iptables及安装l7proto

            编译内核和iptables及安装l7proto 一.环境介绍 操作系统:Redhat5.8_64bit 需要软件包: linux-2.6.28.10.tar.gz netfilter-layer7-v2.22.tar.gz l7-protocols-2009-05-28.tar.gz iptables-1.4.6.tar.bz2 安装步骤: 1).给内核打补丁,并重新编译内核 2).给iptables源码打补丁,并重新编译iptables 3).安装l7proto 1.给

(转)千万级并发实现的秘密:内核不是解决方案,而是问题所在!

http://www.csdn.net/article/2013-05-16/2815317-The-Secret-to-10M-Concurrent-Connections 摘要:C10K问题让我们意识到:当并发连接达到10K时,选择不同的解决方案,笔记本性能可能会超过16核服务器.对于C10K问题,我们或绕过,或克服:然而随着并发逐渐增多,在这个后10K的时代里,你是否有想过如何去克服C10M. 既然我们已经解决了 C10K并发连接问题,应该如何提高水平支持千万级并发连接?你可能会说不可能.