1.一種節(jié)點(diǎn)選舉方法,應(yīng)用于集群系統(tǒng)中的任一主控節(jié)點(diǎn),其特征在于,所述方法包括:
接收鄰居主控節(jié)點(diǎn)發(fā)送的握手交互報文,所述握手交互報文攜帶所述鄰居主控節(jié)點(diǎn)感知的本主控節(jié)點(diǎn)的鄰居狀態(tài);
根據(jù)所述鄰居主控節(jié)點(diǎn)感知的本主控節(jié)點(diǎn)的鄰居狀態(tài),更新本地記錄的所述鄰居主控節(jié)點(diǎn)的鄰居狀態(tài);
根據(jù)本地記錄的包括本主控節(jié)點(diǎn)在內(nèi)的主控節(jié)點(diǎn)的鄰居狀態(tài),從非初始狀態(tài)的主控節(jié)點(diǎn)中選舉全局主用主控節(jié)點(diǎn),所述非初始狀態(tài)為單向狀態(tài)或雙向狀態(tài),其中,本地記錄的本主控節(jié)點(diǎn)的鄰居狀態(tài)默認(rèn)為雙向狀態(tài);從除全局主用主控節(jié)點(diǎn)以外的鄰居狀態(tài)為雙向狀態(tài)的主控節(jié)點(diǎn)中選舉全局備份主控節(jié)點(diǎn)。
2.如權(quán)利要求1所述的方法,其特征在于,所述更新本地記錄的所述鄰居主控節(jié)點(diǎn)的鄰居狀態(tài),包括:
當(dāng)所述鄰居主控節(jié)點(diǎn)感知的本主控節(jié)點(diǎn)的鄰居狀態(tài)為初始狀態(tài)時,更新所述鄰居主控節(jié)點(diǎn)的鄰居狀態(tài)為單向狀態(tài);當(dāng)所述鄰居主控節(jié)點(diǎn)感知的本主控節(jié)點(diǎn)的鄰居狀態(tài)為非初始狀態(tài)時,更新所述鄰居主控節(jié)點(diǎn)的鄰居狀態(tài)為雙向狀態(tài);
當(dāng)本主控節(jié)點(diǎn)停止向所述鄰居主控節(jié)點(diǎn)發(fā)送握手交互報文時,或者本主控節(jié)點(diǎn)與所述鄰居主控節(jié)點(diǎn)之間的鏈路故障,或者在預(yù)設(shè)時間內(nèi)未接收到所述鄰居主控節(jié)點(diǎn)的握手交互報文時,更新所述鄰居主控節(jié)點(diǎn)的鄰居狀態(tài)為初始狀態(tài)。
3.如權(quán)利要求1所述的方法,其特征在于,所述握手交互報文包括報文頭字段、第一TLV字段、第二TLV字段,所述第一TLV字段攜帶所述鄰居主控節(jié)點(diǎn)的節(jié)點(diǎn)信息,所述第二TLV字段攜帶所述鄰居主控節(jié)點(diǎn)感知的本主控節(jié)點(diǎn)的鄰居狀態(tài);其中,所述節(jié)點(diǎn)信息包括節(jié)點(diǎn)角色,所述方法還包括:
在本地記錄本主控節(jié)點(diǎn)的節(jié)點(diǎn)信息和所述鄰居主控節(jié)點(diǎn)的節(jié)點(diǎn)信息。
4.如權(quán)利要求3所述的方法,其特征在于,所述從非初始狀態(tài)的主控節(jié)點(diǎn)中選舉全局主用主控節(jié)點(diǎn),包括:
從本地記錄的鄰居狀態(tài)為非初始狀態(tài)的主控節(jié)點(diǎn)中選擇兩個主控節(jié)點(diǎn)參與本地主選舉,將所述兩個主控節(jié)點(diǎn)分別作為第一參選主控節(jié)點(diǎn)和第二參選主控節(jié)點(diǎn);
比較第一參選主控節(jié)點(diǎn)和第二參選主控節(jié)點(diǎn),確定勝出的主控節(jié)點(diǎn),將第一參選主控節(jié)點(diǎn)更新為勝出的主控節(jié)點(diǎn);
判斷本地記錄的鄰居狀態(tài)為非初始狀態(tài)的主控節(jié)點(diǎn)中是否存在未參與本地主選舉的主控節(jié)點(diǎn),若是,從未參與本地主選舉的主控節(jié)點(diǎn)中選擇一個主控節(jié)點(diǎn),將第二參選主控節(jié)點(diǎn)更新為該選中的主控節(jié)點(diǎn),并重新比較第一參選主控節(jié)點(diǎn)和第二參選主控節(jié)點(diǎn);若否,將勝出的主控節(jié)點(diǎn)的節(jié)點(diǎn)角色更新為全局主用主控節(jié)點(diǎn)。
5.如權(quán)利要求4所述的方法,其特征在于,所述比較第一參選主控節(jié)點(diǎn)和第二參選主控節(jié)點(diǎn),確定勝出的主控節(jié)點(diǎn),包括:
當(dāng)?shù)谝粎⑦x主控節(jié)點(diǎn)的節(jié)點(diǎn)角色和第二參選主控節(jié)點(diǎn)的節(jié)點(diǎn)角色均為非全局主用主控節(jié)點(diǎn)時,從第一參選主控節(jié)點(diǎn)和第二參選主控節(jié)點(diǎn)中選擇優(yōu)先級高的主控節(jié)點(diǎn)為勝出的主控節(jié)點(diǎn),更新優(yōu)先級低的主控節(jié)點(diǎn)的節(jié)點(diǎn)角色為全局普通主控節(jié)點(diǎn);
當(dāng)?shù)谝粎⑦x主控節(jié)點(diǎn)的節(jié)點(diǎn)角色和第二參選主控節(jié)點(diǎn)的節(jié)點(diǎn)角色均為全局主用主控節(jié)點(diǎn)時,從第一參選主控節(jié)點(diǎn)和第二參選主控節(jié)點(diǎn)中選擇被選中作為全局主用主控節(jié)點(diǎn)次數(shù)多的主控節(jié)點(diǎn)為勝出的主控節(jié)點(diǎn),更新選中次數(shù)少的主控節(jié)點(diǎn)的節(jié)點(diǎn)角色為全局普通主控節(jié)點(diǎn);
當(dāng)?shù)谝粎⑦x主控節(jié)點(diǎn)和第二參選主控節(jié)點(diǎn)中只有一個主控節(jié)點(diǎn)的節(jié)點(diǎn)角色為全局主用主控節(jié)點(diǎn)時,將節(jié)點(diǎn)角色為全局主用主控節(jié)點(diǎn)的主控節(jié)點(diǎn)作為勝出的主控節(jié)點(diǎn),更新節(jié)點(diǎn)角色為非全局主用主控節(jié)點(diǎn)的主控節(jié)點(diǎn)的節(jié)點(diǎn)角色為全局普通主控節(jié)點(diǎn)。
6.如權(quán)利要求3所述的方法,其特征在于,所述從除全局主用主控節(jié)點(diǎn)以外的鄰居狀態(tài)為雙向狀態(tài)的主控節(jié)點(diǎn)中選舉全局備份主控節(jié)點(diǎn),包括:
當(dāng)不存在指定的全局備份主控節(jié)點(diǎn)時,除全局主用主控節(jié)點(diǎn),從本地記錄的鄰居狀態(tài)為雙向狀態(tài)的主控節(jié)點(diǎn)中選擇優(yōu)先級高的主控節(jié)點(diǎn)為勝出的主控節(jié)點(diǎn),將勝出的主控節(jié)點(diǎn)的節(jié)點(diǎn)角色更新為全局備份主控節(jié)點(diǎn)。
7.如權(quán)利要求5或6所述的方法,其特征在于,所述節(jié)點(diǎn)信息還包括節(jié)點(diǎn)類型、框類型、框內(nèi)主控節(jié)點(diǎn)數(shù)目以及節(jié)點(diǎn)索引;
所述選擇優(yōu)先級高的主控節(jié)點(diǎn)為勝出的主控節(jié)點(diǎn),包括:
當(dāng)主控節(jié)點(diǎn)的節(jié)點(diǎn)類型不同時,選擇節(jié)點(diǎn)類型為主用主控節(jié)點(diǎn)的主控節(jié)點(diǎn)為勝出的主控節(jié)點(diǎn);
當(dāng)主控節(jié)點(diǎn)的節(jié)點(diǎn)類型相同、框類型不同時,選擇框類型為交換框的主控節(jié)點(diǎn)為勝出的主控節(jié)點(diǎn);
當(dāng)主控節(jié)點(diǎn)的節(jié)點(diǎn)類型相同、框類型相同、框內(nèi)主控節(jié)點(diǎn)數(shù)目不同時,選擇框內(nèi)主控節(jié)點(diǎn)數(shù)目多的主控節(jié)點(diǎn)作為勝出的主控節(jié)點(diǎn);
當(dāng)主控節(jié)點(diǎn)的節(jié)點(diǎn)類型相同、框類型相同、框內(nèi)主控節(jié)點(diǎn)數(shù)目相同時,選擇節(jié)點(diǎn)索引小的主控節(jié)點(diǎn)作為勝出的主控節(jié)點(diǎn)。
8.一種節(jié)點(diǎn)選舉裝置,應(yīng)用于集群系統(tǒng)中的任一主控節(jié)點(diǎn),其特征在于,所述裝置包括:
報文接收單元,用于接收鄰居主控節(jié)點(diǎn)發(fā)送的握手交互報文,所述握手交互報文攜帶所述鄰居主控節(jié)點(diǎn)感知的本主控節(jié)點(diǎn)的鄰居狀態(tài);
狀態(tài)更新單元,用于根據(jù)所述鄰居主控節(jié)點(diǎn)感知的本主控節(jié)點(diǎn)的鄰居狀態(tài),更新本地記錄的所述鄰居主控節(jié)點(diǎn)的鄰居狀態(tài);
全局主選舉單元,用于根據(jù)本地記錄的包括本主控節(jié)點(diǎn)在內(nèi)的主控節(jié)點(diǎn)的鄰居狀態(tài),從非初始狀態(tài)的主控節(jié)點(diǎn)中選舉全局主用主控節(jié)點(diǎn),所述非初始狀態(tài)為單向狀態(tài)或雙向狀態(tài),其中,本地記錄的本主控節(jié)點(diǎn)的鄰居狀態(tài)默認(rèn)為雙向狀態(tài);
全局備選舉單元,用于從除全局主用主控節(jié)點(diǎn)以外的鄰居狀態(tài)為雙向狀態(tài)的主控節(jié)點(diǎn)中選舉全局備份主控節(jié)點(diǎn)。
9.如權(quán)利要求8所述的裝置,其特征在于:
所述狀態(tài)更新單元,具體用于當(dāng)所述鄰居主控節(jié)點(diǎn)感知的本主控節(jié)點(diǎn)的鄰居狀態(tài)為初始狀態(tài)時,更新所述鄰居主控節(jié)點(diǎn)的鄰居狀態(tài)為單向狀態(tài);當(dāng)所述鄰居主控節(jié)點(diǎn)感知的本主控節(jié)點(diǎn)的鄰居狀態(tài)為非初始狀態(tài)時,更新所述鄰居主控節(jié)點(diǎn)的鄰居狀態(tài)為雙向狀態(tài);當(dāng)本主控節(jié)點(diǎn)停止向所述鄰居主控節(jié)點(diǎn)發(fā)送握手交互報文時,或者本主控節(jié)點(diǎn)與所述鄰居主控節(jié)點(diǎn)之間的鏈路故障,或者在預(yù)設(shè)時間內(nèi)未接收到所述鄰居主控節(jié)點(diǎn)的握手交互報文時,更新所述鄰居主控節(jié)點(diǎn)的鄰居狀態(tài)為初始狀態(tài)。
10.如權(quán)利要求8所述的裝置,其特征在于,所述握手交互報文包括報文頭字段、第一TLV字段、第二TLV字段,所述第一TLV字段攜帶所述鄰居主控節(jié)點(diǎn)的節(jié)點(diǎn)信息,所述第二TLV字段攜帶所述鄰居主控節(jié)點(diǎn)感知的本主控節(jié)點(diǎn)的鄰居狀態(tài);其中,所述節(jié)點(diǎn)信息包括節(jié)點(diǎn)角色,所述裝置還包括:
信息記錄單元,用于在本地記錄本主控節(jié)點(diǎn)的節(jié)點(diǎn)信息和所述鄰居主控節(jié)點(diǎn)的節(jié)點(diǎn)信息。
11.如權(quán)利要求10所述的裝置,其特征在于,所述全局主選舉單元,包括:
節(jié)點(diǎn)選擇模塊,用于從本地記錄的鄰居狀態(tài)為非初始狀態(tài)的主控節(jié)點(diǎn)中選擇兩個主控節(jié)點(diǎn)參與本地主選舉,將所述兩個主控節(jié)點(diǎn)分別作為第一參選主控節(jié)點(diǎn)和第二參選主控節(jié)點(diǎn);
節(jié)點(diǎn)比較模塊,用于比較第一參選主控節(jié)點(diǎn)和第二參選主控節(jié)點(diǎn),確定勝出的主控節(jié)點(diǎn),將第一參選主控節(jié)點(diǎn)更新為勝出的主控節(jié)點(diǎn);
節(jié)點(diǎn)判斷模塊,用于判斷本地記錄的鄰居狀態(tài)為非初始狀態(tài)的主控節(jié)點(diǎn)中是否存在未參與本地主選舉的主控節(jié)點(diǎn),若是,從未參與本地主選舉的主控節(jié)點(diǎn)中選擇一個主控節(jié)點(diǎn),將第二參選主控節(jié)點(diǎn)更新為該選中的主控節(jié)點(diǎn),并重新比較第一參選主控節(jié)點(diǎn)和第二參選主控節(jié)點(diǎn);若否,將勝出的主控節(jié)點(diǎn)的節(jié)點(diǎn)角色更新為全局主用主控節(jié)點(diǎn)。
12.如權(quán)利要求11所述的裝置,其特征在于:
所述節(jié)點(diǎn)比較模塊,具體用于當(dāng)?shù)谝粎⑦x主控節(jié)點(diǎn)的節(jié)點(diǎn)角色和第二參選主控節(jié)點(diǎn)的節(jié)點(diǎn)角色均為非全局主用主控節(jié)點(diǎn)時,從第一參選主控節(jié)點(diǎn)和第二參選主控節(jié)點(diǎn)中選擇優(yōu)先級高的主控節(jié)點(diǎn)為勝出的主控節(jié)點(diǎn),更新優(yōu)先級低的主控節(jié)點(diǎn)的節(jié)點(diǎn)角色為全局普通主控節(jié)點(diǎn);當(dāng)?shù)谝粎⑦x主控節(jié)點(diǎn)的節(jié)點(diǎn)角色和第二參選主控節(jié)點(diǎn)的節(jié)點(diǎn)角色均為全局主用主控節(jié)點(diǎn)時,從第一參選主控節(jié)點(diǎn)和第二參選主控節(jié)點(diǎn)中選擇被選中作為全局主用主控節(jié)點(diǎn)次數(shù)多的主控節(jié)點(diǎn)為勝出的主控節(jié)點(diǎn),更新選中次數(shù)少的主控節(jié)點(diǎn)的節(jié)點(diǎn)角色為全局普通主控節(jié)點(diǎn);當(dāng)?shù)谝粎⑦x主控節(jié)點(diǎn)和第二參選主控節(jié)點(diǎn)中只有一個主控節(jié)點(diǎn)的節(jié)點(diǎn)角色為全局主用主控節(jié)點(diǎn)時,將節(jié)點(diǎn)角色為全局主用主控節(jié)點(diǎn)的主控節(jié)點(diǎn)作為勝出的主控節(jié)點(diǎn),更新節(jié)點(diǎn)角色為非全局主用主控節(jié)點(diǎn)的主控節(jié)點(diǎn)的節(jié)點(diǎn)角色為全局普通主控節(jié)點(diǎn)。
13.如權(quán)利要求10所述的裝置,其特征在于:
所述全局備選舉單元,具體用于當(dāng)不存在指定的全局備份主控節(jié)點(diǎn)時,除全局主用主控節(jié)點(diǎn),從本地記錄的鄰居狀態(tài)為雙向狀態(tài)的主控節(jié)點(diǎn)中選擇優(yōu)先級高的主控節(jié)點(diǎn)為勝出的主控節(jié)點(diǎn),將勝出的主控節(jié)點(diǎn)的節(jié)點(diǎn)角色更新為全局備份主控節(jié)點(diǎn)。
14.如權(quán)利要求12或13所述的裝置,其特征在于,所述節(jié)點(diǎn)信息還包括節(jié)點(diǎn)類型、框類型、框內(nèi)主控節(jié)點(diǎn)數(shù)目以及節(jié)點(diǎn)索引;
所述節(jié)點(diǎn)比較模塊或所述全局備選舉單元選擇優(yōu)先級高的主控節(jié)點(diǎn)為勝出的主控節(jié)點(diǎn),具體包括:
當(dāng)主控節(jié)點(diǎn)的節(jié)點(diǎn)類型不同時,選擇節(jié)點(diǎn)類型為主用主控節(jié)點(diǎn)的主控節(jié)點(diǎn)為勝出的主控節(jié)點(diǎn);當(dāng)主控節(jié)點(diǎn)的節(jié)點(diǎn)類型相同、框類型不同時,選擇框類型為交換框的主控節(jié)點(diǎn)為勝出的主控節(jié)點(diǎn);當(dāng)主控節(jié)點(diǎn)的節(jié)點(diǎn)類型相同、框類型相同、框內(nèi)主控節(jié)點(diǎn)數(shù)目不同時,選擇框內(nèi)主控節(jié)點(diǎn)數(shù)目多的主控節(jié)點(diǎn)作為勝出的主控節(jié)點(diǎn);當(dāng)主控節(jié)點(diǎn)的節(jié)點(diǎn)類型相同、框類型相同、框內(nèi)主控節(jié)點(diǎn)數(shù)目相同時,選擇節(jié)點(diǎn)索引小的主控節(jié)點(diǎn)作為勝出的主控節(jié)點(diǎn)。