第二章:BACnet/IP的一些基本設計標準
平時除錯BACnet協議,一個好用的 BACnet 除錯工具和模擬器必不可少,推薦一款:
官網地址:BACnet Explorer
最基本的考慮是,BACnet/IP 裝置在網路活動方面應該在概念上與所有其他 BACnet 裝置一樣表現:
- 它們應該能夠直接與網路上的對等裝置進行通訊;
- 它們應該能夠利用網路上所有對等裝置接收的本地廣播;
- 它們應該能夠向位於具有不同網路號的網路上的裝置傳送遠端廣播;
- 並且全域性廣播應該仍像現在一樣工作。
同樣,B/IP 網路上的路由器應響應相同的網路層訊息並執行與當前路由器相同的功能。希望您在看完這些後,這些假設的含義會變得清晰。
以下是我們所使用的 BACnet 裝置的兩個基本假設:
- 裝置具有唯一地址,在本例中為 IP 地址,並且它們知道該地址是什麼。
- 裝置不知道,或者至少不需要知道其 BACnet 網路號(除非裝置是 BACnet 路由器)。
BACnet/IP 使用使用者資料包協議 (UDP),這是一種無連線協議。選擇 UDP 的原因如下:
-
UDP 得到了很好的支援,並且為所有作業系統提供了簡潔的 API。
在新的平臺上利用現有程式碼庫的能力非常重要,因此套接字型檔通常是最先移植的軟體元件之一,其餘所有 IP 服務都會隨之移植。
-
TCP 是一種面向連線的協議,其開銷比 UDP 大得多,並且不允許“一對多”訊息。
其他面向流的協議(如 ATM)也存在同樣的問題。IP over ATM 試圖透過為資料包建立到“新”目的地的連線(稱為“呼叫”)並保持連線開啟一段時間(在某種意義上是快取連線)來解決部分問題。這對於基於 UDP 的 SNMP 等無連線協議來說是個壞訊息,因為每個資料包都有呼叫設定和關閉開銷。
-
定義一種新的 IP 資料包型別(具有新的協議值)不會帶來任何實質性的優勢,而且相對於使用 UDP 來說還會帶來一些潛在的缺點。
雖然擴充套件作業系統的核心是可能的,但大多數應用程式開發人員都希望儘可能避免嵌入軟體,因為嵌入軟體會引發作業系統和平臺相關的所有問題。這還會降低編寫可移植程式碼的能力。例如,伯克利套接字型檔在所有常見 IP 平臺上都以某種形式得到支援,而新的 IP 協議型別則不會得到支援。
-
新的 IP 協議型別可能無法路由。
雖然按某些標準來看,BACnet/IP 裝置和支援的市場可能非常龐大,但它的規模和規模可能永遠無法達到其他網際網路軟體應用程式的規模。現有的路由器製造商可能很樂意提供自定義資料包型別的路由,但需要付費。
-
當前的防火牆不會放行新的資料包型別。
即使先前假設防火牆不需要允許 BACnet/IP 資料包透過,與現有技術的配合也是一個考慮因素。
在本次演示中,我們將展示 UDP 提供了構建幾乎任何架構的 BACnet/IP 網際網路絡所需的所有功能。
版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。
原文連結:https://blog.redisant.cn