专利名称:一种计算机网络安全通信的实现方法及系统的制作方法

技术领域:

本发明涉及计算机网络安全通信领域,具体讲本发明是一种关于计算机网络安全通信的 实现方法及系统。

背景技术:

在许多安全相关的高可用性系统当中网络是十分重要的一部分。随着分布式系统使用范 围的逐步扩大,网络在这些系统中的使用也越来越广泛。现今的大部分的多核技术在提供服 务的可确定性和可靠性方面的性能上由于采用的是通用CPU的同构多核技术,由于这种处

理器在工作过程中各个设备增可以访问处理器,因此在一定程度上无法满足网络服务在孤立 性(计算资源在硬件上的隔离)、可确定性(协处理器提供网络服务性能的可预测性,以及 关键服务的不可干扰性)等方面的需求,同时也构成了计算机工作中的不安全因素。

发明内容

本发明提供一种可克服现有技术不足,能提供高可用性及安全相关的系统可靠的网络 传输的计算机网络安全通信系统,及这种系统的实施方法。

本发明所采用的系统是以cell处理器为硬件系统,并以cell处理器中的Power处理器单 元PPU为客户端,以各协处理器单元SPU为网络服务器端实现数据包的传输,其中的客户 端为一独立的封闭处理器作为网络通信的请求端,请求同另一客户端进行网络通信,并且对 服务器端的监控信息作相应的处理,由网络服务器端实现性能监控、数据传输及设备驱动等 功能,其基本的系统架构参见附图1。

本发明的实现方法中数据的发送采用锁无关的线程同步机制,最好采用锁无关的协议 中采用的CAS算法。

本发明的计算机网络安全通信的实现方法中数据的发送采用基于优先级的缓冲区存储 机制,缓冲区的结构为混合链表结构,由结构体数组和动态链表组成。

本发明的计算机网络安全通信的实现方法中,契约协议的方式确定所要监控的目标 本发明具有如下优点-

本发明由于其硬件采用了CELL,具有以下的优点 *各个协处理器(SPU)和相关256K的本地存储(LocalStore)可以使临界任务独立执 行

MFC, Mailbox, Signal, EIB等性质增强了数据的传输和系统同步能力

Isolation模式增强了任务的保密性和安全性

*顺序执行的特性(SPU上只允许单线程运行)增强了任务的可预测性 所有这一切保障了系统的可靠性,和通信安全。 本发明所使用的软件具有如下优点

,充分利用Cell的物理特性一隔离性强,选用实时性好的一些算法,达到网络通信的 安全性。

*使用基于契约协议的通信模型,针对特殊的用户需求进行动态的调整,并能保证通 信的可靠性。

'基本的架构对于用户和设备都是透明的,所以该模型的实际应用领域不会受到行业 的限制

附图1为系统架构示意图。附图2为实现模型。图3为数据fifo中存在的几种情况示 意。附图4为基于优先级的缓冲区结构图。附图5为系统数据流图。

具体实施例方式

以下是本发明的一个实施例 开发平台硬件选用Playstation3(PS3),其核心是CELL处理器。

软件选用Gentoo Linux作操作系统,使用Git文档版本控制软件管理文档,开发语言 C、汇编。

vim编辑器,PowerPC-gcc交叉编译器。

设计思路

由一个处理器作应用层,另外的协处理作服务器端。考虑到PS3硬件的相关约束及对于

模型构建的测试和调试问题,并没有在真正的硬件设备上运行该系统采用以另一个协处理 器单元模拟硬件设备的方式,将协处理器设计成为可以发送并接受数据的硬件设备。在设备

驱动模块和虚拟设备之间使用两个fifo(fifo[l],fifo[2])。应用模块从数据处理模块中接收数据 时使用fifo[O]。这样共有三个fifo。

具体实现-

1、在底层设备

在底层中主要的过程是这样-

while(l){

dev_init—info(argp, envp);

dev_read();

dev—send();

} 一

dev_init—info:这个是进行设备的初始化操作,使用数组buf,使用memcpy函数将buf 写入服丞器端的内存中,我们设定buf!0]='a';buf!DEVICE—RAM_SIZE-l]='b',表示设备初始 化完成,可以读取数据。调用函数data—encode,进行CRC校验。 static int data一encode(void *spack, int nsize, int dsize){

unsigned int crc;

unsigned char * —data ;

int —size;

一size = dsize;

—data = (unsigned char "spack + nsize - dsize; prot一crcLdata, &crc, —size);

((nspu_pack—t *)spack)-〉tail.check = crc; return 0;

CRC —循环冗余校验,通过该校验可以实现在传输中是否因某些偶然事件使得数据被异 常修改。这里使用的是CRC32算法,CRC32会根据数据的长度和内容产生相应的校验值并 把该值存入nspu一elem一t结构体中。对于数据的长短在该算法中没有加以限制。通过传输前

与传输后产生的"bic一校验值的比较就可以发现错误是否存在。校验值相同,则传输正确,

系统继续向下运行;否则,系统停止。

dev_read()调用spu—read从fifo[l]中读取数据,并调用irq_dev_write()。 dev—send()函数调用data—send()和irq—dev—active(),前者调用spu—write向fifo[2]中写入数据。

在进行spu—read()和spu—write()的时候,要考虑数据在buf中的位置。这个参考附图3。 此处用到irq_dev和irq_dri两个变量,计算在FIFO缓冲区内数据包的数量从而以中断的 形式来告知设备是否有数据即将传输。当有数据包需要进行传输时,驱动部分将会增加 irq_dri的值从而告知设备。因为该变量需要在设备和驱动间进行共享,所以要使用所存机 制。驱动在从FIFO读取数据前,必须首先以锁存的方式读取ircLdev的状态以确保至少有一个数据包可供传输,读取完毕后,再以锁存的方法减少irq_dev中的值。在协处理器上实现 内存空间的锁存需要用到mfc—getllar和mfc_putllc两个方法来进行传输。代码段对于锁存的 实现如下所示 do{

mfc一getllar(&tmp, netinfo->irq_dri—addr, 0, 0); status = spu—readch(MFC_RdAtomicStat); if(status = 4){ tmp

++;

mfc_putllc(&tmp, netinfo->irq_dri—addr, 0, 0); status = spu—readch(MFC_RdAtomicStat);

} — —

}while(status == 1);

2、 监控模块

对于监控部件而言,由于监控的内容根据模型的应用不同也会有所不同。我们的模型中 只是实现了最基本的监视操作,也就是对于数据传输在这个通信服务器发送阶段所产生的延 迟的监控。通过接收应用端传过来的最大延迟时间与系统运行时测试到的响应时间进行对 比,并将异常的情况返回给应用端以作进一步的处理。在模型中我们使用递减器来实现延迟 的计算。当在可接受的时间内没有数据的传输,系统将发出警告信息。监控系统与应用层间 消息的传递采用邮件机制来实现。 static void monitor(float data, float stand){

if (data > standi

spu一writech(SPU一WrOutlntrMbox, 1); J else {

spuwritech(SPU_WrOutIntrMbox, 0);

}一 —

3、 数据处理模块

net—spuj3ack—send()读取应用层的数据。应用层模块会通过自己的模块将数据写到主存 优先i表中。该函数调用net_spu_pack—read读取数据,若读取成功,会调用 net—fsm_pack—send将数据传送到设i。

net_SpU_pack_read(),按照优先级从高到底,在主存优先级表中读取数据,每次之读取 一个数i包,也i是一个数据节点。读取结束后,调用net—spu—node—del()将这个数据节点 删掉。 一

net—fsm_pack_send 0会调用net—fsm_protocol—encode将数据进行加密,然后调用 net—fsm一dev一sencf进行数据传送。在il密之前,数她的大小需要进行调整,此时的数据不需 要i据S]优^级,而需要数据包的头部,则大小nsize:

dsize = size - sizeof(prio_elem—t);

nsize = dsize + sizeof(nspu_pack_t); net_fsm_protocol_encode调用prot_crc ()进行CRC校验加密。关于CRC,可以参看底层设备一 节岳介绍。

net—fsm—dev—send 0调用spu—write将数据写入设备的buffuer中,也就是fifo [ 1 ]中。关于 spu一write在底M设备一节中也肴介绍。

在服务端接受应用层的数据后,相应的也应该向应用层端传送数据,即调用reCV_Start, 而此函数则调用net_fsm_dev_recv。

net—fsm—dev—re;0偽用5ufj:ead从设备的buffer(fifo[2])中读取数据,因为设备的buffer 中的数据己经lin密,所以iif用net—fsm_protocol_decode进行解密,然后依次调用

5net—spu_pack__recv和spu一write,将数据写入服务端和客户端之间的缓存fifo

中。这样可以

让g户端进行读取。

在进行传输的时候,还会反馈必要的信息给系统监控器,具体的监控由监控模块完成。 start = spu—readch(SPU_RdDec); net—spu_pack—send(); end = spu_readch(SPU—RdDec); monitor(((float)(start-end))/TIMEBASE* 1000, para);

4、客户端

客户端提供一个契约协议的初始化函数,contracetjnit(paramter)。此处的契约内容是数 据发送的最大延迟,contract=paramter来表示。在服务器端,就会用实际的数据发送延迟和 contract比较,进行监控。

在系统初始化(net—spujnit)的时候,调用函数pthread—create创建监控线程,在此线程 中,先调用spe_signal_write,向监控模块中写入信号监控^约的内容contract;建立事件处 理句柄一 一spe一eventjiandler一create,对服务器端采用邮件机制传来的信息进行相应的处 理。

while(l){

ret = spe—event—wait(evhandler, event, 100, 50);

if(ret == -l)printf("Event wait error:%s\n", strerror(errno));

else if(ret == 0) printf("No data available!\n");

while(!spe_out—intr_mbox—status(sif->ctx));

spe—out—intrmbox—read(sif國〉ctx, mbox一data, 1, SPE—MBOX—ALL_BLOCKING); if(*mbox_data != O)printf("Contract violation!W);

〃对于得到^出错信息可以作相应的处理,此处我们只是简单的报错处理

发送net_ppu_send(priority,data,size)函数进行数据的发送,这个函数中,以 ppu—send—info—t格sf来保留数据的优先级、内容、大小,然后创建发送线程,由该线程调用 函^ net_pack—send (),将数据发送到服务器spu中。

netjack一send,将数据以新的格式进行存放,即在数据的前面加上一个表示数据地址的 数值,以及i据的大小,这样便于查找和获取数据,然后通过函数net_ppu_paCk—insert(), 根据数据的优先级放到对应的数据队列中。

net_spu_pack—insert,将数据加入到主存优先级表中,在加入数据之前,用(new == NULL II prio < 0 || prio >= MAX_PRIO)语句进行判断,保证数据存在,且优先级正确,然后 入队。这儿我们选用的优先级共^"32个,即0到最大优先级(31),以二维数组的索引号作 为优先级。具体的存放模型见图4。

在net_spu_pack—insert中

do{

pre = priot[prio].addr; old一addr = pre;

if(pre!=0){

while(((prio—elem一t *)pre)->addr) pre = ((prio_elem_t *)pre)->addr; ((prio—elem_t *)pre)->size = size;p = ((prio—elem—t *)pre); } else {

priot[prio].size = size; p = &(priot[prio]);

if (old—addr !=0)

while(((prio—elem—t *)old—addr)->addr) old—addr = ((prio—elem—t "old—addr)->addr;

new->addr = 0; new->size = 0;

)while(!CAS((unsigned long *)(&(P->addr)), old—addr ,(unsigned long long)new));

接收net_ppU_recV(),创建接收线程,线程调用函数netjackjecv()函数。这个函数会 调用netJifo—read『各客户端和服务器端之间的fifo中的数据读出。

netjifo—read(*mem,size,net_fifo—t):在fifo中读取数据,fifo使用的是循环队列的形式进 行存放^],,万以读取的时候要^虑这么几种情况

首先,FIFO为空;除此外,第一种情况,所要读取的数据长度小于FIFO缓冲区中可以 提供的数据长度,采取的措施为停止读取过程并返回错误信息。第二种情况,从FIFO的出 口端开始的连续内存内,读取的长度小于可读取长度;第三种情况,读取长度小于可读取长 度,但是读取的数据不是连续的。对于这几种情况,请参看

中的图3。

if (ff-〉buf—outp < ff->buf—inp ) {

memcpy(mem, (void *)ff->buf—outp, rsize);

ff->buf—outp = ff)buf一outp + rsize; } else {

if (ff->buf—outp + rsize < ff->buf—addr + ff->buf_size) {

memcpy(mem, (void *)ff->buf—outp, rsize);

ff->buf_o, = ff->buf—outp + rsize; J else {

dsize = ff->buf—addr + ff->buf—size - ff->buf—outp; memcpy(mem, (void *)ff->buf_outp, dsize);

memcpy((unsigned char *)mem+dsize, (void *)ff->buf—addr, rsize - dsize); ff->buf—outp = ff->buf—addr + rsize - dsize;

为了解决应用层与通信服务器端数据传输的同步问题,采用非阻塞的同步机制——锁无 关机制用于对于数据的插入和删除操作,我们选择CAS (比较和交换)算法来实现。通过在 内存读取和写入过程中使用读一改一写原子操作,使得操作后返回的值要么是完全的新值,

要么是未修改前的旧值。设定一个指向32位或64位数字的指针;将指针的内容拷贝到一个 用于比较的变量中;基于该比较变量产生一个新值;使用CAS算法来比较新值与比较变量中 的值,如果二者相等,则改变指针中的内容为新值内容(该操作为原子操作);如果上一步 操作成功,则退出,否则返回第一步重新执行整个步骤 在通信服务器模型中所使用到的CAS算法如下所示 static —inline一 unsigned long CAS(unsigned long *addr, unsigned long oldp, unsigned long newp){

7unsigned long prev;

—asm__volatile— ("\n\

l二

ldarx %0, 0, %2 \n\

cmpd 0, %0, %3 \n\

bne- 2f \n\

stdcx. %4, 0, %2 \n\

bne- lb \n"

"\n\

2:"

:"=&r"(prev), M=:m''(*addr) :"r"(addr), "r"(oldp), "r"(newp) :"cc", "memory"); return (prev = oldp);

接收到的数据作相应的处理,此处我们只是用printf函数打印出来。 在契约终止的时候,将dev、 fsm、 mon线程撤销掉,然后将dev、 fsm所用到的上下文环 境释放掉。清楚掉mon这个线程创建时创建的处理句柄。 数据流通路径

当客户端有数据要传递的时候,会以此调用由发送线程调用netjack一send将数据发送 出去,这个函数会调用net_ppU_paCk—insert将数据写入主存优先级表中。g下来就是服务器 端发送数据。在服务器端net_spu_pack—send负责数据的发送,它先调用net—spu__pack—read 从服务器端和应用层之间的主存优先级表中读取数^ , 再由net—fsm_paCk—send依次调用加密的设备发送函数,将加密后的数据由主存缓冲区2发送 到虚拟设备,并可以在终端上显示。

服务器端还会对数据的传输的延迟给控制模块,控制模块会以消息通知的形式告知应用 模块,应用模块作出相应的处理。

而客户端接收数据则是一个相反的过程。客户端的接收线程主要由netj)ack—recv完成数 据的读取。net_pack—recv函数调用net—fifo_read读取应用层和服务器之间的FIFO缓冲区 l(fifo[O])。而这个纟i冲区数据的写入则是,f务器端的函数recv—start来完成的。它首先调用 et—fsm—dev—recv,通过buf一read从设备驱动模块和虚拟设备之间的FIFO缓冲区3 (fifo [2])中 读取数据,然后调用net—spujackjecv和spu—write,将数据写入服务端和客户端之间的缓存 fifo

中。这样可以让g户端进行读取。系^数据流可以参考图5。

扩充

一个服务器端的设备驱动模块提供一些必要的函数,通过网络设备和另外一个(或几个) 服务器端的设备驱动模块进行通信,即图2所描述的那种情况。

权利要求

1、一种计算机网络安全通信的实现方法,其特征是以cell处理器为硬件系统,并以cell处理器中的Power处理器单元PPU为客户端,以各协处理器单元SPU为网络服务器端实现数据包的传输,其中的客户端为一独立的封闭处理器作为网络通信的请求端,请求同另一客户端进行网络通信,并且对服务器端的监控信息作相应的处理,由网络服务器端实现性能监控、数据传输及设备驱动等功能。

2、 根据权利要求l所述的计算机网络安全通信的实现方法,其特征在于数 据的发送采用锁无关的线程同步机制。

3、 根据权利要求2所述的计算机网络安全通信的实现方法,其特征是锁无 关的协议中采用的CAS算法。

4、 根据权利要求l所述的计算机网络安全通信的实现方法,其特征是采用 契约协议的方式确定所要监控的目标。

5、 根据权利要求1至4中任一所述的计算机网络安全通信的实现方法,其 特征是数据的发送采用基于优先级的缓冲区存储机制,缓冲区的结构为混合链 表结构,由结构体数组和动态链表组成。

全文摘要

本发明涉及计算机网络安全通信领域,具体讲本发明是一种关于计算机网络安全通信的实现方法及系统。本发明所采用的系统是以cell处理器为硬件系统,并以cell处理器中的Power处理器单元PPU为客户端,以各协处理器单元SPUE为网络服务器端实现数据包的传输,其中的客户端为一独立的封闭处理器作为网络通信的请求端,请求同另一客户端进行网络通信,实现对网络服务器端的性能监控,由网络服务器端实现性能监控、数据传输及设备驱动等功能。

文档编号H04L29/06GK101645906SQ20091017382

公开日2010年2月10日 申请日期2009年9月3日 优先权日2009年9月3日

发明者吕清泉, 周庆国, 薇 张, 白树伟, 金国军 申请人:兰州大学

计算机网络安全通信的实现方法,一种计算机网络安全通信的实现方法及系统的制作方法...相关推荐

  1. html控制智能家居,一种通过web控制的智能家居系统的制作方法

    一种通过web控制的智能家居系统的制作方法 [专利摘要]本发明提供了一种通过web控制的智能家居系统,包括移动终端,以MIPS芯片为核心的WiFi转串口模块,STM32控制模块,DALI控制模块,SI ...

  2. 基于html的网上点餐系统,一种基于客户端的网上点餐系统的制作方法

    本发明涉及互联网技术领域,具体为一种基于客户端的网上点餐系统. 背景技术: 互联网是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一且巨大的全球化网络,在这个网络中有交 ...

  3. melis系统c800_一种基于Melis平台的卡拉OK系统的制作方法

    本实用新型涉及一种卡拉OK系统,具体是一种基于Melis平台的卡拉OK系统. 背景技术: 随着经济的快速发展,人们在追求物质生活上的富足外也更加注重精神的富足,由此就催生了一系列的娱乐方式,音乐就是其 ...

  4. 树莓派环境处理_一种基于树莓派的便携式的环境监测系统的制作方法

    本发明涉及通讯技术领域,尤其涉及一种基于树莓派的便携式的环境监测系统. 背景技术: 树莓派是尺寸仅有信用卡大小的一个小型电脑,可以将树莓派连接电视.显示器.键盘鼠标等设备使用.树莓派能替代日常桌面计算 ...

  5. 一种基于语音识别的机器人语义识别系统的制作方法

    本发明涉及机器人语义识别,尤其涉及一种基于语音识别的机器人语义识别系统. 背景技术: 目前,很多家庭都拥有机器人,但是很多时候机器人并不能准确识别用户对其发出的指示,使用户操作机器人不方便,这样的机器 ...

  6. 介绍一种很棒的wince 如何替换系统声音的方法

    Topic:介绍一种很棒的wince 如何替换系统声音的方法(作者:Baiduluckyboy) //------------------------------------------------- ...

  7. 学校计算机数据采集处理系统,一种计算机数据采集处理分析系统的制作方法

    一种计算机数据采集处理分析系统的制作方法 [技术领域] [0001]本发明涉及数据分析领域,具体涉及一种计算机数据采集处理分析系统. [背景技术] [0002]当进行数据分析时,经常面对一类业务需要多 ...

  8. 负压式爬壁机器人_一种负压吸附式仿生爬壁机器人的制作方法

    一种负压吸附式仿生爬壁机器人的制作方法 [技术领域] [0001]本发明涉及爬壁机器人领域,具体的说是一种负压吸附式仿生爬壁机器人. [背景技术] [0002]爬壁机器人可广泛应用于建筑物清洗.油漆喷 ...

  9. ft232h引脚_一种基于芯片ft232h的usb接口电路的制作方法

    一种基于芯片ft232h的usb接口电路的制作方法 [技术领域] [0001 ] 本实用新型涉及一种USB接口电路,具体涉及一种基于芯片FT232H的USB接口电路. [背景技术] [0002]USB ...

最新文章

  1. telegraf监控mysql数据库_influxdb+grafana+telegraf 监听性能数据 (完整详细版)
  2. 008_logback配置语法
  3. 一款好用的轮播插件swiper,适用于移动端和web
  4. linux 离线安装mysql_Linux系统安装MySQL(离线安装)
  5. React 在body上绑定事件以及阻止事件冒泡
  6. 用c语言编程减法计算,求用C编个大数加减法运算程序
  7. __FILE__, __LINE__, __FUNCTION__
  8. ios侧滑返回:完美解决 interactivePopGestureRecognizer 卡住的问题
  9. 《手把手教你》系列基础篇之3-python+ selenium自动化测试-驱动浏览器和元素定位大法(详细)
  10. 基于 Jenkins 和 Kubernetes 的持续集成测试实践了解一下!
  11. Elasticsearch之settings和mappings(图文详解)
  12. spring boot 中文文档_已献出膝盖!GitHub上的宝藏级SpringBoot核心文档,讲得太清晰了...
  13. stata学习之空间权重矩阵制作
  14. 马尔可夫------马尔可夫不等式
  15. mysql逻辑删除案例_实现数据逻辑删除的一种方案
  16. CentOS7 安装svn
  17. Servlet小服务程序(Service + Applet)
  18. python--列表、数组扁平化
  19. 【linux内核分析与应用-陈莉君】动手实践--内核多任务并发实例
  20. Total Command快捷键大全

热门文章

  1. matlab hough算法车牌识别,一种基于数学形态学和Hough变换的车牌图像检测及定位算法-汽车电子-与非网...
  2. ViSP学习笔记(二十三):根据特征点进行位姿估计
  3. (转)VSAM学习(1)
  4. HTML xmlns 属性
  5. 让你可以装逼的算法技巧总结
  6. Pycharm安装详细版教程
  7. 如何理解 Spring Boot 中的 Starters?
  8. 压测工具wrk和Artillery的比较
  9. 计算机基本框图英语作业,计算机专业英语单词作业.doc
  10. layui dtree ajax,layui中使用dtree插件数据无法正常显示