第二章: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 版权协议,转载请附上原文出处链接和本声明。