免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2903 | 回复: 12
打印 上一主题 下一主题

[网络子系统] wifi WPASupplicant 进程 PF_PACKET 收wifi包的问题 [复制链接]

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-15 06:20:00数据库技术版块每日发帖之星
日期:2016-06-16 06:20:00数据库技术版块每日发帖之星
日期:2016-06-18 06:20:00程序设计版块每日发帖之星
日期:2016-06-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-09 06:20:00IT运维版块每日发帖之星
日期:2016-07-15 06:20:00IT运维版块每日发帖之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-08-18 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-07-11 14:30 |只看该作者 |倒序浏览
本帖最后由 mordorwww 于 2016-07-11 14:40 编辑

WPASupplicant  是wifi的管理进程,需要接收wifi的EAPOL等帧。看代码是用PF_PACKET来接收wifi网卡上的包的。这样会不会把所有的wifi包都抓上来?

我目前写的一个无线驱动是打算在驱动里将无线的控制报文和数据报文分开
难道linux里的wifi驱动是这样做的?还是内核有类似的机制?还是说根本就把所有包都copy上去了?

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
2 [报告]
发表于 2016-07-12 10:45 |只看该作者
wifi这一块不是很懂,以下仅供参考。

pppoe的控制报文就是通过pf_packet收到用户态的pppoe进程来处理的。

pf_packet可以bind device(例如eth0)+protocol(例如ppoe-discovery等),用于初步的过滤。

论坛徽章:
0
3 [报告]
发表于 2016-07-12 11:46 |只看该作者
WiFi的Driver一般情况下是不过滤包的,除了一些特别的feature,采用Embedded在Driver里实现。Data包肯定往上送,Kernel的net device层会分发2层或者更高层的包。如果Driver使用SoftMac mac80211模块接口,大部分Mgmt包基本送到mac80211模块处理;如果wifi芯片使用Full Mac, Mac层在Firmware里实现,大部分厂商一般都在Firmware里里处理非Data包,给Driver Report一个Event就足够,Data包从80211包转换成8023包送到Driver,在分发到上层。所以事实上,控制包基本不会送到上层,并且80211协议控制包就几种,基本都在Firmware里边处理了,因为控制包多设计到底层的速度,比如ACK、RTS/CTS、Power类的包,所以基本不会送到上层Driver里处理。
所以这要看芯片厂商的实现,不同的设计可能在不同的模块处理包,WiFi很多的协议可能在不同层实现。如果Driver能收到所有合理的包,Data、Mgmt包,可以Parse 80211 Header进行区分。

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-15 06:20:00数据库技术版块每日发帖之星
日期:2016-06-16 06:20:00数据库技术版块每日发帖之星
日期:2016-06-18 06:20:00程序设计版块每日发帖之星
日期:2016-06-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-09 06:20:00IT运维版块每日发帖之星
日期:2016-07-15 06:20:00IT运维版块每日发帖之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-08-18 06:20:00
4 [报告]
发表于 2016-07-12 13:47 |只看该作者
LTXYTLZY 发表于 2016-07-12 11:46
WiFi的Driver一般情况下是不过滤包的,除了一些特别的feature,采用Embedded在Driver里实现。Data包肯定往上 ...


多谢了!
像关联和认证这样的包,一般是在哪里处理的呢。这样的包比较少。

论坛徽章:
0
5 [报告]
发表于 2016-07-12 14:17 |只看该作者
关联和认证都是Mgmt包,规则就是我上面说的情况,使用Soft Mac模块开源代码mac80211的WiFi芯片,会将这两种包送到Mac80211处理,mac80211处理完后调用cfg80211的接口通过nl80211(netlink)通知wpa_supplicant准备认证以及四次握手的状态机,等待处理EAPOL包,EAPOL是二层的Data包,会在Supplicant里边处理,连接加密的路由情况就是这样处理的,如果不加密,那就直接DHCP了。而使用Full Mac的Driver,一般Auth和Assoc的包直接在芯片里边处理了,Driver通过command形式告诉Firmware要连接AP的信息,Firmware处理了Assoc Response之后,report给Driver一个Event,说明连接的情况(result和AID)以及assoc相关的IE,Driver会直接调用cfg80211的接口报告给supplicant,然后处理EAPOL的握手过程,因为之后的EAPOL Data的处理会用到Assoc Response里边的IE。
所以需要了解芯片厂商Firmware的能力,大部分的芯片是在Full Mac Firmware里实现的,这样可以自己设计实现支持的80211协议,个别采用开源的mac80211模块,缺陷就是需要依赖mac80211的开源代码更新。
Linux Kernel里有一些公司的开源WiFi Driver,可以参考一下,比如Marvell的mwifiex,Broadcomm的brcm80211等,并且SoftMac/FullMac的接口都能找到相关的Driver。

回复 4# mordorwww


   

论坛徽章:
0
6 [报告]
发表于 2016-08-13 21:20 |只看该作者
LTXYTLZY 发表于 2016-07-12 14:17
关联和认证都是Mgmt包,规则就是我上面说的情况,使用Soft Mac模块开源代码mac80211的WiFi芯片,会将这两种 ...


Mark,学习了。

论坛徽章:
0
7 [报告]
发表于 2016-10-10 20:45 |只看该作者
你也是研究802.11无线的啊? 我研究的是AP这端,你呢?咱们可以相互交流一下啊!

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-15 06:20:00数据库技术版块每日发帖之星
日期:2016-06-16 06:20:00数据库技术版块每日发帖之星
日期:2016-06-18 06:20:00程序设计版块每日发帖之星
日期:2016-06-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-09 06:20:00IT运维版块每日发帖之星
日期:2016-07-15 06:20:00IT运维版块每日发帖之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-08-18 06:20:00
8 [报告]
发表于 2016-10-11 09:00 |只看该作者
root_nm 发表于 2016-10-10 20:45
你也是研究802.11无线的啊? 我研究的是AP这端,你呢?咱们可以相互交流一下啊!


android上的wifi有研究不

论坛徽章:
0
9 [报告]
发表于 2016-10-11 11:34 |只看该作者
嗷嗷,那么我们研究的方向有点不一样啊,你研究的80211应该是网卡作为staion模式,我研究的是AP模式的。
主要是研究AP如何控制用户的接入,虚拟化接入,无缝切换之类,现在 想在hostapd这个软件里面来做一些控制,
这个hostapd作为代理和SDN控制器端进行交互。

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-15 06:20:00数据库技术版块每日发帖之星
日期:2016-06-16 06:20:00数据库技术版块每日发帖之星
日期:2016-06-18 06:20:00程序设计版块每日发帖之星
日期:2016-06-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-09 06:20:00IT运维版块每日发帖之星
日期:2016-07-15 06:20:00IT运维版块每日发帖之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-08-18 06:20:00
10 [报告]
发表于 2016-10-11 13:23 |只看该作者
root_nm 发表于 2016-10-11 11:34
嗷嗷,那么我们研究的方向有点不一样啊,你研究的80211应该是网卡作为staion模式,我研究的是AP模式的。
...

无缝切换要做覆盖不?这个工程好大

3gpp里面有定义wifi的切换啊, s2c



虚拟化接入是什么鬼?

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP