配电安全交互网关报文处理机制

2018-08-07 10:47郭江涛邹岳林
计算机与现代化 2018年7期
关键词:接入网内核网关

郭江涛,沈 佳,刘 昆,邹岳林

(国网新疆电力有限公司信息通信公司,新疆 乌鲁木齐 830001)

0 引 言

随着国家电网公司致力于建设结构合理、技术先进、灵活可靠、经济高效的现代配电网,配电自动化网络覆盖范围越来越广,配电终端接入数量不断增多,给配电业务信息的安全性和业务的连续性带来了新的巨大风险[1]。配电终端采用网络通信技术实现数据传输,能够实时将外部数据传入电力企业的内网主站。配电安全交互网关是配电终端与配电主站之间的安全接入层的核心组成部分,它为整个内部网络提供保护,保障配电自动化主站系统安全,在安全接入的基础上实现配电主站与配电终端大规模数据交换是当前发展的迫切需要[2]。

本文针对配电终端在通信与管理方面存在的安全问题,为解决原有配电安全接入网关报文处理低效的问题,设计实现数据面开发工具集(Data Plane Development Kit, DPDK)技术应用在网关中的方案,构建配电安全交互网关的网络通信处理模型,实现快速处理大量配电终端安全接入业务;设计实现基于TCP透明代理技术的配电安全通信解决方案,在不影响现有的主站和终端的正常业务情况下,实现对现有配电自动化系统无感知安全改造,有效地降低了安全改造成本,达到快速实施的目的和效果。最后,对配电安全交互网关进行了性能测试。测试结果表明,本文实现的配电安全交互网关的系统安全性、吞吐量、包转发率、转发时延等性能均具有明显提升。

1 相关研究

1.1 配电安全交互网关

针对电力系统的信息安全问题,我国相继颁布了《配电二次系统安全防护方案》、[2011]168号文件《关于加强配电网系统安全防护工作的通知》等,明确提出由于配网系统位于生产控制I区,因此必须做好安全防护工作。最新颁布的[2017]6号文《国网运检部关于做好“十三五”配电自动化建设应用工作的通知》中的附件2《配电自动化系统网络安全防护方案》对配电自动化信息安全防护作出了标准化的规范和方案[3]。

配电自动化系统网络安全防护方案的重要网络设备配电专用安全接入网关,采用串行方式部署在生产控制大区的安全接入区,串联在安全接入区的采集服务器和配电终端之间,采用国产商用非对称密码算法与终端进行双向身份认证,身份认证通过后,才允许采集服务器与终端进行信息交互,对于非法终端或未完成身份认证的终端,禁止与采集服务器建立连接[2]。配电专用安全接入网关在配电安全防护方案中的典型应用如图1所示。

图1 配电专用安全接入网关典型应用

1.2 数据包捕获技术

随着配电自动化网络覆盖范围越来越广,配电终端接入规模不断扩大,配电业务报文转发越来越频繁,主站对响应时间的要求越来越高,目前配电安全接入网关吞吐量、包转发率、时延等性能较差,需要进一步提升配电安全接入网关的业务报文转发性能,保证配电业务信息的安全性和业务的连续性。

目前网关加速的研究主要围绕功能优化展开,包括网关架构的改进、加密效率的提升和安全协议的改进等。

针对网关架构的改进,一方面偏向使用硬件,例如GPU或FPGA等辅助CPU进行处理,另一方面偏向使用软件,绕开内核和内核协议栈收发报文,使用高性能报文收发平台和用户态协议栈加速报文处理[3]。偏向硬件的框架需要借助于GPU或FPGA,出现问题不容易调试,灵活性较差,应用并不广泛[4]。在偏向软件的框架中,认可度较高且应用较广的是DPDK、netmap和PF_RING ZC。在这3种框架中,PF_RING ZC和DPDK的性能高于netmap。DPDK遵守Open Source BSD许可证,而PF_RING ZC使用EULA License,需要为每个端口或MAC地址申请一个许可证,应用没有DPDK广泛[5]。所以本文提出的配电安全交互网关基于DPDK框架进行设计与实现。

2 配电安全交互网关报文处理机制的设计与实现

2.1 使用DPDK套件接收和发送报文

配电安全交互网关报文处理机制实现基于DPDK二层收发包的功能,作为核心功能提供二层报文数据给其他模块进行解析处理。实现了session功能,使得业务可以记录过往数据包的转发行为,以及记录TCP连接状态,供其它模块使用。

配电安全交互网关报文收发流程图如图2所示。

图2 配电安全交互网关报文收发流程图

DPDK是一套数据平面开发工具集,为Intel Architecture (IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持,它不同于Linux系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理[6]。具体体现在DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。因此,DPDK具有高性能、用户态开发、死后易重启等优点。

DPDK使用了轮询(polling)而不是中断来处理数据包。在收到数据包时,经DPDK重载的网卡驱动不会通过中断通知CPU,而是直接将数据包存入内存,交付应用层软件通过DPDK提供的接口来直接处理,这样节省了大量的CPU中断时间和内存拷贝时间[7]。

通过相关智能基础设施的安装,实现轨道实时信息的反馈与管理。这些信息实时的反馈到铁路管理部门以及列车的驾驶人员,对于可能存在的风险与故障可实现有效的规避。这相比于传统的铁路检查工作而言,不仅准确性更高,同时效率优势也十分显著。

DPDK主要有以下3个核心模块:

1)网络层模块。

DPDK对从内核层到用户层的网络流程相对传统网络模块进行了特殊处理,如图3所示,DPDK拦截中断后,不触发后续中断流程,并绕过协议栈,通过UIO(Userspace I/O)技术将网卡收到的报文拷贝到应用层处理,报文不再经过内核协议栈,从而减少了操作系统内核的开销,消除了IO吞吐瓶颈。DPDK的报文包全部在用户控件使用内存池管理,内核控件与用户空间的内存交互不用进行拷贝,只做控制权转移,因此避免了内核态和用户态的报文拷贝以及用户态下的软件崩溃,保证了系统的稳定性并提高了报文的转发效率。

图3 DPDK与传统网络流程对比图

2)内存管理模块。

图4 hugepage内存管理机制

DPDK采用hugepage内存管理机制,Linux在内存管理中采用受保护的虚拟地址模式,在代码中地址分为3类:逻辑地址、线性地址和物理地址[8]。程序使用具体内存,逻辑地址映射转化为线性地址通过分段机制,线性地址映射转化为物理地址通过分页机制,在实际实现过程中,将线性地址映射转化为物理地址时,需要从内存中读取至少4次页目录表和页表,为了加快内核读取速度,CPU在硬件上对页表做了缓存,就是转换检测缓存区(Translation Lookaside Buffer, TLB)。线性地址先从TLB获取高速缓存内存,如果不存在就从内存表获取,如果有直接的映射,直接从内存读取,没有则产生缺页中断,重新分配物理内存,或者从硬盘上将swap读取。具体图示如图4所示。

普通页大小是每个4 kB,如果是4 kB页的寻址如图5所示,使用物理内存时需要多级查找才能找到对应的内存4 kB的页表是Linux针对一般情况得出的合适大小,然而对于特殊应用可以通过扩大页表面积提高内存使用效率。

图5 寻址图

DPDK使用hugepage的思想就是让程序尽量独占内存防止内存换出,扩大页表提高hash命中率,通过hugepage技术扩大了该使用的页表大小,设定为更适合高频内存使用程序的状态,获得了以下3点优势。

①无需交换。也就是不存在页面由于内存空间不足而存在换入换出的问题。

③降低page table查询负载。

3)内核管理模块。

每个核属性包括逻辑核id、硬核id、非统一内存访问架构(Non Uniform Memory Access Architecture,NUMA)节点id。DPDK会根据系统默认状态生成一一绑定的映射表,用户可以根据需求更改映射表,后续DPDK框架会根据该映射表进行核绑定。服务器启动时选取一个逻辑核做主核,然后启动其他核做从核,所有线程都根据c映射表做核绑定,控制核主要完成PCI、内存、日志等系统的初始化,从核启动后等待主核初始化完毕后挂载业务处理入口,从核运行业务代码。内核管理模块如图6所示。[9]

图6 内核管理模块

多线程在构建服务器时常常要处理竞争问题,DPDK提供了支持多个线程操作的无锁循环队列来规避冲突,交换数据。数据包等需要大量重复使用的结构可以相互隔离,线程持有独立的可用内存池。[10]

如图7所示,大部分程序交互时是在传输层及以上,但DPDK从二层切入,在构建集群需要大规模转发数据时可以使用三层转发,这样将使数据包转发降低1层协议栈的开销。

图7 程序交互图

2.2 使用TCP透明代理维护报文的收发

由于配电安全交互网关部署及兼容性考虑的特殊性决定,隧道协商以及加密方式只能是借用原有两端的TCP连接进行。连接数据交互时序如图8所示。

图8 连接数据交互图

在城区配电网通常配电主站(station)的前置数据采集服务器(FEP)与配电远方终端(RTU)通过EPON网络通信,主站通过光端机(OLT)接入EPON网络,通过光网络单元(ONU)连接RTU[11]。包括3个组件:

1)安全接入网关(SAG):负责执行主站安全策略,对终端提供安全接入;

2)终端安全模块(TSM):负责执行终端安全策略,对终端提供网络通信安全防护;

3)安全监控平台(SMP):负责配电安全策略管理,对配电安全接入网关和配电终端安全态势进行监控管理。

为了避免原有系统改造且满足部署便捷的需求,SAG与TSM均采用无IP地址、串接部署方式。SAG与TSM基于FEP与RTU建立的TCP连接,采用数据包截获与TCP重组技术实现透明代理通信。

在FEP与RTU建立TCP连接后,一方面,SAG和TSM截获FEP与RTU的通信报文,利用TCP报文重组技术对报文进行明文/密文转换;另一方面,SAG和TSM之间基于FEP与RTU的IP地址和TCP连接构建新的TCP报文,用于隧道建立/维护、对TSM监控管理等通信。由于需要在FEP与RTU已建立的TCP连接上插入管控报文,需要在SAG和TSM中对双向TCP连接的序列号与确认号进行维护[12]:

1)在SAG中维护一个双向序列号表(BST)为每一个TSMi设备的TCP连接建立一个四元组记录:{SEQ_F,ACK_F,SEQ_T,ACK_T},SEQ_F和ACK_F记录SAG与FEP之间通信的TCP序列号和确认号,SEQ_T和ACK_T记录SAG与TSMi之间的通信的TCP序列号和确认号。

2)在TSM中维护一个双向序列号表(BST)为每一个SAG设备的TCP连接建立一个四元组记录:{SEQ_S,ACK_S,SEQ_R,ACK_R},SEQ_S和ACK_S记录TSM和SAG之间通信的TCP序列号和确认号,SEQ_R和ACK_R记录TSM与RTU之间的通信的TCP序列号和确认号。

如图9所示,以SAG通信为例,每次收到FEP的TCP包更新SEQ_F和ACK_F,以此作为向FEP发包时序列号与确认号。每次收TSM的TCP包时更新SEQ_T和ACK_T,向TSM转发业务数据包或监控数据包时以此为序列号和确认号。在此基础上,SAG与TSM之间实现安全通信与监控管理,对FEP与RTU实现透明通信。

图9 基于BST的数据通信

配电安全网关作为TCP连接的中间透明代理,负责对链路上IEC104的数据进行加解密,并且在该链路上进行隧道协商,在TCP的3次握手建立连接时获取到两端TCP的SEQ以及ACK号,并在连接成功后主动进行隧道协商,因为协商请求数据由本地安全网关发出并不是客户端行为,因此对于协商应答也不会转发给客户端,而是直接由网关进行处理[13]。当协商成功之后对于客户端发送的数据则会进行加密转发,隧道的协商过程以及加密过程对于客户端来说是不可见的,并且由于这些数据的插入与修改使得客户端发出的数据包的SEQ与ACK无法在安全网关与服务器间进行使用,同理服务器端发给客户端的报文的SEQ与ACK也无法在客户端与安全网关侧正常使用,因此对于经过安全网关的数据包都需要进行TCP的SEQ与ACK的重新映射计算,并且对于安全网关自己发送的协商以及后续的探测等报文也需要维护TCP的重传以及确认机制,而对于这些功能及数据维护则均是由TCP代理模块进行完成[14]。

3 性能测试

为了检验研究实现的配电安全交互网关的报文处理机制是否能够达到预期的性能,模拟真实环境对配电安全交互网关的报文处理机制进行性能测试。本文测试主要从并发连接数、吞吐量、转发延迟等几个性能指标进行测试分析。

3.1 测试环境

配电网安全交互网关运行在配置为单颗Intel志强处理器的服务器上,同时使用IXIA400T网络测试仪。服务器硬件参数如表1所示。

表1 服务器硬件参数

配置信息系统规格CPUIntel(R) Xeom CPU E3-123V3@3.40 GHz内存16 GB硬盘1 TB HDD操作系统CentOS6.6_ x64

IXIA400T网络测试仪使用不同的测试模块可以完成10/100 以太网、G-bit以太网、USB以及POS、路由等网络性能的测试和分析。该仪表具有4个插槽能够同时支持4块不同类型的测试模块,4个测试端口都集成了Linux内核、TCP/IP协议栈和RISC CPUT,最高支持每秒建立30万TCP连接。[15]通过同时分布式运行多端口测试处理,可以实现对待测试设备进行全方位的流量状态测试和分析。

3.2 测试方法和结果分析

网络测试仪模拟大量配电终端实现并发接入,网络测试仪的实现脚本为新建一个连接,发送一个32 Byte的报文并对比发送报文和接收到的报文是否相同,然后关闭连接。测试拓扑如图10所示。

图10 测试拓扑图

网络测试仪发出的数据经由配电安全交互网关转发给模拟配电主站系统,通过模拟配电主站系统上高速的echo-server服务实现数据的无差异回流,安全接入系统将回流数据返回给网络测试仪,从而得出测试结果。

图11 并发测试图

图11是配电安全交互网关在承受20万条并发连接请求情况下的处理时间,可以看到配电安全交互网关在25 s之内就完成了所有的业务请求并且每秒能处理的并发量能高达2万条。

而网络测试仪监测到的数据发送和接收速率都比较平稳,说明配电安全交互网关的转发比较稳定,如图12所示。

图12 网络测试仪接收、发送速率对比图

测试结果分析如表2所示。由测试结果可以看出,通过并发连接数、吞吐量、转发延迟、新建连接数、丢包率对报文处理能力进行分析,基于DPDK技术和TCP透明代理技术的配电安全接入网关报文处理能力以及性能优势很明显,满负载的情况时也不会出现丢包现象。DPDK技术和TCP透明代理很好地提升了配电安全接入网关的报文处理能力以及整体性能。

表2 测试结果

测试项名称简单描述预期结果实际结果并发连接数模拟大量配电终端和配电主站连接配电安全交互网关发送数据流,观察最大连接数并发连接数大于100000条并发连接数为300000条吞吐量向配电安全交互网关发送各种数据,计算处理速度吞吐量为900 Mbit/s吞吐量为900 Mbit/s转发延迟计算数据流入流出时间间隔数据转发延迟小于10 us1024长度报文的转发延迟为6.88 us新建连接数模拟大量配电终端和配电主站连接配电安全交互网关发送数据流,观察新建连接数每秒新建连接数大于3000条每秒新建连接数为5000条丢包率测试配电安全交互网关满负载时的报文丢弃率报文丢弃率小于千分之一报文丢包率为0

4 结束语

配电安全交互网关是配电网信息安全建设的重要网络设备。本文从配电安全网关报文处理机制的设计与实现出发,将配电安全网关的报文的收发和转发维护处理报文的方案进行了设计与实现,最后进行了测试验证。本文设计的报文处理机制高效地实现了配电安全网关的报文处理转发功能,提升了配电安全交互网关的整体性能。在不影响配电安全交互网关安全防护能力和性能的前提下,降低装置成本,满足大规模推广的要求是下一步要进行的研究工作。

猜你喜欢
接入网内核网关
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
Linux内核mmap保护机制研究
信号系统网关设备的优化
有线接入网技术在铁路通信工程中的应用
电子信息接入网技术在网络电视中的应用之我见
光接入网虚拟实验平台设计
LTE Small Cell网关及虚拟网关技术研究
应对气候变化需要打通“网关”