設(shè)備:
樹莓派3b+
wifi:TL-WN722N V1
參考資料:
Mesh網(wǎng)絡(luò)拓?fù)?/h2>
如下圖所示倾贰,mesh網(wǎng)絡(luò)由MPP鹦倚、MP、MAP三種設(shè)備組成:
MPP(mesh portal point):連接無線mesh網(wǎng)絡(luò)和其他類型的網(wǎng)絡(luò)鞭呕,并與mesh網(wǎng)絡(luò)內(nèi)部MP/MAP節(jié)點(diǎn)進(jìn)行通信王悍。這個(gè)節(jié)點(diǎn)具有Portal功能潮酒,通過這個(gè)節(jié)點(diǎn)块仆,mesh內(nèi)部的節(jié)點(diǎn)可以和外部網(wǎng)絡(luò)通信徙歼。
MP(mesh point):在mesh網(wǎng)絡(luò)中,使用IEEE 802.11sMAC和PHY協(xié)議進(jìn)行無線通信姊扔,并且支持mesh功能的節(jié)點(diǎn)惠奸。該節(jié)點(diǎn)支持自動(dòng)拓?fù)洹⒙酚傻淖詣?dòng)發(fā)現(xiàn)恰梢、數(shù)據(jù)包的轉(zhuǎn)發(fā)等功能佛南。
MAP(mesh access point):任何支持AP功能的mesh point梗掰,可以為Station提供接入功能。
這三種設(shè)備配置也不一樣嗅回,他們之間是通過mesh鏈路連接在一起的及穗,但是需要保證mesh節(jié)點(diǎn)工作的信道號(hào)和mesh id號(hào)必須相同!
首先要能ssh連上樹莓派绵载,由于樹莓派本身的wifi模塊不支持mesh網(wǎng)絡(luò)埂陆,所以挑選了TL-WN722N V1
給wifi設(shè)備安裝驅(qū)動(dòng)
查看http://www.reibang.com/p/6407472e2550
設(shè)置開放式網(wǎng)狀網(wǎng)絡(luò)
在此示例中,我們將配置一個(gè)mesh節(jié)點(diǎn)以使用mesh網(wǎng)絡(luò)娃豹,該節(jié)點(diǎn)將自動(dòng)與使用相同配置(mesh和信道)的任何其他對(duì)等節(jié)點(diǎn)連接焚虱。
每個(gè)mesh節(jié)點(diǎn)都需要配置如下:
使用編譯iw的內(nèi)核并正確安裝引導(dǎo)多個(gè)節(jié)點(diǎn)。
選擇一個(gè)mesh id懂版。mesh id是一個(gè)將在mesh節(jié)點(diǎn)信標(biāo)中使用的字符串鹃栽。只有具有相同mesh id的網(wǎng)格點(diǎn)才能相互通信。mesh id的最大長度為32個(gè)字節(jié)躯畴。在本文檔中民鼓,我們將網(wǎng)格ID稱為$MESH_ID。
在每個(gè)節(jié)點(diǎn)上為wlanN設(shè)備添加一個(gè)新的Mesh接口蓬抄。您可以選擇網(wǎng)格接口的名稱丰嘉。“mesh”是一種流行的選擇倡鲸。在本文中供嚎,我們將mesh 接口稱為$MESH_IFACE,我起名為mesh0。
我的想使用第二張網(wǎng)卡也就是wlan1來做mesh組網(wǎng)峭状,過程如下:
如果遇到了這個(gè)錯(cuò)誤command failed: Device or resource busy (-16)
克滴,就先把網(wǎng)卡關(guān)掉在啟用
ip link set wlan1 down
添加mesh
iw dev wlan1 interface add mesh0 type mp
查看是否創(chuàng)建成功
ifconfig -a | grep mesh0
輸出:mesh0: flags=4098<BROADCAST,MULTICAST> mtu 1500
注意:默認(rèn)情況下,所有mesh接口都從通道1開始优床。
iw dev mesh0 set channel 1
關(guān)閉mesh0并設(shè)置mesh id
ip link set mesh0 down
iw dev mesh0 set meshid mymesh
啟用mesh0
ifconfig mesh0 up
分配ip劝赔,mesh組網(wǎng)要在同一個(gè)網(wǎng)段下
ifconfig mesh0 192.168.8.191
這樣一臺(tái)設(shè)備就配置好了。配置其他設(shè)備的時(shí)候只需要分陪不同的IP即可胆敞。在默認(rèn)配置中着帽,mesh節(jié)點(diǎn)將自動(dòng)嘗試創(chuàng)建所有其他具有相同mesh id的網(wǎng)格節(jié)點(diǎn)的對(duì)等鏈接。
或者使用另一種方式:
使用phy接口移层,使用iw list
仍翰,查看網(wǎng)卡對(duì)應(yīng)的phy,我的wlan1對(duì)應(yīng)的phy1
先關(guān)掉wlan1
ip link set wlan1 down
iw phy phy1 interface add mesh0 type mp mesh_id mymesh
驗(yàn)證是否創(chuàng)建成功
ifconfig -a | grep mesh0
啟用mesh0
ifconfig mesh0 up
設(shè)置ip观话,假設(shè)為10.0.0.1
ifconfig mesh0 10.0.0.1
驗(yàn)證
使用iw dev mesh0 station dump
和iw dev mesh0 mpath dump
命令檢查已建立的對(duì)等鏈接:
root@raspberrypi:/home/pi# iw dev mesh0 station dump
Station 00:11:7f:1b:a7:6b (on mesh0)
inactive time: 760 ms
rx bytes: 70526
rx packets: 915
tx bytes: 170
tx packets: 3
tx retries: 0
tx failed: 0
rx drop misc: 0
signal: -4 [-4] dBm
signal avg: -27 [-27] dBm
Toffset: 18446744073126120807 us
tx bitrate: 24.0 MBit/s
rx bitrate: 24.0 MBit/s
mesh llid: 6895
mesh plid: 26132
mesh plink: ESTAB
mesh local PS mode: ACTIVE
mesh peer PS mode: ACTIVE
mesh non-peer PS mode: ACTIVE
authorized: yes
authenticated: yes
associated: yes
preamble: long
WMM/WME: yes
MFP: no
TDLS peer: no
DTIM period: 2
beacon interval:1000
short slot time:yes
connected time: 340 seconds
iw dev mesh0 mpath dump
DEST ADDR NEXT HOP IFACE SN METRIC QLEN EXPTIME DTIM DRET FLAGS
00:11:7f:1b:a7:63 00:11:7f:1b:a7:63 mesh0 11 456 0 0 100 0 0x4
一些解釋:
Destination MAC Address:目地mac地址予借。此mesh路徑的目的地。直接路徑的目的地和下一跳具有相同的MAC地址。
Next-hop MAC address:下一跳地址灵迫。直接路徑的目的地和下一跳具有相同的MAC地址秦叛。
IFACE :專屬網(wǎng)的名稱
SN:此路徑的目標(biāo)序列號(hào)。 DSN用于確定節(jié)點(diǎn)路徑信息的“新鮮度”瀑粥。例如挣跋,假設(shè)節(jié)點(diǎn)接收到其路徑表中已經(jīng)存在的目的地的路徑響應(yīng)。如果路徑響應(yīng)的DSN較高狞换,則它將替換現(xiàn)有路徑避咆,因?yàn)樗鼘⒈徽J(rèn)為是較新的。
Air Time Link Metric:路徑的度量(或“成本”)修噪。較低的度量標(biāo)準(zhǔn)是首選牌借,并且在選擇了多個(gè)路徑的情況下,協(xié)議棧將選擇成本最低的協(xié)議(即:空中鏈路度量最低的協(xié)議)割按。該值是使用預(yù)期的吞吐量得出的(metric = 1 + 8192 / Expected_throughput_mbps)預(yù)期吞吐量(Expected_throughput_mbps)取決于驅(qū)動(dòng)程序(例如,某些包含重傳)磷籍。
Frame Queue Length:此網(wǎng)格路徑的排隊(duì)幀數(shù)适荣。
Expiration Time:此mesh路徑過期的時(shí)間(以jiffies為單位)
Discovery Timeout:路徑發(fā)現(xiàn)的剩余時(shí)間(如果正在發(fā)現(xiàn)此路徑)。
Discovery Retries:重試發(fā)現(xiàn)的次數(shù)(如果正在發(fā)現(xiàn)此路徑)院领。
Flags:它是一個(gè)位掩碼弛矛,由該路徑的以下狀態(tài)標(biāo)志組成:
MESH_PATH_ACTIVE = BIT(0),
MESH_PATH_RESOLVING = BIT(1),
MESH_PATH_DSN_VALID = BIT(2),
MESH_PATH_FIXED = BIT(3),
MESH_PATH_RESOLVED = BIT(4),