基金项目:中国地震局地震科技星火计划项目(XH24003A); 河北省地震科技星火计划重点项目(DZ2025091100001).
第一作者简介:蒋宏毅(1982-),高级工程师,主要从事地震监测预警研究.E-mail:88393309@qq.com.
通信作者简介:李 丽(1982-),高级工程师,主要从事防灾减灾工程等研究.E-mail:lili@seis.ac.cn.
(1.河北省地震局,河北 石家庄 050021; 2.河北红山巨厚沉积与地震灾害国家野外科学观测研究站,河北 邢台 055350; 3.中国地震台网中心,北京 100045)
(1.Hebei Earthquake Agency,Shijiazhuang 050021,Hebei,China)(2.Hebei Hongshan National Observatory on Thick Sediments and Seismic Hazards,Xingtai 055350,Hebei,China)(3.China Earthquake Networks Center,Beijing 100045,China)
emergency earthquake information services; information release; MQTT protocol; authorization management
DOI: 10.20015/j.cnki.ISSN1000-0666.2025.0046
地震预警是利用地震波和电磁波的速度差,在地震发生后,震源附近的地震监测仪器在检测到地震波后,预警系统自动估算出震级大小、预估烈度信息、震中位置,并通过专用设备、电视、广播等信息发布渠道向地震预警区发布预警信息,提醒人们提前采取防护措施,以减轻灾害(金星,2021)。
1868年美国旧金山7级地震发生后,Cooper在旧金山日报上首次提出了地震预警设想,即“在距旧金山10~100英里内安装地震预警装置,在地震发生后、地震波到达之前,地震预警装置通过有线电报激发敲响旧金山市政府的大钟,实现地震预警”(赵纪东,张志强,2009)。1966年日本在新干线沿线布设地震监测仪,1998年UrEDAS预警系统在日本铁路系统中正式启用。1991年墨西哥的地震预警系统(SAS)正式投入使用。截至目前,美国、日本、墨西哥、中国大陆和中国台湾等10余个国家和地区开展了地震预警实践(刘赫奕等,2020)。
2010年1月中国地震局启动了国家地震烈度速报与预警工程(以下简称“预警工程”)项目立项建议书的编制工作(蒋长胜,刘瑞丰,2016),在开展可行性研究、初步设计等工作后,于2018年启动建设,2023年投入测试运行。在此背景下,本文基于地震预警信息发布业务的需求,提出了一种地震预警信息快速发布系统的技术架构方案,并验证其可行性。
预警工程主要包括预警站网观测系统、预警信息数据处理系统、紧急地震信息发布系统以及预警终端(赵至柔等,2021),预警工程技术系统总体构成如图1所示。
紧急地震信息发布系统是预警工程的关键技术环节之一,主要解决“发什么,怎么发”的问题。“发什么”是服务内容,包括地震预警信息、地震速报信息、地震烈度速报信息。“怎么发”是信息服务核心技术架构,紧急地震信息服务的客户端(地震预警终端)主要是物联网设备,计算资源和性能有限。因此,高效、稳定的技术架构和传输协议是紧急地震信息发布系统的关键。
MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的轻量级消息队列传输协议,构建于TCP/IP协议上(Deschambault et al,2019)。MQTT提供一对多的消息发布,解除应用程序耦合,并且具有简单易用、协议开销低、支持大量连接和服务质量(Quality of Service,QoS)等优点(阳旺等,2019),在极少的代码开销和有限的带宽资源下,可为远程物联网设备提供实时可靠的消息服务。因此,在物联网设备、小型设备、移动应用等方面有着较广泛的应用(林浒等,2017)。MQTT报文消息体简单,特点如下:
(1)发布/订阅(Pub/Sub)模式,解耦Client/Server模式,客户端与服务端不必建立会话连接,消息交换通过消息代理服务进行转发,客户端与服务端进行消息交换时,不需要建立长连接。
(2)MQTT协议数据包由固定报头、可变报头、消息体3部分构成,报头结构简单,其中只有固定报头是协议约定必须的部分,可变报头和消息体根据业务实际需求进行制定。MQTT最小的数据包为2 bit,保证协议交换最小化,以降低网络资源占用。
(3)MQTT协议约定了服务质量管理(QoS),约定了3种消息发布服务等级以满足对不同类型消息的传输:QoS=0定义为“最多一次”,适用于短间隔发布的状态数据,没有消息重发机制,客户端有可能收不到消息; QoS=1定义为“至少一次”,消息发送速度较快,能保证消息的可靠到达,客户端有可能接收重复消息; QoS=2定义为“有且仅有一次”,有重发和重复消息发现机制,实时性相对较低,通信压力相对会增大,适用于可靠性要求较高的重要数据的传输(孔垂跃等,2021)。
(4)MQTT服务端与客户端通过内部PING报文心跳协议保持长连接,保证了实时可靠的消息服务。
(5)MQTT是基于TCP/IP协议的轻量级网络传输协议,支持TLS/SSL加密,保证客户端和服务器之间的通讯安全。
紧急地震信息发布系统接收数据处理系统产出的地震预警信息、地震速报信息、地震仪器烈度速报信息、地震烈度分布图等地震信息数据产品,并进行信息产品发布。客户端订阅筛选获取所需要的地震信息,从而实现信息发布及预警响应。客户端类型包括PC客户端、移动APP、预警终端等。紧急地震信息发布系统按照4层技术架构设计,包括数据接入层、核心业务层、中间件层、应用服务层,如图2所示。
(1)数据接入层。通过API接口实现内部数据访问接入。按照业务需求采用微服务架构对地震预警信息、地震速报信息、实测地震烈度速报信息等地震信息数据产品进行封装处理,通过专属API与核心业务层进行数据交换。
(2)核心业务层包括注册管理、服务策略管理、服务授权、终端管理、信息发布、日志审计、信息反馈、GIS服务、运维监控。注册中心和服务授权处理上层业务应用层客户端接入,通过注册中心实现对客户端和服务端进行合法性认证,对紧急地震信息发布的相关服务进行授权管理。通过数据加密机制和Token验证方式保证数据传输过程中的安全性。
(3)中间件层提供公共类基础服务。系统架构上介于应用服务层和核心业务层之间,为分布式系统部署提供资源共享、功能共享,包括分布式服务中间件、消息服务中间件、数据库中间件、缓存中间件、监控系统、业务流引擎和规则引擎等。
(4)应用服务层。对发布信息进行分类,建立不同的信息服务通道,包括社会公众服务通道、专业用户服务通道、政府部门用户消息通道等。客户端主动订阅获取所需要的信息服务,并进行地震信息的展示和告警。
从预警发布整个业务流程考虑,设计入网注册技术架构,规范各类客户端的合法性接入。注册中心是紧急地震信息发布系统中的管理和控制单元。注册中心维护信息服务过程中对象及信息流的定义,使整个流程中的参与对象及相互服务的过程受控。所有对象都需要在注册中心注册,才能参与服务过程; 所有服务需要在注册中心登记才能向其它对象开放; 只有申请授权后,才能访问其它对象。
对象按服务关系分为服务提供者、服务消费者,任意对象既可以是服务提供者又可以是服务消费者。在服务关系建立过程中,服务消费者向服务提供者发起连接请求时,服务提供者向注册中心验证授权。
紧急地震信息发布系统是整个预警工程的中间层,从业务架构上看,数据接入层处理源数据接入,业务应用层处理客户端接入。注册中心要实现客户端和服务端进行合法性认证,对相关服务进行授权管理。用户对象注册授权流程如图3所示。
注册中心对象包括预警终端、预警发布端和MQTT Broker。根据服务对象的类型,采用不同的认证方式:
(1)物联网终端设备,通过授权码(CDkey)认证,对客户端授权用户名、密码和ClientID。
(2)客户端通过CDkey进行认证申请,注册中心对客户端授权Token,完成授权。
注册中心发布CDKey、AppKey、ClientID、username、password等信息,并对MQTT服务、授权服务等统一管理。客户端需要进行入网注册后,才能接入MQTT服务,并订阅消息主题,接收消息,注册流程如下:
(1)注册中心通过客户端的S/N(MAC)计算生成CDKey,CDKey为UUID,用于客户端注册。UUID是入网许可的唯一辨识码,长度是128 bit,由32个16进制数值组成。
(2)终端通过CDKey注册,注册申请信息包括设备类型、所属机构、经度、纬度、CDKey、S/N等。
(3)注册中心验证客户端的CDKey和S/N,验证通过后注册中心登记设备注册信息,并将注册信息返回给终端,包括:ClientID、AppKey、username、password、ServiceList。
ClientID由CDKey计算生成,是客户端与注册中心、MQTT服务信息交互的唯一身份认证。AppKey、username、password用于客户端与注册中心的授权管理相关访问。ServiceList为信息服务列表,客户端依据ServiceList向注册中心申请授权。
(4)服务端是紧急地震信息发布系统的信息源,服务端向注册中心进行服务登记,属性包括服务名称、服务接口、认证方式。
紧急地震信息发布主要是接收预警处理系统产出预警信息,并将预警信息发布到预警终端,终端接收预警信息后以声、光、电的形式作出预警响应。
预警工程的服务对象以小型智能设备或移动设备为主,系统处理资源和网络资源有限,如何及时、可靠地对大量的终端发布预警信息是整个发布流程的关键技术。MQTT作为一种低开销、低带宽占用的通讯协议适用于地震预警发布通讯要求。
基于MQTT信息服务是对预警消息主题发布、订阅的管理,包括MQTT Broker服务、授权认证服务和日志服务。服务对象包括发布客户端(发布者)和接收客户端(订阅者)。MQTT Broker是MQTT的消息代理,接收消息发布者发布的所有消息,并通过主题过滤器处理后分发给消息订阅者。主题消息包括地震预警消息、地震速报消息以及地震烈度速报消息等,MQTT服务主题就是客户端所需的服务。MQTT授权认证服务对主题发布者和主题订阅者的身份、账号进行认证,预警终端订阅MQTT主题授权管理以及发布客户端申请发布MQTT主题授权。
授权管理服务是对紧急地震信息发布的资源管理和访问控制。信息发布服务的核心是MQTT服务,信息发布的授权管理是对MQTT Broker的授权管理,客户端获取MQTT Broker的信息,从而实现消息订阅服务。紧急地震信息服务授权UML时序图如图4所示。
客户端完成注册后,注册中心会返回给客户端AppKey,AppKey是授权管理API接口验证序号,用于验证授权服务API接入的合法性。
(1)授权申请。客户端向授权服务端发送ClientID、AppKey和Topciname,请求ServiceList的访问权限,服务主题的访问权限为读、写权限。客户端的访问权限为读权限,发布客户端的访问权限为写权限。
(2)授权验证。授权服务向注册中心验证客户端的身份信息(ClientID、AppKey),验证通过后,授权服务向客户端返回ServiceMessge报文,报文信息包括MQTT Broker的url、port、topic、username、password等信息,返回信息response报文包括主题的访问地址和端口号。
(3)授权完成。将更新权限访问控制表。
(4)客户端连接登录。客户端向MQTT Broker发起请求,首先授权服务验证ClientID身份和Topic权限。验证通过后,授权服务MQTT服务器申请访问资源的Token,Token是客户端本次请求的访问凭证。授权服务将返回的Token持久化到本地,对每个客户端需要的权限以及Token信息进行映射。只要客户端请求Topic资源权限没有变化,授权服务可以返回本地缓存的Token,避免重复申请。授权服务与MQTT服务器建立验证机制,如果MQTT服务端判断Token失效,则断开连接,客户端重新申请Token。
客户端从授权服务器不仅获取Token信息,还需要获取Token的失效时间,便于客户端刷新Token,确保Token的实时有效。客户端对授权服务返回的Token做本地持久化,避免每次重连都申请Token,防止大批量客户端连接阻塞授权服务器。
授权服务首先要验证客户端的身份和请求资源是否合法,避免客户端冒用身份申请Token,或者非法申请访问资源。授权服务建立Token和ClientID映射关系、Token和Toppic资源映射关系,实现Topic资源的访问控制。Token管理更新时序图如图5所示。
(5)消息发布。MQTT Broker是预警信息发布的代理服务,报文由3部分组成,分别是固定报头、可变报头、有效载荷。固定报头主要内容是消息的类型和QoS级别等标志位,消息类型包括CONNECT(连接)、PUBLISH(发布)、SUBSCRIBE(订阅)、SUBACK(订阅确认)、UBSUNSCRIBE(取消订阅)。有效载荷是消息的主体,消息格式采用JSON格式。JSON是对消息对象的一种封装,层次结构简洁清晰,有效提升网络传输效率(蔡寅等,2019)。MQTT协议不支持文件类型的消息发布,因此定义烈度分布图等文件类消息的url,客户端可以通过url从文件服务器加载获取文件信息。
MQTT Broker通过ClientID、username、password信息实现对客户端的安全认证。为了解耦MQTT Broker的发布服务和认证服务,需要建设外部认证服务对用户名、密码、证书以及消息主题等访问授权等信息进行统一管理。一个MQTT Broker中存在多个主题,在多对多订阅/发布模式中,不同的主题有不同的授权管理。“EEW/*”为预警消息主题,要求有秒级的消息实效性,采用“最多1次”的策略; “EQR/*、EIQR/*”是地震速报和烈度速报消息主题,要求分钟级的消息实效性,采用“至少1次”的策略。
通过Keep Alive机制保持MQTT Broker与客户端的长连接。首先设置Keep Alive参数为t,在1.5 t内,如果Broker与Client之间没有任何数据包交互,那么判定为连接已经断开。这种Keep Alive机制解决了TCP连接中半打开连接的问题(half-open connection)。通过PINGREQ/PINGRESP数据包来保证MQTT服务保持长连接,当Broker和Client之间没有任何数据包传输的时候,通过PINGREQ/PINGRESP实现Keep Alive的约定和侦测连接状态。
客户端与Broker连接正常,客户端快速重启(小于1.5 t),再重新连接Broker,在未达到1.5 t这段时间内,客户端与Broker会存在2条连接,需要Client通过Take-Over报文来断开之前的连接,然后重新建立连接。
地震预警终端为物联网设备,数据传输协议采用MQTT,对末端计算性能要求比较低。针对现有 MQTT协议缺乏有效身份认证以及数据以明文形式传输的问题(刘泽超等,2021),因此存在窃听风险、篡改风险、冒充风险,数据的安全性得不到保障(于振中等,2019)。通过对MQTT协议以及数据传输过程进行优化,提高预警信息服务的安全性。
(1)通过UUID获取用户名、密码、权限、ClientID,用户名和密码作为连接预警服务获取预警信息的身份认证,ClientID+UUID作为终端的一个共享密钥。
(2)登陆验证后,注册中心为客户端分配ClientID,ClientID由UUID生成,通过UUID进行反向校验。
(3)对密码交换、发布信息的报文进行加密,客户端与服务器在初次建立MQTT会话时进行秘钥协商,服务器通过随机数(时间戳)U(t)生成sessionKey,避免重复性攻击。客户端的秘钥使用ClientID或AppKey,ClientID和AppKey是客户端的授权服务以及身份认证的唯一凭证,为了确保ClientID和AppKey不被暴露窃取,通过秘钥算法f[(ClientID,U(t)]生成秘钥SessionKey。秘钥交换时序如图6所示。
(4)MQTT不支持负载均衡,为防止高并发和恶意攻击,客户端访问MQTT服务的时候,授权服务对客户端的ClientID进行验证,对于非法接入的用户进行强制下线。通过心跳报文可以保持客户端与服务端长连接,但是客户端存在假死情况,即客户端虽然心跳通讯正常,但是客户端信息处理服务已经异常,导致客户端无效连接,造成资源浪费。授权服务建立Token更新机制,避免客户端长时间非法占用MQTT服务资源,另外,通过Token更新,防止Token被截取后的非法接入。
本文的技术研究成果在国家预警工程项目中进行了示范应用,示范应用范围为京津冀地区地震预警网和川滇地区地震预警网,在政府应急管理部门和学校部署预警终端,并作为最主要服务渠道之一。紧急地震信息服务以属地预警为主,实行“国、省、市”三级发布模式(赵国峰等,2022)。为保证信息服务的一致性,三级服务的技术系统统一部署,发布结果采用国家级融合系统发布结果,地震预警终端按照属地原则接入本省(市)信息服务系统。示范应用发布策略为本省及周边地区预警震级达到4.0级或震中预估烈度达到Ⅴ度,发布系统共接入2 433台地震预警终端。本文收集了京津冀、川滇、新疆、甘肃等地区共计386个预警事件,预警消息来源于融合系统产出,消息接收平均用时为30 ms,预警震级3.0级以上,其中达到发布条件预警事件86个。对基于MQTT协议的紧急地震信息发布系统的接收、发布时效性进行分析。
发布系统时效性包括数据接收、信息发布、终端应答3个过程,事件发布用时如图7所示。由图可见,事件发布的平均用时为570 ms,其中最小用时为128 ms,最大用时为1 847 ms。数据接收主要是发布系统与上游处理系统之间的数据交互,传输协议采用MQTT协议,平均用时为30 ms; 信息发布是终端接收预警信息的过程,平均用时为180 ms; 终端应答是终端收到预警消息后进行计算处理并将处理结果反馈给发布系统的过程,平均用时为300 ms。由此可以看出,数据接收用时 [KH-1]
较低,发布系统与终端之间的数据交互用时占整个发布用时的90%以上。
网络延时也是发布用时的主要因素,对终端到发布系统之间的延时进行测试统计,平均延时为140 ms左右,网络延时与发布总用时的数据基本一致,尤其是发布用时超过1 000 ms的事件中,网络延时都在1 000 ms以上。由于预警客户端(终端)为物联网设备,采用4G网络通讯,有时会发生网络延时过大从而导致发生少数预警发布超过1 000 ms的情况。发布系统和上游处理系统在同一网络环境中部署运行,因此,网络延时一般在2 ms以内,信息发布基本不受网络延时影响。
2022年9月5日12时52分18秒四川甘孜州泸定县发生MS6.8地震,震中位置为(29.59°N,102.08°E)。预警发布用时为405 ms,与上述时效性分析结果基本一致,其中,大于1 000 ms的终端占比为5%,主要原因是客户端网络延时较大。从本次事件的预警效果来看,达到了秒级发布的服务能力。
地震预警等级分为4种类型,由弱到强分别为蓝色、黄色、橙色、红色预警(地震预警信号展播要求,DB 13/T 5962—2024)。本次地震预警客户端收到预警信息后估算本地地震烈度,按照震中距分布,最高烈度为Ⅵ度,最低烈度为Ⅰ度。通过客户端烈度计算分布(图8)可以看出,终端可以正确解析预警信息,实现有效预警。
图8 2022年泸定MS6.8地震客户端烈度计算分布
Fig.8 Intensity distribution of the Luding MS6.8 earthquake in 2022
本文基于MQTT协议建立了紧急地震信息发布系统,设计了地震预警信息发布相关技术协议,按照4层技术架构设计实现了信息发布服务业务链条,得到以下主要结论:
(1)信息发布能力方面,制定基于MQTT协议的发布机制,具备低延时、高时效优点,能实现秒级信息发布服务。
(2)数据安全性方面,通过对MQTT协议进行优化,利用数据加密和Token验证机制可保证数据传输过程中的安全性。
(3)终端入网可靠性方面,通过构建注册中心,制定入网注册、服务授权等业务体系,确保了终端接入的合法性。
[HTK]感谢中国地震台网中心对本文测试实验提供系统的软件环境、硬件环境,研究成果在国家烈度速报与预警工程中进行示范应用。感谢四川省地震局、云南省地震局等单位对于本研究的技术支持。