计算机科学2006Vo1.33№.6 BACnet应用层状态机在线测试研究 许毅平朱振华周曼丽 (华中科技大学电子与信息工程系 武汉430074) 摘要随着BACnet网络技术的应用发展,对BACnet网络设备协议一致性测试的要求也越来越强烈,本文在比较 现有的协议一致性测试方法的基础上,给出了基于在线测试的BACnet协议测试方法,研究了BACnet应用层状态机 的运行模式,并采用有限状态机模型对BACnet应用层状态机进行了分析,给出了相应的状态机状态判定方法和在线 测试的软件结构。 关键词有限状态机,协议一致性测试,状态判定,BACnet The Study of On-line Testing for BACnet Application Layer TSM XU Yi—Ping ZHOU Man-Li (Electronics&Information Engineering Department,Huazhong University of Sei.&.Tech.,Wuhan 430074) Abstract With the development of BACnet technology,the requirements of protocol implement confofinance testing become more and more intense.After comparing the methods of protocol implement conformanee testing in existence, the paper presents a BACnet protocol test method based on-line.And then,the paper studies the running mode1 of BACnet application layer TSM,and analyses the TSM using finite state machine mode1.Finally,this paper presents an algorithm to identify the state of TSM,and describes the software framework of On-line testing. Keywords FSM,Protocolimplement conformance testing,State determination。BACnet 1 引言 在当今网络的时代,网络协议对网络技术和网络产品的 普及和发展发挥了决定性的作用。由于网络协议通常采用非 形式化的、基于自然语言的文本方式描述,这种方式可能使协 议实现的不同开发者对协议标准的理解产生差异,从而使协 议实现偏离协议标准,这种偏离会影响协议实现间的互操作 由美国供热、制冷与空调工程师学会(ASHARE)组织制定的 用于楼宇设备自动化和控制的网络通信协议。该协议是美国 国家标准,欧洲标准草案,并且于2003年1月2O日被ISO正 式采纳为国际标准(IS()16484—5)。随着BACnet被接纳为 IS()国际标准,市场对BACnet设备的需求也将空前增长。 BACnet作为一种网络协议,它的协议实现同样面临着协议实 现一致性的问题。 性 因此,协议实现正确性的检测成为关注的焦点,协议一致 性测试就是用来检验协议实现的正确性的有效手段,协议一 致性测试方法一般分为两种;主动测试和被动测试_】]。 文本通过分析BACnet应用层协议,提出了一个BACnet 应用层协议一致性测试方案,实现对BACnet协议实现的在 线测试。 主动测试一般用于在协议实现出产或认证前进行,采用 主动测试时,测试器(Tester)根据预先设置好的测试集主动 地向被测协议实现(IUT)发送测试报文,测试器通过观察 2 BACnet应用层协议 BACnet是一种开放性协议,它采用OSI模型的分层通 IUT对测试报文的响应给出判据。被动测试也叫在线测试, 一信体系结构,同时鉴于楼宇控制系统的实际需要和实现成本 等多方面因素,BACnet并没有完全参照OSI采用七层 般用于协议实现的在线运行测试,采用在线测试时,测试器 并不主动向IUT发送测试报文,它主要通过观察和分析IUT 实际运行过程中接收和发送的报文序列,推断IUT内部状态 的变化是否符合协议的规定,以此来对IUT进行检测。主动 测试的关键在于测试集,测试集决定了测试的覆盖范围,也决 结构,而是采用了一个由物理层、数据链路层、网络层和应用 层组成的折叠式结构。在这四层结构中,BACnet应用层是 BACnet协议中地位最重要、内容最丰富的一层。BACnet应 用层定义了两大类服务:无证实应用层服务和有证实应用层 服务 。 定了测试的时问费用,而产生一个高效、全面的测试集往往是 很困难的,而在线测试并不需要测试集,并且在线测试具有测 试环境简单,可长时间进行测试,以及在实际的工作环境下进 行测试等优势,在线测试可以作为主动测试手段的有力补充, 因此研究在线测试具有很现实的意义。 BACnet协议是A Data Communication Protocol for Building Automation and Control Networks的缩写_2]。它是 无证实应用层服务是一种不受保证的报文通信机制,主 要用于信息广播和信息探询,发送报文的一方不要求确知发 送的报文是否被期望的接收方收到,也不期待一定收到接收 方的响应,因此在发送方和接收方之间不需要维持状态同步 关系。 *)美国& net制造商协会(BMA)及BACnet测试实验室(BTL)资助。许毅平・ 博士。 76 - 维普资讯 http://www.cqvip.com
服务器状态圈 客户机状志圈 事件tl:发送无证实请求 2:发送无证实响应 3 发送不分段有证实请求 4:发送分段有证实请求(第一分段) 5:收到分段有证实请求(第~分段) 6;啦到不分段育{芷实请求 t嶂到简蔓确认 8 收到分段确认u:收到分段堡杂确认(第一分段)(非最后分段) 9。收到最后分段确认 lO;收到不分段复杂确认 14t峨到中止报l文 l5:发送简单确认 l2:收到分段鬈杂确认(中问分段)l6t发送不分段复杂确认 13.l8t发送分段复杂确认(中间分段) 19t发送分段复杂确认(最后分段)l7t麓送分段复杂确认(第r_分段)-峥到分段复杂确认(最后分段) 20,收到分段有证实请求(中问分段) 图1 BACnet应用层状态机 有证实应用层服务是一种受保证的通信机制,采用客户/ 的关系,通过分析状态变迁规则,采用推理技术来判断IUT 服务器通信模式,发起请求报文的一端为客户端(称为BAC— 的状态机变迁是否正确。 net Client),对请求报文进行响应的一端为服务端(称为 BACnet Server),在这种模式下,客户端和服务端采用一问一 表1客户状态机事件及状态变迁规则表 答的会话方式,客户端每发送一个有证实请求报文都要判断 起始事件类型 起始事 起始 变迁 变迁 该报文是否被服务器端收到,以及服务器端对该请求的处理 件编号 状态 状态 事件 结果,在整个会话过程中,客户端和服务端之间需要进行同 发无证实请求 1 0 0 | 步,以使会话能够正常进行,为了使状态保持同步,BACnet协 收无证实响应 2 0 0 | 议规定客户端在发送请求报文时应创建客户状态机(Client 发不分段有证实请求 3 O 2 | 发分段有证实请求(第一分段) 4 0 l f TSM),服务端在收到有证实请求报文时应创建服务器状态 发分段有证实请求(其他分段) 5 1 1 | 机(Ser#er TsM),客户状态机和服务状态机分别依据一定的 收简单确认 6 1 0 | 规则改变各自的会话状态,共同管理双方的会话,使通信的双 2 0 | 方能够顺利地完成对话。BACnet规定一个协议实现可以同 收分段确认 7 1 1 5 时建立多个会话,在每个会话中协议实现充当不同的角色,即 收最后分段确认 8 1 2 f 协议实现在一个会话中可以充当客户端,在另一个会话中充 收不分段复杂确认 9 1 0 | 当服务端,协议实现为每一个会话创建一个状态机。因此,在 2 0 i 某一时刻,一个协议实现可能同时存在若干个客户状态机和 收分段复杂确认(第一分段) 10 1 2 3 3 13 13 服务器状态机。BACnet应用层状态机如图l所示,由图可 收分段复杂确认 11 3 3 13 知,一个客户状态机有空闲、等待证实、分段请求和分段证实 (其他分段) 4种状态,一个服务器状态机有空闲、分段请求、分段响应和 收分段复杂确认 12 3 0 14 等待响应4种状态。 (最后分段) 发分段确认 13 3 3 | 3 BACnet应用层状态机变迁规则 采用在线测试主要通过分析IUT接收和发送的报文序 BACnet协议应用层状态机可以用有限状态机模型来进 列,推断IUT状态机是否按协议的规定进行运行。任何一个 行描述,有限状态机模型是一种由若干状态、一个起始状态、 事件都有它发生的条件,这个条件就是状态机的当前状态。 一个终止状态、一组输入输出符号和状态变换函数组成的计 因此,当一个IUT产生一个事件(发送一个报文),该IUT内 算模型,有限状态机可以用来抽象表示一个进程的运行 部的状态机的状态肯定属于某个状态子集,该子集所包含的 状态I4 ]。标准有限状态机可以表示为TSM=(S,X,y, , 状态个数大于等于1;当一个IUT接收到一个事件(接收到一 ,Q,F),其中,S表示所有状态的集合;X表示所有输入符 个报文),该IUT内部的状态机的状态同样肯定属于某个状 号的集合;y表示所有输出符号的集合; 为状态迁移函数;A 态子集。 为输出函数;Q为起始状态集;F为终止状态集。 由于一个事件可能在多个状态下均可能发生,因此在线 BACnet应用层有客户状态机和服务器状态机两种,这两 测试器不能明确地确定IUT状态机的状态,然而,一个与某 个状态机的运行是的,采用有限状态机模型可分别定义 一状态机相关的连续的事件序列可以确定一个唯一的状态机 为: 状态序列,因此,当在线测试器检测足够长的事件序列时,就 客户状态机模型:Client—TSM=(S,X,Y, ,.:【,Q,F), 可以确定IUT状态机的状态,从而可以判断该IUT的状态 其中S {空闲,分段请求,等待证实,分段证实},Q {空 机是否正确。 闲},F={空闲},X一{系统外部输入(所有可能接收到的报 为了能够实现该目的,需要分析事件和状态机可能状态 文类型),系统内部输入},Y={系统外部输出(所有可能发 ・ 77 ・ 维普资讯 http://www.cqvip.com
送的报文类型),系统内部输出),状态迁移函数 为变迁状态 与输入x和当前状态的映射关系,状态的变迁由输入x和当 前状态共同决定,输出函数 为输出与输入和当前状态的映 射关系,输出由输入x和当前状态共同决定。 服务器状态机模型:Server-TSM--(S,X,Y, , ,Q, 应的,增加一个事件层同时也会增加一个状态关联层。 F),其中S一{空闲,分段请求,等待响应,分段响应};Q一 {空闲},F--{空闲},X一{所有可能接收到的报文类型},系 统内部输入},Y一{系统外部输出(所有可能发送的报文类 型),系统内部输出},状态迁移函数 为变迁状态与输入x 和当前状态的映射关系,状态的变迁由输入X和当前状态共 同决定,输出函数 为输出与输入和当前状态的映射关系,输 出由输入X和当前状态共同决定。 由于客户机状态机和服务器状态机的测试方法是相同 的,这里以客户状态机的例来分析事件和状态机状态间的关 联,一个事件可由5个部分来描述:时间、发送者、接收者报文 以及状态机标识,标记为E一{Time,Sender,Receiver,PDU, TSMID)。一个事件通常与起始状态、变迁状态以及变迁事 件相关联,我们称这种关联为状态变迁规则 起始状态表示 发生某事件的可能的条件状态,也就是一个事件一定是当状 态机处于一定状态时才可能发生;变迁状态表示在起始状态 下发生该事件后,状态机发生变迁后的状态,事件发生后,状 态机的状态可能不变也可能变为其他状态;变迁事件表示发 生变迁时状态机产生的事件(即向外发送报文),事件发生后。 状态机可能产生变迁事件,也可能不产生 由于在线测试时, 在线测试器所能观察到的事件是网络上的报文,引起状态机 改变的其他内部事件(如超时、上层应用软件的操作等)是没 法获取的,因此,需要将客户状态机的事件和状态进行重新整 理和编号。客户状态机有四种状态{空闲,分段请求,等待证 实,分段证实},分别记为{0,1,2,3}。客户状态机事件可以归 纳为15种事件,同种事件具有相同的状态变迁规则,不同类 型的事件可能具有不同的状态变迁规则。表1给出了各种事 件的状态变迁规则。当发生某事件时,只要查找该事件对应 的变迁规则,就可以得到事件的起始状态,变迁状态和变迁事 件,同一个事件可能有多条变迁规则。 4 BACnet应用层状态机状态判定 在线测试的根本方法就是通过根据前面描述的状态机模 型和状态变迁规则来推断IUT同步的状态变迁,由于每个 IuT可能同时存在有多个状态机,我们采用孩子兄弟树来管 理TSM的状态变迁推理(如图2所示)。图中有四种节点, Root为根节点,用于索引状态机节点。TSM为状态机节点, 每个服务器状态机和客户状态机对应一个唯一的TSM节 点,每个TSM节点都有一颗状态变迁推理子树,推理子树由 事件层和状态关联层交替组成,事件层包含事件节点(即E 节点),每个状态变迁推理子树的事件层只包含一个事件节 点,事件节点包含一个事件信息。状态关联层由状态变迁节 点S组成,s节点描述上一层事件层事件的状态变迁规则,包 括事件的起始状态、变迁状态和变迁事件,由于一个事件可能 有多个状态变迁规则,因此,状态关联层可能包含多个状态变 迁节点S,状态变迁节点作为上层E节点的子节点,同层的s 节点互为兄弟。状态关联层下层的事件层包含一个事件节 点,该事件节点E作为上层的某个状态变迁节点的子节点, 条件是该事件的起始状态为上层S节点的变迁状态,同时生 成该事件的状态关联层节点。事件层和状态关联层是一一对 ・ 78・ 图2 TSM状态判定管理图 当每次事件到达时,查找TSM状态管理树。找到相应 TSM( ̄I是第一次,创建新节点),进行TSM推理运算,如果 推理成功,则等待下一事件;如果错误返回,则将TSM节点 从Root中取下,放入到错误TSM链表中,进行相应处理。关 键的状态变迁判定算法描述如下: 算法:TSM推理运算 Input:事件Event Output:返回成功;返回错误 Function: MatchCount O(初始化,表明此次查找匹配规则数目) 在Root中查找对应TSM节点 If没找到 Then创建新的TSM节点添加到Root,深度Depth一0。Match Count=0 Else找到相应的TSM,在当前TSM节点下查找深度为depth的 状态关联层节点(广度遍历) For该层每一个状态变迁节点 For事件的每个变迁规则 If规则匹配 Then { 将事件节点添加当前状态变迁节点的子节点。同 时增加该事件节点的子节点(关联层子节点)。MatchCkmnt++,Depth++。 } If MatchCount为0 Then返回错误(所有规则不匹配) Else返回成功 5 BACnet协议在线测试系统软件结构 图3为系统的软件结构图,各模块的主要功能如下。 包捕捉模块:包捕捉模块根据包过滤器的设置对网络上 传输的报文进行监听,涛符合包过滤器规则的报文上传给包 处理模块,同时也将包传递给数据存储模块 包处理模块:包处理模块的主要目的是提取事件信息,事 件信息包括时间、发送考、接受者、报文类型以及状态机标识, 这些信息需要根据报文内的信息加工获得。因此,包处理模 块需要对报文进行解码,为了正确解码,包处理模块需要调用 编解码模块的解码处理函数。如果解码正确,则包处理模块 将事件信息传递给事件匹配模块,如果解码失败,则将错误信 息传递给异常处理模块处理。 编解码模块:该模块是BACnet编解码函数接口模块,提 供了BACnet协议定义的报文、数据的编解码宴现。 事件匹配模块:该模块根据包处理模块提供的事件信息 查询状态变迁规则库,查找出与该事件相关的状态变迁规则, 并将事件及其状态变迁规则传给状态树管理模块。 (下转第82页) 维普资讯 http://www.cqvip.com
对型的访问权限;访问描述在整个访问控制框架中用到 的关系,例如对访问时间的。 #Domain Definitions #Access Control Materix 对主体提出的动态客体预留请求进行裁决并对系统预留资源 进行管理。通过预留资源的实施,系统避免了关键应用与其 它程序之问产生的资源使用冲突。在访问控制框架中。我们 /bin/phone=trusted_d (trusted d,system I,al1) /usr/bin/mplayer=eertified_d(certified_d,sensitive—t,rw) 使用一种扩充DTE策略的描述性语言来定义访问控制策略。 #Type Definitions #Constraints /ect/network=system_t (certified_d,sensitivie_t, 方便用户的配置和管理. /usr/local/abe.mpe—sensitive_t Timeinterval 1 9:00 1 22:00) #Reservation Definitions 参考文献 CPU_P1=20ms, Memory1 Trusted Computing Group.TCG Specification Architecture Over— —P1=3O Power Pl=strict Set1={CPU_P1.Memory—PI,} view.V1.2,Apr.2004.https://ww trustedcomputinggroup. Set2一{Power_P1) org/ /bin/phone 90 2 Trusted Mobile Platform.Software Architecture Description。 图3策略语言示例 2004.http://www.trusted—mobile.org/ 3 Consumer Electronics Linux Forum.CELF Specification v1.0,Jun 进一步的工作和结论在预留执行中,系统对主体使用 2004.http://www.celinuxforun ̄org/ 超过预留资源的情况进行了处理。另一方面,用户对主体运 4 Badger L,Sterne D F,Sherman D L,et a1.Praetica1 Domain and 行所需要的资源无法准确判断,定义的预留资源可能大于实 Type Enforcement for UNIX.In:IEEE Symposium on Security 际用到的资源,造成系统资源浪费。降低系统性能。对于这种 and Privacy。Oakland,California,May 1995.66~77 情况,需要进一步改进资源预留模型,以便用户可以根据资源 5 Rajkumar R,Juvva K,Molano A,et a1.Resource Kernels:A Re— 的实际使用情况进行调整。另外,在系统运行过程中,一些非 source-Centric Approach tO Real Time and Multimedia Systems. 周期性进程需要动态修改其预留资源,需要在模型定义以及 In:Proceedings of the:SHE/ACM Conference on Multimedia Computing and Net’ ̄mrking,January l998 框架方面做进一步的改进。 6 Mercer C W.Operating Sy stem Resource Reservation for Real— 本文设计了一种应用于移动终端系统的访问控制框架, Time and Multimedia Applications.Carnegie Mellon University, 不但能够保证数据的机密性和完整性要求,而且满足系统对 1997 关键应用及时响应的要求,提高移动终端的可用性 在该访 7 Scordino C.Lipari C .Using Resource Reservation Techniques for 问控制框架中,移动终端客体被分为两类:静态客体和动态客 Power ̄Aware Scheduling,In:Proe.of the 4th ACM Int1.Conf.on 体。主体提出的访问请求通过访问代理转交给访问监控器和 Embedded Software,Pisa,Italy,Sept,2004 预留监控器,前者负责对静态客体的访问进行控制,后者负责 (上接第78页) 总结通信协议一致性测试是一个十分活跃的研究领 状态变迁规则库:用于存放事件和事件状态变迁规则。 域,在线测试作为一种怫议一致性测试方法具有其独特的优 每个状态变迁规则包括事件类型、起始状态、变迁状态和变迁 势,由于这种测试本身不对被测系统的正常运行带来干扰,因 事件,一种事件可能具有多条状态变迁规则 此可以实现对被测系统长时间的测试。本文对在线测试在 状态树管理模块:该模块主要根据事件匹配模块匹配的 BACnet通信协议的应用进行了讨论,给出了基于有限状态机 结果对状态树进行管理。该模块对每二个事务状态机维持一 模型的BAcnet协议:伏态机测试方法和软件框架。 个TSM节点,每个TSM节点下有一个对应的状态变迁树。 每次事件到达时。以事件的状态机标识信息为索引找到相应 参考文献 的状态变迁树。然后。根据变迁规则,通过推理,使状态树向 1 吴建平,尹霞.基于形式化方法的协议测试理论EJ].清华大学学 每一个可能的方向进行生长。当状态变迁树不能生长时,通 报(自然科学版),2001.41(4/5) 知异常处理模块进行异常判断,并对已无生长可能的分支进 2 ASHRAE BACnet:A Data Communication Protocol for Build- 行剪枝处理。 ing Automation and Control Networks 135—2001 异常处理模块:对包处理模块、状态树管理模块中产生的 3 Spitsyna N,Trenkaev V.FSM Based Interoperability Testing of oCmmunication Prutocols.Control and Communications,the 异常信息进行格式化处理。并且能对出错原因进行一定的推 2003 IEEE—Siberian Conference on,2003.20~23 理分析,然后将分析结果发送给数据存储模块。 4 Zhao Yixin。Yin Xia,Han 13o,et a1.Online Test System Ap— 数据存储模块;对收到的报文信息、正在维护的TSM树 plied in Routing Protoco1 Test Modeling.Analysis and Simulation 信息以及异常信息进行存储管理,以便用户查看。 of Computer and Telecommunication Systems.In:Proeeedings of 状志变迁规则库 .- 事件匹配模块 —' 状寿树管珊模块 Ninth International Symposium on,Aug.2001.331~338 5 赵邑新,吴建平.应 用于在线测试的状态判定算法.电子学报, 2000,28(11):83~87 编.翠码模块 _- 包处理模块 —1 异常处理模块 包捕捉模块 ——--一 数据存储模块 图3软件结构图 ・82・
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务