您的位置:首页 > 运维架构 > Linux

linux Wireless基础知识(cfg80211 mac80211 nl80211)

2016-07-08 11:42 1416 查看
1. 基本概念

    • cfg80211:  用于对无线设备进行配置管理。与FullMAC, mac80211和nl80211一起工作。(Kernel态)

    • mac80211: 是一个driver开发者可用于为SoftMAC无线设备写驱动的框架 (Kernel态)。

    • nl80211: 用于对无线设备进行配置管理,它是一个基本Netlink的用户态协议(User态)

    • WNIC : Wireless Network Interface Controller, 它总是指望硬件执行协议(如IEEE802.11)描述的功能。

    • MLME: 即MAC(Media Access Control ) Layer Management Entity,它管理物理层MAC状态机。

    • SoftMAC: 其MLME由软件实现,mac80211为SoftMAC实现提供了一个driver API。 即:SoftMAC设备允许对硬件执行更好地控制,允许用软件实现对802.11的帧管理,包括解析和产生802.11无线帧。目前大多数802.11设备为SoftMAC,而FullMAC设备较少。

    • FullMAC:  其MLME由硬件管理,当写FullMAC无线驱动时,不需要使用mac80211。

    • wpa_supplicant: 是用户空间一个应用程序,主要发起MLME命令,然后处理相关结果。

    • 

2. cfg80211

    cfg80211是Linux 802.11配置API。cfg80211用于代码wext(Wireless-Extensions),nl80211用于配置一个cfg80211设备,且用于kernel与userspace间的通信。wext现处理维护状态,没有新的功能被增加,只是修改bug。如果需要通过wext操作,则需要定义CONFIG_CFG80211_WEXT。

     cfg80211 and nl80211: 基于消息机制,使用netlink接口
    wext: 基于ioctl机制

    • struct ieee80211_hw: 表示硬件信息和状态

    • ieee80211_alloc_hw:每个driver调用ieee80211_alloc_hw分配ieee80211_hw,且以ieee80211_ops为参数

    • ieee80211_register_hw:每个driver调用ieee80211_register_hw创建wlan0和 wmaster0,并进行各种初始化。

    • struct ieee80211_ops:每个driver实现它的成员函数,且它的成员函数都以struct ieee80211_hw做为第一个参数。在struct ieee80211_ops中定义了24个方法,以下7个方法必须实现:

       tx,start,stop,add_interface,remove_interface,config和configure_filter。

3. mac80211

    它是一个driver开发者可用于为SoftMAC无线设备写驱动的框架,mac80211为SoftMAC设备实现了cfg80211回调函数,且mac80211通过cfg80211实现了向网络子系统注册和配置。配置由cfg80211通过nl80211和wext实现。

    mac80211在体系结构中的位置如下图所示:





4. socket


  
  



名词解释:

MLME:  MLME是 MAC Sublayer Management Entity,MAC子层管理实体。物理层(PHY)MAC状态机就位于MLME中。

fullmac: 是指使用硬件管理MLME的无线网卡类型。

softmac: 是指使用软件管理MLME的无线网卡类型。

cfg80211: 用于在内核空间中对无线设备进行配置管理,和FullMAC,mac80211和nl80211一起工作。

mac80211: SoftMAC类型网卡的驱动API。

nl80211: 用于在用户空间内对无线设备进行配置管理。它是一个基于Netlink的用户空间协议。
iw: 基于nl80211的无线设备命令行配置工具(用于取代iwconfig)。

mac80211:

mac80211是一个无线设备驱动开发框架,驱动开发者可以使用mac80211来开发SoftMAC类型的无线设备驱动。

SoftMAC设备允许对硬件有更精细的控制,允许通过软件来替硬件完成802.11帧的管理,允许解析和生成802.11无线帧。今天,大部分的802.11设备都是这种类型的,FullMAC类型的设备会越来越少。

mac80211为SoftMAC设备实现了cfg80211回调函数,然后mac80211依赖于cfg80211来完成向网络子系统的注册和设备管理。无线设备的配置可以使用nl80211或者wireless extensions(一套老的配置工具),这两个工具的操作最终会由cfg80211来处理。

在mac80211中,STA模式的MLME是在内核中完成的,而AP模式则是在用户空间完成的(例如使用hostapd)。

目前,在新版本的Linux上推荐使用iw工具来管理无线网卡,而不是通过旧的iwconfig工具。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息