第四章:介紹 BACnet 虛擬鏈路層
平時除錯BACnet協議,一個好用的 BACnet 除錯工具和模擬器必不可少,推薦一款:
官網地址:https://www.redisant.cn/bacnetexplorer
虛擬鏈路層 (VLL) 背後的基本概念是向現有的 BACnet 網路層呈現某些網路拓撲和功能的檢視,利用新協議中內建的任何功能並根據需要新增功能以維護現有標準中的 BACnet 網路視點。
當前的介紹僅限於 IPv4,但 VLL 可以輕鬆為任何其他型別的網路開發。其概念是不僅使用其他協議的資料鏈路層,而是在節點和/或程序之間建立協作,以便從更高層協議的角度來看,它們被構造為資料鏈路。只要裝置或程序可以被唯一地識別,並且有一種方法可以將訊息分發給協作組中的所有裝置或程序,就可以使用新的虛擬鏈路層來定址它們。
在下圖中,BACnet 虛擬鏈路層 (BVLL) 的控制資訊被指定為 BACnet 虛擬鏈路控制資訊 (BVLCI)。每個 BVLCI 欄位至少有三個欄位:BVLC 型別、BVLC 功能和 BVLC 長度。請注意,BVLCI 型別欄位的值為 X'81'。這用於指示這是 BACnet/IP 的 BVLC 資訊,並將虛擬鏈路訊息與 NPCI 版本欄位(當前為 X'01')區分開來。(BACnet 隧道路由器傳送的訊息與 BACnet/IP 訊息的區別在於這個初始八位位元組。兩者都透過 UDP 傳送,原則上都可以由同一裝置在 X'BAC0' 的同一 UDP 埠上接收。)
每個不同的 BACnet/IP 訊息都與特定的 BVLC 功能相關聯。
B/IP單播
首先要討論的問題是裝置如何相互通訊。它們透過使用目標 B/IP 地址向對方傳送“單播”訊息來實現這一點。BACnet 訊息本身是如何打包的?顯而易見的解決方案是利用 UDP 資料包的“資料”部分來包含 APDU。IP 已經有一個網路層,因此最簡單的解決方案似乎是僅封裝 BACnet 幀的 APDU 部分。但 NPCI 可能包含重要資訊,例如版本號、優先順序、是否應將訊息路由到非 BACnet/IP 節點等。因此,整個 NPDU 都被封裝了。
另一個問題是,一些 BACnet/IP 裝置可能需要知道訊息是如何傳送的,是透過單播還是廣播定址。我們很快就會明白為什麼。由於一些商用 IP 協議實現不向接收者提供此資訊,因此我們必須建立一種萬無一失的方法,使定址模式可用於更高的協議層。輸入 BVLL“原始單播 NPDU”和“原始廣播 NPDU”。
BVLCI 表示這是一個原始單播-NPDU。這個簡單例子中的 NPCI 表明這是“等待回覆的資料”。
B/IP廣播
除了裝置之間直接通訊之外,還需要一種機制來廣播訊息,以便所有 B/IP 裝置都能接收到該訊息。我們將使用現有的標準來廣播 UDP 資料包。
UDP 廣播資料包被“傳送”到 IP 地址,該 IP 地址包含廣播裝置的子網以及主機部分中的全 1。例如,如果裝置的地址為 128.253.109.10,子網掩碼為 255.255.255.0,則它可以使用廣播地址 128.253.109.255。雖然大多數網路也允許使用 IP 廣播地址 255.255.255.255,但由於某些實施者遇到了一些 IP 協議棧限制,我們已排除 BACnet/IP 的這種可能性。
BVLCI 表示這是一個原始廣播 NPDU。NPCI顯示這不是“等待回覆的資料”,即廣播資料。
版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。
原文連結:https://blog.redisant.cn