1. 程式人生 > >IoT裝置WiFi配網及現狀

IoT裝置WiFi配網及現狀

一、引言

現下,物聯網(IoT/IoE)中智慧產品普遍採用WiFi與路由器完成連線,然後通過手機和雲端進行資料互動,拓撲結構如下:

由上圖可見,APP和智慧產品之間並沒有直接的互動,而是夾雜了”雲“端(當然,我們也可以直接走區域網)。
問題來了:智慧硬體如智慧插座、智慧空調、智慧空氣淨化器等,由於不具備人機互動介面,所以不能像電腦一樣的搜尋、選擇指定的AP並輸入連線密碼。
WiFi配網,就是用來解決智慧裝置的聯網需求的。進一步來說就是通過某種方式把AP的名稱(SSID)和密碼(PWD)告知智慧裝置中的WiFi模組,之後智慧裝置根據收到的SSID和密碼連線指定AP。

二、主流配網方式

目前流行的WiFi配置模式一般有以下兩種:
1、SoftAP配網:智慧裝置的WiFi模組切換到AP模式,手機作為STA連線智慧裝置的AP,之後雙方通過建立一個Socket連線互動資料(之前雙方約定好埠)。
2、快連/一鍵配置模式:手機APP把相應資訊打包到802.11資料包的特定區域,傳送到周圍環境中;智慧裝置的WiFi模組處於混雜模式(Promiscuous Model)下,監聽網路中的所有報文,直到解析出需要的資訊(之前雙方約定好資料格式)。

可見,兩者都需要WiFi硬體的支援。SoftAP方式需要硬體支援AP模式,快連/一鍵配置方式需要硬體支援混雜模式(有些WiFi晶片廠家為了省電關閉了混雜模式)。

三、SoftAP配網

以Linux終端為例: 首先, 切AP模式,指令碼示例:
#!/bin/sh
 
killall -q wpa_supplicant
killall -q udhcpc
killall -q udhcpd
killall -q hostapd
 
# 以上:清除當前網路相關程序
echo "start switch to AP mode..."
 
mkdir -p /var/lib/misc
touch /var/lib/misc/udhcpd.leases
ifconfig wlan0 down
ifconfig wlan0 10.168.1.1 up
# 以上:當前網絡卡IP為10.168.1.1
 
hostapd -B /etc/wifi/hostapd.conf
# 以上:進入AP模式。不同驅動進入AP模式的方式不同
udhcpd /etc/wifi/udhcpd.conf
# 以上:啟動udhcpd,為連線到AP上的裝置分配IP

 

/etc/wifi/hostapd.conf配置檔案示例:

/etc/wifi/hostapd.conf
# hostapd服務配置檔案
interface=wlan0
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
hw_mode=g
channel=1
beacon_int=100
driver=nl80211
ignore_broadcast_ssid=0
macaddr_acl=0
#auth_algs=1
wpa=2
wpa_passphrase=AP_PASSWD
rsn_pairwise=CCMP TKIP

 

/etc/wifi/udhcpd.conf配置檔案示例:

/etc/wifi/udhcpd.conf
# udhcpd服務配置檔案
interface	wlan0
start	10.168.1.2
end	10.168.1.254
opt	dns	10.168.1.1
opt	router	10.168.1.1
option subnet 255.255.255.0
option domain localhost
option lease 864000

 

其次,智慧裝置起一個socket等待裝置連線自己,之後雙方通過socket通訊。智慧裝置收到WiFi資訊,儲存到/etc/wifi/wpa_supplicant.conf檔案

最後,智慧裝置退出AP模式並連線指定的路由器。指令碼示例:

#!/bin/sh
 
ifconfig wlan0 down
killall -q wpa_supplicant
killall -q udhcpd
killall -q udhcpc
killall -q hostapd
ifconfig wlan0 up
# 以上:清除當前網路相關程序
 
wpa_supplicant -B -Dnl80211 -iwlan0 -c/etc/wifi/wpa_supplicant.conf
# 以上:連線路由器
 
udhcpc -R -i wlan0
# 以上:向路由器請求IP等資訊

 

四、快連/一鍵配置

4.1 無線網絡卡的工作模式

無線網絡卡是採用無線訊號進行資料傳輸的終端。無線網絡卡通常包括 4 種模式,分別是廣播模式、多播模式、直接模式和混雜模式。如果使用者想要監聽網路中的所有訊號,則需要將網絡卡設定為監聽模式。監聽模式就是指混雜模式,下面將對網絡卡的幾種工作模式進行詳細介紹。如下所述:
(1)廣播模式(BroadCast Model):它的實體地址(Mac)是 0XFFFFFF 的幀為廣播幀,工作在廣播模式的網絡卡接收廣播幀。
(2)多播傳送(MultiCast Model):多播傳送地址作為目的實體地址的幀可以被組內的其他主機同時接收,而組外主機卻接收不到。但是,如果將網絡卡設定為多播傳送模式,它可以接收所有的多播傳送幀,而不論它是不是組內成員。
(3)直接模式(Direct Model):工作在直接模式下的網絡卡只接收目的地址是自己 Mac地址的幀。
(4)混雜模式(Promiscuous Model):工作在混雜模式下的網絡卡接收所有的流過網絡卡的幀,通訊包捕獲程式就是在這種模式下執行的。

 

4.2 快連/一鍵配置概述

一鍵配置通過802.11資料包的特定區域傳輸資料。802.11是IEEE制定的無線區域網協議,以802.2的邏輯鏈路控制封裝來攜帶IP封包,因此能夠以802.2 SNAP格式接收無線網路資料。如果開啟wifi晶片的混雜模式監聽空間中的無線訊號,就會得到如下圖所示的資料包: 

從無線訊號監聽方的角度來說,不管無線通道有沒有加密,Length、Destination、BSSID、Source、Seq、FCS欄位總是暴露的,因此實用訊號監聽方法存在從這些欄位獲取資訊的可能。但從傳送方的角度來說,由於作業系統的限制(比如ISO或者Android),BSSID、Source、Seq、FCS等欄位的控制需要很高的控制權限,傳送方一般是很難拿到的。綜合這些客觀條件,目前有組播方式和廣播方式兩種一鍵配置發包手段來完成資訊的傳輸。

 

4.3 快連/一鍵配置資料編碼

 應用層主要將一鍵配置相關的SSID和密碼資訊經過一定規則編碼後進行傳輸。一鍵配置應用層資料編碼如下表:

 

4.4 組播一鍵配置分量

由於802.11處理組播時具有Destination的後三位元組與目的組播地址後三位元組相同的特性,在實際使用中可以使用組播地址的變化來傳遞資訊。而MAC地址是乙太網二層使用的一個48bit(6位元組十六進位制數)的地址,用來標識裝置位置。MAC地址分成兩部分,前24位是組織唯一識別符號(OUI, Organizationally unique identifier),後24位由廠商自行分配。MAC地址有單播、組播、廣播之分。單播地址(unicast address)表示單一裝置、節點,多播地址或者組播地址(multicast address、group address)表示一組裝置、節點,廣播地址(broadcast address)是組播的特例,表示所有地址,用全F表示:FF-FF-FF-FF-FF-FF。當然,三層的IP地址也有單播、組播、廣播之分。MAC的結構如下圖:

使用組播完成一鍵配置時,802.11資料包的Destination欄位中的Organization Assigned Portion的內容即為傳送方填寫的組播地址的後23Bit。每一次發包過程可以傳輸23Bit,整個發包過程先發Version資料,然後再發Data資料。迴圈連續傳送,每包資料的間隔為10ms,直到裝置拿到所有資訊並校驗通過,然後通過Socket通知傳送端。

為了提高可靠性,組播發包的過程的兩個階段必須按照一定規則進行編碼和校驗。

 

4.5 廣播一鍵配置分量

一鍵配置還可以基於Length這一欄位傳輸資訊,傳送方可以通過改變其所需要傳送資料包的長度進行很方便的控制。所以,只要制定出一套利用長度編碼的通訊協議,就可利用802.2 SNAP資料包中的Length欄位進行資訊傳遞。

在實際應用中,我們採用UDP廣播包作為資訊的載體。資訊傳送方向空間中傳送一系列的UDP廣播包,其中每一包的長度(即Length欄位)都按照一定的規範進行編碼,資訊接收方利用混雜模式監聽空間中的無線訊號,並從資料鏈路層擷取802.2 SNAP格式資料包,便可得到已編碼的Length欄位,隨後接收方便可根據協議解析出需要的資訊。整個廣播發包過程分成同步階段、Version階段,Data階段,其中同步階段的資料包發包間隔為5ms,Verson和資料的發包間隔為10ms,每輪結束後暫停50ms。同步階段需要持續傳送2秒鐘,Version和資料階段需要連續傳送20次為一輪,然後不斷重複傳送同步階段和資料階段,如圖所示:

五、WiFi配網應用現狀

快連/一鍵配置暴露的問題:
(1)目前家庭用的路由器無線網路的模式有802.11b only ,802.11g only, 802.11n only,802.11bg mixed,802.11bgn mixed,路由上預設的設定幾乎全部為802.11n only和802.11bgn mixed等高速路由模式,手機本身傳送的UDP廣播/組播包的速率也快,而智慧裝置的WiFi模組由於效能限制,其在處理速度上可能無法抓取完整的資訊,導致快連/一鍵配置失敗。

(2)配網環境中如果存在多個同類型並且處於快連/一鍵配置的裝置,可能存在多個裝置都被連上了路由器。

(3)配網過程中有相似的同頻無線訊號的干擾,也有機率導致失敗。

綜上,在當前“高效能手機+高速路由”普及背景下,“快連/一鍵配置配網”愈來愈顯現出其在包羅永珍的消費者區域網環境下難以勝任的窘境。目前主流廠商,其配網在較早的時候已經取消了“快連/一鍵配置”,主推“SoftAP”或基於"藍芽+WiFi"模組的藍芽直連等配網方式。