레이블이 NET-WIFI인 게시물을 표시합니다. 모든 게시물 표시
레이블이 NET-WIFI인 게시물을 표시합니다. 모든 게시물 표시

3/29/2022

ESP32 WIFI 관련자료 정리

1. WIFI의 관련정보의 정리 

최근에 WIFI MCU를 하게되어 이전에 정리했던 WIFI 자료와 다 같이 정리하기로 했다. 
그리고, 자꾸 WIFI 관련문제사항들이 발생하여, WIFI 원인분석이 필요한 부분들은 간단히 정리한다. 

WIFI 사용되어지는 용어정리 
WIFI에서 사용되어지는 기본적인 용어와 관련내용을 간단히 정리


1.1 WIFI Layer 2 와 WIFI Driver 정보 

WIFI Driver를 분석하고 내용알려면, 대충은 Layer2는 어떻게 동작하는지는 알아야한다. 
그리고, WIFI Driver 역시 각 Chip Vendor마다 지원되는 기능도 다르다. 
이전에는 Full Mac/Soft Mac 으로 WIFI Chip 어디까지 Control하느냐에 따라 이를 구분하고, 또, 지원되는 모드도 다 달라서 사용하기가 좀 그랬다.  
사실 요즘 WIFi Driver를 거의 잘 보지를 못해서 현재는 잘모르겠으며, 오래전에 정리한 것을 링크만 연결한다. 

WIFI Layer2 와 Ethernet Encapsulation
WIFI의 핵심인 Layer2 Packet 종류와 관련내용들 정리
이부분을 더 알고 싶다면, 돈을 내시고 IEEE 802.11 협회에 가입하셔서, Spec을 보시길 권장하며, 나도 옛날꺼 밖에 없으며, 이것도 지인을 통해 얻은 것이다. 

Linux WIFI Driver 관련정리 
옛날에 대충정리해서 지금보니 엉망이라 다시 정리를 해야 할 것 같다. 

Linux WIFI Tool 이용 
별로 쓸모가 없을거 같으나, 일단 Linux의 Tool 사용을 위해서 참고만 하자


1.2 WIFI 2.4G Channel 관련자료 

가장 많이 사용하는 WIFI의 2.4G 대역의 Channel을 간단히 알아보고 혼선 및 특징을 알아보자. 
더불어 요즘 WIFI 2.4G이외에 다른 ISM Band도 추가해서 사용하는데, 관련부분도 좀 알아보자. 

WIFI Wiki
역시 Wiki가 설명이 잘되어있으며, 정말 감사하다 

  • WIFI 2.4GHz (802.11b/g/n/ax 나라별 사용하는 Channel) 
각 Channel의 간격은 5MHz 이지만, Ch14만 12MHz
WIFI Bandwith는 보통 20MHz/40MHz로 각 AP에서 HP를 통해 설정가능 
ChannelF0 (MHz)Frequency
range
(MHz)
North
America
[3]

Japan
[3]

India
[4]
Most of
world
[3][5][6][7]
[8][9][10][11]
124122401–2423YesYesYesYes
224172406–2428YesYesYesYes
324222411–2433YesYesYesYes
424272416–2438YesYesYesYes
524322421–2443YesYesYesYes
624372426–2448YesYesYesYes
724422431–2453YesYesYesYes
824472436–2458YesYesYesYes
924522441–2463YesYesYesYes
1024572446–2468YesYesYesYes
1124622451–2473YesYesYesYes
1224672456–2478NoBYesYesYes
1324722461–2483NoBYesYesYes
1424842473–2495No11b onlyCNoNo


WIKI설명을 보면 
간섭의 보장 받기 위해서 2MHz는 Guard band로 사용한다고 하며, 보통 16.25 ~ 22MHz 사이로 사용한다고 한다. 
하지만, WIFI 와 LTE는 OFDMA방식이므로, 아래와 같이 Channel 간의 중복을 허용한다. (궁금하시면, OFDM 보시길)
  1. Ch6 Center Frequency:  2437 -  (22/2) = 2426 으로 Ch4의 1Mhz가 부족 
  2. Ch6 Center Frequency:  2437 + (22/2) = 2448 으로 Ch8의 1Mhz가 부족  
  https://en.wikipedia.org/wiki/List_of_WLAN_channels

Overlap되지 않는 Bandwith는 아래와 같다하며, 
좌측 20MHz 기반으로 중간을 보면 1/5/9/13으로 사용

https://en.wikipedia.org/wiki/List_of_WLAN_channels

WIFI 2.4G Channel 간섭문제 


ISM Band 
ISM Band는 주로 Industrial/Scientifc/Medical 목적으로 무료로 사용가능한 주파수 대역을 말한다
나의 경우, ISM Band는 LoRa나 TI의 Simplicity를 통해 알게되었는데, 400/900MHz 대역만 있는줄 알았는데, 아래를 보니, 아니였다. 
최근 IoT RF에 해당하는 프로토콜의 관련주파수 대역이기도 하다. 

ISM Band 와 LoRA 
좀 이상한게, LoRA Gateway 경우는 800MHz 대역을 분명 사용한 걸로 기억을하는데, 이 부분은 나중에 Semtech Datasheet를 다 확인해 봐야겠다. 
내 기억으로는 LoRA Gateway의 경우 1개의 SX1301로 2개의 SX1257(Transciever) Control 한다. 
이유는 동시에 여러 Channel Bandwith(200MHz)를 확보하기 위해서 두개 사용한 걸로 기억한다. 
만약, LoRA device로만 사용한다면, Transciver 한개면 충분하다. 


2. ESP32 의 WIFI 자료분석  

ESP32에서 제공하는 WIFI의 기능들을 간단히 알아보도록 하자. 

  • ESP32 WIFI Guide 
ESP32 WIFI Feature들을 간단히 정리해서 알아보자. 
  • Support station-only mode, AP-only mode, station/AP-coexistence mode : 각 3개모드 제공 (STA/AP/AP+STA)
  • Support IEEE 802.11b, IEEE 802.11g, IEEE 802.11n and APIs to configure the protocol mode (802.11bgn 지원 및 Configuration 가능)
  • Support WPA/WPA2/WPA3/WPA2-Enterprise and WPS : 암호화 부분 거의 제공 
  • Support AMPDU, HT40, QoS and other key features: WIFI Layer 2관련내용으로, Bandwith, QoS 관련내용 
  • Support Modem-sleep: Power Management 기능 
  • Support the Espressif-specific ESP-NOW protocol and Long Range mode, which supports up to 1 km of data traffic: ESP사 전용 Protocol로 Lora 같이 ISM Band 사용할거 같음(LR)
  • Up to 20 MBit/s TCP throughput and 30 MBit/s UDP throughput over the air
  • Support Sniffer: Smart Config 때문에 필요(WIFI STA/AP+STA) 
  • Support both fast scan and all-channel scan:  fast scan은 좀더 알아봐야 할거 같음 
  • Support multiple antennas: MIMO???
  • Support channel state information: 이 부분은 좀더 확인 


2.1 ESP32 의 WIFI 관련정보 

  • ESP32 WIFI 성능개선법 
ESP32의 경우 기본적으로 LWIP 와 WIFI를 연결하여 사용되어지며, 각 Buffer도 세부조절이 가능하다. 
한마디로 적절하게 설정해서 성능을 향상하라는 것이며, 아래의 각 설정에 대해서 세부적으로 알아보도록하자. 
각 설정에 따른 성능표를 제공하고 있으므로, 이를 참조하자.  

  • ESP32 WIFI PSRAM기반의 Buffer 설정 
WIFI Buffer를 PSRAM을 사용한다고 하는데, 각 설정하는 법과 성능확인 
WIFI Buffer를 Static or Dynamic 설정인데, 동적할당도 문제가 생기면 동일하게 한계는 있는 것 같다. 
WIFI Buffer 와 LWIP Buffer 는 밀접한 관계이므로 각 설정을 알아두도록하자 

  • WIFI STA 의 Beacon Timeout 
ESP32의 WIF STA일 경우 WIFAP가 살아있는지 확인을 위해서 60개 becaons을 받아 AP의 존재여부를 확인하는데, 
이때,  Layer 2의 Beacon이 Timeout이 발생한다면, Layer 2의 Probe Reqeust를 보내 확인 AP의 연결상태를 확인한다는 내용이다. 
결론적으로  WIFI STA 주기적으로 Beacon을 받고 Timeout 되며 Probe Reqeust로 재확인하고 실패하면, WIFI STA는 DISCONNECTED로 됨 

  • ESP32 Low-Level TX API 
ESP32에서 제공해주는 Layer2의 Management Packet 사용가능한 API
beacon/probe (request/response)/action/Qos 지원

  • ESP32의 WIFI STA의 Scan방식 
WIFI STA일 경우, Active/Passive Scan 다 지원하며 default가 active scan 방식이라며, 각 다양한 Scan방식을 확인 가능
  1. All-Channel Background Active Scan
  2. All-Channel Background Passive Scan
  3. All-Channel Foreground Active Scan
  4. All-Channel Foreground Passive Scan
  5. Specific-Channel Background Active Scan
  6. Specific-Channel Background Passive Scan
  7. Specific-Channel Foreground Active Scan
  8. Specific-Channel Foreground Passive Scan 

  • ESP32 WIFI Channel State Information
Channel 상태 정보라고 하는데, Sub carrier를 같이사용하여 이용하는 것 같다.  

  • ESP32 의 WIFI AP 설정 
AP를 설정할 경우, Channel은 Country Code에 의해 변경되어지며, 이는 미국/유럽 및 나라마다 사용하는 채널이 조금씩 다름 

  • WIFI HT20/40
WIFI의 Bandwith 설정 


ESP32에서 제공하는 WIFI/BT의 RF Calibration 


ESP WIFI Mesh
ESP에서 제공해주는 기능으로 Mesh기능으로 추후에 이부분을 개인적으로 좀 더 해보도록하겠다. 


2.2 ESP32 WIFI Sniffer Mode

ESP32에서 WIFI Sniffer를 사용하는 이유는 아래의 SmartConfig 기능이 때문일 것이다.

  • WIFI SmartConfig 란?
TI에서 개발되어진 WIFI Provisiong 특허기술이라고 하며, 최근 회사에서 사용해서 알게되었다.
보통 WIFI STA 의 경우,  WIFI AP에 접속하려면, SSID/PW 정보를 WIFI STA에서 직접 입력 후 이를 Provisiong, 즉 암호화해서 전달해준다.
WIFI STA에서 Provisiong은 Layer 2부터 변경해서 하는데, 상위 특허기술은 내 생각에는 획기적이라고 생각들었다. (역시 TI, 특허도 오픈하고) 

ESP32, SmartConfig가 지원되는 WIFi STA 되면,  WIFI AP 접속을 다른 WIFI STA에서 쉽게 제어가능하다. 
ESP Touch 의 Android 앱을 설치한 후 핸드폰(WIFI STA)에서 UDP로 SSID/PW를 Broadcast전송하다.
이를 ESP32가 Sniffer Mode에서 상위 UDP기반의 SSID/PW를 받아 WIFI Provisiong 진행한다.


SmartConfig (WIFI Provisioning)


SmartConfig 필수 조건사항 
  1. ESP32 or ESP8266:  ESP32의 WIFI STA Mode 설정과 WIFI Sniffer Mode 지원
  2. Android (WIFI STA Mode)기기: ESP Touch App 설치 

ESP Touch APP과 ESP32 동작순서  
  1. ESP Touch APP  SSID/PW 입력 , 이 정보를 UDP 전송 
  2. ESP32은 WIFI STA/Sniffer 기능으로 상위 UDP 정보(SSID/PW)획득
  3. ESP32은 받은 SSID/PW기반으로 WIFi STA Provisiong 진행 
  4. ESP32의 WIFI STA 은 WIFI AP 접속완료  
한마디로 Provisiong 전에 UDP로 몰래 빼어보내고, 이 정보 받아 실제 WIFI Provisiong 진행한다는 것이다. 
https://www.espressif.com/en/products/software/esp-touch/overview

ESP32 SmartConfig (Sniffer기능 필수), WIFI STA으로 가능 

ESP32 SmartConfig 소스 
아래의 소스를 보면 동작원리를 대충알게되어진다. 

ESP32 SmartConfig Example 


2.3. WIFI STA Monitor(Sniffer) 모드

ESP32가 Packet Sniffer 모드를 지원한다고 해도, 외부에서 ESP32의 Packet을 Sniffer하고 싶어할 것이다. 
이를 위해서 다른 Linux Board or Android Board or Laptop 에서 설정하는 법을 간단히 소개한다. 
만약 Linux or Android에서 하고 싶다면 wifi driver에서 설정 monitor 변경 후 tcpdump를 사용하여, Wireshark에 연결하면 될거 같다. 
iwconfig 이용하여 monitor (promiscous)로 변경가능하지만,  WIFI Driver에서 미제공 및 HW가 안되는 경우가 있으므로 주의해야 한다. 

tcpdump 와 Wireshark 사용법 

  • 확인사항
각 WIFI STA 모드에서 Monitor모드가 지원되는 지 반드시 확인 

  • Rasperry Pi4의  WIFI 설정확인 (Monitor 미제공확인)
원래 Rasperry Pi4에서 iwconfig로 monitor 하려고 했으나, Raspberry Pi4의 WIFI는 monitor가 미지원되는 것으로 확인
이전에는 WIFI Monitor는 USB WIFI Dongle로 진행했던거 같으며, Odroid 때도 동일한 것 같음(Odroid는 WIFI가 동글로제공) 

  • Laptop 기반으로 wireshark로 설치 
우선 나의 Laptop의 WIFI가 monitor mode가 지원되어 아래와 같이 진행

Laptop 의 ifname 변경 
ifname이 너무 길어서 아래와 같이 간단히 변경 
$ sudo ip link set name eth0 dev enp7s0
$ sudo ip link set name wlan0 dev wlp0s20f3

Laptop 의 Ubuntu 20.04 Wireshark 설치 

/usr/bin/dumpcap 의 권한문제 발생하여 아래와 같이 변경 
$ sudo apt update 
$ sudo apt upgrade 
$ sudo apt install wireshark
$ sudo chmod +x /usr/bin/dumpcap
$ wireshark

Laptop 의 WIFI Monitor변경 
Laptop의 WIFI가 Monitor가 지원되는 것을 확인
$ iwconfig  // Manage Mode 확인 
$ iw list | grep monitor // WIFI Phy 정보확인 및 monitor 지원여부확인 

$ sudo ifconfig wlan0 down
$ sudo iwconfig wlan0 mode monitor
$ sudo ifconfig wlan0 up

$ wireshark       //WIFI Monitor 모드로 동작확인  

WIFI Packet Capture (WireShark)
아래는 참고만 하시면 되겠다. 


3. Android의 WIFI 정보정리 

Android에서 사용하는 기본 WIFI 정보들이며, Google에서 쉽게 설명이 제공되어 있어 다음과 같이 링크로 연결 

  • Android WIFI Overview
Google에서 제공하는 WIFI Overview로 관련부분에 대해 설명이 잘나와있다. 
  https://source.android.com/devices/tech/connect/wifi-overview

  • Android WIFI Scan 
WIFI AP Scan부분이 궁금하여 관련부분을 찾았으나, 현재 자세한 설명은 없어 아래에서 Android WIFi Scan은 Passive 방식 
현재 Android WIFI Scan은 default로 Passive Scan 방식이라고 함 
 
  • WIFI AP/STA 동시 실행 
  

3.1. Android/Linux WIFI 의 구조정리 

오래전에 Android WIFI의 AP/STA/ Direct 의 경우 각각의 구조를 정리한 것이지만, 현재와 많이 다를 것 같다. 
구조만 참고하자. 

Android WIFI STA의 구조 

Android WIFI AP의 구조 


3.2. WIFI Driver Porting 방법 

오래전 집에서 Odroid 기반으로 WIFI Driver를 간단하게 Porting한 것으로 자료를 대충정리했지만, 참고하시길 

7/15/2018

IEEE 802.11 L1/2 와 Ethernet De/Encapsulation

1. WLAN 용어 (IEEE 802.11 Layer1,2 )

Layer 1,2의 Packet 단위에 관한 기본용어와 관리 주체들의 용어를 알아보자.

WIFI IEEE 802.11 MAC/PHY Index

  • Layer 1 (Physical Layer)
  1. PSDU (PLCP Service Data Unit, Physical layer Service Data Unit)
  2. PPDU (PLCP Protocol Data Unit, Physical layer Protocol Data Unit)
  3. PLCP  (Physical Layer Convergence Procedure): PSDU들어가는 Preamble/Header 
  4. PMD  (Physical Medium Dependent)
  5. PLME (Physical Layer Management Entity)
  6. CS/CCA (Carrier Sense/Clear Channel Assessment) 

PHY의 종류 
  1. FHSS PHY (Frequency-Hopping spread spectrum)
  2. DSSS PHY (Direct-sequence spread spectrum)
  3. IR PHY (Infrared)
  4. OFDM PHY (Orthogonal frequency division multiplexing)
  5. HR/DSSS PHY (High Rate direct sequence spread spectrum)
PHY의 따라 PLCP Header도 같이 변경됨
PHY
  http://media.techtarget.com/searchMobileComputing/downloads/CWAP_ch8.pdf

  • Layer 2 (Data Layer)
  1. MPDU (MAC Protocol Data Unit): L1의 PSDU
  2. MSDU (MAC Service Data Unit): MPDU의 내부 DATA 
  3. A-MPDU (Aggregated MAC Protocol Data Unit): Frame Aggregation 사용시 
  4. A-MSDU (Aggregated MAC Service Data Unit): Frame Aggregation 사용시
  5. MAC(Media Access Control)
  6. SAP (Service Access Point)
  7. MLME(MAC sublayer Management Entity)

  • 802.11 L2(Data)/L1(Phy) 구조 
L2를 MAC SubLayer라고 하며, 관리와 제어는 MLME라는 걸쳐 Control/Management 관리
L1은 PHY로 두개로 나뉘어지며, PLCP는 MSDU에 PLCP Header를 넣어 주고, PMD는 각각의 PHY에 따라 전송을 하는 구조이며, 이를 PLME에서 관리

http://media.techtarget.com/searchMobileComputing/downloads/CWAP_ch8.pdf


  • 802.11 L2(Data)/L1(Phy) Packet 구조 및 명칭
아래는 간단히 각 명칭을 이해하기 위해서 상위에서 선언된 Packet 구조이며, PPDU안의 Preamble과 Header는 PLCP라고 한다.
그리고, PLCP Format은 각각의 PHY에 따라 다르므로, 이 부분은 각 개별 PHY정보 참고

상위 Layer1 과 Layer2의 용어를 보면 쉽게이해가 간다.
https://en.wikipedia.org/wiki/MAC_service_data_unit


802.11 L2 의 MPDU 내의 MSDU 관련사항 

802.11 L2 의 Frame Aggregation (상위 A-MPDU 참조)
  https://www.netmanias.com/ko/post/qna/6640
  https://en.wikipedia.org/wiki/Frame_aggregation
  http://haru21.tistory.com/entry/%EB%AC%B4%EC%84%A0%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9D%B4%ED%95%B4-4-Chapter3-80211n-2

802.11 기본용어 
  https://wireless.wiki.kernel.org/en/developers/documentation/glossary

세부사항 
IEEE 802.11 Part 11: Wireless LAN Medium Access Control (MAC)
and Physical Layer (PHY) Specifications



2. 802.11 Frame Layer2 MPDU 전체구조 

  • MPDU Frame 의 구조 



  • MPDU의 Address 
Address는 4개까지 가질 수 있으며, 보통은 Address3개를 사용하며, MAC Address 이용.
  1. Address 1: Receiver Address 
  2. Address 2: Transmitter Address
  3. Address 3: Recevier에 의해 Filer 목적으로 사용되어진다고 한다. 
  4. Address 4  ESS(Extended Service Set) 안에 AP들 or Mesh network Node들 간의 Data frame에서 전송시 사용된다고 한다. (AP의 Roaming 시) 


  • MPDU의 Duration /ID 
uS 단위로 CP중 PS-Poll frames을 제외한 CFP 중 전송된 HCF 아래의 모든 Frame에 기록

  • MPDU의 Sequence Control
TCP 처럼 Sequence Control을 진행



  • 기타사항 
  1. QoS Control
  2. HT Control

2.1 MPDU의 FC(Frame Control) 부분 

MPDU의 처음 FC(Frame control) Field 의 2 byte에 대한 설정으로 약간 복잡하다. 

Frame Control Field
Subfield Protocol Version Type Subtype To DS From DS More Fragments Retry Power Management More Data Protected Frame Orders
Bits 2 bits 2 bits 4 bits 1 bit 1 bit 1 bit 1 bit 1 bit 1 bit 1 bit 1 bit

  https://en.wikipedia.org/wiki/IEEE_802.11i-2004

  • FC의 Protocol Version (2bit)
보통 00으로 설정을 한다고 한다.

  • FC 의 Type (2bit) 
FC의 Type의 종류가 따라 Frame의 종류 결정 
  1. Management Frames
  2. Control Frames
  3. Data Frames

  • FC의 SubType (4bit)
FC의 Type에 의해 각 역할이 정해지고, FC의 Subtype의 세부기능결정  

  • FC의 Type 과 SubType 의 각 역할표 
Type value (b3,b2) Type description Subtype value (b7 b6 b5 b4) Subtype description
00 Management 0000 Association request
00 Management 0001 Association response
00 Management 0010 Reassociation request
00 Management 0011 Reassociation response
00 Management 0100 Probe request
00 Management 0101 Probe response
00 Management 0110-0111 Reserved
00 Management 1000 Beacon
00 Management 1001 ATIM
00 Management 1010 Disassociation
00 Management 1011 Authentication
00 Management 1100 Deauthentication
00 Management 1101 Action
00 Management 1110-1111 Reserved
01 Control 0000-0111 Reserved
01 Control 1000 Block Ack Request (BlockAckReq)
01 Control 1001 Block Ack (BlockAck)
01 Control 1010 PS-Poll
01 Control 1011 RTS
01 Control 1100 CTS
01 Control 1101 ACK
01 Control 1110 CF-End
01 Control 1111 CF-End + CF-Ack
10 Data 0000 Data
10 Data 0001 Data + CF-Ack
10 Data 0010 Data + CF-Poll
10 Data 0011 Data + CF-Ack + CF-Poll
10 Data 0100 Null (no data)
10 Data 0101 CF-Ack (no data)
10 Data 0110 CF-Poll (no data)
10 Data 0111 CF-Ack + CF-Poll (no data)
10 Data 1000 QoS Data
10 Data 1001 QoS Data + CF-Ack
10 Data 1010 QoS Data + CF-Poll
10 Data 1011 QoS Data + CF-Ack + CF-Poll
10 Data 1100 QoS Null (no data)
10 Data 1101 Reserved
10 Data 1110 QoS CF-Poll (no data)
10 Data 1111 QoS CF-Ack + CF-Poll (no data)
11 Reserved 0000–1111 Reserved


WIFI IEEE 802.11 MAC/PHY Index
상위정보는 아래 Index에서 찾아서 Spec으로 자세히 보도록하자 

  • FC의 ToDS(1bit) and From DS (1bit) 
DS(Distribution System)을 위한 Bit로 Control Frame과  Management Frame은 모두 0 설정.
Data Frame은 이 둘 중 한 Bit를 1로 설정하여 AP와 STA을 알수 있다. (infra mode),
IBBS(independent basic service set) network , 즉 ad mode에서는 모두 0으로 설정.


ToDS FromDS ADDR1 ADDR2 ADDR3 ADDR4
To AP 1 0 BSSID SA DA Unused
From AP 0 1 DA BSSID SA Unused
Within Wireless AP 1 1 RA TA DA SA
Ad-hoc 0 0 DA SA BSSID Unused

  • FC 의 More Fragments
Data or Management Frame이 1로 설정된 것은 MSDU or MMPDU의 분할이 되었다는 것이며, multiple frames 이 분할되었을 때
마지막 Packet제외하고 모두 1로 설정 하거나 다른 Frame은 0 설정

  • FC의 Retry 
Data or Management frame 재전송되었을 때 1로 설정하며, 때때로, 재전송을 요구한다. 이것을 중복 packet을 제거하는데 도움을준다고 한다.

  • FC의 Power Management 
STA의 Power Management의 상태를 나타내며, 1일 경우 PS(Power Save) Mode, 0은 Active Mode로 나타낸다.
AP는 Power-save bit을 설정하지 않는다.

  • FC의 More Data
DS(distributed system)에서 받은 Buffer Frame에 사용되어지며, AP는 이 bit를 power-save mode에 있는 STA와 이용하기 위해 사용한다.

  • FC의 Protected Frame 
인증/보안을 위해 사용되어지며, WEP/WPA/WPA2 사용시 이 bit이 설정된다.

  • FC의 Order
이 부분은 "strict ordering" delivery method에 적용될때 사용한다고 하며, 1일 경우 Non-QoS Data frame을 전송하는 Strictly Ordered Service라고 한다.
다른 Frame에서는 0을 설정

FC(Frame Control)
  https://en.wikipedia.org/wiki/IEEE_802.11i-2004
802.11x Layer 2
  https://en.wikipedia.org/wiki/IEEE_802.11#Layer_2_.E2.80.93_Datagrams


2.2 MPDU의 FC(Frame Control) 의 Type 과 Subtype 

FC(Frame Control)->Type에 따라 아래와 같이 Frame의 종류가 결정되고, SubType에 따라 세부 Frame으로 나누어진다.
  1. Control Frame
  2. Management Frame
  3. Data Frame

FC(Frame Control)->Type의 Frame 구조

  https://flylib.com/books/en/2.799.1.29/1/

MLME 및 FC->SubType 메뉴
  http://dlrudwo.tistory.com/entry/WLAN-MAC-FRAME


2.2.1 FC(Frame Control) 의 Control Frame 
CSMA/CA 포함 한 802.11에서 사용되어지는 제어 Frame들이며, 아래는 그들 중 일부이다.
기본통신을 위해 RTS/CTS 와 ACK는 중요하며 성능향상을 위한 Block Ack Request/Block Ack도 중요하다  (9.10)


https://flylib.com/books/en/2.799.1.29/1/


  • CSMA/CA(Carrier-Sense Multiple Access/Collision Avoidance)
Ethernet CSMA/CD 거의 동일
RTS/CTS 사용목적은 Serial 통신처럼 안전한 통신을 위해서 Flow Control 이라고 보면된다.
  https://ko.wikipedia.org/wiki/IEEE_802.11_RTS/CTS
ACK Control Frame:
PS-Poll (Power Save Poll) Control Frame:


2.2.2 FC(Frame Control)의 Management Frame
MMPDU(MAC management protocol data unit)라고 불리우며, 802.11의 관리를 하는 Frame 이며, 아래의 Frame들로 구성된다.



https://flylib.com/books/en/2.799.1.29/1/


상위세부내역은 다 나오지 않으며, 상위 표에서 더 참조하시길 
IEEE 802.11 2007 문서 7.2.3 Management frames 참조해도 됨  
현재 2007년꺼 WIFI Spec 밖에 없음 

  • WIFI Scan 방식 
Passive Scan 방식 과 Active Scan 방식이 존재하며 아래와 같이 사용되어지는 Management Frame 이 다르다.  


  • WIFI Passive Scan 방식 
Management Frame 중 beacon 사용 
WIFI AP가 경우 주기적으로 Beacon 를 보내는 방식이다. 
WIFI STA의 경우 이 Beacon을 받아 WIFI AP 정보를 알아 SSID Scan 진행하는 방식으로 STA 입장에서는 Passive 방식이다. 

  • WIFI Active Scan 방식 
Management Frame 중 Prove Request/Probe Response 사용 
WIFI STA 입장에서 직접 WIFI AP의 정보를 얻어 가는 방식이라서 Active Scan이라고 한다.
WIFi STA이 Prove Request를 WIFI AP에게 보내고 이에 응답으로 Probe Response 받는 방식이다. 


https://mrncciew.com/2014/10/27/cwap-802-11-probe-requestresponse/

WIFI Passive Scan/Active Scan 차이 

Authentiction Frame 관련
인증에 관련된 부분 

Action Frame


2.2.3 FC(Frame Control)의 Data Frame

  • MPDU / MPDU+QoS Data Frame 비교 

https://flylib.com/books/en/2.799.1.29/1/


Address4의 경우는 사용될 경우가 있고 , 사용되지 않을 경우가 있다.
관련사항은 아래의 MPDU->FC->ToDS/FromDS를 참고



3. WIFI(802.11) 과 Ethernet 의 De/Encapsulation

802.11의 Data Frames은 일반적으로 802.3(Ethernet 2)기반으로 통신한다.
802.11 Layer에 포함해서 802.3 Data 넣는 방법이 802.2 LLC/SNAP을 사용하여 전송한다.

  • 802.2 LLC PDU 
802.2 LLC Header Information
DSAP address SSAP address Control
8 bits 8 bits 8 or 16 bits multiple of 8 bits

SAP(Service Acess Points) 
DSAP(Destination SAP)
SSAP(Source SAP)

  • 802.2 LLC에서 SNAP(SubNetwork Access Protocol) 추가확장 
802.2 LLC Header SNAP extension Upper layer data
DSAP SSAP Control OUI Protocol ID
8 bits 8 bits 8 or 16 bits 24 bits 16 bits multiple of 8 bits

  • 802.2 LLC/SNAP를 802.11 적용의 예 
  1. DSAP/SSAP는 0xAA 설정 (SNAP 적용) 
  2. Control은 8bit로 0x03 설정
  3. OUI는 모두 0으로 설정
  4. Protocol ID는 EtherType으로 설정
802.11 LLC/SNAP Header
LLC Header SNAP-OUI SNAP-EtherType
AA-AA-03 00-00-00 08-00

LSAP:  0xAA : SNAP 
EtherType: 0x0800 : IPv4  


상위 세부사항은 아래 사이트에서 참고하며, EtherType은 각 역할에 따라변경되므로 주의 

802.3 기반의 Layer2 Ethernet Type
802.11->802.3 에서 사용되어지는 Ethernet Type이며, 인증관련부분도 간단히 소개 

LAN Layer2 
 



  • Ethernet/802.3 LAN to 802.11 LAN Encapsulation Example
상위에서 적용된 것을 802.11 LLC Header 에 적용하여 Encapsulation 의 예제 
Protocol Type/Length LLC Header
802.11 LLC Header
IP 08-00 --
AA-AA-03-00-00-00-08-00
IP 802.3 length AA-AA-03-00-00-00-08-00
AA-AA-03-00-00-00-08-00
IP ARP 08-06 --
AA-AA-03-00-00-00-08-06
AppleTalk (1) 80-9B --
AA-AA-03-00-00-00-80-9B
AppleTalk (2) length AA-AA-03-08-00-07-80-9B
AA-AA-03-08-00-07-80-9B
AppleTalk AARP (1) 80-F3 --
AA-AA-03-00-00-F8-80-F3
AppleTalk AARP (2) length AA-AA-03-00-00-00-80-F3
AA-AA-03-00-00-00-80-F3
IPX Ethernet II 81-37 --
AA-AA-03-00-00-F8-81-37
IPX SNAP length AA-AA-03-00-00-00-81-37
AA-AA-03-00-00-00-81-37
IPX 802.2 length E0-E0-03
E0-E0-03
IPX 802.3 length FF-FF
FF-FF




  • 802.11 LAN to Ethernet/802.3 LAN Decapsulation Example 

Protocol 802.11 LLC Header
Type/Length 802.3 LLC Header
IP AA-AA-03-00-00-00-08-00
08-00 --
IP 802.3 AA-AA-03-00-00-00-08-00
08-00 --
IP ARP AA-AA-03-00-00-00-08-06
08-06 --
AppleTalk (1) AA-AA-03-00-00-00-80-9B
80-9B --
AppleTalk (2) AA-AA-03-08-00-07-80-9B
length AA-AA-03-08-00-07-80-9B
AppleTalk AARP (1) AA-AA-03-00-00-F8-80-F3
80-F3 --
AppleTalk AARP (2) AA-AA-03-00-00-00-80-F3
length AA-AA-03-00-00-00-80-F3
IPX Ethernet II AA-AA-03-00-00-F8-81-37
81-37 --
IPX SNAP AA-AA-03-00-00-00-81-37
length AA-AA-03-00-00-00-81-37
IPX 802.2 E0-E0-03
length E0-E0-03
IPX 802.3 FF-FF
length FF-FF


  Ethernet/802.3 LAN to 802.11 LAN Encapsulation 관련문서

https://flylib.com/books/en/2.519.1/encapsulation_of_higher_layer_protocols_within_80211.html


3.1 WLAN과 LAN과 호환 

1.2에서 설명했듯이 LLC/SNAP을 이용하여 WLAN(802.11)과 LAN(802.3)은 서로 호환이 가능하며, WLAN은 User 입장에서는 LAN처럼 사용이 가능하다.
Ethernet Encapulation 기능을 Soft로 진행을 하면, SoftMac이라 호칭하며, WLAN Chip에서 처리를 하면 이를 FullMac이라고 한다.
802.11 의 Layer 2 Frame 단위를 MPDU(Media access control Protocol Data unit)

  • Data Frames의 구성 
802.11 Layer기반에 LLC/SNAP 추가하여 사용을 하여 아래그림과 같이802.3과 802.11을 호환되도록 한다.

  • Ethernet De/Encapsulation 
  1. Ethernet Encapsulation 은 AP/STA/IBSS의 TX 
  2. Ethernet De-Encapsulation 은 AP/STA/IBSS의 RX 

  • 802.11 Layer의  전체 구성 
Frame Control의 Type에 의해 Data Frame들에게만 적용되고 Layer의 구성은 다음과 같다.
  1. Frame Control :  상위 참조 
  2. Duration ID
  3. Address1/2/3 
  4. Sequence Control 
  5. LLC/SNAP : 전체 8 Byte 사용, 상위 참조 
  6. DATA : Ethernet Data
  7. FCS

  •  Address 3개의 사용
  1. Address 1 : RA( Receiver Address)
  2. Address 2 : TA( Transmitter Address)
  3. Address 3 : Recevier에 의해 Filer 목적으로 사용. 


3.2 WIFI AP 와 STA 의 Ethernet De/Encapsulation 

  • Data Frame 구조 
802.11 내에 LLC/SNAP 포함하고 있으며, LLC/SNAP 설정과 EtherType은 상위 3번의 예제를 참고하자.
Data Frame은 송신자가 ACK Frame을 받지 못한다면 재수신 한다.


802.11 Data Frame
802.11 Header 24bytes 802.2 LLC/SNAP 8bytes 802.11-DATA 802.11-CRC
Frame Control Duration /ID Addr1 (RA) Addr2 (TA) Addr3 Sequence Control DSAP SSAP Control ORGCode (OUI) LLC-Type (PrtocolID) Data FCS
2 B 2 B 6 B 6 B 6 B 2 B 1 B 1 B 1 B 3 B 2 B 0~ 2304 B 4 B

재전송 구조
일반적인 전송은 ACK를 사용하지만, 상위 Frame Aggregation를 이용할 경우, RTS/CTS 도 같이 이용
  https://warpproject.org/trac/wiki/802.11/MAC/Lower/Retransmissions
  https://witestlab.poly.edu/blog/802-11-wireless-lan-2/


https://support.mangocomm.com/docs/wlan-user-guide/mac/framework_high_eth_encap.html

AP기능
  https://warpproject.org/trac/wiki/802.11/MAC/Upper/AP


https://support.mangocomm.com/docs/wlan-user-guide/mac/framework_high_eth_encap.html


STA의 기능
  https://warpproject.org/trac/wiki/802.11/MAC/Upper/STA

상위구조를 보면, BSSID와 Wireless Mac Address가 별도로 존재하며, 이는 AP에서는 두 주소가 구분이 될 필요가 없지만, STA에서는 구분이 되어 사용이 되어진다.

  • AP->STA 통신 
AP의 TX Encapsulation (상위 그림참조)
  1. Addr1-RA :  DA
  2. Addr2-TA :  BSSID
  3. Addr3 :  SA

STA RX Decapsulation (상위 그림 참조)
  1. Addr1-RA :  DA
  2. Addr2-TA :  BSSID
  3. Addr3 :  SA
AP에는 Addr2-TA는 Wireless Mac Address or BSSID로 설정

  • STA->AP 통신 
STA의 TX Encapsulation (상위 그림 참조)
  1. Addr1-RA:  BSSID
  2. Addr2-TA:  STA-Wireless MAC Address
  3. Addr3 :  DA

AP RX Decapsulation (상위 그림 참조)
  1. Addr1-RA:  BSSID
  2. Addr2-TA:  SA
  3. Addr3:  DA

DA/SA : 802.3 Mac Layer 의 주소


3.3 WIFI IBBS 의 Ethernet De/Encapsulation  

IBBS(independent basic service set)로 ad hoc이라고 하며 P2P통신을 할때 한다.
Wireless Mac Address로 서로를 구분

  • IBBS->IBBS 통신 
IBBS의 TX Encapsulation
  1. Addr1-RA :  DA
  2. Addr2-TA :  Wireless MAC Address
  3. Addr3 :  BSSID

IBBS RX Decapsulation
  1. Addr1-RA :  DA
  2. Addr2-TA :  SA 
  3. Addr3 :  BSSID

DA/SA : 802.3 Mac Layer 의 주소

https://support.mangocomm.com/docs/wlan-user-guide/mac/framework_high_eth_encap.html


IBBS의 기능 
  https://warpproject.org/trac/wiki/802.11/MAC/Upper/IBSS

Ethernet Encapsulation
  https://warpproject.org/trac/wiki/802.11/MAC/Upper/MACHighFramework/EthEncap
  https://dot11ap.wordpress.com/ieee-802-11-frame-format-vs-ieee-802-3-frame-format/

WNIC (SoftMac vs FullMac)
  https://en.wikipedia.org/wiki/Wireless_network_interface_controller


4. 기타사항 링크

  • WIFI Driver 종류 및 지원사항 (중요)
  1. Interface 부분확인 (SDIO/USB/PCI)
  2. WIFI Driver에서 각 지원되는 인증사항 확인
  3. Monitor Mode 지원사항 확인
  4. AP Mode 지원사항 확인
  5. Ad-Hoc Mode지원여부 확인 
broadcom의 경우 
  1. brcmfmac:  Full MAC의 경우 Ad-hoc mode 미지원
  2. brcmsmac:  Soft MAC의 경우 Ad-hoc mode 지원 
  https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers


MAC Format 및 Capture
  https://witestlab.poly.edu/blog/802-11-wireless-lan-2/
  https://zone13.io/post/wifi-monitoring-using-raspberry-pi/


LLC/SNAP
  https://en.wikipedia.org/wiki/Subnetwork_Access_Protocol
  https://tools.ietf.org/id/draft-ietf-ipwave-ipv6-over-80211ocb-20.html
  https://tools.ietf.org/id/draft-ietf-ipwave-ipv6-over-80211ocb-20.html#epd
  https://stackoverflow.com/questions/32233879/is-there-an-ethertype-field-in-802-11-header
  http://www.uniroma2.it/didattica/TPI1/deposito/tpi1-1112-03-wlan-v1.pdf
  ftp://ftp.informatik.hu-berlin.de/pub/doc/o-reilly/9780735612914/cd_contents/TrainingSlides/01_LAN_Technologies.PPT

Roaming 구조
  https://www.cs.auckland.ac.nz/courses/compsci314s1t/lectures/314s1-17-19-ether-4up.pdf