CN101645906A - 一种计算机网络安全通信的实现方法及*** - Google Patents
一种计算机网络安全通信的实现方法及*** Download PDFInfo
- Publication number
- CN101645906A CN101645906A CN200910173827A CN200910173827A CN101645906A CN 101645906 A CN101645906 A CN 101645906A CN 200910173827 A CN200910173827 A CN 200910173827A CN 200910173827 A CN200910173827 A CN 200910173827A CN 101645906 A CN101645906 A CN 101645906A
- Authority
- CN
- China
- Prior art keywords
- data
- computer network
- security communication
- network security
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及计算机网络安全通信领域,具体讲本发明是一种关于计算机网络安全通信的实现方法及***。本发明所采用的***是以cell处理器为硬件***,并以cell处理器中的Power处理器单元PPU为客户端,以各协处理器单元SPUE为网络服务器端实现数据包的传输,其中的客户端为一独立的封闭处理器作为网络通信的请求端,请求同另一客户端进行网络通信,实现对网络服务器端的性能监控,由网络服务器端实现性能监控、数据传输及设备驱动等功能。
Description
技术领域
本发明涉及计算机网络安全通信领域,具体讲本发明是一种关于计算机网络安全通信的实现方法及***。
背景技术
在许多安全相关的高可用性***当中网络是十分重要的一部分。随着分布式***使用范围的逐步扩大,网络在这些***中的使用也越来越广泛。现今的大部分的多核技术在提供服务的可确定性和可靠性方面的性能上由于采用的是通用CPU的同构多核技术,由于这种处理器在工作过程中各个设备增可以访问处理器,因此在一定程度上无法满足网络服务在孤立性(计算资源在硬件上的隔离)、可确定性(协处理器提供网络服务性能的可预测性,以及关键服务的不可干扰性)等方面的需求,同时也构成了计算机工作中的不安全因素。
发明内容
本发明提供一种可克服现有技术不足,能提供高可用性及安全相关的***可靠的网络传输的计算机网络安全通信***,及这种***的实施方法。
本发明所采用的***是以cell处理器为硬件***,并以cell处理器中的Power处理器单元PPU为客户端,以各协处理器单元SPU为网络服务器端实现数据包的传输,其中的客户端为一独立的封闭处理器作为网络通信的请求端,请求同另一客户端进行网络通信,并且对服务器端的监控信息作相应的处理,由网络服务器端实现性能监控、数据传输及设备驱动等功能,其基本的***架构参见附图1。
本发明的实现方法中数据的发送采用锁无关的线程同步机制,最好采用锁无关的协议中采用的CAS算法。
本发明的计算机网络安全通信的实现方法中数据的发送采用基于优先级的缓冲区存储机制,缓冲区的结构为混合链表结构,由结构体数组和动态链表组成。
本发明的计算机网络安全通信的实现方法中,契约协议的方式确定所要监控的目标:
本发明具有如下优点:
本发明由于其硬件采用了CELL,具有以下的优点:
·各个协处理器(SPU)和相关256K的本地存储(Local Store)可以使临界任务独立执行
·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[1],fifo[2])。应用模块从数据处理模块中接收数据时使用fifo[0]。这样共有三个fifo。
具体实现:
1、在底层设备:
在底层中主要的过程是这样:
while(1){
dev_init_info(argp,envp);
dev_read();
dev_send();
}
dev_init_info:这个是进行设备的初始化操作,使用数组buf,使用memcpy函数将buf写入服务器端的内存中,我们设定buf[0]=′a′;buf[DEVICE_RAM_SIZE-1]=′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_crc(_data,&crc,_size);
((nspu_pack_t*)spack)->tail.check=crc;
return 0;
}
CRC-循环冗余校验,通过该校验可以实现在传输中是否因某些偶然事件使得数据被异常修改。这里使用的是CRC32算法,CRC32会根据数据的长度和内容产生相应的校验值并把该值存入nspu_elem_t结构体中。对于数据的长短在该算法中没有加以限制。通过传输前与传输后产生的CRC校验值的比较就可以发现错误是否存在。校验值相同,则传输正确,***继续向下运行;否则,***停止。
dev_read()调用spu_read从fifo[1]中读取数据,并调用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读取数据前,必须首先以锁存的方式读取irq_dev的状态以确保至少有一个数据包可供传输,读取完毕后,再以锁存的方法减少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[0]++;
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>stand){
spu_writech(SPU_WrOutIntrMbox,1);
}else{
spu_writech(SPU_WrOutIntrMbox,0);
}
}
3、数据处理模块:
net_spu_pack_send()读取应用层的数据。应用层模块会通过自己的模块将数据写到主存优先级表中。该函数调用net_spu_pack_read读取数据,若读取成功,会调用net_fsm_pack_send将数据传送到设备。
net_spu_pack_read(),按照优先级从高到底,在主存优先级表中读取数据,每次之读取一个数据包,也就是一个数据节点。读取结束后,调用net_spu_node_del()将这个数据节点删掉。
net_fsm_pack_send()会调用net_fsm_protocol_encode将数据进行加密,然后调用net_fsm_dev_send进行数据传送。在加密之前,数据的大小需要进行调整,此时的数据不需要数据的优先级,而需要数据包的头部,则大小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()调用spu_write将数据写入设备的buffuer中,也就是fifo[1]中。关于spu_write在底层设备一节中也有介绍。
在服务端接受应用层的数据后,相应的也应该向应用层端传送数据,即调用recv_start,而此函数则调用net_fsm_dev_recv。
net_fsm_dev_recv()调用buf_read从设备的buffer(fifo[2])中读取数据,因为设备的buffer中的数据已经加密,所以调用net_fsm_protocol_decode进行解密,然后依次调用net_spu_pack_recv和spu_write,将数据写入服务端和客户端之间的缓存fifo[0]中。这样可以让客户端进行读取。
在进行传输的时候,还会反馈必要的信息给***监控器,具体的监控由监控模块完成。
start=spu_readch(SPU_RdDec);
net_spu_pack_send();
end=spu_readch(SPU_RdDec);
monitor(((float)(start-end))/TIMEBASE*1000,para);
4、客户端:
客户端提供一个契约协议的初始化函数,contracet_init(paramter)。此处的契约内容是数据发送的最大延迟,contract=paramter来表示。在服务器端,就会用实际的数据发送延迟和contract比较,进行监控。
在***初始化(net_spu_init)的时候,调用函数pthread_create创建监控线程,在此线程中,先调用spe_signal_write,向监控模块中写入信号监控契约的内容contract;建立事件处理句柄--spe_event_handler_create,对服务器端采用邮件机制传来的信息进行相应的处理。
……
while(1){
ret=spe_event_wait(evhandler,event,100,50);
if(ret==-1)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_intr_mbox_read(sif->ctx,mbox_data,1,SPE_MBOX_ALL_BLOCKING);
if(*mbox_data!=0)printf(″Contract violation!\n″);
//对于得到的出错信息可以作相应的处理,此处我们只是简单的报错处理
}
……
发送:net_ppu_send(priority,data,size)函数进行数据的发送,这个函数中,以ppu_send_info_t格式来保留数据的优先级、内容、大小,然后创建发送线程,由该线程调用函数net_pack_send(),将数据发送到服务器spu中。
net_pack_send,将数据以新的格式进行存放,即在数据的前面加上一个表示数据地址的数值,以及数据的大小,这样便于查找和获取数据,然后通过函数net_ppu_pack_insert(),根据数据的优先级放到对应的数据队列中。
net_spu_pack_insert,将数据加入到主存优先级表中,在加入数据之前,用(new==NULL||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(),创建接收线程,线程调用函数net_pack_recv()函数。这个函数会调用net_fifo_read将客户端和服务器端之间的fifo中的数据读出。
net_fifo_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_outp=ff->buf_outp+rsize;
}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 longnewp){
unsigned long prev;
_asm__volatile_(″\n\
1:
ldarx%0,0,%2\n\
cmpd0,%0,%3\n\
bne-2f\n\
stdcx.%4,0,%2\n\
bne-1b\n″
″\n\
2:″
:″=&r″(prev),″=m″(*addr)
:″r″(addr),″r″(oldp),″r″(newp)
:″cc″,″memory″);
return(prev==oldp);
}
接收到的数据作相应的处理,此处我们只是用printf函数打印出来。
在契约终止的时候,将dev、fsm、mon线程撤销掉,然后将dev、fsm所用到的上下文环境释放掉。清楚掉mon这个线程创建时创建的处理句柄。
数据流通路径
当客户端有数据要传递的时候,会以此调用由发送线程调用net_pack_send将数据发送出去,这个函数会调用net_ppu_pack_insert将数据写入主存优先级表中。接下来就是服务器端发送数据。在服务器端net_spu_pack_send负责数据的发送,它先调用net_spu_pack_read从服务器端和应用层之间的主存优先级表中读取数据,再由net_fsm_pack_send依次调用加密的设备发送函数,将加密后的数据由主存缓冲区2发送到虚拟设备,并可以在终端上显示。
服务器端还会对数据的传输的延迟给控制模块,控制模块会以消息通知的形式告知应用模块,应用模块作出相应的处理。
而客户端接收数据则是一个相反的过程。客户端的接收线程主要由net_pack_recv完成数据的读取。net_pack_recv函数调用net_fifo_read读取应用层和服务器之间的FIFO缓冲区1(fifo[0])。而这个缓冲区数据的写入则是服务器端的函数recv_start来完成的。它首先调用et_fsm_dev_recv,通过buf_read从设备驱动模块和虚拟设备之间的FIFO缓冲区3(fifo[2])中读取数据,然后调用net_spu_pack_recv和spu_write,将数据写入服务端和客户端之间的缓存fifo[0]中。这样可以让客户端进行读取。***数据流可以参考图5。
扩充
一个服务器端的设备驱动模块提供一些必要的函数,通过网络设备和另外一个(或几个)服务器端的设备驱动模块进行通信,即图2所描述的那种情况。
Claims (5)
1、一种计算机网络安全通信的实现方法,其特征是以cell处理器为硬件***,并以cell处理器中的Power处理器单元PPU为客户端,以各协处理器单元SPU为网络服务器端实现数据包的传输,其中的客户端为一独立的封闭处理器作为网络通信的请求端,请求同另一客户端进行网络通信,并且对服务器端的监控信息作相应的处理,由网络服务器端实现性能监控、数据传输及设备驱动等功能。
2、根据权利要求1所述的计算机网络安全通信的实现方法,其特征在于数据的发送采用锁无关的线程同步机制。
3、根据权利要求2所述的计算机网络安全通信的实现方法,其特征是锁无关的协议中采用的CAS算法。
4、根据权利要求1所述的计算机网络安全通信的实现方法,其特征是采用契约协议的方式确定所要监控的目标。
5、根据权利要求1至4中任一所述的计算机网络安全通信的实现方法,其特征是数据的发送采用基于优先级的缓冲区存储机制,缓冲区的结构为混合链表结构,由结构体数组和动态链表组成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910173827A CN101645906A (zh) | 2009-09-03 | 2009-09-03 | 一种计算机网络安全通信的实现方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910173827A CN101645906A (zh) | 2009-09-03 | 2009-09-03 | 一种计算机网络安全通信的实现方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101645906A true CN101645906A (zh) | 2010-02-10 |
Family
ID=41657626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910173827A Pending CN101645906A (zh) | 2009-09-03 | 2009-09-03 | 一种计算机网络安全通信的实现方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101645906A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103428198A (zh) * | 2012-05-23 | 2013-12-04 | 佳能株式会社 | 网络设备、***和方法 |
CN105099645A (zh) * | 2014-05-04 | 2015-11-25 | 北京卓越信通电子股份有限公司 | 一种基于半双工通信设备的多用户并发通信的方法和装置 |
CN111431805A (zh) * | 2020-03-27 | 2020-07-17 | 上海天好信息技术股份有限公司 | 一种物联网多路信号复用的同步策略方法 |
-
2009
- 2009-09-03 CN CN200910173827A patent/CN101645906A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103428198A (zh) * | 2012-05-23 | 2013-12-04 | 佳能株式会社 | 网络设备、***和方法 |
US9560116B2 (en) | 2012-05-23 | 2017-01-31 | Canon Kabushiki Kaisha | Network device, system, method, and storage medium |
CN105099645A (zh) * | 2014-05-04 | 2015-11-25 | 北京卓越信通电子股份有限公司 | 一种基于半双工通信设备的多用户并发通信的方法和装置 |
CN111431805A (zh) * | 2020-03-27 | 2020-07-17 | 上海天好信息技术股份有限公司 | 一种物联网多路信号复用的同步策略方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11381526B2 (en) | Multi-tenant optimized serverless placement using smart network interface cards and commodity storage | |
US7757232B2 (en) | Method and apparatus for implementing work request lists | |
ES2218688T3 (es) | Aparato y metodo para recuperar datos a distancia. | |
CN111316279A (zh) | 用于连接区块链与数字孪生集合的计算机实现的***和方法 | |
US20140068134A1 (en) | Data transmission apparatus, system, and method | |
CN109347917A (zh) | 区块链数据共识处理方法、***、存储介质和电子设备 | |
CN101663651A (zh) | 分布式存储*** | |
CN112634047B (zh) | 外汇交易模拟测试方法、装置、计算机设备及存储介质 | |
CN112131002B (zh) | 数据管理方法及装置 | |
CN108306866A (zh) | 一种企业服务总线平台及数据分析方法 | |
CN109542781B (zh) | 区块链共识算法测试方法、装置、计算装置和存储介质 | |
CN113268336A (zh) | 一种服务的获取方法、装置、设备以及可读介质 | |
CN114531289A (zh) | 基于人工智能的***交互方法及相关设备 | |
CN112835885B (zh) | 一种分布式表格存储的处理方法、装置及*** | |
CN101645906A (zh) | 一种计算机网络安全通信的实现方法及*** | |
CN103282888A (zh) | 数据处理方法、图像处理器gpu及第一节点设备 | |
US11816109B2 (en) | Data provision method in a data utilization system | |
US9053092B2 (en) | System authorizing direct data transfers between memories of several components of that system | |
JP2009123202A (ja) | データを処理するためのプロセッサ‐サーバ・ハイブリッド・システムおよび方法 | |
CN116866422A (zh) | 实时推送涉敏信息并脱敏的方法、装置、设备及存储介质 | |
US5343480A (en) | System for detecting loss of message | |
Janet et al. | Optimizing data movement within cloud environment using efficient compression techniques | |
Scott | The SCX channel: A new, supercomputer-class system interconnect | |
CN114328731A (zh) | 信息处理方法、装置、电子设备和存储介质 | |
US11016807B2 (en) | Intermediary system for data streams |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20100210 |