LS1046A平台 网卡混杂模式,无法收到DMAC不是自己的包
1、问题现象
一般来说,网卡只会接收目的地址是自身的数据包,丢弃其它目的的数据包,但如果网卡开启了混杂模式,该网卡会接收所有来到该网卡的数据包。这也是tcpdump 等一些抓包工具的原理。最近一个客户在使用网卡时,开启了混杂模式,当网卡收到数据包后,并没有被内核统计计数,cat /proc/net/dev 看不到 rx packets 有增加。
在网卡对端,使用 tcpreplay 发包:
# tcpreplay -i eth1 -K -M 100 -l 0 udp.pcap
此时看不到 RX packet 一直增加,说明没有被内核统计,应该是被dropped,但是也没有被 统计到 dropped。(PROMISC 表示已经开启混杂模式,ifconfig eth8 promisc可开启)
# tcprewrite --enet-dmac=5c:d2:0b:10:7e:1b --infile=udp.pcap --outfile=0.pcap
# tcpreplay -i eth1 -K -M 100 -l 0 0.pcap
修改目的MAC地址后,再次发包
说明 混杂模式下的网卡,收到目的地址不是自己的数据包,并没有被内核统计,而是被直接丢弃掉,注意这个丢弃和 ifconfig 显示的RX dropped不一样:
RX dropped: 表示数据包已经进入了 Ring Buffer,但是由于内存不够,上层协议不支持等系统原因,导致在拷贝到内存的过程中被丢弃,netstat -s可以看到更详细的原因。
RX overruns: 表示了 fifo 的 overruns,这是由于 Ring Buffer(aka Driver Queue) 传输的 IO 大于 kernel 能够处理的 IO 导致的,而 Ring Buffer 则是指在发起 IRQ 请求之前的那块 buffer。
2、分析
经过上面的分析,猜测是网卡在混杂模式下,数据包没有被内核统计,直接丢弃掉了。下面就来分析验证一下。先找的网卡 MAC驱动 收包的入口。
可以设备上看下, 寻找一下关键字信息
然后再内核里搜索相关信息,确定MAC驱动
然后 检索 rx_packets 字符串
可以看到 drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_sg.c 有关 rx_packet的处理,我们打开这个驱动文件看下。
在上图中,发现有两个地方确实会有 drop packet的情况,而且并没有被内核统计计数,我们可以在这个地方可以加入打印,验证一下是否是真的在这里被drop掉了,经过验证是蓝色箭头导致的 unlikely(netif_receive_skb(skb) == NET_RX_DROP) 这个条件满足了,就被drop掉了。
3、解决
经过上面的分析,收取数据包的时候,显示没有考虑混杂模式的情况,而是直接抛弃了,我们只需要将 混杂模式的情况处理下即可。
先看下,内核里,别人都是如何 处理 混杂模式的
看来是net_device 里有 flag可以判定是否是 混杂模式,那么就简单了
搞定,解决!
LS1046A平台 网卡混杂模式,无法收到DMAC不是自己的包相关推荐
- 【博客635】tcpdump原理与网卡混杂模式
tcpdump原理与网卡混杂模式 案例分析 场景: k8s机器上由于桥上未打开hairpin mode,使得流量通过service回到本身的时候不通了,但是使用tcpdump抓包的时候,流量就通了,不 ...
- 网卡混杂模式介绍与设置
1.混杂模式介绍 混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包.默认情况下网卡只把发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃.简单的讲,混杂模式就是指网卡能接受所有通过它 ...
- 将网卡设为混杂模式_网卡混杂模式实现方法
一.在普通程序中设置网卡混杂模式. 在普通程序中普遍用ioctl函数来设置,该函数很值得大家好好的了解,因为它的使用非常的广泛.下面 给出设置网卡混杂模式的实现代码: #include #includ ...
- linux网卡混杂模式重启生效,linux下网卡混杂模式设置与恢复
网卡混杂模式的设置可以通过下面的命令来进行设置: root@dell-desktop:/home/dell/libppf/bin# ifconfig eth0 eth0 Link encap:Ethe ...
- 【genius_platform软件平台开发】第三十七讲:网卡混杂模式和原始套接字
Linux下网卡的混杂模式 混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址.普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃.一般来说,混 ...
- 分享:设置网卡混杂模式
分享:设置网卡混杂模式 设置网卡混杂模式 http://my.oschina.net/u/138210/blog/110517 posted on 2013-02-27 09:24 lexus 阅读 ...
- 网卡混杂模式Promiscuous与linux上混杂模式的设置
1 网卡工作模式 (1) 广播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧. (2) 多播传送(MultiCa ...
- linux 取消混杂模式,Linux下网卡混杂模式设置和取消
1.Linux下网卡常用的几种模式说明: 广播方式:该模式下的网卡能够接收网络中的广播信息. 组播方式:设置在该模式下的网卡能够接收组播数据. 直接方式:在这种模式下,只有目的网卡才能接收该数据. 混 ...
- linux网卡混杂模式和监听模式
混杂模式(promiscuous mode)是电脑网络中的术语.是指一台机器的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它. 一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口 ...
- 网络流量监控之网卡混杂模式
混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程 序就是在这种模式下运行的.网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和 发给自 ...
最新文章
- blf文件用什么软件打开_如何用皕杰流程创建一个blf演示流程文件?
- 软件工程——理论、方法与实践 第六章
- 二分于最大流之间的关系
- numpy的生成网格矩阵 meshgrid()
- 第三十二期:MySQL常见的图形化工具
- Mysql对应的dul_MySQL InnoDB 数据字典介绍
- mysql的复制详解
- atitit.商业版 源码保护 与 java本地原生代码转换 的方案总结
- php脚本是什么,PHP脚本的编写
- x4提示你的产品已经被禁用_win10系统注册表已被管理员禁用的解决方法
- 如何保护眼睛,可采用语音方式获取外界知识,并积极锻炼身体做到劳逸结合。
- NetLimiter 4 Pro(网络控制软件)官方中文版V4.1.6.0 | netlimiter软件下载 | 电脑防火墙软件哪个好
- Android高德混淆问题
- Barsetto百胜图TripressoES意式便携咖啡机测评,咖啡随行玩味无穷
- android app申请内存大小,Android中App可分配内存的大小
- 电脑软件测试英雄联盟,lol电脑配置检测,如何测试自己的网络玩lol的具体情况?...
- 迅雷播放插件下载的在线字幕位置
- Surfer图件转MapGis图件总结
- nodejs与js区别
- 累加功能的实现 (累计计算)