專利名稱:一種滿足拜占庭協(xié)議的兩輪通信方法
技術領域:
本發(fā)明設計一種通信方法,特別是一種在多機冗余系統(tǒng)中為了防止拜占 庭故障所采用的兩輪通信方法。
背景技術:
在多機冗余系統(tǒng)中,系統(tǒng)通常需要對某臺單機的專有數(shù)據(jù)達成一致,比 如對于單機的時鐘數(shù)據(jù)如何、對于專有的傳感器數(shù)據(jù)如何,對于單機的狀態(tài)
數(shù)據(jù)如何等。對于這類單源數(shù)據(jù),為了防止拜占庭故障,即擁有數(shù)據(jù)的單機 給其它不同機器發(fā)送不一致的數(shù)據(jù),系統(tǒng)需要執(zhí)行兩輪交換來達成一致,即 第一輪擁有單源數(shù)據(jù)的機器發(fā)送自己的專有數(shù)據(jù),第二輪其它機相互轉發(fā)接
收到的數(shù)據(jù),這是經(jīng)典的拜占庭協(xié)議(Byzantine Protocol)問題,相關內(nèi) 容可參見文獻M. Pease, L. Lamport, S.Shostak. The Byzantine generals problem[J]. ACM Trans. Programming Languages and Systems, 1982, 4(3):382~401。
對于由多臺單機組成的冗余系統(tǒng),兩輪通信過程通常需要在同一段時間 內(nèi)執(zhí)行完,以方便系統(tǒng)的容錯判決;另一方面,系統(tǒng)所有單機需要對這種輸 入數(shù)據(jù)以相同的順序進行處理?,F(xiàn)有的兩輪通信方法是每臺單才幾分別執(zhí)行這 種兩輪通信,首先,對于第一臺被觸發(fā)的機器,將自己的數(shù)據(jù)發(fā)送給其它單 機,其它單機在收到該數(shù)據(jù)后,再相互進行轉發(fā)給其它M-1個單機;然后 第二臺被觸發(fā)的機器,重復第一臺被觸發(fā)機器執(zhí)行過的這種兩輪通信,第三 臺被觸發(fā)的機器也重復這個過程,如此重復M次,使得系統(tǒng)中的每個單機 都執(zhí)行過兩輪通信,再進行處理。這種方法的不足之處有兩點第一,每臺 單機的觸發(fā)順序是不確定的,導致每臺單機完成兩輪通信的先后順序不一 致,因而數(shù)據(jù)最終到達的時間也不一致,這就使得系統(tǒng)的容錯判決困難;第二,這種兩輪交換是順序執(zhí)行的,導致系統(tǒng)數(shù)據(jù)交換的時間相對較長。
發(fā)明內(nèi)容
本發(fā)明的技術解決問題是克服現(xiàn)有技術的不足之處,提供了一種容錯 判決簡單、可提高整個系統(tǒng)通信效率的滿足拜占庭協(xié)議的兩輪通信方法。
本發(fā)明的方法的技術解決方案是 一種滿足拜占庭協(xié)議的兩輪通信方 法,包括以下步驟
(1) 設冗余系統(tǒng)中有M個單機,6>M>4,各單機分別將自己的數(shù)據(jù) 和同步脈沖發(fā)送給其它M-1個單機,同時等待接收其它M-1個單機發(fā)送 的數(shù)據(jù);
(2) 對步驟(1)中的同步脈沖個數(shù)進行計數(shù)并與預設值進行比較,若 同步脈沖的計數(shù)值小于預設值時各單機完全接收到其它M - 1個單機發(fā)送的 數(shù)據(jù),則執(zhí)行步驟(3);若同步脈沖的計數(shù)值與預設值相同時各單機還未 完全接收到其它M - 1個單機發(fā)送的數(shù)據(jù),則執(zhí)行步驟(5);
(3) 各單機將其接收到的其它M - 1個單機傳來的數(shù)據(jù)及其自己的數(shù) 據(jù)按同樣的順序依次轉發(fā)給其它M - 1個單機,各單機在轉發(fā)數(shù)據(jù)的同時還 保持發(fā)送同步脈沖,并對M次轉發(fā)過程中的每一次的同步脈沖均進行計數(shù); 若每一次轉發(fā)時各單機均能在當次同步脈沖個數(shù)的計數(shù)值小于預設值時接 收到相同的M個數(shù)據(jù),則執(zhí)行步驟(4),否則執(zhí)行步驟(5);
(4) 各單機對M個數(shù)據(jù)中的每一個數(shù)據(jù)逐一進行表決,若每次表決時 各單機的對應數(shù)據(jù)均一致,則判定冗余系統(tǒng)正常,否則執(zhí)行步驟(5);
(5) 判定冗余系統(tǒng)異常,若某單機未在規(guī)定計數(shù)時間內(nèi)發(fā)送數(shù)據(jù),則 所述單機發(fā)生超時故障;若表決時只有一臺單機的數(shù)據(jù)與最終表決結果不一 致,則步驟(3)中轉發(fā)此不一致數(shù)據(jù)的單機發(fā)生拜占庭故障;若多于一臺 單機的數(shù)據(jù)與最終表決結果不一致,則步驟(1)中發(fā)送此不一致數(shù)據(jù)的單 機發(fā)生拜占庭故障。
本發(fā)明與現(xiàn)有技術相比的有益效果是(1) 本發(fā)明中,M臺單機的第一輪通信可以同時進行,當冗余系統(tǒng)中 的各單機同步比較好時可以提高通信效率,使得通信輪數(shù)最高可以減少M -
1輪;
(2) 本發(fā)明中,第二輪數(shù)據(jù)轉發(fā)的過程是按照約定的順序進行的,因 此第二輪數(shù)據(jù)交換結束后得到的是順序一致的數(shù)據(jù)序列,方便系統(tǒng)容錯判 決;
(3) 本發(fā)明中,采用發(fā)送與接收同步脈沖的過程作為超時計數(shù)單位, 在等待接收其它機的數(shù)據(jù)過程中發(fā)送同步脈沖, 一 方面可以用來判定是否超 時,另一方面可以方便獲取其它機數(shù)據(jù)到來的時間,為系統(tǒng)同步提供參考。
圖1為本發(fā)明兩輪通信方法的原理框圖2為4單機冗余系統(tǒng)中進行第一輪數(shù)據(jù)通信時數(shù)據(jù)流向示意圖; 圖3為4單機冗余系統(tǒng)中進行第二輪數(shù)據(jù)通信時數(shù)據(jù)A的流向示意圖; 圖4為4單機冗余系統(tǒng)中進行第二輪數(shù)據(jù)通信時數(shù)據(jù)B的流向示意圖; 圖5為4單機冗余系統(tǒng)中進行第二輪數(shù)據(jù)通信時數(shù)據(jù)C的流向示意圖; 圖6為4單機冗余系統(tǒng)中進行第二輪數(shù)據(jù)通信時數(shù)據(jù)D的流向示意圖。
具體實施例方式
如圖1所示,為本發(fā)明兩輪通信方法的原理框圖,設冗余系統(tǒng)中有M 個單才幾,》匕處6 > M > 4。因為才艮才居文獻M. Pease, L. Lamport, S.Shostak. The Byzantine generals problem[J]. ACM Trans. Programming Languages andSystems, 1982, 4(3):382~401中的相關內(nèi)容可知,為了容忍f個單機 發(fā)生拜占庭故障,冗余系統(tǒng)至少需要存在3f+1個單機。本發(fā)明方法適用于 f=1的情況,也就是M》4,此時冗余系統(tǒng)可以容忍1個單機發(fā)生拜占庭故 障,釆用本發(fā)明方法可以很好的進行糾錯。當M〉7也就是f-2時,冗余系 統(tǒng)可以同時容忍2個單機發(fā)生拜占庭故障,也就是說當M》7時,冗余系統(tǒng) 可能會同時有2個單機發(fā)生拜占庭故障,此時應至少進行三輪通信才能對2個故障單機進行處理,而采用兩輪通信方法最多也只能糾檢1個單機的錯
誤,此時采用本發(fā)明的方法也可以糾檢出2個故障單機中1個單機的錯誤, 但顯然其實用性已經(jīng)大大降低,不利于在工程上應用。因此,為了提高針對 單個單機發(fā)生拜占庭故障時糾錯的可靠性,本發(fā)明方法中選取6》M。各單 機首先在第一輪時發(fā)送自己的數(shù)據(jù),然后發(fā)送同步脈沖等待接收其它機的數(shù) 據(jù),在其它機的數(shù)據(jù)到達時記錄此時自己發(fā)送同步脈沖的個數(shù)。若在發(fā)送同 步脈沖的個數(shù)小于預先設定值時接收到其它機的數(shù)據(jù),則各機第二輪按照約 定的順序依次轉發(fā)第 一輪收到的數(shù)據(jù)。在轉發(fā)某臺機數(shù)據(jù)后等待接收其它機 數(shù)據(jù)的過程中,同樣保持發(fā)送同步脈沖,據(jù)此來判斷其它機是否發(fā)送超時故 障。在第二輪結束后進行數(shù)據(jù)一致性表決,判斷通信過程中是否發(fā)生拜占庭
過程進行計時,用于判定超時和記錄其它機數(shù)據(jù)到達的時間。
若在通信過程中有某臺機器的數(shù)據(jù)沒有在規(guī)定時間內(nèi)到達,即本機發(fā)送 同步脈沖的個數(shù)不小于預先設定值,則判定數(shù)據(jù)沒有到達的機器發(fā)生超時故 障;否則,若表決時只有一臺單機的數(shù)據(jù)與最終表決結果不一致,則判定第 二輪轉發(fā)此不一致數(shù)據(jù)的單機發(fā)生拜占庭故障,此機給不同機轉發(fā)的數(shù)據(jù)不 一致;若多于一臺單機的數(shù)據(jù)與最終表決結果不一致,則判定第一輪發(fā)送此 數(shù)據(jù)的單機發(fā)生拜占庭故障,此機給不同機發(fā)送的數(shù)據(jù)不一致。對于同步脈
沖預設值,其主要與通信波特率、需要交換數(shù)據(jù)量的大小以及系統(tǒng)最晚完成 兩輪交換的時間有關。 一般應用時,通常設置同步脈沖的個數(shù)為10個,當 通信波特率為3.6864Mbps時,時間約為32.552us。 實施例
假設冗余系統(tǒng)中有4個單機(即M = 4),分別為A機、B機、C機、 D機,當采用本發(fā)明的方法進行通信時,第一輪的通信情況如圖2所示, A機將A機的專有數(shù)據(jù)a分別發(fā)送給B機、C機和D機; B機將B機的專有數(shù)據(jù)b分別發(fā)送給A機、C機和D機;C機將C機的專有數(shù)據(jù)c分別發(fā)送給A機、B機和D機; D機將D機的專有數(shù)據(jù)d分別發(fā)送給A機、B機和C機。 在第一輪交換結束后,4臺機器分別獲得a、 b、 c、 d的數(shù)據(jù)序列。由
于在數(shù)據(jù)發(fā)送過程中可能發(fā)生拜占庭故障,某臺機器可能給不同機器發(fā)送不
一樣的數(shù)據(jù),使得每臺機器得到的a、 b、 c、 d的數(shù)據(jù)序列可能不一致,因
此需要進行第二輪通信。
在進行第二輪通信時,各機轉發(fā)數(shù)據(jù)序列a、 b、 c、 d的情況分別如圖
3~圖6所示,
A機將數(shù)據(jù)a分別發(fā)送給B機、C機和D機,將數(shù)據(jù)b分別發(fā)送給B 機、C機和D機,將數(shù)據(jù)c分別發(fā)送給B機、C機和D機,將數(shù)據(jù)d分別 發(fā)送給B機、C機和D機;
B機將數(shù)據(jù)a分別發(fā)送給A機、C機和D機,將數(shù)據(jù)b分別發(fā)送給A 機、C機和D機,將數(shù)據(jù)c分別發(fā)送給A機、C才幾和D才幾,將數(shù)據(jù)d分別 發(fā)送給A機、C機和D機;
C機將數(shù)據(jù)a分別發(fā)送給A機、B機和D機,將數(shù)據(jù)b分別發(fā)送給A 機、B機和D機,將數(shù)據(jù)c分別發(fā)送給A機、B機和D機,將數(shù)據(jù)d分別 發(fā)送給A機、B機和D機;
D機將數(shù)據(jù)a分別發(fā)送給A機、B機和C機,將數(shù)據(jù)b分別發(fā)送給A 機、B機和C機,將數(shù)據(jù)c分別發(fā)送給A機、B機和C機,將數(shù)據(jù)d分別 發(fā)送給A機、B機和C機。
4機在數(shù)據(jù)發(fā)送與轉發(fā)過程中,在自己數(shù)據(jù)發(fā)出后轉向發(fā)送同步脈沖, 記錄其它機器數(shù)據(jù)到達時自己發(fā)送同步脈沖的個數(shù)。 一方面可以用來判定其 它機是否超時(數(shù)據(jù)到達時發(fā)送同步脈沖的個數(shù)是否小于預先設定值),另 一方面可以方便獲取其它機數(shù)據(jù)到來的時間,為系統(tǒng)同步提供參考。同時接 收到對方機的同步脈沖,可以作為二者通信鏈路正常的標志。
數(shù)據(jù)表決過程對接收到的其它3機的數(shù)據(jù)采用3取2多數(shù)表決,如果
7表決時A、 B、 C、 D機的數(shù)據(jù)完全一致,則判定系統(tǒng)通信正常,否則,判 定在通信過程中發(fā)生拜占庭故障。例如,在表決數(shù)據(jù)a時,將A機第二輪 轉發(fā)的數(shù)據(jù)屏蔽掉,對B、 C、 D機轉發(fā)的3份數(shù)據(jù)采用3取2多數(shù)表決獲 得表決的結果v,若A、 B、 C、 D機的數(shù)據(jù)與表決結果v—致,則判定系統(tǒng) 通信正常;否則,若A機或者B機或者C或者D之一與表決結果v不一致, 其它3機與表決結果一致,則判定此不一致機發(fā)生拜占庭故障;否則,多于 一臺單機的數(shù)據(jù)與表決結果v不一致,則判定A機發(fā)生拜占庭故障。
以上僅對M=4的情況進行了說明,當M-5或6時,其進行兩輪通信的 原理和方法與M=4的情況相同。
本發(fā)明說明書中未作詳細描述的內(nèi)容屬本領域技術人員的公知技術。
權利要求
1.一種滿足拜占庭協(xié)議的兩輪通信方法,其特征在于包括以下步驟(1)設冗余系統(tǒng)中有M個單機,6≥M≥4,各單機分別將自己的數(shù)據(jù)和同步脈沖發(fā)送給其它M-1個單機,同時等待接收其它M-1個單機發(fā)送的數(shù)據(jù);(2)對步驟(1)中的同步脈沖個數(shù)進行計數(shù)并與預設值進行比較,若同步脈沖的計數(shù)值小于預設值時各單機完全接收到其它M-1個單機發(fā)送的數(shù)據(jù),則執(zhí)行步驟(3);若同步脈沖的計數(shù)值與預設值相同時各單機還未完全接收到其它M-1個單機發(fā)送的數(shù)據(jù),則執(zhí)行步驟(5);(3)各單機將其接收到的其它M-1個單機傳來的數(shù)據(jù)及其自己的數(shù)據(jù)按同樣的順序依次轉發(fā)給其它M-1個單機,各單機在轉發(fā)數(shù)據(jù)的同時還保持發(fā)送同步脈沖,并對M次轉發(fā)過程中的每一次的同步脈沖均進行計數(shù);若每一次轉發(fā)時各單機均能在當次同步脈沖個數(shù)的計數(shù)值小于預設值時接收到相同的M個數(shù)據(jù),則執(zhí)行步驟(4),否則執(zhí)行步驟(5);(4)各單機對M個數(shù)據(jù)中的每一個數(shù)據(jù)逐一進行表決,若每次表決時各單機的對應數(shù)據(jù)均一致,則判定冗余系統(tǒng)正常,否則執(zhí)行步驟(5);(5)判定冗余系統(tǒng)異常,若某單機未在規(guī)定計數(shù)時間內(nèi)發(fā)送數(shù)據(jù),則所述單機發(fā)生超時故障;若表決時只有一臺單機的數(shù)據(jù)與最終表決結果不一致,則步驟(3)中轉發(fā)此不一致數(shù)據(jù)的單機發(fā)生拜占庭故障;若多于一臺單機的數(shù)據(jù)與最終表決結果不一致,則步驟(1)中發(fā)送此不一致數(shù)據(jù)的單機發(fā)生拜占庭故障。
全文摘要
一種滿足拜占庭協(xié)議的兩輪通信方法,步驟為(1)冗余系統(tǒng)中M個單機分別將自身數(shù)據(jù)和同步脈沖發(fā)送給其它單機;(2)對脈沖個數(shù)進行計數(shù)并與預設值進行比較,若計數(shù)值小于預設值時各單機完全接收到其它單機發(fā)送的數(shù)據(jù),則執(zhí)行下一步,否則判斷發(fā)生單機超時故障;(3)各單機將其接收到的M-1個數(shù)據(jù)及自身數(shù)據(jù)按相同順序依次轉發(fā)給其它單機,并對M次轉發(fā)過程中的每一次脈沖個數(shù)均進行計數(shù);若每一次轉發(fā)時各單機均能在當次計數(shù)值小于預設值時接收到相同的M個數(shù)據(jù),則執(zhí)行下一步,否則判斷發(fā)生單機超時故障;(4)各單機對M個數(shù)據(jù)逐一進行表決,若每次表決時各單機的對應數(shù)據(jù)均一致,則冗余系統(tǒng)正常,否則冗余系統(tǒng)發(fā)生拜占庭故障。
文檔編號G06F11/18GK101576835SQ20091008594
公開日2009年11月11日 申請日期2009年5月31日 優(yōu)先權日2009年5月31日
發(fā)明者波 劉, 李任欣, 肖愛斌 申請人:北京控制工程研究所