一种基于龙芯处理器的物理隔离网闸设计与实现①

2020-10-26 02:54芮正新辛克廷
关键词:龙芯内网处理单元

芮正新,辛克廷

(1. 南京科远智慧科技集团股份有限公司,江苏 南京 211102;2.江苏省热工过程智能控制重点实验室,江苏 南京 211102)

0 引 言

随着人工智能、大数据、云计算、物联网等新技术的不断发展,互联网连接着人们生产生活的各个方面,信息孤岛逐步被消除,但在各领域间网络互联互通的同时也带来了严重的网络安全问题。物理隔离网闸作为连通两个不同安全等级网络的桥梁,既实现了信息数据单向流动,又在物理上隔离了不同安全等级的网络,为高安全等级网络的信息安全提供了强有力的支持与保护[1]。然而目前市场上主流物理隔离网闸的核心硬件——微处理器大多采用进口器件,硬件设计细节均不开放,存在核心技术受制于人及一定安全后门隐患,无法满足信息安全领域关键设备自主可控的要求。针对以上背景,设计并实现了基于龙芯2K1000处理器的物理隔离网闸,该物理隔离网闸硬件采用龙芯2K1000高性能处理器,软件采用Linux开源操作系统,满足了网闸内外网接口的物理隔离通信的需求,实现了隔离网闸设备的关键器件及软件自主可控。

1 系统原理

物理隔离网闸系统一般采用“2+1”架构,即由内网处理单元、外网处理单元及摆渡单元组成。内外网通信基于信息摆渡原理,内外网在物理上始终保持断开,任意时刻最多只有一个网络与摆渡单元存在物理连接。

当内网主机向外网主机传输数据时,内网隔离单元将收到的内网主机以太网报文完全剥离,仅保留应用层数据,接通摆渡单元后将之至传输至摆渡单元,然后断开内网处理单元与摆渡单元之间的物理连接,之后由摆渡单元接通外网处理单元,将应用层数据进行摆渡至外网处理单元,再由外网处理单元恢复为完整的以太网报文并传输至外网主机,最终实现内网主机与外网主机的物理隔离通讯。外网主机向内网主机数据传输过程与上述顺序相反[2]。

在上述通讯过程中,物理隔离网闸还将对通讯数据进行安全策略检查,内外网主机MAC地址、IP地址及端口、协议类型等必须与预先配置的安全策略完全一致后才能进行数据摆渡,可有效避免信息泄露、病毒入侵、黑客扫描等网络安全问题发生。

在本设计中,内网处理单元、外网处理单元及摆渡单元之间使用PCIE接口。由摆渡单元内的电子开关控制PCIE总线的通断,实现摆渡单元与内网处理单元、外网处理单元的物理连接与断开。

2 硬件设计

硬件主要由电源模块、内网处理单元、外网处理单元及摆渡单元组成。

2.1 内网处理单元与外网处理单元

由于物理隔离网闸的内网处理单元、外网处理单元硬件接口基本一致,功能差异由软件实现,因此将内网处理单元、外网处理单元的硬件设计为同一单板。

龙芯2K1000是龙芯中科技术有限公司推出的一款低功耗、性能先进的处理器,主要面向于网络应用领域,采用40nm工艺,片内集成2个主频 1GHzGS264 处理器核,并集成了64位DDR3 控制器以及各种系统IO接口,因此在本设计中,内网处理单元、外网处理单元均采用龙芯2K1000处理器为核心,利用龙芯2K1000丰富的片上资源,构成2路千兆以太网通讯接口、1路PCI-E摆渡单元接口,并利用LIO本地总线接口扩展了1路百兆以太网配置接口。

图2 内外网处理单元硬件设计

图2为内外网处理单元硬件硬件设计框图,其中DDR3采用4片紫光HXI15H4G160,单片为16位512MB,构成64位2GB DDR3存储器系统。BIOS采用华邦W25Q80BV SPI Flash,容量为1MB。文件系统基于SLC NAND存储器,采用三星K9F1G08U0C,容量为128MB。通讯用网口设计为2路千兆以太网,千兆PHY采用KSZ9031RN,通过RMII接口与2K1000片内集成的GMAC连接。配置用网口设计为百兆以太网,采用DM9000AEP,通过2K1000集成的外部总线接口LIO连接。

2.2 摆渡单元

如系统原理所述,摆渡单元实现了内外网之间的物理连接断开及数据摆渡。该单元硬件基于Lattice公司的ECP5系列FPGA,型号为LFE5UM-45F-8BG381C,内置2路SERDES硬核,可实现2路PCIe接口分别与内网处理单元及外网处理的单元连接,利用FPGA集成的1944Kb Embedded Memory设计了容量为192KB的双端口SRAM用于内外网之间的数据摆渡。另外根据物理隔离网闸内外网之间PCIE接口物理连接断开要求,设计了总线控制模块,该模块主要接收内外网处理单元传输请求信号及双端口SRAM控制信号,根据这些信息决定内网处理单元及外网处理单元PCIE接口的通断[3]。摆渡单元FPGA结构框图如下图所示。

图3 FPGA结构框图

3 软件设计

软件设计主要包含BIOS设计、Linux操作系统裁剪、摆渡单元驱动开发及应用层代理程序开发等,其中BIOS设计参考龙芯2K1000公版PMON,添加了NAND储存器及YAFFS文件系统支持。Linux本身具备了强大的网络功能,当应用于隔离网闸时,需要在嵌入式Linux内核的基础上进行裁减,除去不需要的所有系统服务,仅保留基本的TCP/IP网络协议栈。本系统使用龙芯公司长期支持的Linux3.10版本,便于后期维护与升级。

3.1 摆渡单元驱动

摆渡单元与2K1000之间为PCIE接口,因此编写摆渡单元PCIE设备驱动fpga_pci_driver,驱动类型为字符型设备驱动,以内核模块形式动态加载到Linux操作系统之中。

在驱动初始化函数fpga_init中,使用pci_register_driver向PCI系统注册设备驱动,在PCI设备驱动探测函数fpga_pci_probe中生成实际读写fpga的设备文件,并将字符设备注册到系统,应用程序可通过/dev/fpga访问摆渡单元[4]。字符型设备的文件读写接口定义如下:

const static struct file_operations fpga_fops = {

.open = fpga_open,

.release = fpga_close,

.read = fpga_read,

.write = fpga_write,

.unlocked_ioctl = fpga_ioctl,

.owner = THIS_MODULE,

};

3.2 代理程序

代理程序用于实现内外网应用数据接收、摆渡摆渡请求及数据转发。系统初始化时,读取用户配置的有效通讯策略,在内网处理单元添加外网主机的虚拟IP,并建立对应的监听socket,从而在内网侧接口上虚拟出外网主机。当内网主机发送数据时,运行于内网处理单元的代理程序调用recv函数从网闸内网接口接收应用层数据,在满足安全策略审核的条件下,将数据写入摆渡单元,请求摆渡单元进行数据摆渡,当摆渡单元成功将数据摆渡至外网处理单元后,运行于外网处理单元的代理程序调用read接口从摆渡单元中读取数据,并以内网主机的IP调用send向外网主机发送数据,从而完成内网主机至外网主机的通讯[5]。

4 结 语

本物理隔离网闸基于龙芯2K1000处理器,充分利用该处理器的软硬件资源,完成了物理隔离网闸的设计开发,实现了内外网之间的物理隔离通信,经SmartBits专业网络性能测试仪测试表明,样机平均传输延时为0.86ms,有效传输带宽为437Mbit/S,可满足内外网主机之间物理隔离通信需求。该系统硬件核心器件国产化,软件开源或自主开发,满足了信息安全领域关键设备自主可控的需求。

猜你喜欢
龙芯内网处理单元
基于国产化龙芯的动环数据采集系统
不同生物链组合对黄河下游地区引黄水库富营养化及藻类控制
城市污水处理厂设备能耗及影响因素分析研究
长填龄渗滤液MBR+NF组合工艺各处理单元的DOM化学多样性
企业内网中的数据隔离与交换技术探索
内外网隔离条件下如何实现邮件转发
电动汽车主控制器双机热备的设计
“龙芯之父”胡伟武
“龙芯1号”:电脑中国“芯”
“龙芯1号”:电脑中国“芯”