杨 越 王若冰 刘 瑞 张 博 佟 轶
(中国航天工程咨询中心 北京 100048)
基于多传输通道的单向传输技术研究
杨 越 王若冰 刘 瑞 张 博 佟 轶
(中国航天工程咨询中心 北京 100048)
在对单向数据传输技术研究的基础上,分析了现有的光闸系统中存在的一些不足。针对这些不足,提出基于多传输通道的单向数据传输设计。首先阐述了多传输通道传输方案的基本思路,利用通用的光纤网卡实现了数据的单向传输,然后结合前向纠错技术进行可靠性设计,并给出了多通道数据传输的调度算法。最后进行了系统的架构的设计。通过实验验证了该方案可以实现快速、单向、可靠的数据传输。
单向传输 多通道 调度算法 光闸
随着国家安全形势的不断变化,数字信息的安全受到高度重视。依据国家保密安全规范,必须采用物理隔离的方式,将处理涉密信息的网络系统与其他网络环境隔离,不同密级网络之间的数据交换必须进行全生命周期的监控和审计。随着涉密网内业务工作的扩展,物理隔离造成了涉密网络的信息“孤岛”效应,业务管理和科研生产工作对外部信息持续、快速的获取需求逐渐凸显,采用多批次人工导入方式已经很难满足需求,在一定程度上已经影响了日常科研生产工作。
针对于这一缺陷,现在很多部门采用网闸、光闸等单向传输设备实现数据单向、安全、快速地从低密级的网络传输到高密级的网络中。同网闸相比,光闸传输速率极高,可以实现实时传输[1]。近几年国内研究的技术主要是基于光闸的单向传输系统[2]。王海洋等设计了一款基于单模光纤的数据单向传输系统,解决了非涉密网络中的数据单向导入涉密计算机的问题[3]。姜黎等通过光电单向转换的物理原理设计了基于光纤通信技术的数据单向传输设备[4];李佩玥等将无源光隔离器应用于单光纤的数据传输过程,结合前向纠错码和物理层编码保证单光纤无反馈传输链路极低误码率[5]。国外对光闸的研究文献较少,但在单向传输技术上也有深入的研究,主要代表为Kang等提出了数据泵的概念[6-7]以及澳大利亚亚特尼克斯数据门公司研制的“数据二极管”设备[8-9]。
通过对现有国内外文献的研究,发现现有的传输技术存在着一些不足: 1) 一般的单向传输设备都是基于单通道进行单向传输,使用前向纠错(FEC)技术保证数据传输的可靠性,但仍然存在着单通道失效的可能性;2) 利用单通道实现的单向传输设备的可靠性及传输速率是已确定的,不具备扩展的能力,实际应用中,不同的应用数据对传输速率和可靠性具有不同的需求,现有的单向传输设备很难满足这样的需求;3) 文献[3-5]中提到的硬件设备需要依靠定制才能生产出来,对采用通用的网络硬件设备来实现单向传输的阐述不足。
为加强单向数据传输系统的健壮性、灵活性和可靠性,本文拟采用多模冗余容错的方式,设计基于多个通道的数据单向传输方案。该方案利用常见的硬件设备,在确保系统经济性的同时保障了数据单向性,有效地避免了单通道失效造成的数据丢失,并可以通过动态地增减传输通道来调整数据传输的可靠性和传输速率。
通过单向光通道技术途径,多路单向传输系统在物理隔离网络环境下,实现从低密级网络向高密级网络的严格单向数据传输,达到零比特回传的安全指标。在跨网的单向传输链路上,采用了私有的数据传输/封装协议,提高了数据安全性和可信性。数据单向传输系统由多个单向传输通道、发送端和接收端组成。为解决单向传输固有的传输可靠性难题,本方案采用冗余传输与FEC技术相结合的设计思想,首先采用FEC技术对应用数据进行处理,然后通过多路单向通道进行冗余传输时,可以保证数据传输的可靠性。在保证一定可靠性的前提下,为解决大容量数据传输的带宽瓶颈,利用多条通道同时并发传输数据。此外,调度子系统支持在传输可靠性和传输带宽之间进行适应性设置,以适应数据传输的不同需求;并可以配置不同数量的单向传输通道,使得系统具备一定的动态扩展能力。
方案的原理如图1所示,在物理隔离的外部网络和内部网络分别部署外网主机与内网主机,外网主机与内网主机配对安装发送网卡和接收网卡,每对网卡及其连接光纤构成了一条单向传输通道。通过这些传输通道,外网主机可以将数据单向的传递给内网主机,并可以采用增减网卡对数的方式,动态调整单向传输通道的数量。
针对单条通道失效所带来的数据丢失问题,通过多路单向通道对数据进行冗余传输。此外,为避免同一条数据的所有拷贝重复通过一条单向通道进行冗余传输,仍存在通道失效造成数据丢失的可能性。本方案规定同一条数据的多个拷贝只能通过不同的单向通道进行传输,使得单条通道失效只能造成一条数据的一份拷贝的丢失,确保仍可通过其他通道获取足够的数据拷贝进行数据恢复与重组。
图1 系统原理图
在通信系统中,用于纠正传输差错的方法主要有两种:自动重传(ARQ)技术和FEC技术。在单向通道数据传输中,无法通过交互进行数据重传来纠正数据错误或丢失。现有的单向传输技术主要使用FEC技术保证单向传输的可靠性。本文中针对数据传输的可靠性,将冗余传输与FEC技术相结合,进行了数据传输的可靠性设计。其中有助于提高数据传输可靠性的手段主要包括冗余传输、FEC编码、交织处理和CRC编码。为实现传输可靠性和传输带宽之间的适应性设置,方案中根据数据的传输需求设计了传输质量参数,包括数据传输优先级、是否进行FEC编解码、冗余传输次数三个参数。对数据传输优先级进行设置可以调整数据传输的优先顺序,高优先级适用于实时性要求较高的数据。对FEC编解码以及冗余传输次数进行设置可以调整数据传输的可靠性,冗余传输次数的增加(减少)可以提高(降低)数据传输的可靠性;相应地,应用数据传输所需的时间也随之增加(减少)。
在发送端,应用数据被拆分并封装成一组原始数据块,对这一组原始数据块进行FEC编码和交织处理以应对连续丢帧,并在数据块头部加入序号、CRC编码、数据帧类型等信息,形成含冗余数据块的数据块传输组。之后通过冗余传输调度将数据块子分组交给传输通道打包成数据帧进行冗余传输。由于一组数据块在单向无反馈的传输过程中,可能存在数据块丢失的情况,因此,在接收端,需要通过数据块头部的CRC检测出错的数据块,并通过数据选取从多个数据块冗余拷贝中选取正确的数据块。数据块排序后通过编号确定丢失的数据块在数据块组中位置,若不存在传输失败的数据块,则可直接获得原始数据块;若存在传输失败的数据块,在丢包恢复的能力范围之内恢复出丢失的数据块。最后经数据重组还原为原始应用数据。
2.1 数据单向传输
在本方案中,数据单向传输的硬件基础是由普通千兆光纤网卡改造而来的单向网卡,如图2所示。普通的千兆光纤网卡以光纤为介质进行数据、信号传输,通过光模块与光纤进行数据交换。光模块由光电子器件、功能电路、光接口等构成,光接口包含光发送接口和光接收接口两个部分,其中光发送接口将光信号发送到光纤上,光接收接口从光纤接收光信号。
图2 千兆光纤网卡及光模块
如图3所示,光网卡数据传输的原理是:使用2根光纤将2个网卡光模块的光接收接口RX与光发送接口TX进行交叉连接的实现数据的双向传输。根据此原理,只需将其中1根光纤以及两个网卡分别对应的光发送接口和光接收接口失效即可构成1条单向传输通道。发送网卡由普通网卡将光模块接收接口失效后得到,接收网卡由普通网卡将光模块发送接口失效后得到。由于没有从接收网卡到发送网卡的数据通道存在,实现了网络数据的单向隔离,可以应用到不需要对端响应的网络连接协议。
图3 单向传输通道
由于基于单向传输网卡的数据传输不存在反向数据传输,在传输层就不能采用面向连接的TCP协议[10]。另外,由于无法通过交互进行数据的重传来纠正出现的数据错误或数据丢失,基于无连接的UDP协议也无法满足数据传输要求。在传输层传输时需将数据包提交给数据链路层进行进一步的拆分和封装,会降低数据传输的传输速率。为提高单向传输的数据可靠性和传输速率,结合系统的应用需求,本方案在链路层采用数据帧的方式进行数据传输。发送数据时只需知道接收端网卡的MAC地址,无需建立连接就可以直接发送数据。方案中,应用程序交下来的数据被看作成无结构的字符串。传输系统不关心字符串的含义,将数据经过拆分、封装、协议打包后,形成一组数据帧进行传输。
对于多个单向传输通道利用,主要存在两种方式:
方式一 对各条通道针对于数据的传输需求分成不同优先级的通道,一组待传输数据帧在传输时交给一条对应优先级的通道单独发送。
方式二 将多个通道看作成一条扩展了带宽的传输通道,一组待传输数据帧在传输时会占用所有的通道进行统一发送。
在发送端,会对应用数据进行拆分、封装等操作,一个原始数据将生成一组待传输的数据帧。在接收端,会对这一组数据帧进行校验和重组等操作,这会占用接收端计算机大量的内存和计算资源。相对于发送端,接收端的计算更复杂,工作负载更大,需要尽可能的降低接收端的计算压力。方式一意味着在同一时间段内,同时存在着多组待数据帧在进行传输;方式二类似于原子操作,即在同一时间内,只有一组数据帧在发送。在一组数据帧发送完毕后,才能进行下一组数据帧的发送。与方式一相比,采用方式二,在一段时间内,接收端缓存的数据帧将会大大减少,占用的内存资源会降低很多。
此外,方案要求能够动态扩展传输通道。每次需要增添或删减传输通道时,方式一需要对所有传输通道进行相应的调整。同方式一相比,方式二会方便很多,只需要对新增的传输通道进行配置即可。
综合以上两方面因素,本方案采用方式二来使用单向传输通道,这样就意味着将多条传输通道看作是一条扩展了带宽的传输通道。在传输一组数据帧时,多个通道将同时并发的进行传输。
对于每条通道,应尽可能地确保通道可以正常工作,所以需要一种方式可以检测通道状态。系统设计中采用了一种心跳机制[11]。即发送端在每条传输通道空闲时,定时发送一个同步信号,接收端以此判断单向传输通道的连通性。接收端在一段时间内发现从某一条数据通道未接受到任何数据,就可以确定此通道发生故障,进行报警操作。
每条传输通道在发送时,会生成一个连续的流水号Sn,每条传输通道的接收端同样会存在一个接收数据流水号Rn。在接收到每帧后会对流水号进行判断,根据这个流水号的连续性,若出现Rn 2.2 可靠性设计 2.2.1 数据纠错分组 FEC是一种为数据传输而设计的差错控制技术。发送端在根据需要传输的数据生成冗余数据,然后将原始数据与冗余数据一起传输。接收端则可以根据冗余数据检测原始数据中错误数据并纠正。 数据块级的FEC进行编码时,对字节长度统一固定为L的K个原始数据块进行FEC编码后,得到M(M>0)个冗余数据块。这K个原始数据块和M个冗余数据块组成的一个FEC子分组。数据块级的编码过程如图4所示,K个原始数据块为b=b0,b1,…,bK-1,M个冗余数据块为r=r0,r1,…,rM-1;从每个数据块头部开始,依次选取每个数据块上相同位置的字节得到K个字节B0,1,B1,1,…,BK-1,1,通过FEC编码生成M个冗余字节R0,1,R1,1,…,RM-1,1,这M个冗余字节对应于冗余数据块相同位置的字节。 图4 数据块FEC编码 在接收端进行解码,可以通过数据块的序号确定传输失败的数据块。从每个数据块头部开始,依次选取每个数据块上相同位置的字节,通过FEC解码器恢复出丢失的字节,并用这些字节重组为丢失的数据块,完成丢失数据块的恢复。根据纠删码原理,接收端只需要在M+K个数据块中接收到K个数据块就可以恢复K个原始数据块。不同的FEC编解码类型和M值在纠错能力和编解码效率上存在着差异。在实际应用中最好根据实际效果选择FEC编解码类型和M的值。 本方案中,在实现FEC编解码算法时采用软件编程,比较复杂的FEC编解码算法会占用到较多的计算资源,影响到数据的传输速度。本方案中采用奇偶校验码的数据帧层的编解码,每k个数据块的对应为XOR(异或)运算后会得到1个冗余数据块,其中k的值可以根据实际的可靠性需求和传输速率需求进行调整。k值越小,冗余度就越高纠删能力就越强;而编解码所占用的时间会增加,整体的传输速率会随之降低。这种方式编解码复杂度低,计算比较简单,时延较小。如果k+1个数据块中出现1个数据块丢失,则可利用其它k个数据块恢复,同样是进行XOR操作。 发送数据时,一条应用数据经拆分、封装和FEC编码之后会生成一个由多个FEC子分组构成的数据块传输组,这一个数据块传输组会交给调度程序统一发送。 为避免相邻数据被连续丢弃,造成一个FEC子分组内丢失数据过多,导致数据不能恢复,在进行FEC编码之前,方案中采用数据块层面的交织方式对原始数据块进行FEC分组。交织本身不能恢复丢失数据,但可以把连续丢帧离散成随机丢帧。进行交织的深度越大,就有更多的分组去承担连续丢帧,对于单独的一个FEC子分组造成影响就会越小。 本方案中,将对数据进行拆分,每个数据块长度固定为L个字节,不足用零填充。将得到一组数据块,个数为t。然后会对这些数据块每组k个数据块分成g个FEC子分组。然后采用FEC编码,生成r个冗余数据块。为使分组比较均衡,先计算得出FEC子分组个数g的值。 令: a=tmod(k) (1) 则: (2) 然后利用分组数g进行数据块分组: j=imod(g) i={0,1,…,t-1} (3) 如图5所示,t个原始数据块分成g个子分组进行FEC编码,其中i为数据块的序号,j值相等的数据块为同一FEC子分组。数据块传输仍按数据块的序号依次进行传输,冗余数据块会在原始数据块后进行传输。 图5 交织分组 2.2.2 冗余传输 为进一步提高数据在传输过程中的可靠性,可以采取冗余传输的方式。冗余传输的次数越多,数据的可靠性就越高。冗余传输的方式存在两种: 方式一 每条数据帧选取多条通道并发地进行冗余传输; 方式二 一组待传输数据帧统一进行多次重复发送。 两种方案各有优劣。方式一,发送端在每条数据帧发送完毕之后就可以将数据帧丢弃,但因为存在多通道同时丢帧的可能性,可能导致某一帧冗余发送均会失败。第二种方案中,每条数据帧的冗余发送之间间隔较长,可以避免冗余发送失败,但发送端需等待整个数据重复发送完毕才可以将整组数据丢弃,这就意味着在此发送过程中发送端须一直缓存这一组数据块。 在设计中,冗余发送时采用第二种方案。主要考虑到存在连续丢帧的可能性,以及在传输过程中,接收端的数据处理所占用的资源会比发送端要多,适当降低发送端的发送速度,减轻接收端的处理数据的负荷,会进一步提高数据传输的可靠性。此外,考虑到某一条通道失效的可能性,在数据帧重复发送时,会记录之前已经发送过的通道,再次发送时避开此通道,选用其它的通道进行发送。 数据采用冗余发送经各传输通道发送到接收端后,每条数据块会在接收端收到多个数据块拷贝。调度层程序从这些拷贝中选取正确的数据块进行数据重组。本文采用投票的方式确定正确的数据块。 在投票之前,首先会对数据块进行CRC校验。数据选取时,会提取校验通过的数据块中有效数据载荷进行统计。相同的有效载荷的个数会作为票数。将得票数最多的有效载荷作为正确数据块进行后续处理。若存在得票数相同的多个有效载荷,则可借助传输数据块拷贝的所有数据通道的丢包率进行判断,综合选取传输通道可靠性较高的有效载荷作为正确数据。 2.3 传输调度算法 利用多个单向通道进行数据传输时,需要综合考虑应用数据的传输需求(时效性、可靠性等),调度算法的性能。检验一种调度算法通常有以下几个方面:算法是否完善、资源分配是否合理、调度速率是否满足实时性的要求、是否解决通道过载和空闲的现象、调度模块的响应是否足够快、通道资源是否合理利用以及能否做到实现代价小等[12]。 为提高传输速率,减少调度所需的次数,将一个数据块传输组分成m个待发送的待传输子分组,每个待传输子分组中的数据块个数为H,具体的值根据实际传输情况设定。传输调度模块在传输一个数据块传输组时会根据用户数据配置的服务质量参数,得到数据帧所需传输的冗余次数r。然后依次调取每个待传输子分组进行发送。 在获取待传输子分组后,传输调度模块继而会轮询每条传输通道的状态,若传输通道当前空闲且可用,则向当前传输通道传递传输子分组进行发送。 数据块传输组发送调度流程: 1) 传输调度线程从传输缓存队列中获取一组数据块传输组。 2) 根据用户数据配置的服务质量参数得到数据帧所需传输的冗余次数,以及数据块传输组的子分组个数。 3) 从数据块传输组中选取一个待传输子分组以待发送。 4) 传输调度线程轮询每条传输通道状态,选取空闲传输通道。 5) 若选取的传输通道从未传输过此数据帧分组,执行下一步骤,否则返回步骤4)重新选择传输通道。 6) 将待传输子分组传递给传输通道进行传输。 7) 若此待传输子分组是数据块传输组的最后一个子分组,执行下一步骤,否则返回步骤3)继续循环处理。 8) 若数据帧组传输次数是否已达到冗余次数要求,则执行下一步骤,不是则转到步骤3)继续循环处理。 9) 此数据块传输组发送完成,转到步骤1)循环执行。 具体调度算法如图6所示。 图6 数据发送流程图 多通道单向数据传输系统的系统架构如图7所示。 图7 系统架构图 从图7中可以看出,在发送端和接收端的宿主和物理层之间都存在着三个层次,即服务层、调度层和链路层。在发送端,来自宿主系统的数据依次通过服务层、调度层和链路层的处理后会封装成一组数据帧经单向网卡进行传输。接收端接收到单向网卡传来的数据帧后,依次通过链路层、调度层和服务层处理,还原成宿主原始数据并发送给宿主系统。 服务层:在发送端,服务层主要负责缓存来自宿主系统的数据并根据数据的优先级依次交给调度层处理。在接收端,服务层主要负责缓存调度层重组后的数据,并提交给宿主系统。 调度层:在发送端,调度层会对数据进行数据拆分、协议封装、冗余块生成、校验码生成等数据处理,然后将生成的一组数据块调度分配给链路层中各传输通道。在接收端,调度层接收来自链路层的数据块,进行数据校验、协议解析、丢包恢复、数据重组等数据处理操作,将还原后的数据提交给服务层。 链路层:面向各条传输通道。在发送端,链路层主要负责对数据块进行数据帧打包、发送等操作。在接收端,链路层主要负责接收数据、数据块提取等操作。 测试环境为两台服务器,型号为HPDL580G7,分别作为外部网络终端和内部网络终端。配置为:CPU:InterXeon2.00GHz双核,内存:32GB,操作系统:Windows2008R2。测试中采用了3条传输通道,即3对千兆单向传输网卡通过光纤连接。因为之前所述的通道传输方式,本方案将多条传输通道看作为一条扩展了带宽的传输通道,所以单条通道传输与多条通道传输仅在传输速率上存在区别。 每条应用数据为10MB,进行FEC编码时,采用奇偶校验码编码,每10个数据块生成1个冗余数据块。此外,改变测试数据的产生速率,可以调整系统的传输速率。在测试时,选取了两种不同的传输速率作为对比。为了证明系统的传输效率和稳定性,对传输参数进行了选择,如表1所示。 表1 测试参数 从表2可以看出,丢帧率与传输速率相关,通过测试1、测试3、测试5可以看出在传输速率为190MB/s左右时,10个小时以内几乎没有丢帧出现。在传输速率为280MB/s左右时,丢帧出现较多。通过测试2看出,FEC编解码可以解决部分丢帧问题,测试4表明冗余传输与FEC编解码相比,可靠性会更高。这与FEC编解码选择的编码算法和冗余度有关。在实际应用中,如果条件许可,可以选择更为有效的FEC编码算法,本方案中的可靠性设计可以进一步优化。此外,测试2与测试4、测试6相比,通道传输速率基本相同的情况下,测试2的应用数据的产生速率是测试4、测试6的两倍左右,这是由数据冗余传输造成的。 表2 测试结果 本文针对一般单向传输系统中存在的单通道失效的可能性,以及可靠性及传输速率无法动态调整等问题,提出了利用多条通道进行传输的系统方案。方案中首先阐述了如何改造通用的光纤网卡构建单向传输通道,提出了一套利用多通道冗余传输结合前向纠错技术,以提高数据传输可靠性的传输机制;在此基础上,进行了传输调度的设计,旨在提高数据的传输效率。在单向传输系统测试中,使用3个传输通道进行了传输可靠性和传输性能测试,证明了方案的可行性。方案存在一些需要改进的不足:由于单向传输通道不存在反馈信息,方案不可能确保完全可靠的传输,方案中的可靠性设计中的前向纠错算法可以采用纠错性能更优的算法,并使用硬件实现的方式实现;因多个通道的原因,本方案实现的系统会比单通道占用更多的计算机资源。综上所述,本方案解决了现有的单向传输系统的一些不足,提高传输的可靠性和速率,并可以动态地调整可靠性与传输速率以适应不同应用数据传输需求,具有很好的可扩展性,这些都使得本方案在内外网安全领域具有很广阔的应用前景。 [1] 刘波,陈曙辉.一种基于Bell-LaPadula模型的单向传输通道[J].计算机科学,2012,39(10):26-29. [2] 包益民.基于光闸单向安全传输系统的研究与实现[D].杭州:浙江工业大学,2011. [3] 王海洋,孟凡勇.基于光纤的数据单向传输系统设计与实现[J].信息网络安全,2011(9):107-109. [4] 姜黎,高志军,曹新星.基于光纤通信技术的数据单向传输设备研究[J].计算机与数字工程,2012,40(3):83-85. [5] 李佩玥,石俊霞,陈雪,等.单纤单向数据隔离系统的设计与实现[J].电子测量技术,2014,37(6):115-118. [6]KangMH,MoskowitzIS.APumpforRapid,Reliable,SecureCommunication[C]//Proceedingsofthe1stACMConferenceonComputerandCommunicationsSecurity.NewYork:ACMPress,1993:119-129. [7]KangMH,MoskowitzIS,ChincheckS.Thepump:adecadeofcovertfun[C]//21stAnnualComputerSecurityApplicationsConference(ACSAC’05),2005:352-360. [8]AustralianSignalsDirectorate.Tenixdefencesystemsinteractivelinkdatadiodedevice[DB/OL].http://www.dsd.gov.au/library/pdfdocs/EPL-Listings-ST-CRs/network-security-pdf/Tenix/IL-DDD-CER-4.0.Pdf. [9]TenixAmerica.Tenixdatadiode-absoluteinformationprotection[EB/OL].http://www.tenixamerica.com/images/whitepapers/datasheet-datadiode.pdf. [10] 万月亮,朱贺军,刘宏志,等.基于光闸的单向传输系统可靠性研究[J].信息网络安全,2010(12):25-27. [11] 王文波,唐成华.可靠的无反馈数据传输方案设计[J].科技资讯,2014(3):46-47. [12] 陈宇贤.基于多通道的实时视频传输关键技术研究[D].哈尔滨:哈尔滨工程大学,2012. STUDY OF ONE-WAY TRANSMISSION TECHNOLOGY BASED ON MULTIPLE TRANSMISSION CHANNELS Yang Yue Wang Ruobing Liu Rui Zhang Bo Tong Yi (ChinaAerospaceEngineeringConsultationCenter,Beijing100048,China) Based on the research of the one-way data transmission technology, we analyze some shortages existing in optical gap system. Aiming at these shortages, a one-way data transmission design based on multiple transmission channels is proposed. Firstly, the basic idea of data transmission scheme of multi-transmission channels is expounded, and the one-way data transmission is achieved with universal optical network card. Then the forward error correction technique is used to design the reliability, and the scheduling algorithm based on multichannel data transmission is given. At last, the architecture of the system is designed. Experiments show that the scheme can achieve fast, single and reliable data transmission. One-way transmission Multiple transmission channels Scheduling algorithm Optical gap 2016-01-26。杨越,硕士生,主研领域:信息安全。王若冰,研究员。刘瑞,高级工程师。张博,本科。佟轶,硕士。 TP309.2 A 10.3969/j.issn.1000-386x.2017.04.0243 系统架构
4 测试结果
5 结 语