第四章:介绍 BACnet 虚拟链路层

简介: 虚拟链路层 (VLL) 背后的基本概念是向现有的 BACnet 网络层呈现某些网络拓扑和功能的视图,利用新协议中内置的任何功能并根据需要添加功能以维护现有标准中的 BACnet 网络视点。

第四章:介绍 BACnet 虚拟链路层

虚拟链路层 (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 端口上接收。)

3-3.png

每个不同的 BACnet/IP 消息都与特定的 BVLC 功能相关联。

B/IP单播

4-1.png

首先要讨论的问题是设备如何相互通信。它们通过使用目标 B/IP 地址向对方发送“单播”消息来实现这一点。BACnet 消息本身是如何打包的?显而易见的解决方案是利用 UDP 数据包的“数据”部分来包含 APDU。IP 已经有一个网络层,因此最简单的解决方案似乎是仅封装 BACnet 帧的 APDU 部分。但 NPCI 可能包含重要信息,例如版本号、优先级、是否应将消息路由到非 BACnet/IP 节点等。因此,整个 NPDU 都被封装了。

另一个问题是,一些 BACnet/IP 设备可能需要知道消息是如何传送的,是通过单播还是广播寻址。我们很快就会明白为什么。由于一些商用 IP 协议实现不向接收者提供此信息,因此我们必须创建一种万无一失的方法,使寻址模式可用于更高的协议层。输入 BVLL“原始单播 NPDU”和“原始广播 NPDU”。

4-2.png

BVLCI 表示这是一个原始单播-NPDU。这个简单例子中的 NPCI 表明这是“等待回复的数据”。

B/IP广播

4-3.png

除了设备之间直接通信之外,还需要一种机制来广播消息,以便所有 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 的这种可能性。

4-4.png

BVLCI 表示这是一个原始广播 NPDU。NPCI显示这不是“等待回复的数据”,即广播数据。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.redisant.cn

相关文章
|
程序员
面试高频题:开发人员说不是bug,测试如何答复?
面试高频题:开发人员说不是bug,测试如何答复?
526 0
|
Java Maven
IDEA 2018 2020 2021 2022 各版本对Maven版本兼容问题汇总
Maven3.6.3版本兼容问题 错误信息如下: 测试范围如下图: 注意:针对一些老项目 还是尽量采用 3.6.3版本,针对idea各个版本的兼容性就很兼容 0.IDEA 2022 兼容maven 3.8.1及之前的所用版本 1.IDEA 2021 兼容maven 3.8.1及之前的所用版本 2.IDEA 2020 兼容Maven 3.6.3及之前所有版本 3.IDEA 2018 兼容Maven3.6.1及之前所有版本
5230 0
IDEA 2018 2020 2021 2022 各版本对Maven版本兼容问题汇总
第三章:什么是 BACnet/IP 网络
BACnet/IP 网络是一个或多个 IP 子网(IP 域)的集合,这些子网分配有单个 BACnet 网络号。BACnet 互联网络由两个或多个 BACnet 网络组成。这些网络可能是 BACnet/IP 网络,也可能使用其他指定的技术。此标准还支持以类似于 IP 子网的方式包含 IP 多播组,如下文中所述。
872 0
第三章:什么是 BACnet/IP 网络
|
9月前
|
存储 SQL 自然语言处理
ClickHouse查询执行与优化
本文详细介绍了SQL语法扩展、执行计划分析及优化策略,涵盖特殊函数与子句(如`WITH`、`ANY JOIN`)、聚合函数扩展(如`uniqCombined`、`quantileTDigest`)以及执行计划优化技巧。同时深入解析了ClickHouse的索引原理,包括主键索引和跳数索引的工作机制与优化方法。针对查询优化,文章提供了过滤条件下推、分布式查询优化和数据预聚合等策略,并探讨了资源管理与并发控制的核心参数(如`max_memory_usage`、`max_threads`)及队列优先级调度机制,助力高效使用ClickHouse。
|
6月前
|
网络协议 开发者
探讨UDP协议中connect函数的作用及影响
总结来看,虽然UDP是无连接的,`connect()` 函数的使用在UDP编程中是一种可选的技术,它可以带来编程上的便利和某些性能上的改进,同时它改变的是程序逻辑上的行为,而非UDP协议本身的无连接特性。在实际应用中,根据通信模式和需求的不同,开发者可以根据情况选择是否调用 `connect()` 函数。
299 8
|
缓存 网络协议 网络安全
BACnet初学者教程,第二章:BACnet/IP的一些基本设计标准
BACnet初学者教程,第二章:BACnet/IP的一些基本设计标准
272 0
|
开发者 图形学 C#
揭秘游戏沉浸感的秘密武器:深度解析Unity中的音频设计技巧,从背景音乐到动态音效,全面提升你的游戏氛围艺术——附实战代码示例与应用场景指导
【8月更文挑战第31天】音频设计在游戏开发中至关重要,不仅能增强沉浸感,还能传递信息,构建氛围。Unity作为跨平台游戏引擎,提供了丰富的音频处理功能,助力开发者轻松实现复杂音效。本文将探讨如何利用Unity的音频设计提升游戏氛围,并通过具体示例代码展示实现过程。例如,在恐怖游戏中,阴森的背景音乐和突然的脚步声能增加紧张感;在休闲游戏中,轻快的旋律则让玩家感到愉悦。
843 0
|
人工智能 JavaScript 前端开发
一段 JavaScript 代码,集成网站AI语音助手
根据本教程,只需通过白屏化的界面操作,即可快速构建一个专属的AI智能体。
|
SQL 存储 数据库
SQL语句给予用户权限:技巧、方法与最佳实践
在数据库管理中,为用户分配适当的权限是确保数据安全性和操作效率的关键步骤
|
关系型数据库 MySQL 数据库
MySQL实战基础知识入门(6):mysql使用mysqldump导出数据出错的解决方案
MySQL实战基础知识入门(6):mysql使用mysqldump导出数据出错的解决方案
523 0