亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種在網(wǎng)絡(luò)級采用硬件實現(xiàn)共識驗證的方法與流程

文檔序號:11548654閱讀:303來源:國知局
一種在網(wǎng)絡(luò)級采用硬件實現(xiàn)共識驗證的方法與流程

本發(fā)明屬于區(qū)塊鏈技術(shù)領(lǐng)域,具體涉及一種在網(wǎng)絡(luò)級采用硬件實現(xiàn)共識驗證的方法。



背景技術(shù):

在當(dāng)前嚴格的效率要求下,數(shù)據(jù)中心面臨著越來越大的數(shù)據(jù)量和工作量復(fù)雜性的需求。為了滿足高性能、可擴展性和可伸縮性的目標(biāo),服務(wù)通常運行在數(shù)百到數(shù)千臺機器上。這就需要一些合作共識來維護機器的一致性。不可避免的性能開銷和需要的附加資源往往會降低一致性,導(dǎo)致較少的用戶必須建立更復(fù)雜的應(yīng)用程序來處理潛在的不一致性。一致性需要的高成本來自于達成協(xié)議所需的多輪溝通,傳統(tǒng)的網(wǎng)絡(luò)棧沒有對時間延遲或者特定的通信模式進行優(yōu)化,使共識協(xié)議的加速變成了一個瓶頸。

如今各式的硬件是當(dāng)前一個日益可行的選擇,能夠在低能源成本下提高系統(tǒng)的性能。除了考慮性能及效率之外,對于智能網(wǎng)絡(luò),可以在網(wǎng)絡(luò)中加入節(jié)點,使用中間件來定制它的應(yīng)用,所以要想把共識作為網(wǎng)絡(luò)的一種屬性,而不是只讓它在應(yīng)用層上實現(xiàn),需要在實現(xiàn)的復(fù)雜度和中間件可達到的吞吐量中找到平衡點,則在網(wǎng)絡(luò)中加入?yún)^(qū)塊鏈共識協(xié)議提高系統(tǒng)效率是很好的選擇,如pbft(practicalbyzantinefaulttolerance,實用拜占庭容錯算法)/sbft(simplebyzantinefaulttolerance,簡化拜占庭容錯算法)/rbft(redundantbyzantinefaulttolerance,冗余拜占庭容錯算法)等共識協(xié)議,而fpga(field-programmablegatearray,現(xiàn)場可編程門陣列)具有低功耗的特點,不受傳統(tǒng)的cpu在數(shù)據(jù)處理方面的線速限制,在上面運行共識協(xié)議能夠降低時間延遲,通過擴展中間件的功能或添加廉價的共識給網(wǎng)絡(luò)處理節(jié)點,將共識協(xié)議更多的價值推廣到網(wǎng)絡(luò)。



技術(shù)實現(xiàn)要素:

鑒于上述,本發(fā)明提出了一種在網(wǎng)絡(luò)級采用硬件實現(xiàn)共識驗證的方法,不增加數(shù)據(jù)中心的容量,在fpga上實現(xiàn)pbft/sbft/rbft等區(qū)塊鏈共識協(xié)議,降低了時間延遲。

一種在網(wǎng)絡(luò)級采用硬件實現(xiàn)共識驗證的方法,包括如下步驟:

(1)構(gòu)建在網(wǎng)絡(luò)級采用fpga實現(xiàn)共識驗證的系統(tǒng)運行框架;

(2)fpga節(jié)點之間通過執(zhí)行tcp/ip(transmissioncontrolprotocol/internetprotocol,傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議)協(xié)議進行點對點連接;

(3)fpga節(jié)點采用arp(addressresolutionprotocol,地址解析協(xié)議)、icmp(internetcontrolmessageprotocol,internet控制報文協(xié)議)、dhcp(dynamichostconfigurationprotocol,動態(tài)主機配置協(xié)議)輔助tcp/ip協(xié)議與其他fpga節(jié)點交互,縮短tcp/ip堆棧,使fpga處于真實網(wǎng)絡(luò)中;

(4)fpga節(jié)點將數(shù)據(jù)消息轉(zhuǎn)化為滿足共識協(xié)議需要的報文格式;

(5)由fpga節(jié)點采用pbft、sbft或rbft的區(qū)塊鏈共識協(xié)議對數(shù)據(jù)消息進行傳遞廣播,其他fpga節(jié)點收到后發(fā)送反饋并進行投票。

所述步驟(1)的具體實現(xiàn)方法為:在網(wǎng)絡(luò)中布置一定量的fpga作為節(jié)點,任意兩個fpga節(jié)點之間存在通道可進行交互,各fpga節(jié)點均通過連接交換機以實現(xiàn)同一時刻多對端口之間的數(shù)據(jù)傳輸,fpga節(jié)點利用其內(nèi)部bram(嵌入式塊ram)緩沖區(qū)較小的特點,以釋放dram(動態(tài)隨機存取存儲器)內(nèi)存空間用于共識和應(yīng)用邏輯的執(zhí)行。

所述步驟(2)的具體實現(xiàn)方法如下:由fpga節(jié)點內(nèi)部緩沖區(qū)動態(tài)分配tcp會話,使客戶端請求數(shù)據(jù)小于以太網(wǎng)mtu(maximumtransmissionunit,最大傳輸單元)大??;fpga節(jié)點只與其他節(jié)點之間相互重傳,而不考慮與客戶端之間的超時設(shè)定,以減少tcp的壓棧;通過硬件實現(xiàn)網(wǎng)絡(luò)協(xié)議允許建立兩條真正的數(shù)據(jù)流通道對應(yīng)實現(xiàn)隔離發(fā)送和接收路徑,兩條通道互不影響對方且通過數(shù)據(jù)結(jié)構(gòu)共享連接狀態(tài)。

所述數(shù)據(jù)結(jié)構(gòu)包括會話查找表、端口狀態(tài)表以及由定時器支持的事件引擎;其中,會話查找表包含ip地址、目的地址和源端口,fpga在實施時把其作為一個內(nèi)容可尋址的存儲器;端口狀態(tài)表用于跟蹤每個tcp端口的狀態(tài)并為每個打開的tcp連接存儲狀態(tài)信息;事件引擎負責(zé)管理活動以及發(fā)送接口傳入的請求并指示相應(yīng)的輸出引擎工作。

所述步驟(3)的具體實現(xiàn)方法為:在fpga設(shè)備間進行點對點通信,如果數(shù)據(jù)因為緩存空間不足或線路中斷而丟失,則通過icmp向數(shù)據(jù)的源端報告,相關(guān)事件接收方會發(fā)送重發(fā)請求的通知;發(fā)送數(shù)據(jù)包時,若發(fā)送方?jīng)]有接收方的mac地址但知道接收方的ip地址,則廣播一個請求接收方mac地址的消息;由dhcp服務(wù)器為fpga節(jié)點分配一個空閑的ip地址,并打上有效時間戳;在arp、icmp、dhcp這些協(xié)議上發(fā)送和接收數(shù)據(jù)時,應(yīng)用程序使用會話與網(wǎng)絡(luò)堆棧通信,再直接將數(shù)據(jù)轉(zhuǎn)發(fā)到特定應(yīng)用程序的網(wǎng)絡(luò)模塊中;數(shù)據(jù)包在以太網(wǎng)上直接傳播的過程中,利用序列號來探測數(shù)據(jù)是否丟失,所述序列號隨著邏輯請求的增加而增加。

所述步驟(4)的具體實現(xiàn)方法為:將數(shù)據(jù)消息分為需要的模塊,用metadata表示傳輸?shù)脑獢?shù)據(jù),用payload表示有效載荷;規(guī)范共識協(xié)議中的組成部分,用signature表示節(jié)點與節(jié)點交互的數(shù)字簽名,用timestamp表示消息的時間戳,用cert表示fpga加入網(wǎng)絡(luò)注冊需要的證書。規(guī)范報文格式后利于區(qū)塊鏈共識協(xié)議pbft/sbft/rbft等識別數(shù)據(jù)。

所述步驟(5)的具體實現(xiàn)方法為:在加入網(wǎng)絡(luò)的fpga節(jié)點生成注冊證書的前提下,首先選出領(lǐng)導(dǎo)節(jié)點,由領(lǐng)導(dǎo)節(jié)點將需要廣播的數(shù)據(jù)消息使用哈希函數(shù)sha-256生成摘要,然后生成一個隨機數(shù)nonce并利用硬件加密模塊進行ecdsa(橢圓曲線數(shù)字簽名算法)計算,生成對摘要的簽名,進而采用pbft、sbft或rbft的區(qū)塊鏈共識協(xié)議對簽名后的數(shù)據(jù)信息進行傳遞廣播;其他fpga節(jié)點收到數(shù)據(jù)信息后,驗證簽名是否是數(shù)據(jù)發(fā)出者的,確定數(shù)據(jù)合法性,然后發(fā)出收到消息的反饋通知并對數(shù)據(jù)進行投票工作。

本發(fā)明為了提高一致性而不降低性能,選擇在硬件上實現(xiàn)共識協(xié)議,而不是增加更多的數(shù)據(jù)中心。本發(fā)明在硬件fpga系統(tǒng)上實現(xiàn)pbft/sbft/rbft等區(qū)塊鏈共識協(xié)議,創(chuàng)建了能夠增加中間件或者智能網(wǎng)絡(luò)硬件的可再使用方案,并且可以使用硬件或逐步開始出現(xiàn)的硬件平臺來處理tcp/ip網(wǎng)絡(luò)協(xié)議和特定的網(wǎng)絡(luò)協(xié)議工作。fpga可以在大多情況下訪問dram芯片中的日志,讀取高速緩沖存儲器頭,適合pbft/sbft/rbft等區(qū)塊鏈共識協(xié)議在fpga硬件上實現(xiàn)。

傳統(tǒng)的算法中,從tcp流中得到的有效載荷必須填滿整個mtu數(shù)據(jù)包大小,所以為了等待更多的數(shù)據(jù)填滿就必須等待一段時間,每個小于mtu大小的請求都會因為超時設(shè)定而延遲一段時間。而在本發(fā)明方案中,客戶端請求總是小于以太網(wǎng)mtu大小1500b的,這樣就能更好的縮短時間延遲。

附圖說明

圖1為節(jié)點之間交互關(guān)系示意圖。

圖2為fpga硬件的整體結(jié)構(gòu)示意圖。

圖3為tcp堆棧結(jié)構(gòu)示意圖。

具體實施方式

為了更為具體地描述本發(fā)明,下面結(jié)合附圖及具體實施方式對本發(fā)明的技術(shù)方案進行詳細說明。

本實施方式布置了三個fpga硬件設(shè)備作為節(jié)點,節(jié)點使用fpga評估板,該評估板具有多個以太網(wǎng)接口。系統(tǒng)分為三個模塊,網(wǎng)絡(luò)協(xié)議模塊、報文格式修改模塊以及區(qū)塊鏈共識協(xié)議模塊,硬件結(jié)構(gòu)整體如圖1所示。

每兩個節(jié)點之間存在通道可進行交互,使用交換機在同一時刻可進行多個端口對之間的數(shù)據(jù)傳輸,每個fpga中有相應(yīng)的bram模塊,bram緩沖區(qū)較小,能降低延遲而不影響性能,釋放dram內(nèi)存空間用來共識和應(yīng)用邏輯的執(zhí)行,所以保留大容量dram緩沖區(qū),硬件整體結(jié)構(gòu)如圖2所示。節(jié)點之間通過執(zhí)行tcp/ip協(xié)議進行點對點連接,fpga內(nèi)部緩沖區(qū)動態(tài)分配tcp會話,客戶端請求小于以太網(wǎng)mtu大小,fpga只與其他fpga之間相互重傳,而不考慮與客戶端之間的超時設(shè)定,減少了tcp的壓棧。

網(wǎng)絡(luò)協(xié)議模塊中,采用tcp協(xié)議以及多個應(yīng)用協(xié)議,tcp協(xié)議中為了減小時間延遲,減小儲存占用的空間,硬件實現(xiàn)網(wǎng)絡(luò)協(xié)議允許建立真正的數(shù)據(jù)流通道并隔離發(fā)送和接收路徑,使他們不影響對方,兩條通道通過數(shù)據(jù)結(jié)構(gòu)共享連接狀態(tài)。這些數(shù)據(jù)結(jié)構(gòu)有會話查找表、端口表、狀態(tài)表和由定時器支持的事件引擎,會話查找表包含的四元組映射會話id,對fpga作為一個內(nèi)容可尋址存儲器;端口表跟蹤每個tcp端口的狀態(tài),為每個開放的tcp連接狀態(tài)表存儲信息;事件引擎負責(zé)管理活動并發(fā)送接口傳入的請求,并指示相應(yīng)的tx引擎工作。

bram內(nèi)部緩沖區(qū)被分成幾個fifo(firstinputfirstoutput,先入先出隊列),動態(tài)分配tcp會話,當(dāng)bram緩沖區(qū)可以確定一個fifo隊列中一個完整的請求可用時,就將其轉(zhuǎn)發(fā)給應(yīng)用程序邏輯。如果所有的fifo隊列都滿了,為了不丟失任何數(shù)據(jù),就依靠tcp的重傳機制重傳數(shù)據(jù)??蛻舳苏埱罂傂∮谝蕴W(wǎng)mtu大小,除掉超時設(shè)定后,fpga除了和其他fpga之間的相互重傳之外,請求在不同層中傳播不會因為mtu的大小不同而被分割開來。應(yīng)用協(xié)議中,數(shù)據(jù)包在以太網(wǎng)上直接傳播,用序列號來探測數(shù)據(jù)是否丟失,序列號隨著邏輯請求的增加而增加。fpga設(shè)備間進行點對點通信,如果數(shù)據(jù)因為緩存空間不足或線路的中斷而丟失,接收方會發(fā)送重發(fā)請求的通知,在該協(xié)議上發(fā)送和接收數(shù)據(jù)時,應(yīng)用程序在與網(wǎng)絡(luò)堆棧通信時使用會話,以便它們直接轉(zhuǎn)發(fā)到特定于應(yīng)用程序的網(wǎng)絡(luò)模塊;tcp堆棧結(jié)構(gòu)如圖3所示。

報文格式轉(zhuǎn)化模塊中,具體將數(shù)據(jù)分為需要的模塊,用metadata代表傳輸?shù)脑獢?shù)據(jù),payload代表有效載荷。規(guī)范共識協(xié)議中的組成部分,用signature代表節(jié)點與節(jié)點交互的數(shù)字簽名,用timestamp代表消息完成的時間戳,cert代表fpga加入網(wǎng)絡(luò)注冊需要的證書等。

區(qū)塊鏈共識協(xié)議模塊中,fpga節(jié)點采用區(qū)塊鏈共識協(xié)議傳遞消息,如pbft/sbft/rbft等,其他節(jié)點收到共識消息后發(fā)送收到信息的反饋并投票。在加入網(wǎng)絡(luò)的fpga節(jié)點生成注冊證書的前提下,即fpga節(jié)點作為合法節(jié)點進入網(wǎng)絡(luò)。將三個fpga節(jié)點編號0,1,2,首先根據(jù)區(qū)塊高度對3取模(三個fpga節(jié)點),得到的余數(shù)即對應(yīng)fpga的編號,這樣選出領(lǐng)導(dǎo)節(jié)點。領(lǐng)導(dǎo)節(jié)點將規(guī)范了報文格式之后需要廣播的數(shù)據(jù)消息使用哈希函數(shù)sha-256生成摘要,然后生成一個隨機數(shù)nonce,并用硬件加密模塊進行ecdsa計算,生成對摘要的簽名,向其他節(jié)點提交證明。其他節(jié)點收到數(shù)據(jù)信息后,通過隨機數(shù)nonce驗證簽名是否是數(shù)據(jù)發(fā)出者的,確定數(shù)據(jù)合法性,然后進行收到消息的反饋通知并對數(shù)據(jù)進行投票工作。

上述對實施例的描述是為便于本技術(shù)領(lǐng)域的普通技術(shù)人員能理解和應(yīng)用本發(fā)明。熟悉本領(lǐng)域技術(shù)的人員顯然可以容易地對上述實施例做出各種修改,并把在此說明的一般原理應(yīng)用到其他實施例中而不必經(jīng)過創(chuàng)造性的勞動。因此,本發(fā)明不限于上述實施例,本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的揭示,對于本發(fā)明做出的改進和修改都應(yīng)該在本發(fā)明的保護范圍之內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1