Linux에서 무선이 어떻게 작동하는지 알고 싶습니다. 나는 문서와 소스 코드의 도움을 받아 wpa_supplicant, Hostapd 애플리케이션으로 시작했습니다. 다음 프로세스와 기본 기능을 이해했습니다.
- wpa_supplicant, nl80211(드라이버 인터페이스)
- libnl 라이브러리(사용자 공간과 커널 간의 소켓 통신을 위해 netlink 프로토콜 사용)
- cfg80211(사용자 공간에서 nl80211 구현을 사용하여 사용자 공간에서 드라이버와 통신하기 위한 커널 인터페이스), mac80211(소프트웨어 미디어 액세스 제어 계층)
- 드라이버(로드 가능한 드라이버, 예: 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을 통해 드라이버와 통신하지만 드라이버와 직접 통신할 수도 있습니다.