專(zhuān)利名稱(chēng):一種計(jì)算機(jī)網(wǎng)絡(luò)安全通信的實(shí)現(xiàn)方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)安全通信領(lǐng)域,具體講本發(fā)明是一種關(guān)于計(jì)算機(jī)網(wǎng)絡(luò)安全通信的 實(shí)現(xiàn)方法及系統(tǒng)。
背景技術(shù):
在許多安全相關(guān)的高可用性系統(tǒng)當(dāng)中網(wǎng)絡(luò)是十分重要的一部分。隨著分布式系統(tǒng)使用范 圍的逐步擴(kuò)大,網(wǎng)絡(luò)在這些系統(tǒng)中的使用也越來(lái)越廣泛?,F(xiàn)今的大部分的多核技術(shù)在提供服 務(wù)的可確定性和可靠性方面的性能上由于采用的是通用CPU的同構(gòu)多核技術(shù),由于這種處
理器在工作過(guò)程中各個(gè)設(shè)備增可以訪問(wèn)處理器,因此在一定程度上無(wú)法滿(mǎn)足網(wǎng)絡(luò)服務(wù)在孤立 性(計(jì)算資源在硬件上的隔離)、可確定性(協(xié)處理器提供網(wǎng)絡(luò)服務(wù)性能的可預(yù)測(cè)性,以及 關(guān)鍵服務(wù)的不可干擾性)等方面的需求,同時(shí)也構(gòu)成了計(jì)算機(jī)工作中的不安全因素。
發(fā)明內(nèi)容
本發(fā)明提供一種可克服現(xiàn)有技術(shù)不足,能提供高可用性及安全相關(guān)的系統(tǒng)可靠的網(wǎng)絡(luò) 傳輸?shù)挠?jì)算機(jī)網(wǎng)絡(luò)安全通信系統(tǒng),及這種系統(tǒng)的實(shí)施方法。
本發(fā)明所采用的系統(tǒng)是以cell處理器為硬件系統(tǒng),并以cell處理器中的Power處理器單 元PPU為客戶(hù)端,以各協(xié)處理器單元SPU為網(wǎng)絡(luò)服務(wù)器端實(shí)現(xiàn)數(shù)據(jù)包的傳輸,其中的客戶(hù) 端為一獨(dú)立的封閉處理器作為網(wǎng)絡(luò)通信的請(qǐng)求端,請(qǐng)求同另一客戶(hù)端進(jìn)行網(wǎng)絡(luò)通信,并且對(duì) 服務(wù)器端的監(jiān)控信息作相應(yīng)的處理,由網(wǎng)絡(luò)服務(wù)器端實(shí)現(xiàn)性能監(jiān)控、數(shù)據(jù)傳輸及設(shè)備驅(qū)動(dòng)等 功能,其基本的系統(tǒng)架構(gòu)參見(jiàn)附圖1。
本發(fā)明的實(shí)現(xiàn)方法中數(shù)據(jù)的發(fā)送采用鎖無(wú)關(guān)的線程同步機(jī)制,最好采用鎖無(wú)關(guān)的協(xié)議 中采用的CAS算法。
本發(fā)明的計(jì)算機(jī)網(wǎng)絡(luò)安全通信的實(shí)現(xiàn)方法中數(shù)據(jù)的發(fā)送采用基于優(yōu)先級(jí)的緩沖區(qū)存儲(chǔ) 機(jī)制,緩沖區(qū)的結(jié)構(gòu)為混合鏈表結(jié)構(gòu),由結(jié)構(gòu)體數(shù)組和動(dòng)態(tài)鏈表組成。
本發(fā)明的計(jì)算機(jī)網(wǎng)絡(luò)安全通信的實(shí)現(xiàn)方法中,契約協(xié)議的方式確定所要監(jiān)控的目標(biāo) 本發(fā)明具有如下優(yōu)點(diǎn)-
本發(fā)明由于其硬件采用了CELL,具有以下的優(yōu)點(diǎn) *各個(gè)協(xié)處理器(SPU)和相關(guān)256K的本地存儲(chǔ)(LocalStore)可以使臨界任務(wù)獨(dú)立執(zhí) 行
MFC, Mailbox, Signal, EIB等性質(zhì)增強(qiáng)了數(shù)據(jù)的傳輸和系統(tǒng)同步能力
Isolation模式增強(qiáng)了任務(wù)的保密性和安全性
*順序執(zhí)行的特性(SPU上只允許單線程運(yùn)行)增強(qiáng)了任務(wù)的可預(yù)測(cè)性 所有這一切保障了系統(tǒng)的可靠性,和通信安全。 本發(fā)明所使用的軟件具有如下優(yōu)點(diǎn)
,充分利用Cell的物理特性一隔離性強(qiáng),選用實(shí)時(shí)性好的一些算法,達(dá)到網(wǎng)絡(luò)通信的 安全性。
*使用基于契約協(xié)議的通信模型,針對(duì)特殊的用戶(hù)需求進(jìn)行動(dòng)態(tài)的調(diào)整,并能保證通 信的可靠性。
'基本的架構(gòu)對(duì)于用戶(hù)和設(shè)備都是透明的,所以該模型的實(shí)際應(yīng)用領(lǐng)域不會(huì)受到行業(yè) 的限制
一
附圖1為系統(tǒng)架構(gòu)示意圖。附圖2為實(shí)現(xiàn)模型。圖3為數(shù)據(jù)fifo中存在的幾種情況示 意。附圖4為基于優(yōu)先級(jí)的緩沖區(qū)結(jié)構(gòu)圖。附圖5為系統(tǒng)數(shù)據(jù)流圖。
具體實(shí)施例方式
以下是本發(fā)明的一個(gè)實(shí)施例 開(kāi)發(fā)平臺(tái)硬件選用Playstation3(PS3),其核心是CELL處理器。
軟件選用Gentoo Linux作操作系統(tǒng),使用Git文檔版本控制軟件管理文檔,開(kāi)發(fā)語(yǔ)言 C、匯編。
vim編輯器,PowerPC-gcc交叉編譯器。
設(shè)計(jì)思路
由一個(gè)處理器作應(yīng)用層,另外的協(xié)處理作服務(wù)器端。考慮到PS3硬件的相關(guān)約束及對(duì)于
模型構(gòu)建的測(cè)試和調(diào)試問(wèn)題,并沒(méi)有在真正的硬件設(shè)備上運(yùn)行該系統(tǒng)采用以另一個(gè)協(xié)處理 器單元模擬硬件設(shè)備的方式,將協(xié)處理器設(shè)計(jì)成為可以發(fā)送并接受數(shù)據(jù)的硬件設(shè)備。在設(shè)備
驅(qū)動(dòng)模塊和虛擬設(shè)備之間使用兩個(gè)fifo(fifo[l],fifo[2])。應(yīng)用模塊從數(shù)據(jù)處理模塊中接收數(shù)據(jù) 時(shí)使用fifo[O]。這樣共有三個(gè)fifo。
具體實(shí)現(xiàn)-
1、在底層設(shè)備
在底層中主要的過(guò)程是這樣-
while(l){
dev_init—info(argp, envp);
dev_read();
dev—send();
} 一
dev_init—info:這個(gè)是進(jìn)行設(shè)備的初始化操作,使用數(shù)組buf,使用memcpy函數(shù)將buf 寫(xiě)入服丞器端的內(nèi)存中,我們?cè)O(shè)定buf!0]='a';buf!DEVICE—RAM_SIZE-l]='b',表示設(shè)備初始 化完成,可以讀取數(shù)據(jù)。調(diào)用函數(shù)data—encode,進(jìn)行CRC校驗(yàn)。 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 —循環(huán)冗余校驗(yàn),通過(guò)該校驗(yàn)可以實(shí)現(xiàn)在傳輸中是否因某些偶然事件使得數(shù)據(jù)被異 常修改。這里使用的是CRC32算法,CRC32會(huì)根據(jù)數(shù)據(jù)的長(zhǎng)度和內(nèi)容產(chǎn)生相應(yīng)的校驗(yàn)值并 把該值存入nspu一elem一t結(jié)構(gòu)體中。對(duì)于數(shù)據(jù)的長(zhǎng)短在該算法中沒(méi)有加以限制。通過(guò)傳輸前
與傳輸后產(chǎn)生的"bic一校驗(yàn)值的比較就可以發(fā)現(xiàn)錯(cuò)誤是否存在。校驗(yàn)值相同,則傳輸正確,
系統(tǒng)繼續(xù)向下運(yùn)行;否則,系統(tǒng)停止。
dev_read()調(diào)用spu—read從fifo[l]中讀取數(shù)據(jù),并調(diào)用irq_dev_write()。 dev—send()函數(shù)調(diào)用data—send()和irq—dev—active(),前者調(diào)用spu—write向fifo[2]中寫(xiě)入數(shù)據(jù)。
在進(jìn)行spu—read()和spu—write()的時(shí)候,要考慮數(shù)據(jù)在buf中的位置。這個(gè)參考附圖3。 此處用到irq_dev和irq_dri兩個(gè)變量,計(jì)算在FIFO緩沖區(qū)內(nèi)數(shù)據(jù)包的數(shù)量從而以中斷的 形式來(lái)告知設(shè)備是否有數(shù)據(jù)即將傳輸。當(dāng)有數(shù)據(jù)包需要進(jìn)行傳輸時(shí),驅(qū)動(dòng)部分將會(huì)增加 irq_dri的值從而告知設(shè)備。因?yàn)樵撟兞啃枰谠O(shè)備和驅(qū)動(dòng)間進(jìn)行共享,所以要使用所存機(jī) 制。驅(qū)動(dòng)在從FIFO讀取數(shù)據(jù)前,必須首先以鎖存的方式讀取ircLdev的狀態(tài)以確保至少有一個(gè)數(shù)據(jù)包可供傳輸,讀取完畢后,再以鎖存的方法減少irq_dev中的值。在協(xié)處理器上實(shí)現(xiàn) 內(nèi)存空間的鎖存需要用到mfc—getllar和mfc_putllc兩個(gè)方法來(lái)進(jìn)行傳輸。代碼段對(duì)于鎖存的 實(shí)現(xiàn)如下所示 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、 監(jiān)控模塊
對(duì)于監(jiān)控部件而言,由于監(jiān)控的內(nèi)容根據(jù)模型的應(yīng)用不同也會(huì)有所不同。我們的模型中 只是實(shí)現(xiàn)了最基本的監(jiān)視操作,也就是對(duì)于數(shù)據(jù)傳輸在這個(gè)通信服務(wù)器發(fā)送階段所產(chǎn)生的延 遲的監(jiān)控。通過(guò)接收應(yīng)用端傳過(guò)來(lái)的最大延遲時(shí)間與系統(tǒng)運(yùn)行時(shí)測(cè)試到的響應(yīng)時(shí)間進(jìn)行對(duì) 比,并將異常的情況返回給應(yīng)用端以作進(jìn)一步的處理。在模型中我們使用遞減器來(lái)實(shí)現(xiàn)延遲 的計(jì)算。當(dāng)在可接受的時(shí)間內(nèi)沒(méi)有數(shù)據(jù)的傳輸,系統(tǒng)將發(fā)出警告信息。監(jiān)控系統(tǒng)與應(yīng)用層間 消息的傳遞采用郵件機(jī)制來(lái)實(shí)現(xiàn)。 static void monitor(float data, float stand){
if (data > standi
spu一writech(SPU一WrOutlntrMbox, 1); J else {
spuwritech(SPU_WrOutIntrMbox, 0);
}一 —
3、 數(shù)據(jù)處理模塊
net—spuj3ack—send()讀取應(yīng)用層的數(shù)據(jù)。應(yīng)用層模塊會(huì)通過(guò)自己的模塊將數(shù)據(jù)寫(xiě)到主存 優(yōu)先i表中。該函數(shù)調(diào)用net_spu_pack—read讀取數(shù)據(jù),若讀取成功,會(huì)調(diào)用 net—fsm_pack—send將數(shù)據(jù)傳送到設(shè)i。
net_SpU_pack_read(),按照優(yōu)先級(jí)從高到底,在主存優(yōu)先級(jí)表中讀取數(shù)據(jù),每次之讀取 一個(gè)數(shù)i包,也i是一個(gè)數(shù)據(jù)節(jié)點(diǎn)。讀取結(jié)束后,調(diào)用net—spu—node—del()將這個(gè)數(shù)據(jù)節(jié)點(diǎn) 刪掉。 一
net—fsm_pack_send 0會(huì)調(diào)用net—fsm_protocol—encode將數(shù)據(jù)進(jìn)行加密,然后調(diào)用 net—fsm一dev一sencf進(jìn)行數(shù)據(jù)傳送。在il密之前,數(shù)她的大小需要進(jìn)行調(diào)整,此時(shí)的數(shù)據(jù)不需 要i據(jù)S]優(yōu)^級(jí),而需要數(shù)據(jù)包的頭部,則大小nsize:
dsize = size - sizeof(prio_elem—t);
nsize = dsize + sizeof(nspu_pack_t); net_fsm_protocol_encode調(diào)用prot_crc ()進(jìn)行CRC校驗(yàn)加密。關(guān)于CRC,可以參看底層設(shè)備一 節(jié)岳介紹。
net—fsm—dev—send 0調(diào)用spu—write將數(shù)據(jù)寫(xiě)入設(shè)備的buffuer中,也就是fifo [ 1 ]中。關(guān)于 spu一write在底M設(shè)備一節(jié)中也肴介紹。
在服務(wù)端接受應(yīng)用層的數(shù)據(jù)后,相應(yīng)的也應(yīng)該向應(yīng)用層端傳送數(shù)據(jù),即調(diào)用reCV_Start, 而此函數(shù)則調(diào)用net_fsm_dev_recv。
net—fsm—dev—re;0偽用5ufj:ead從設(shè)備的buffer(fifo[2])中讀取數(shù)據(jù),因?yàn)樵O(shè)備的buffer 中的數(shù)據(jù)己經(jīng)lin密,所以iif用net—fsm_protocol_decode進(jìn)行解密,然后依次調(diào)用
5net—spu_pack__recv和spu一write,將數(shù)據(jù)寫(xiě)入服務(wù)端和客戶(hù)端之間的緩存fifo
中。這樣可以
讓g戶(hù)端進(jìn)行讀取。
在進(jìn)行傳輸?shù)臅r(shí)候,還會(huì)反饋必要的信息給系統(tǒng)監(jiān)控器,具體的監(jiān)控由監(jiān)控模塊完成。 start = spu—readch(SPU_RdDec); net—spu_pack—send(); end = spu_readch(SPU—RdDec); monitor(((float)(start-end))/TIMEBASE* 1000, para);
4、客戶(hù)端
客戶(hù)端提供一個(gè)契約協(xié)議的初始化函數(shù),contracetjnit(paramter)。此處的契約內(nèi)容是數(shù) 據(jù)發(fā)送的最大延遲,contract=paramter來(lái)表示。在服務(wù)器端,就會(huì)用實(shí)際的數(shù)據(jù)發(fā)送延遲和 contract比較,進(jìn)行監(jiān)控。
在系統(tǒng)初始化(net—spujnit)的時(shí)候,調(diào)用函數(shù)pthread—create創(chuàng)建監(jiān)控線程,在此線程 中,先調(diào)用spe_signal_write,向監(jiān)控模塊中寫(xiě)入信號(hào)監(jiān)控^約的內(nèi)容contract;建立事件處 理句柄一 一spe一eventjiandler一create,對(duì)服務(wù)器端采用郵件機(jī)制傳來(lái)的信息進(jìn)行相應(yīng)的處 理。
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國(guó)〉ctx, mbox一data, 1, SPE—MBOX—ALL_BLOCKING); if(*mbox_data != O)printf("Contract violation!W);
〃對(duì)于得到^出錯(cuò)信息可以作相應(yīng)的處理,此處我們只是簡(jiǎn)單的報(bào)錯(cuò)處理
發(fā)送net_ppu_send(priority,data,size)函數(shù)進(jìn)行數(shù)據(jù)的發(fā)送,這個(gè)函數(shù)中,以 ppu—send—info—t格sf來(lái)保留數(shù)據(jù)的優(yōu)先級(jí)、內(nèi)容、大小,然后創(chuàng)建發(fā)送線程,由該線程調(diào)用 函^ net_pack—send (),將數(shù)據(jù)發(fā)送到服務(wù)器spu中。
netjack一send,將數(shù)據(jù)以新的格式進(jìn)行存放,即在數(shù)據(jù)的前面加上一個(gè)表示數(shù)據(jù)地址的 數(shù)值,以及i據(jù)的大小,這樣便于查找和獲取數(shù)據(jù),然后通過(guò)函數(shù)net_ppu_paCk—insert(), 根據(jù)數(shù)據(jù)的優(yōu)先級(jí)放到對(duì)應(yīng)的數(shù)據(jù)隊(duì)列中。
net_spu_pack—insert,將數(shù)據(jù)加入到主存優(yōu)先級(jí)表中,在加入數(shù)據(jù)之前,用(new == NULL II prio < 0 || prio >= MAX_PRIO)語(yǔ)句進(jìn)行判斷,保證數(shù)據(jù)存在,且優(yōu)先級(jí)正確,然后 入隊(duì)。這兒我們選用的優(yōu)先級(jí)共^"32個(gè),即0到最大優(yōu)先級(jí)(31),以二維數(shù)組的索引號(hào)作 為優(yōu)先級(jí)。具體的存放模型見(jiàn)圖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(),創(chuàng)建接收線程,線程調(diào)用函數(shù)netjackjecv()函數(shù)。這個(gè)函數(shù)會(huì) 調(diào)用netJifo—read『各客戶(hù)端和服務(wù)器端之間的fifo中的數(shù)據(jù)讀出。
netjifo—read(*mem,size,net_fifo—t):在fifo中讀取數(shù)據(jù),fifo使用的是循環(huán)隊(duì)列的形式進(jìn) 行存放^],,萬(wàn)以讀取的時(shí)候要^慮這么幾種情況
首先,F(xiàn)IFO為空;除此外,第一種情況,所要讀取的數(shù)據(jù)長(zhǎng)度小于FIFO緩沖區(qū)中可以 提供的數(shù)據(jù)長(zhǎng)度,采取的措施為停止讀取過(guò)程并返回錯(cuò)誤信息。第二種情況,從FIFO的出 口端開(kāi)始的連續(xù)內(nèi)存內(nèi),讀取的長(zhǎng)度小于可讀取長(zhǎng)度;第三種情況,讀取長(zhǎng)度小于可讀取長(zhǎng) 度,但是讀取的數(shù)據(jù)不是連續(xù)的。對(duì)于這幾種情況,請(qǐng)參看
中的圖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;
為了解決應(yīng)用層與通信服務(wù)器端數(shù)據(jù)傳輸?shù)耐絾?wèn)題,采用非阻塞的同步機(jī)制——鎖無(wú) 關(guān)機(jī)制用于對(duì)于數(shù)據(jù)的插入和刪除操作,我們選擇CAS (比較和交換)算法來(lái)實(shí)現(xiàn)。通過(guò)在 內(nèi)存讀取和寫(xiě)入過(guò)程中使用讀一改一寫(xiě)原子操作,使得操作后返回的值要么是完全的新值,
要么是未修改前的舊值。設(shè)定一個(gè)指向32位或64位數(shù)字的指針;將指針的內(nèi)容拷貝到一個(gè) 用于比較的變量中;基于該比較變量產(chǎn)生一個(gè)新值;使用CAS算法來(lái)比較新值與比較變量中 的值,如果二者相等,則改變指針中的內(nèi)容為新值內(nèi)容(該操作為原子操作);如果上一步 操作成功,則退出,否則返回第一步重新執(zhí)行整個(gè)步驟 在通信服務(wù)器模型中所使用到的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);
接收到的數(shù)據(jù)作相應(yīng)的處理,此處我們只是用printf函數(shù)打印出來(lái)。 在契約終止的時(shí)候,將dev、 fsm、 mon線程撤銷(xiāo)掉,然后將dev、 fsm所用到的上下文環(huán) 境釋放掉。清楚掉mon這個(gè)線程創(chuàng)建時(shí)創(chuàng)建的處理句柄。 數(shù)據(jù)流通路徑
當(dāng)客戶(hù)端有數(shù)據(jù)要傳遞的時(shí)候,會(huì)以此調(diào)用由發(fā)送線程調(diào)用netjack一send將數(shù)據(jù)發(fā)送 出去,這個(gè)函數(shù)會(huì)調(diào)用net_ppU_paCk—insert將數(shù)據(jù)寫(xiě)入主存優(yōu)先級(jí)表中。g下來(lái)就是服務(wù)器 端發(fā)送數(shù)據(jù)。在服務(wù)器端net_spu_pack—send負(fù)責(zé)數(shù)據(jù)的發(fā)送,它先調(diào)用net—spu__pack—read 從服務(wù)器端和應(yīng)用層之間的主存優(yōu)先級(jí)表中讀取數(shù)^ , 再由net—fsm_paCk—send依次調(diào)用加密的設(shè)備發(fā)送函數(shù),將加密后的數(shù)據(jù)由主存緩沖區(qū)2發(fā)送 到虛擬設(shè)備,并可以在終端上顯示。
服務(wù)器端還會(huì)對(duì)數(shù)據(jù)的傳輸?shù)难舆t給控制模塊,控制模塊會(huì)以消息通知的形式告知應(yīng)用 模塊,應(yīng)用模塊作出相應(yīng)的處理。
而客戶(hù)端接收數(shù)據(jù)則是一個(gè)相反的過(guò)程??蛻?hù)端的接收線程主要由netj)ack—recv完成數(shù) 據(jù)的讀取。net_pack—recv函數(shù)調(diào)用net—fifo_read讀取應(yīng)用層和服務(wù)器之間的FIFO緩沖區(qū) l(fifo[O])。而這個(gè)纟i沖區(qū)數(shù)據(jù)的寫(xiě)入則是,f務(wù)器端的函數(shù)recv—start來(lái)完成的。它首先調(diào)用 et—fsm—dev—recv,通過(guò)buf一read從設(shè)備驅(qū)動(dòng)模塊和虛擬設(shè)備之間的FIFO緩沖區(qū)3 (fifo [2])中 讀取數(shù)據(jù),然后調(diào)用net—spujackjecv和spu—write,將數(shù)據(jù)寫(xiě)入服務(wù)端和客戶(hù)端之間的緩存 fifo
中。這樣可以讓g戶(hù)端進(jìn)行讀取。系^數(shù)據(jù)流可以參考圖5。
擴(kuò)充
一個(gè)服務(wù)器端的設(shè)備驅(qū)動(dòng)模塊提供一些必要的函數(shù),通過(guò)網(wǎng)絡(luò)設(shè)備和另外一個(gè)(或幾個(gè)) 服務(wù)器端的設(shè)備驅(qū)動(dòng)模塊進(jìn)行通信,即圖2所描述的那種情況。
權(quán)利要求
1、一種計(jì)算機(jī)網(wǎng)絡(luò)安全通信的實(shí)現(xiàn)方法,其特征是以cell處理器為硬件系統(tǒng),并以cell處理器中的Power處理器單元PPU為客戶(hù)端,以各協(xié)處理器單元SPU為網(wǎng)絡(luò)服務(wù)器端實(shí)現(xiàn)數(shù)據(jù)包的傳輸,其中的客戶(hù)端為一獨(dú)立的封閉處理器作為網(wǎng)絡(luò)通信的請(qǐng)求端,請(qǐng)求同另一客戶(hù)端進(jìn)行網(wǎng)絡(luò)通信,并且對(duì)服務(wù)器端的監(jiān)控信息作相應(yīng)的處理,由網(wǎng)絡(luò)服務(wù)器端實(shí)現(xiàn)性能監(jiān)控、數(shù)據(jù)傳輸及設(shè)備驅(qū)動(dòng)等功能。
2、 根據(jù)權(quán)利要求l所述的計(jì)算機(jī)網(wǎng)絡(luò)安全通信的實(shí)現(xiàn)方法,其特征在于數(shù) 據(jù)的發(fā)送采用鎖無(wú)關(guān)的線程同步機(jī)制。
3、 根據(jù)權(quán)利要求2所述的計(jì)算機(jī)網(wǎng)絡(luò)安全通信的實(shí)現(xiàn)方法,其特征是鎖無(wú) 關(guān)的協(xié)議中采用的CAS算法。
4、 根據(jù)權(quán)利要求l所述的計(jì)算機(jī)網(wǎng)絡(luò)安全通信的實(shí)現(xiàn)方法,其特征是采用 契約協(xié)議的方式確定所要監(jiān)控的目標(biāo)。
5、 根據(jù)權(quán)利要求1至4中任一所述的計(jì)算機(jī)網(wǎng)絡(luò)安全通信的實(shí)現(xiàn)方法,其 特征是數(shù)據(jù)的發(fā)送采用基于優(yōu)先級(jí)的緩沖區(qū)存儲(chǔ)機(jī)制,緩沖區(qū)的結(jié)構(gòu)為混合鏈 表結(jié)構(gòu),由結(jié)構(gòu)體數(shù)組和動(dòng)態(tài)鏈表組成。
全文摘要
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)安全通信領(lǐng)域,具體講本發(fā)明是一種關(guān)于計(jì)算機(jī)網(wǎng)絡(luò)安全通信的實(shí)現(xiàn)方法及系統(tǒng)。本發(fā)明所采用的系統(tǒng)是以cell處理器為硬件系統(tǒng),并以cell處理器中的Power處理器單元PPU為客戶(hù)端,以各協(xié)處理器單元SPUE為網(wǎng)絡(luò)服務(wù)器端實(shí)現(xiàn)數(shù)據(jù)包的傳輸,其中的客戶(hù)端為一獨(dú)立的封閉處理器作為網(wǎng)絡(luò)通信的請(qǐng)求端,請(qǐng)求同另一客戶(hù)端進(jìn)行網(wǎng)絡(luò)通信,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)服務(wù)器端的性能監(jiān)控,由網(wǎng)絡(luò)服務(wù)器端實(shí)現(xiàn)性能監(jiān)控、數(shù)據(jù)傳輸及設(shè)備驅(qū)動(dòng)等功能。
文檔編號(hào)H04L29/06GK101645906SQ20091017382
公開(kāi)日2010年2月10日 申請(qǐng)日期2009年9月3日 優(yōu)先權(quán)日2009年9月3日
發(fā)明者呂清泉, 周慶國(guó), 薇 張, 白樹(shù)偉, 金國(guó)軍 申請(qǐng)人:蘭州大學(xué)