首页 > 技术文章 > netmap -- ixgbe

yongren1zu 2017-06-02 21:17 原文

利用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网卡不可以。

推荐阅读