1、整体介绍 安全通道和消息层提供一致的网络服务基板,以允许节点之间安全地通信。在调测和单播通信过程中,提供了发现机制来确定对端IPv6地址和运行参数。使用证书(CASE)或共享密码(PASE)提供安全会话建立机制。 1。1、消息 通信是通过消息进行的。消息要么是安全的,要么是不安全的。每条消息都有一个会话类型和会话ID,以便确定它是否安全,以及如果安全,如何解密和身份验证。每条消息都有一个messageCounter字段,以便为安全和重复检测目的惟一标识消息。操作通信被定义为通过IP传输在委托节点之间使用安全的Matter消息格式的通信。所有操作通信都启用了消息安全性。节点之间的操作通信可以是单播或多播。 不安全通信严格限于:Discovery:它不使用Matter消息格式。用户定向调试(UDC):使用不安全的消息启动调试过程。会话建立:使用不安全的消息建立CASE或PASE会话。 1。1。1、消息类型 消息被定义为控制消息或数据消息。大多数消息都是数据消息。控制消息为MCSP等内部协议保留,以初始化安全性。这两种消息类型在格式上是相同的,但是使用单独的消息计数器域,因此它们可以在相同的安全密钥上安全地操作。 1。1。2、消息传输 消息的大小是有限的,并通过支持的传输以单个数据包的形式发送:UDP将每个消息作为单独的数据报传输。消息支持一个称为MRP的基本可靠性protocol,当底层传输(在本例中是UDP)不提供这种可靠性时,可以使用它特性。TCP传输每条预先设置长度的消息,根据需要执行分段和重新扫描bly。BTP将每条消息作为单独的SDU在BLE上传输,执行分段和根据需要重组。 BTP作为调试的传输协议提供。TCP和MRP(增加了可靠性的UDP)作为操作消息传递的传输协议提供。 1。1。3、消息交互 消息提供了一个交换层来跟踪组成小型、离散事务的相关消息。交换层向上面的交互模型层提供了这种事务跟踪工具,提供了在给定的底层会话上复用多个这样的并发事务的方法。交换层还将消息可靠性协议(MRP)集成为一种服务,用于UDP传输。此消息层体系结构如图消息层堆栈所示: 2、IPv6可达性 为使节点间IPv6网络可达,需要配置IPv6网络。如之前网络拓扑所述,一个Matter网络可以由一个或多个IPv6网络组成。 在单一的网络配置中,所有的物质节点都附加到相同的IPv6链路上。单个网络配置可能包含单个桥接WiFi以太网网络,其中连接到该网络的所有节点都是同一广播域的一部分。当所有的物质节点都连接到同一个WiFi以太网网络时,链路本地IPv6寻址就足够了不需要额外的IPv6网络基础设施。 在多网络配置中,一个Matter网络由(通常是一个)基础设施网络和一个或多个存根网络组成。与基础设施网络不同,存根网络不充当交通网络。通常情况下,基础架构网络是桥接的WiFi以太网网络,Thread网络是存根网络。stub路由器连接stub网络和基础架构网络,提供两个网络之间的IPv6可达性。 2。1、Stub(存根)路由器行为 stub路由器应该实现〔draftlemonstubnetworks〕。在多网络配置中,基础设施网络和存根网络都需要可路由的IPv6地址进行跨网络通信。可路由的IPv6地址应具有全局作用域(如GUA或ULA)〔RFC4007〕,并应由发布为在线链接的前缀构造而成。如果在给定的网络中没有可路由的前缀,存根路由器必须提供它自己的可路由前缀。注意,Thread的onmesh前缀相当于WiFiEthernet的onlink前缀。 Stub路由器应向相邻网络上的所有可路由前缀通告可达性。连接线程网络的存根路由器应使用路由器通告〔RFC4861〕中所载的路由信息选项〔RFC4191〕,向邻近的基础设施网络通告所有线程网络的可路由前缀的可达性。同一存根路由器还应在线程网络数据〔Thread规范〕中公布基础设施网络的所有可路由前缀到相邻Thread网络的可达性。 2。2、matter节点的行为 节点必须配置链路本地IPv6地址。此外,节点应支持至少三个可路由IPv6地址的配置(除了链路本地地址和(在Thread情况下)网格本地地址)。在WiFi以太网接口上,ICMPv6路由器通告(RA)消息发布用于在链路上使用的前缀〔RFC4861〕。在Thread接口上,Thread网络数据包含用于链接的前缀〔Thread规范〕。如果一个节点收到一个允许在给定接口上自主配置的在线前缀,并且该节点配置的可路由IPv6地址少于三个,则该节点必须从该前缀自主配置一个IPv6地址。 matter节点还应配置到相邻网络的路由。在WiFi以太网网络中,节点必须处理路由信息选项〔RFC4191〕,并通过stub路由器配置分配给stub网络的IPv6前缀路由。WiFi以太网接口应支持维护至少16种使用路由信息选项配置的不同路由。在Thread网络中,节点应根据Thread网络数据〔Thread规范〕中提供的路由信息进行路由。Thread设备应支持在Thread网络数据中编码的尽可能多的路由。 matter节点应支持的IPv6邻居缓存项数量至少等于所支持的CASE会话数量加上所支持的路由数量。 3、设备广播和发现监测(discovery) 本节描述广播和matter的发现监测。广播和matter的发现监测现在以下上下文中使用:可入网的节点发现监测可操作性发现入网管理者发现用户直连入网 服务发布和发现使用IETF标准的基于DNS的服务发现(DNSSD)〔RFC6763〕。Matter不需要修改IETF标准DNSSD。使用DNSSD意味着所提供服务的单播IPv6地址和端口都被发现,从而使Matter不再需要一个预先分配的固定端口。这也使得在单个设备上运行Matter软件的多个实例成为可能,因为每个实例都有自己的动态分配端口,而不是试图使用相同的预分配固定端口而发生冲突。在目前的WiFi和以太网网络上,DNSSD〔RFC6763〕使用组播DNS〔RFC6762〕进行零配置操作。 因此,在基础服务发现API中可行的情况下,发布服务可用性的Matter软件应该表明该服务的公告和应答只需要包括IPv6地址记录,而不需要包括IPv4地址记录。在同时支持IPv4和IPv6的通用双栈主机上,可以通过让与matter相关的SRV记录引用只附加IPv6地址记录的特定于matter的目标主机名来实现这一点。这允许通用双栈主机为仍然需要IPv4的遗留客户端软件提供可发现的IPv4地址,同时为Matter目的提供优化的仅ipv6地址发现。 同样,由于Matter不使用IPv4,发现其他Matter实例的Matter软件不应期望响应中包含任何IPv4地址。这两项处理服务发现消息的内容。当使用多播DNS时,与这些服务发现消息(通过IPv4、IPv6或两者发送)的传递相关的效率问题也会出现。 在底层服务发现API支持的地方,使用组播DNS发布服务可用性的Matter软件应该表明,该服务的公告和应答只需要在IPv6上执行。类似地,在底层服务发现API支持的地方,使用多播DNS发出服务发现查询的Matter应用软件应该表明,这些查询只需要在IPv6上执行。这些优化减少了组播包的大小和数量,这在WiFi网络上尤其有益。一个只支持IPv6的Matter设备会自动得到这些优化,仅仅是因为它根本不支持IPv4。 对于Thread网状网络,过多使用组播将是有害的〔RFC7558〕,DNSSD使用单播DNS代替,利用Thread边界路由器上的线程服务注册中心的功能〔draftlemonstubnetworks〕。 从概念上讲,正在通信的DNSSD〔RFC6763〕信息与正在使用的MultinumbercastDNS〔RFC6762〕是相同的,除了信息以单播报文的形式来往于指定的服务注册中心,而不是以组播报文的形式来往于同一广播域中的每个其他节点。 使用服务注册协议〔SRP〕和在Thread上运行的广播代理〔AdProx〕边界路由器,Thread网格上的事项节点可以被Thread网格上的其他事项节点发现相邻的以太网或WiFi链路,不需要在Thread网格上使用组播。所有Thread和连接事项节点必须执行服务注册协议。 Thread边界路由器在Thread网络数据〔Thread规范〕中发布可用的SRP服务器。Thread设备应使用可用的SRP服务器注册其服务〔Thread规范〕。 当Matter节点向其他Matter节点发出短时间请求时,响应会返回到请求的源IPv6地址和端口。当matter节点向其他matter节点发出长时间的请求时,在响应生成时,请求者可能已经更改了IPv6地址或端口,因此响应者可能必须发现发起者的当前IPv6地址和端口,以便发送响应。 Thread边界路由器必须实现DNSSD发现代理〔RFC8766〕,以使Thread网格(如其他节点)上的客户端能够发现使用相邻以太网或WiFi链路上的组播DNS发布的服务(如事务节点),同时也不需要在Thread网格〔draftlemonstubnetworks〕上使用组播的成本。对于短时间的瞬时查询,这些查询可以使用UDP单播DNS到DNSSD发现代理执行。对于长期存在的、带有持续更改通知的查询,使用DNSPushNotifications〔RFC8765〕和DNSStatefulOperations〔RFC8490〕允许Thread网格上的客户端收到已发现服务集的更改通知,而不需要昂贵的轮询。 原则上,Thread网格服务注册表可以在Thread网格内部(甚至外部)的任何有能力的节点上运行,尽管实际上Thread边界路由器是提供服务注册表的一个有吸引力的候选者。Thread边界路由器设备通常是交流供电的,通常具有更强大的cpu和更大的闪存存储和RAM,而不是更受限制的电池供电的Thread节点。Thread上的物质设备依赖于线程为Thread网格上的Thread设备提供可靠的服务。这类似于WiFi上的物质设备依赖于WiFi接入点(AP),为使用该WiFi接入点的WiFi设备提供可靠的服务。 (未完待续)