接入点使用softMAC还是hardMAC?

接入点使用softMAC还是hardMAC?

我想了解无线在Linux 中的工作原理。我在文档和源代码的帮助下从 wpa_supplicant、hostapd 应用程序开始。了解了以下流程和基本功能:

  1. wpa_supplicant,nl80211(驱动程序接口)
  2. libnl 库(使用 netlink 协议在用户空间和内核之间进行套接字通信)
  3. cfg80211(内核接口,用于在用户空间中的nl80211实现的帮助下从用户空间与驱动程序进行通信),mac80211(软件媒体访问控制层)
  4. 驱动程序(可加载驱动程序,例如:ath6kl - atheros 驱动程序)。

我理解了上面的软件流程,并且在我的探索中我了解到,为了给开发人员提供自由,MAC层是在软件中实现的(流行的实现mac80211)。

在所有情况下都是如此吗?如果是的话,softMAC和hardMAC的优缺点是什么?内核中的cfg80211接口是否直接与驱动程序通信?谁以及如何与 mac80211 进行通信?

提前致谢。

答案1

我对这个主题的理解是:HardMAC设备的优点基本上是底层协议的MAC功能和要求在设备上实现,并且只能通过API访问,例如:AT命令(规范中所谓的原语) )。是的,这是由设备通过软件在内部完成的,因此您会看到 HardMAC 设备有一个处理器和一个无线电收发器。主要优点是 MAC 处理是在 HardMAC 设备上完成的,缺点是它对于自定义应用程序不灵活,因为您无法直接访问无线电。

SoftMAC 设备是符合 PHY 的无线电收发器,并具有一些 MAC 功能(通常是 AutoAck、CRC 检查、自动加密、目的地检查等),因此用户必须读取所有帧类型并根据规范进行应答(如果他想要)到)。

我不确定 cfg80211,但通过一些阅读,在我看来,它是通过用户空间程序可以配置无线电的 API。 cfg80211 API 通常通过 mac80211 与驱动程序通信,但也可以直接与驱动程序通信。

相关内容