基于lwIP 的列车运行控制系统车载设备分组交换通信软件设计

2024-01-08 04:16包正堂
铁路计算机应用 2023年12期
关键词:原语网卡串口

包正堂

(中国铁路通信信号股份有限公司 北京全路通信信号研究设计院集团有限公司,北京 100070)

GSM-R 作为铁路专网无线通信标准,已在国内外广泛应用,是高速铁路CTCS-3 级列车运行控制系统(简称:列控系统)的关键技术之一[1]。随着铁路行车调度和列车运行控制业务(简称:列控业务)的不断扩展,GSM-R 窄带网络在容量和性能方面已难以满足日益丰富的运营需求。

GPRS 在GSM-R 上叠加新的网络实体来实现分组数据服务,与既有网络相比,GPRS 在通信速率、实时性、连接管理上具有明显优势。目前,欧洲铁路ETCS 系统基线三subset-037 欧洲无线电系统功能接口规范涵盖了GPRS 通信要求[2]。我国高速铁路ATO 系统已将GPRS 应用于车载ATO 与临时限速服务器(TSRS,Temporary Speed Reduction Server)的通信[3]。中国国家铁路集团有限公司(简称:国铁集团)正在推进的CTCS-4 级列控系统预研方案中,将GPRS 用于车地之间、列首与安全列尾之间的通信[4]。GPRS 引入不但可实现铁路装备技术向分组通信的过渡,为今后铁路专用网向4G/5G 演进奠定基础。

列控业务使用GPRS 主要是传输安全相关数据,安全相关信息的交互必须遵循安全通信相关标准。在研究基于GPRS 的列控业务通信技术的过程中,考虑到无线网络建设的巨大成本、地域性和复杂性,应以列控系统车载设备(简称:车载设备)的分组交换通信技术研究为先导,在不修改原有应用软件及安全机制的前提下,逐步实现列控业务向GPRS 网络的无缝迁移。

本文基于GPRS 分组域车地通信规范,研究设计车载设备分组交换通信软件,选用开源lwIP 作为TCP/IP 协议栈,将车载设备通信业务接入GPRS 分组域,以提升车载设备通信能力,满足铁路日益增加的数字化和智能化业务需求。

1 GPRS 分组域车地通信

1.1 分组域通信简介

欧洲电工标准化委员会(CENELEC)铁路安全通信标准EN 50159 定义了开放网络下安全相关系统通信传输的参考架构[5-6],包括安全相关传输系统、通信系统及开放网络。

基于此标准,列控系统相关接口规范中定义了提供安全相关传输系统功能的安全功能模块(SFM,Safe Functional Module)和提供通信系统功能的通信功能模块(CFM,Communication Functional Module)。SFM 提供安全相关传输服务,实现安全连接生命周期管理和安全数据交互,与具体通信网络制式无关;CFM 对接开放式网络提供的通信服务,是车载设备适配和实现分组交换通信的关键模块。

1.2 CFM 功能

CFM 对等实体之间通过GSM-R/GPRS 开放网络或封闭网络通信,是车地通信网络中的关键组成部分,负责实现车载设备与地面设备之间的电路交换及分组交换通信。为兼容多种通信制式,ETCS 在CFM中增加了传输制式配置功能,支持GSM-R 电路交换与GPRS 分组交换之间的动态切换。此功能与CFM分组交换通信无关,且国内无该需求,本文暂不涉及。

按照“协议水平、服务垂直”的原则,设计车载设备分组交换通信网络体系,自上而下划分为3个层次:应用、SFM 以及CFM;各层之间互为服务的提供者和使用者,通过各自定义的服务访问点来交互。应用负责业务交互;SFM 负责安全层对等实体的安全连接管理及交互,包括消息完整性、校验以及错误上报等。CFM 负责提供符合ITU-T X.214传输层模型的传输服务以及电台(MT,Mobile Terminal)交互服务[2],相当于实现了OSI 开放网络传输参考模型中的第4 层(即传输层)、第3 层(即网络层)和第2 层(数据链路层),具体包括:(1)传输层连接的建立和释放,可靠数据的传输,透明数据传输;(2)MT 注册及网络信息上报。

为了实现车载设备分组交换通信,还需要具备一些必要条件,如:MT 及无线网络均需支持GPRS,无线网络需提供专用接入点名称等。

1.3 分组交换通信网络对等通信分层结构

在GPRS 分组交换传输模式下,车地双方各通信层划分为相对应的功能实体,同一层的实体称为对等实体。GPRS 分组交换通信网络对等通信分层结构如图1 所示。

图1 GPRS 分组交换通信网络分层结构示意

对等实体之间像是在直接通信,无需关注具体的数据路径。每一层对等实体实现完全独立的功能,层与层之间实现协议和服务的转换,即向上一层提供服务,向下一层输出协议。自上而下的,既有应用至安全层无需修改,新增适配层实体(ALE,Adapter Layer Entity)用于适配面向字节流的TCP 传输服务,TCP/IP 协议栈实现可靠传输,包括传输层、网络层和数据链路层,既有物理层不变,既有AT 命令使用分组交换命令集合。

CFM 中每个物理通道即对应一个MT。在分组交换传输模式下,每个物理通道支持多个传输连接,而电路交换传输模式下该功能是可选的。

1.4 GSM-R/GPRS 车地通信过程

GSM-R/GPRS 车地通信过程如图2 所示。

图2 GSM-R/GPRS 车地通信过程示意

(1)当车载设备控制MT 完成GPRS 附着和PDP 上下文激活后,MT 即与对应的公用数据网(PDN,Public Data Network)之间建立数据承载,获得PDN 分配的IP 地址,并进入数据模式[7]。在这一过程中,车载设备使用既有电路交换接口IGSM-R与MT 交互,AT 命令使用TS 27.010 协议的分组交换部分(也称为IGPRS接口),物理层为RS-422。

(2)MT 进入数据模式后,CFM 需要借助点对点通信协议(PPP,Point-Point Protocol)与MT 通信。PPP 协议对应于OSI 模型中第2 层,起初作为用户与互联网提供商之间的数据链路层协议,因其简单可靠被广泛采用。PPP 协议中的各部分先后实现物理链路协商、鉴权验证、网络地址配置等功能,也称为PPP 拨号,是CFM 实现网络通信的基础。当CFM完成PPP 拨号流程后,双方随即建立IP 通信,CFM可借助分配给MT 的IP 地址,尝试与地面对等实体建立传输服务。

CFM 使用TCP 实现可靠传输,为了实现与TCP/IP 协议的映射管理,CFM 提供了ALE,用以实现安全层与TCP 传输层之间的功能适配,具体包括:建立和释放TCP 连接,安全层与TCP 的数据映射,通道状态监控等。

2 车载设备分组交换通信软件设计

2.1 选用开源lwIP 作为TCP/IP 协议栈

分组网络采用IP 通信,需引入TCP/IP 协议栈实现GPRS 网络上的可靠数据传输。采用成熟免费的开源嵌入式协议栈来开发分组交换通信软件,可降低开发和维护成本,且开发人员能够完全掌握源码。表1 列出较为著名开源嵌入式TCP/IP 协议栈[8-11]。

表1 开源嵌入式TCP/IP 协议栈

车载设备一般采用嵌入式实时操作系统,产品生命周期较长,开源嵌入式TCP/IP 协议栈的选择应考虑高可靠、轻量化、易于移植和长期维护有保证。

车载设备分组交换通信与电台使用PPP 协议,考虑到软件成熟度和稳定性,lwIP 是最佳TCP/IP 协议栈选择。lwIP 由瑞士计算机科学院Adam Dunkels开发,目前源代码托管在自由软件基金会(Free Software Foundation)公共代码托管和协作平台Savannah 上,最新版本为2.1.3[12]。

2.2 lwIP 移植与配置

2.2.1 lwIP 分层结构

lwIP 协议栈结构清晰简洁,可划分为用户接口层、系统及内核运行层、网卡接口层3 部分。lwIP协议栈结构如图3 所示。

图3 lwIP 协议栈结构示意

用户接口层分为BSD 风格接口、顺序风格接口和原生接口3 类。系统及内核运行层支持带操作系统(提供多线程)和不带操作系统(阻塞读写)2 种方式。网卡接口层是lwIP 定义的抽象网卡数据结构,由开发人员根据实际硬件驱动实现。

2.2.2 lwIP 移植涉及的主要组件及配置

lwIP 的移植与内核运行方式相关,本文操作系统模式(即lwIP 定义的OS mode),lwIP 移植涉及的主要组件及配置包括:系统抽象层、定时器、编译器及平台、临界区设置、用户配置。

(1)系统抽象层:主要包括信号量、互斥锁、邮箱(消息队列)、线程创建、同步防护等;lwIP使用信号量实现任务同步,借助邮箱实现任务间通信,通过共享内存完成缓存传递;若操作系统支持优先级反转处理的互斥锁,无需使用信号量模拟(即lwIP 默认方式)。

(2)定时器:向lwIP 内核线程运行提供一个定时器,计时单位为ms。

(3)编译器及平台:编译器主要包括数据类型、编译器内存对齐、基础库依赖、打印及故障处理等。

(4)临界区设置:为了避免任务间内存分配和释放出现异常,lwIP 要求用户提供轻量级快速防护机制;对于嵌入式系统,可通过禁用中断或使用信号量、互斥锁实现临界区设置。为保证性能,建议优先使用后者,避免频繁的任务调度操作造成性能下降。

(5)用户配置:提供了强大灵活的剪裁与配置宏开关,开发人员可通过用户头文件lwipopts.h 进行设置,按需定义运行方式、协议族配置、网卡配置、内存管理等。

2.3 车载设备分组交换通信软件架构

车载设备软件一般可分为主控软件和通信软件2 部分。主控软件执行安全应用(包含安全层),需运行在SIL4 级硬件上;通信软件不承担安全功能,可以运行于SIL0 级硬件。

为使车载设备具备分组交换通信能力,需要对其通信软件进行修改,主要包括CFM 集成lwIP 以实现可靠传输,新增使用AT 命令分组交换集合等,原有通信软件的应用及电台控制功能不变。

车载设备分组交换通信软件的主要功能模块包括:ALE 模块、lwIP 协议栈、电台控制模块、串口控制模块、PPP 网卡适配模块,软件架构如图4 所示。

图4 车载设备分组交换通信软件架构

(1)ALE 模块通过离散的、非定长的ALE 数据包,实现端到端的数据传输[2]。通过一系列传输服务接入点(TSAP,Transport Service Access Point)向上层用户(安全层)提供传输服务,通过T 原语交互。

(2)lwIP 协议栈具体实现了TCP/IP 协议。基于 lwIP 用户接口可实现一系列TCP 服务访问点(TCPSAP,TCP Service Access Point),即TCP 服务原语,通过这些原语可以向抽象的TCP 服务用户(TCP-User),例如ALE 模块提供传输服务。

(3)串口控制模块封装了RS-422 通信驱动,向PPP 网卡适配模块及电台控制模块提供基础的串口通信,即IGPRS接口的物理实现。

(4)电台控制模块通过串口控制模块与电台进行AT 命令交互,并监测电台状态;当电台进入数据模式后,通知应用创建PPP 网卡接口,进而可与服务端进行IP 通信。

(5)PPP 网卡适配模块基于lwIP 的PPP 组件和网卡组件,通过集成串口控制模块,实现PPP网卡接口的创建、删除和操作功能。该模块创建网卡的个数与MT 个数相对应。lwIP 中数据链路层不同协议组件均可表示为统一的抽象网卡数据结构,由网卡组件来管理,支持IEEE802.1D bridge,6LoWPAN (RFC 4944),6LoWPAN over BLE (RFC 7668),PPP,SLIP -Serial Line Internet Protocol (RFC 1055),ZEP -ZigBee Encapsulation Protocol 等协议[11]。

2.4 车载设备分组交换通信软件处理流程

车载设备分组交换通信软件面向多任务操作系统的运行时任务主要包括:应用任务、电台控制任务、PPP 通信任务、lwIP 内核任务,具体处理流程如图5 所示。

图5 车载设备分组交换通信软件处理流程

该软件启动后,先进行操作系统及lwIP 初始化,之后依次创建应用任务和电台控制任务,lwIP 内核任务由lwIP 初始化函数自动创建。

应用任务通过调度ALE 模块实时处理安全层T原语。当需要建立安全通信时,先控制电台完成PDP 上下文激活,并进入数据模式;随后创建PPP通信任务执行链路建立;当PPP 协议完成IP 地址协商后,软件可通过网络与服务端建立TCP 连接,进行后续ALE、安全层的对等通信。

3 关键组件设计

3.1 串口控制模块

lwIP 支持PPP 协议运行在以太网(PPPoE,PPP Over Ethernet)和串口(PPPoS,PPP Over Serial)上。当启用PPPoS 时,与硬件紧密相关的串口控制需要由用户来实现。lwIP 内核头文件sio.h 提供了一组串口模型(SIO,Serial Input Output)的接口定义,用以支持SLIP、PPP 等运行在串口上的数据链路层协议。串口控制模块的主要接口函数如表2 所示。

表2 串口控制模块主要接口函数

lwIP 的PPPoS 组件提供Raw API 和线程安全PPP API 2 套接口;Raw API 属于轻量级设计,只能用于无操作系统的场景,或仅在lwIP 内核线程中调用。列控业务属于多任务场景,应使用线程安全PPP API 来实现应用操作,其声明包含在pppapi.h 中。此外,按照lwIP 适配要求,用户应实现PPP 输入任务和PPP 输出接口。

3.2 PPP 网卡适配模块

PPP 协议包括链路控制协议(LCP,Link Control Protocol)、鉴权协议(AP,Authentication Protocol)、网络控制协议(NCP,Network Control Protocol)3 部分。其中,NCP 用来协商和配置网络层;当网络层采 用IPv4 协议时,NCP 为IPCP(Internet Protocol Control Protocol)。当点对点通信会话结束或出现错误时,NCP 首先释放网络层连接,收回IP 地址,接着LCP 释放数据链路层和物理层连接。

lwIP 的PPPoS 组件支持Raw API 和线程安全PPP API 2 套接口。Raw API 为轻量级设计,只用于无操作系统的场景,或在lwIP 内核线程中调用。列控业务属于多任务场景,使用线程安全PPP API 来实现应用操作,其声明包含在pppapi.h 中。此外,需按照规范要求,实现PPP 输入任务和PPP 输出接口。

PPP 网卡适配模块实现的主要接口函数如表3所示。该模块与应用通过预定义的PPP 网卡描述符ppp_descripror 进行交互,每个PPP 网卡描述符对应独立的数据输入任务。PPP 网卡适配工作流程如图6所示。

表3 PPP 网卡适配模块的主要接口函数

图6 PPP 网卡适配模块执行流程

当上层应用收到连接命令时,控制电台进入数据模式,再调用PPP_Open 创建PPP 网卡数据结构,依次进行LCP 逻辑链路协商、鉴权认证及NCP 网络协议协商;待NCP 成功完成网络层IP 地址协商,PPP 链路处于打开状态,再继续执行TCP 连接建立。

当上层应用收到断开命令时,断开TCP 连接,再调用PPP_Terminate 断开PPP 链路、删除任务并进行PPP 网卡资源释放,最终控制电台回到命令模式。

另外,开发人员还要实现一些必要的回调函数,用于内核线程实现数据收发、通知PPP 链路状态改变、网卡状态改变等操作。

3.3 ALE 模块

ALE 模块连接既有上层应用(安全层等)和TCP/IP 协议栈,起到承上启下作用,包括ALE 功能层和ALE 网络接口层,其分层结构如图7 所示。

图7 ALE 模块分层结构示意

(1)ALE 功能层实现上层应用(安全层等)要求的T 服务原语,包括主动发起的命令动作和需要上报的网络状态事件。ALE 功能层定义的服务原语分为连接建立、数据传输、连接释放3 类、共8 个服务原语,共同完成传输服务。T 服务原语的报文结构和传输规则应满足列控系统分组交换通信相关标准,subset-037 欧洲无线电系统功能接口规范、高速铁路ATO 系统与GSM-R 网络接口暂行技术条件等。

(2)ALE 网络接口层实现对TCP/IP 协议栈调用,但相关标准并未定义ALE 层如何实现与TCP 服务的接口。根据RFC793[13],TCP 协议状态转换的原因可分为用户调用(the user calls)、收到报文段(the incoming segments)和超时(timeouts)。为了抽象出TCP 服务原语,对上述状态转换原因进行梳理,定义了一组参考的TCP 服务原语,包括12 种TCP 服务原语,如表4 所示。

表4 TCP 服务原语

ALE 网络接口层和ALE 功能层的接口设计按照依赖倒置原则,共同依赖TCP 服务原语这一抽象对象。其中,ALE 网络接口层需向ALE 功能层注册7个TCP 服务原语动作回调函数,并调用ALE 功能层的5 个TCP 服务原语事件函数。ALE 模块做到了传输服务与TCP/IP 协议栈具体实现逻辑的隔离。

4 结束语

符合标准规范的车载设备GPRS 分组交换通信技术是支撑铁路自动化和智能化的关键性基础技术之一。本文提出满足ETCS 及CTCS 要求的车地无线分组交换通信软件设计,使用成熟可靠的开源lwIP协议栈承担传输服务,可降低软件开发和维护成本。该软件采用分层架构和模块化设计,核心组件均面向接口设计,ALE 模块实现上层应用与TCP/IP 协议栈的隔离,串口控制模块封装了硬件驱动,PPP 网卡适配模块构建了lwIP 抽象网卡;在满足相关标准和列控业务要求的同时,具备良好的可移植性、可维护性和可扩展性,便于实现跨平台应用和性能升级。既有GSM-R 通信网络下的车载设备仅需对电路交换通信软件进行简单改造即可实现升级。

该通信软件已移植到自主化ATO、ATP 车载硬件平台及国产化操作系统中,在高速ATO 系统、新型列控系统、市域铁路列控系统的现场试验及运用中取得良好效果。后续将研究支持多种网络制式切换、协议栈参数自动调优、TCP 冗余通道等技术方案,以提高列控系统通信可靠性和鲁棒性,助力铁路装备技术水平和服务质量持续提升。

猜你喜欢
原语网卡串口
在DDS 中间件上实现双冗余网卡切换的方法
浅谈AB PLC串口跟RFID传感器的通讯应用
Server 2016网卡组合模式
密码消息原语通信协议介绍及安全分析
浅谈旅游翻译中文化差异的处理
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
挑战Killer网卡Realtek网游专用Dragon网卡
读编往来
基于并行控制的FPGA多串口拓展实现