工业控制协议解析之-CA协议

某研究机构在某领域内的科研系统为工控系统,相关设备进行通信与控制涉及CA与PVA两种工控协议,用户需在工作过程中对相关系统进行安全审计,但目前市面工控安全审计设备普遍不支持上述两种工控协议,因此需进行相关的定制开发。

本文结合项目应用,将重点介绍和分析CA协议,为从事工业互联网安全的同事提供参考,为产品功能的拓展与完善提供新思路。

1

什么是CA协议?

在介绍CA协议之前,需要先引入EPICS(Experimental Physics and Industrial Control System,实验物理及工业控制系统), 上世纪90年代初由美国洛斯阿拉莫斯国家实验室和阿贡国家实验室等联合开发的大型控制软件系统,在EPICS中,设备的每个模拟/数字的输入/输出量称为一个过程变量(Process Variable)。一个过程变量在数据库中对应为一个记录(record)。

EPICS系统依据客户-服务模型,在TCP/IP协议之上建立了称为Channel Access通道访问机制,这就是我们说的CA协议。CA是EPICS系统的最基本机制,它所能提供的服务包括动态通道定位,数据读写,访问监控,连接监控和自动重接等,CA客户端可以根据通道名直接访问系统中的任一通道,通道具有回调(callback)机制,根据客户的预先指定发送监控所得的信息,这一机制无须依靠巡回检测来监控系统,极大减轻了网络的负荷。。

CA协议是描述客户端与服务器之间如何传输数据的协议。由于多人协作的原因,可能有很多个CA客户端;且需要控制和记录的仪器也有很多,所以也可能有多个CA服务器。因此,“网络+CA协议”解决了在多个CA客户端和CA服务器之间进行数据传输时,两个需要通讯的终端之间的联系问题。

图1. EPICS系统结构

2

如何理解CA协议?

要更好的理解CA协议,需要明确CA协议的工作流程,直观上讲,CA协议的工作流程主要包含两个部分,CA协议的整个工作流程如图2所示。

Step1:客户端通过UDP无连接协议寻找目标服务器,在这个过程中,客户端具有一个目标服务器地址列表(这个地址列表可以是EPICS初始化时默认创建的连接到子网的地址列表,也可以是自定义的地址列表)。如果地址列表中存在目标服务器,则该服务器会返回一个包含服务器IP地址和端口号的响应;如果不存在,则返回异常消息。

Step2:遵循TCP面向连接的协议,建立一对一长连接。该过程是在Step1返回目标IP和端口号的基础上进行的。简单来说,就是找到目标地址和端口后,客户端与该服务器建立连接,然后传输数据。

图2 CA协议工作流程示意图

举个形象的栗子,可以更加明晰的理解CA协议,比如部门的领导(客户端)和员工(服务端)之间的会话;领导建了个微信群,首先在群里发消息“谁是张三2号”,理解为CA客户端广播搜索请求(UDP);而张三2号收到该消息后主动回复,部门内其余人则不做回复,这一动作相当于CA服务器响应(UDP);接下来,部门领导拉起私人会话,视为CA客户端和服务端建立TCP长连接进行数据传输。

图3 CA协议生活话场景举例

3

CA协议Message分析

在标准CA协议中,Message由标准消息头和有效载荷组成,标准头结构如表1所示;由表1可知,CA协议的消息头结构固定,都由指令id开始,携带固定参数,标准CA协议的头结构大小为16byte;因此在对CA协议进行分析和解析时,可以从协议的头结构入手,依次解析出指令id,载荷大小,数据类型,进而解析出载荷内容;另外,在通用协议版本中,一般默认CA服务端的端口号为5064,CA中继转发器端口为5065。

表1 CA协议消息头结构

而在现实中,对CA协议进行解析时,需要重点关注消息头结构中的CA指令id,指令id决定了整个消息的结构和形式。在标准CA协议中,定义了28条指令(包含已停止使用的指令);在本次项目中,主要关注CA_PROTO_VERSION, CA_PROTO_SEARCH,CA_PROTO_RSRV_IS_UP,CA_PROTO_EVENT_ADD,CA_PROTO_READ,CA_PROTO_WRITE,CA_PROTO_CREATE_CHAN,CA_PROTO_CLIENT_NAME,CA_PROTO_HOST_NAME,CA_PROTO_ACCESS_RIGHTS等12条指令。

4

协议解析模块设计与实现

结合部门现有审计产品的功能以及客户的定制化需求,开展对于CA协议的解析;主要涉及内容包括:数据包中CA协议部分的完整提取;解析的协议内容进行策略匹配,自学习,日志组装等函数的设计与实现。经过代码编写,测试,修改等环节,已实现对CA协议的内容解析,策略匹配,日志组装,事件告警等功能,CA数据包测试结果告警日志截图如图4所示。

图4 测试数据包告警日志截图

5

小结

以上,从CA协议的技术背景,实现原理和工作流程,消息结构,协议解析切入点等几个方面,对项目实践中所涉及到的CA协议进行了简单介绍。但由于篇幅限制,并未涉及关于CA协议的具体指令以及数据结构的详细介绍,请感兴趣的读者移步https://epics.anl.gov/base/R3-16/1-docs/CAproto进行查阅。后续工作学习中,将从更深层次对CA协议进一步研究和应用,进而提升产品的适应场景与竞争力。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值