ESP8266的网状网络(Mesh Network)
網狀網絡(Mesh Network)是一種在網絡節點間透過動態路由的方式來進行資料與控制指令的傳送。這種網絡可以保持每個節點間的連線完整,當網絡拓撲中有某節點失效或無法服務時,這種架構允許使用“跳躍”的方式形成新的路由后將訊息送達傳輸目的地。
在網狀網絡中,所有節點都可與拓撲中所有節點進行連線而形成一個“局域網絡”。網狀網絡與一般網絡架構的差異處在于,所有節點可以透過多次跳躍進行數據通信,但它們通常不是移動式裝置。網狀網絡可以視為是一種點對點的架構。移動式點對點網絡與網狀網絡在架構上是非常相似的,只是移動式點對點網絡還必須隨時更新組態以因應各節點移動的情形。
網狀網絡自我調校機制:即使在拓撲中有節點無法服務或過于忙碌,網絡還是可以正常運作。因而形成一個高度可信賴的網絡架構。這種架構適用于無線網絡、有線網絡甚至是軟件架構。
當一個節點啟動時(綠色LED燈亮),所有節點會定時收集廣播訊息來決定拓撲的形成。另外,當一個節點失效時,原本透過此節點進行通信的路徑會重新找一條替代路徑,因此網絡可以保持連接性不被中斷。無線網絡是網狀網絡最典型的應用,無線網狀網絡無線最初是軍事用途,但在近十年來已歷經重大的改進。
無線網狀網絡至今已歷經三代的進化,每次反復的演進都提供了更好的可靠度以及多樣的功能。隨著無線電的成本快速下降,單一頻段的無線網狀網絡節點產品逐步發展成可支援多頻段,利用額外的無線電波提供額外的功能-例如:客戶端存取、后置網絡(最后一哩)或在行動應用中掃描信道以提供快速的信號切換。網狀網絡節點的設計也逐漸模組化-一個可以支援多張復合頻段網卡的盒子-每張網卡可以在不同的頻率下運作。因此,第三代的網狀網絡技術賦予了一套全新的應用。包括了即時的影像監控、邊界安全或語音通信。
網狀網絡拓撲結構實例
網狀網絡有可能由固定或是移動裝置所構成,所以實際的解決方案也會因為通信環境所改變。VoIP是網狀網絡的應用之一,借由相關QoS機制可以讓語音分組盡速在網狀網絡中傳遞。 某些近期的應用如下:
Mesh網絡的優勢
與傳統的WLAN相比,無線Mesh網絡具有幾個無可比擬的優勢:
1.快速部署和易于安裝。 安裝Mesh節點非常簡單,將設備從包裝盒里取出來, 接上電源就行了。由于極大地簡化了安裝,用戶可以很容易增加新的節點來擴大無線網絡的覆蓋范圍和網絡容量。在無線Mesh網絡中,不是每個Mesh節點都 需要有線電纜連接,這是它與有線AP最大的不同。 Mesh的設計目標就是將有線設備和有線AP的數量降至最低,因此大大降低了總擁有成本和安裝時間,僅這一點帶來的成本節省就是非常可觀的。無線Mesh 網絡的配置和其他網管功能與傳統的WLAN相同,用戶使用WLAN的經驗可以很容易應用到Mesh網絡上。
2.非視距傳輸(NLOS)。利用無線Mesh技術可以很容易實現NLOS配 置,因此在室外和公共場所有著廣泛的應用前景。與發射臺有直接視距的用戶先接收無線信號,然后再將接收到的信號轉發給非直接視距的用戶。按照這種方式,信 號能夠自動選擇最佳路徑不斷從一個用戶跳轉到另一個用戶,并最終到達無直接視距的目標用戶。這樣,具有直接視距的用戶實際上為沒有直接視距的鄰近用戶提供 了無線寬帶訪問功能。無線Mesh網絡能夠非視距傳輸的特性大大擴展了無線寬帶的應用領域和覆蓋范圍。
3.健壯性。實現網絡健壯性通常的方法是使用多路由器來傳輸數據。如果某個路由 器發生故障,信息由其他路由器通過備用路徑傳送。E-mail就是這樣一個例子,郵件信息被分成若干數據包,然后經多個路由器通過Internet發送, 最后再組裝成到達用戶收件箱里的信息。Mesh網絡比單跳網絡更加健壯,因為它不依賴于某一個單一節點的性能。在單跳網絡中,如果某一個節點出現故障,整 個網絡也就隨之癱瘓。而在Mesh網絡結構中,由于每個節點都有一條或幾條傳送數據的路徑。如果最近的節點出現故障或者受到干擾,數據包將自動路由到備用 路徑繼續進行傳輸,整個網絡的運行不會受到影響。
4.結構靈活。在單跳網絡中,設備必須共享AP。如果幾個設備要同時訪問網絡,就可能產生通信擁塞并導致系統的運行速度降低。而在多跳網絡中,設備可以通過不同的節點同時連接到網絡,因此不會導致系統性能的降低。Mesh網絡還提供了更大的冗余機制和通信負載平衡功能。在無線Mesh網絡中,每個設備都有多個傳輸路徑可用,網絡可以根據每個節點的通信負載情況動態地分配通信路由,從而有效地避免了節點的通信擁塞。而目前單跳網絡并不能動態地處理通信干擾和接入點的超載問題。
5.高帶寬。無線通信的物理特性決定了通信傳輸的距離越短就越容易獲得高帶寬,因為隨著無線傳輸距離的增加,各種干擾和其他導致數據丟失的因素隨之增加。因此選擇經多個短跳來傳輸數據將是獲得更高網絡帶寬的一種有效方法,而這正是Mesh網絡的優勢所在。
在Mesh網絡中,一個節點不僅能傳送和接收信息,還能充當路由器對其附近節點轉發信息,隨著更多節點的相互連接和可能的路徑數量的增加,總的帶寬也大大增加。
此外,因為每個短跳的傳輸距離短,傳輸數據所需要的功率也較小。既然多跳網絡通常使用較低功率 將數據傳輸到鄰近的節點,節點之間的無線信號干擾也較小,網絡的信道質量和信道利用效率大大提高,因而能夠實現更高的網絡容量。比如在高密度的城市網絡環 境中,Mesh網絡能夠減少使用無線網絡的相鄰用戶的相互干擾,大大提高信道的利用效率。
Mesh網絡在IoT領域的意義
在前面說了一大堆的理論,那Mesh網絡到底對于IoT的應用有何意義呢?
首先,我們現在普遍的WIFI都是有距離限制的,這個距離是由連接節點與路由器之間的距離所決定的。現在延長這種傳輸距離的辦法主要有兩種:
但這些做法都要求接入到網絡的設備必須先連接到路由器或者中繼器中。換一個說法,如果用ESP8266來舉例的話就是說你的ESP8266必須先執行以下的代碼:
void setup() {WiFi.mode(WIFI_STA);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("");Serial.println("WiFi connected"); Serial.println("IP address: ");Serial.println(WiFi.localIP()); }只有WIFI連接上獲取了IP地址后我們才能通過TCP/IP的方式與其它的節點進行通信。
思考:如果我們的環境內沒有路由器呢?兩個ESP8266之間能愉快地通信嗎?
答案是:能!
ESP8266 實現的Mesh Node
將以下的程序分別寫入兩個不同的ESP8266,然后在兩臺機器上通過串口分別連接ESP8266并打開串口監視器。
#include <ESP8266WiFi.h> #include <ESP8266WiFiMesh.h>unsigned int request_i = 0; unsigned int response_i = 0;String manageRequest(String request);/* Create the mesh node object */ ESP8266WiFiMesh mesh_node = ESP8266WiFiMesh(ESP.getChipId(), manageRequest);/*** Callback for when other nodes send you data** @request The string received from another node in the mesh* @returns The string to send back to the other node*/ String manageRequest(String request) {/* Print out received message */Serial.print("received: ");Serial.println(request);/* return a string to send back */char response[60];sprintf(response, "Hello world response #%d from Mesh_Node%d.", response_i++, ESP.getChipId());return response; }void setup() {Serial.begin(115200);delay(10);Serial.println();Serial.println();Serial.println("Setting up mesh node...");/* Initialise the mesh node */mesh_node.begin(); }void loop() {/* Accept any incoming connections */mesh_node.acceptRequest();/* Scan for other nodes and send them a message */char request[60];sprintf(request, "Hello world request #%d from Mesh_Node%d.", request_i++, ESP.getChipId());mesh_node.attemptScan(request);delay(1000); }請注意,我以上的代碼是沒有進行任何的WIFI連接的!接下來打開串口監視器查看運行效果:
總結
以上是生活随笔為你收集整理的ESP8266的网状网络(Mesh Network)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Zabbix server is not
- 下一篇: 概述nodejs核心机制