專利名稱:一種分布式鏈路聚合故障收斂方法和一種堆疊設備的制作方法
技術領域:
本發(fā)明涉及分布式鏈路聚合(DLA, Distributed Link Aggregation )技術 領域,尤指一種分布式鏈路聚合故障收斂方法和一種堆疊設備。
背景技術:
堆疊技術是指幾臺獨立的網(wǎng)絡設備通過一定的拓樸形成一個整體,通過 一個IP地址進行管理,從而實現(xiàn)跨設備的二層轉發(fā)和三層轉發(fā)。網(wǎng)絡設備 堆疊條件下的分布式鏈路聚合DLA技術作為提高網(wǎng)絡冗余性和可靠性的手 段,已經(jīng)得到了越來越多的應用。
圖1是現(xiàn)有的分布式鏈路聚合技術的一個組網(wǎng)示意圖。如圖l所示,堆 疊設備1和堆疊設備2構成一個堆疊,該堆疊與獨立設備1和獨立設備2之 間形成兩個DLA端口組,分別為DLA端口組1和DLA端口組2,其中, DLA端口組1包括端口 al 、 a2、 a3和a4, DLA端口組2包括端口 bl 、 b2、 b3和b4。從在圖1可看出,屬于同一個DLA端口組的各端口分布在不同的 物理設備(堆疊設備1和堆疊設備2)上,能跨設備,但從外部看起來依舊 是一個邏輯端口 ,可以實現(xiàn)同一 DLA端口組中的各端口之間的負載分擔和 鏈路備份功能。
在圖1中,每個堆疊設備的上層軟件(即平臺軟件)都保留有一份保存 屬于DLA端口組的所有端口信息的全局DLA表,稱為上層軟件DLA表, 驅動軟件也保留有一份相同的全局DLA表,稱為驅動DLA表,并且驅動軟 件將該全局DLA表中信息寫入到底層的硬件DLA表中。在堆疊設備在實際 進行流量轉發(fā)時根據(jù)硬件DLA表中的各端口的狀態(tài),選擇相應的端口進行 轉發(fā)。例如,當有流量從獨立設備2進入時,在獨立設備2上按照一定的哈希(Hash)算法,從DLA端口組2的各端口所對應的鏈路中選擇一個鏈路 進行流量轉發(fā),這里假設選擇端口 bl所對應的鏈路,則流量達到堆疊設備 1上,則在堆疊設備1上也按照一定的哈希算法,從DLA端口組1的各端 口所對應的鏈路中選擇一個鏈路進行流量轉發(fā),這里假設選擇了端口 a4所 對應的鏈路,則流量到達獨立設備l,再由獨立設備進行轉發(fā),最終到達目 的地。
如果在上述的流量轉發(fā)過程中的端口 a4出現(xiàn)故障(比如a4所對應的鏈 路斷掉或a4被人為地配置為不可用),則現(xiàn)有的DLA故障收斂過程如下
1 )堆疊設備2的驅動軟件檢測到端口 a4的故障(down)事件,上報堆 疊設備2的上層軟件;
2) 堆疊設備2的上層軟件收到down事件后,從自身的上層軟件DLA 表中刪除端口a4,并向堆疊設備2的驅動軟件下發(fā)刪除端口 a4的指令,堆 疊設備2的驅動軟件收到指令后從自身的驅動DLA表中刪除端口 a4,并從 硬件DLA表中刪除端口 a4;
3) 堆疊設備2的上層軟件同時通過堆疊設備之間的通信機制,告知堆 疊設備1需要從本機的DLA表中刪除堆疊設備2上的端口 a4;待堆疊設備 1用同樣的方式同步好的上層軟件DLA表、驅動DLA表和硬件DLA表后, 堆疊設備1和堆疊設備2上的各DLA表的內(nèi)容均一致,可以繼續(xù)進行流轉 發(fā);
4) 通過獨立設備2和端口 bl所對應的鏈路進入堆疊設備1的流量在從 DLA端口組1轉發(fā)出去時,堆疊設備1從DLA端口組1中剩下的al 、 a2 和a3端口中選擇一個端口 ,例如選擇a2,則將流量從a2所對應的鏈路轉發(fā) 到獨立設備l,再由獨立設備進行轉發(fā),最終到達目的地。
以上便是從鏈路發(fā)生故障到故障收斂的現(xiàn)有處理方案。 從上述過程可以看出,在現(xiàn)有的分布式鏈路聚合故障收斂過程中,當一 個堆疊設備的驅動軟件在檢測到故障后要上報本機的上層軟件,然后由上層 軟件下發(fā)指令同步本機的各DLA表項的同時向其他堆疊設備通知,以告知
DLA表需要同步,待所有的堆疊設備都同步好各自的DLA表項后流轉發(fā)才 能繼續(xù),因此故障收斂所需時間較長,導致流長時間中斷。
發(fā)明內(nèi)容
本發(fā)明提供了 一種分布式鏈路聚合DLA故障收斂方法,該方法能夠有 效縮短DLA故障的收斂時間。
本發(fā)明還提供了一種堆疊設備,該設備能夠有效縮短DLA故障的收斂 時間。
為達到上述目的,本發(fā)明的技術方案具體是這樣實現(xiàn)的 本發(fā)明公開了一種分布式鏈路聚合DLA故障收斂方法,構成堆疊的每 個堆疊設備的上層軟件DLA表和驅動DLA表均為全局DLA表,全局DLA 表中保存有所有堆疊設備上的屬于指定DLA端口組的端口;每個堆疊設備 的驅動軟件在自身所屬堆疊設備有至少一個端口屬于所述指定DLA端口組 時,將自身所屬堆疊設備的所有屬于所述指定DLA端口組的端口發(fā)布到自 身所屬堆疊設備的硬件DLA表中,反之,在自身所屬堆疊設備沒有屬于所 述指定DLA端口組的端口時,將全局DLA表發(fā)布到自身所屬堆疊設備的硬 件DLA表中;所述故障收斂方法包括
當構成所述堆疊的第 一堆疊設備的驅動軟件檢測到第 一堆疊設備的屬 于所述指定DLA端口組的端口發(fā)生故障時,判斷第一堆疊設備除了所述故 障端口以外是否還有屬于所述指定DLA端口組的端口 ,若是,則從第一堆 疊設備的硬件DLA表中刪除所述故障端口,并且第一堆疊設備根據(jù)所述已 刪除故障端口的硬件DLA表繼續(xù)對報文進行轉發(fā);若否,則從第一堆疊設 備的硬件DLA表中刪除所述故障端口,并將除了第一堆疊設備以外的所有 其他堆疊設備的屬于所述DLA端口組的端口更新到第一堆疊設備的硬件 DLA表中,以便第 一堆疊設備根據(jù)所述經(jīng)更新得到的硬件DLA表繼續(xù)對報 文進行轉發(fā)。
本發(fā)明該公開了 一種堆疊設備,該堆疊設備與至少 一 個其他的堆疊設備
構成一個堆疊,該設備包括上層軟件DLA表存儲模塊、驅動DLA表存儲 模塊、硬件DLA表存儲模塊、上層軟件模塊和驅動軟件模塊,其中,
所述上層軟件DLA表存儲模塊,用于存儲上層軟件模塊寫入的上層軟 件DLA表;
所述驅動DLA表存儲模塊,用于存儲驅動軟件模塊寫入的驅動DLA表; 其中,所述上層軟件DLA表和驅動DLA表均為全局DLA表,全局DLA 表中保存有構成所述堆疊的所有堆疊設備上的屬于指定DLA端口組的端
C7 ;
所述硬件DLA表存儲模塊,用于保存驅動軟件模塊發(fā)布的硬件DLA表; 所述驅動軟件模塊,用于在所述堆疊設備有至少一個端口屬于所述指定 DLA端口組時,由所述堆疊設備的所有屬于所述指定DLA端口組的端口構 成硬件DLA表發(fā)布到硬件DLA表存儲模塊中,反之,在所述堆疊設備沒有 屬于所述指定DLA端口組的端口時,將全局DLA表作為硬件DLA表發(fā)布 到硬件DLA表存儲模塊中;用于在檢測到所述堆疊設備的屬于所述指定 DLA端口組的端口發(fā)生故障時,判斷所述堆疊設備除了所述故障端口以外 是否還有屬于所述指定DLA端口組的端口,若是,則從硬件DLA表中刪除 所述故障端口 ,以便所述堆疊設備根據(jù)已刪除故障端口的硬件DLA表繼續(xù) 對報文進行轉發(fā);若否,則從硬件DLA表中刪除所述故障端口 ,并將除了 所述堆疊設備以外的所有其他堆疊設備的屬于所述DLA端口組的端口更新 到硬件DLA表中,以便所述堆疊設備根據(jù)所述經(jīng)更新得到的硬件DLA表繼 續(xù)對報文進行轉發(fā)。
由上述技術方案可見,本發(fā)明這種構成堆疊的每個堆疊設備的驅動軟件 在自身所屬堆疊設備有至少一個端口屬于所述指定DLA端口組時,將自身 所屬堆疊設備的所有屬于所述指定DLA端口組的端口發(fā)布到自身所屬堆疊 設備的硬件DLA表中,反之,在自身所屬堆疊設備沒有屬于所述指定DLA 端口組的端口時,將全局DLA表發(fā)布到自身所屬堆疊設備的硬件DLA表中; 并且堆疊設備的驅動軟件檢測到屬于所述指定DLA端口組的端口發(fā)生故障
時,判斷該疊設備除了所述故障端口以外是否還有屬于所述指定DLA端口 組的端口,是則從該堆疊設備的硬件DLA表中刪除所述故障端口 ,否則從 該堆疊設備的硬件DLA表中刪除所述故障端口 ,并將所有其他堆疊設備的 屬于所述DLA端口組的端口發(fā)布到該堆疊設備的硬件DLA表中的技術方 案,使得每個堆疊設備的硬件DLA表中只保存本機的DLA端口,當本機的 DLA端口發(fā)生故障時,只要刷新本機的硬件DLA表后就可以繼續(xù)進行流轉 發(fā),因此大大縮短了 DLA故障的收斂時間。
圖1是現(xiàn)有的分布式鏈路聚合技術的一個組網(wǎng)示意圖2是本發(fā)明實施例 一種分布式鏈路聚合DLA故障收斂方法的流程圖3是本發(fā)明實施例一種堆疊設備的結構框圖。
具體實施例方式
本發(fā)明的核心思想是采用本地優(yōu)先原則構建硬件DLA表,并根據(jù)硬件 DLA表指導流的轉發(fā),而不再強制要求硬件DLA表與上層軟件DLA表保持一 致,具體如圖2所示。
圖2是本發(fā)明實施例一種分布式鏈路聚合DLA故障收斂方法的流程圖。 如圖2所示,該方法包括以下步驟
步驟201,構成堆疊的每個堆疊設備的上層軟件DLA表和驅動DLA表 均為全局DLA表,全局DLA表中保存有所有堆疊設備上的屬于指定DLA 端口組的端口 。
步驟202,每個堆疊設備的驅動軟件在自身所屬堆疊設備有至少一個端 口屬于所述指定DLA端口組時,將自身所屬堆疊設備的所有屬于所述指定 DLA端口組的端口發(fā)布到自身所屬堆疊設備的硬件DLA表中,反之,在自 身所屬堆疊設備沒有屬于所述指定DLA端口組的端口時,將全局DLA表發(fā) 布到自身所屬堆疊設備的硬件DLA表中。
步驟203 ,當構成所述堆疊的第 一堆疊設備的驅動軟件檢測到第 一堆疊 設備的屬于所述指定DLA端口組的端口發(fā)生故障時,判斷第一堆疊設備除 了所述故障端口以外是否還有屬于所述指定DLA端口組的端口,若是,則 從第一堆疊設備的硬件DLA表中刪除所述故障端口 ,并且第一堆疊設備根 據(jù)所述已刪除故障端口的硬件DLA表繼續(xù)對報文進行轉發(fā);若否,則從第 一堆疊設備的硬件DLA表中刪除所述故障端口,并將除了第一堆疊設備以 外的所有其他堆疊設備的屬于所述DLA端口組的端口更新到第一堆疊設備 的硬件DLA表中,以便第 一堆疊設備根據(jù)所述經(jīng)更新得到的硬件DLA表繼 續(xù)對報文進行轉發(fā)。
為使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下仍以圖l所示 的堆疊以及該堆疊與獨立設備1之間形成的DLA端口組1為例,對本發(fā)明 進一步詳細說明。
參見圖1,根據(jù)本發(fā)明的方案,堆疊設備1的上層軟件和驅動軟件構建 關于DLA端口組1的上層軟件DLA表、和驅動DLA表時,看到的是所有 的堆疊設備(圖1中包括堆疊設備1和堆疊設備2)以及各堆疊設備的屬于 DLA端口組1的所有端口 ,即堆疊設備1的上層軟件DLA表和驅動DLA 表均為包括端口 al、 a2、 a3和a4的全局DLA表。但是堆疊設備1的驅動 軟件在向堆疊設備1的硬件DLA表發(fā)布DLA端口時需要判斷堆疊設備1是 否有屬于DLA端口組1的端口,并根據(jù)不同的判斷結果執(zhí)行如下的不同操 作
a)如果堆疊設備1有屬于DLA端口組1的端口 ,則僅向堆疊設備1的 硬件DLA表發(fā)布堆疊設備1本身的屬于DLA端口組1的端口 ,而屏蔽其他 堆疊設備(本實施例中即為堆疊設備2)的端口。此時,堆疊設備l的上層 軟件DLA表和驅動DLA表為全局表,而硬件DLA表是只包括本地信息的 局部表。這樣便可以實現(xiàn)本地優(yōu)先轉發(fā),即進入堆疊設備l的報文,只會從 堆疊設備1的某個屬于DLA端口組1的端口發(fā)送出去,而不會跨到其他堆 疊設備上進行轉發(fā)。
b)如果疊設備1沒有屬于DLA端口組1的端口 ,則不作屏蔽,將屬于 DLA端口組1的所有端口信息發(fā)布到堆疊設備1的硬件DLA表中。此時, 堆疊設備l的上層軟件DLA表、驅動DLA表和硬件DLA表均為全局表。
顯然對于本實施例中的堆疊設備1執(zhí)行上述的步驟a),將端口 al和 a2下發(fā)到堆疊設備1的硬件DLA表中。
同樣,堆疊設備2上也執(zhí)行與上述相同的操作,最終堆疊設備2的上層 軟件DLA表和驅動DLA表均為包括端口 al、 a2、 a3和a4的全局DLA表, 而堆疊設備2的驅動軟件將端口 a3和a4下發(fā)到堆疊設備2的硬件DLA表 中。
當端口 a4發(fā)生故障時,堆疊設備2的驅動軟件一旦檢測到該down事 件,首先向堆疊設備2的上層軟件上報a4故障;堆疊設備2的上層軟件先 從自身的上層DLA表中刪除端口 a4,然后向堆疊設備2的驅動軟件下發(fā)刪 除故障端口 a4的指令;堆疊設備2的驅動軟件收到指令后判斷堆疊設備2 除了故障端口 a4以外是否還有其他的屬于DLA端口組1的端口 ,并根據(jù)不 同的判斷結果執(zhí)行如下的不同操作
A) 如果堆疊設備2除了故障端口 a4以外還有其他的屬于DLA端口組 l的端口,則從堆疊設備2的硬件DLA表中刪除端口 a4。此時,對于堆疊 設備2來說,故障已經(jīng)收斂,可以開始繼續(xù)轉發(fā)報文。
B) 如果堆疊設備2除了故障端口 a4以外沒有其他的屬于DLA端口組 1的端口 ,則從堆疊設備2的硬件DLA表中刪除端口 a4,并將除了堆疊設 備2以外的所有其他堆疊設備的屬于所述DLA端口組1的端口發(fā)布到堆疊 設備2的硬件DLA表中。此時,對于堆疊設備2來說,故障已經(jīng)收斂,可 以開始繼續(xù)轉發(fā)報文。
顯然對于本實施例中的堆疊設備2執(zhí)行上述的步驟A ),將端口 a4從 堆疊設備2的硬件DLA表中刪除。
此外,堆疊設備2的上層軟件在向堆疊設備2的驅動軟件下發(fā)刪除故障 端口 a4的指令的同時,通過堆疊設備之間的通信機制向堆疊設備1發(fā)送刪
除故障端口 a4的通知。堆疊設備1在接收到刪除故障端口 a4的通知后,堆 疊設備1的上層軟件從自身的上層軟件DLA表中刪除端口 a4,向堆疊設備 1的驅動軟件下發(fā)刪除故障端口 a4的指令;堆疊設備l的驅動軟件從自身的 驅動DLA表中刪除故障端口 a4,然后判斷堆疊設備1的硬件DLA表中是 否僅保存了堆疊設備1的屬于DLA端口組1的端口 ,是則,不對堆疊設備 1的硬件DLA表進行處理,否則,從堆疊設備1的硬件DLA表中刪除故障 端口 a4。顯然,在本實施例中,堆疊設備1的驅動軟件不需要對堆疊設備1 的硬件DLA表進行任何處理。
在本發(fā)明實施例中,堆疊設備的驅動軟件在檢測到DLA端口故障事件 后,還可以先進行故障處理,然后再上報上層軟件,這里仍以圖1中DLA 端口組1為例進行說明
當端口 a4發(fā)生故障時,堆疊設備2的驅動軟件一旦檢測到該down事 件,首先判斷堆疊設備2除了故障端口 a4以外是否還有其他的屬于DLA端 口組1的端口,并根據(jù)不同的判斷結果執(zhí)行如下的不同操作
A) 如果堆疊設備2除了故障端口 a4以外還有其他的屬于DLA端口組 l的端口,則從堆疊設備2的硬件DLA表中刪除端口 a4。此時,可以開始 繼續(xù)轉發(fā)報文。
B) 如果堆疊設備2除了故障端口 a4以外沒有其他的屬于DLA端口組 1的端口 ,則從堆疊設備2的硬件DLA表中刪除端口 a4,并將除了堆疊設 備2以外的所有其他堆疊設備的屬于所述DLA端口組1的端口發(fā)布到堆疊 設備2的硬件DLA表中。此時,可以開始繼續(xù)轉發(fā)報文。
堆疊設備2的驅動軟件在執(zhí)行完步驟A)或B)后,向堆疊設備2的上 層軟件上報a4故障;堆疊設備2的上層軟件先從自身的上層DLA表中刪除 端口 a4,然后通過堆疊設備之間的通信機制向堆疊設備1發(fā)送刪除故障端口 a4的通知。堆疊設備1在接收到刪除故障端口 a4的通知后,堆疊設備1的 上層軟件從自身的上層軟件DLA表中刪除端口 a4,向堆疊設備l的驅動軟 件下發(fā)刪除故障端口 a4的指令;堆疊設備1的驅動軟件從自身的驅動DLA表中刪除故障端口 a4,然后判斷堆疊設備1的硬件DLA表中是否僅保存了 堆疊設備1的屬于DLA端口組1的端口 ,是則,不對堆疊設備1的硬件DLA 表進行處理,否則,從堆疊設備1的硬件DLA表中刪除故障端口 a4。
由上述實施例可以看出,本發(fā)明的這種堆疊設備采用本地優(yōu)先的原則構 建硬件DLA表,并根據(jù)硬件DLA表指導流轉發(fā)的方案,使得各個堆疊設備 只看到本地端口,在有多個本地端口參與聚合的條件下,如果其中一個端口 發(fā)生故障,則在本地進行處理就可以使故障收斂,收斂速度快。在本發(fā)明的 方案中,硬件DLA表是只包含本地信息的局部表,無需與上層軟件的全局 表嚴格同步,大大減少了設備間通信的需要,因此減少的故障收斂延時。此 外,驅動軟件在檢測到故障時,先進行處理再上報上層軟件的方案,進一步 地縮短了流轉發(fā)路徑的建立時間,加快了故障收斂的速度。
基于上述實施例接下來給出本發(fā)明一種堆疊設備的組網(wǎng)結構。
圖3是本發(fā)明實施例一種堆疊設備的結構框圖。如圖3所示的該堆疊設 備與至少一個其他的堆疊設備構成一個堆疊,且該設備包括上層軟件DLA 表存儲模塊301、驅動DLA表存儲模塊302、硬件DLA表存儲模塊303、 上層軟件模塊304和驅動軟件模塊305,其中
上層軟件DLA表存儲模塊301,用于存儲上層軟件模塊寫入的上層軟 件DLA表;
驅動DLA表存儲模塊302,用于存儲驅動軟件模塊寫入的驅動DLA表; 其中,所述上層軟件DLA表和驅動DLA表均為全局DLA表,全局DLA 表中保存有構成所述堆疊的所有堆疊設備上的屬于指定DLA端口組的端
口 ;
硬件DLA表存儲模塊303,用于保存驅動軟件模塊發(fā)布的硬件DLA表; 驅動軟件模塊305,用于在所述堆疊設備有至少一個端口屬于所述指定 DLA端口組時,由所述堆疊設備的所有屬于所述指定DLA端口組的端口構 成硬件DLA表發(fā)布到硬件DLA表存儲模塊中,反之,在所述堆疊設備沒有 屬于所述指定DLA端口組的端口時,將全局DLA表作為硬件DLA表發(fā)布
到硬件DLA表存儲模塊中;用于在檢測到所述堆疊設備的屬于所述指定 DLA端口組的端口發(fā)生故障時,判斷所述堆疊設備除了所述故障端口以外 是否還有屬于所述指定DLA端口組的端口,若是,則從硬件DLA表中刪除 所述故障端口 ,以便所述堆疊設備根據(jù)已刪除故障端口的硬件DLA表繼續(xù) 對報文進行轉發(fā);若否,則從硬件DLA表中刪除所述故障端口 ,并將除了 所述堆疊設備以外的所有其他堆疊設備的屬于所述DLA端口組的端口更新 到硬件DLA表中,以便所述堆疊設備根據(jù)所述經(jīng)更新得到的硬件DLA表繼 續(xù)對報文進行轉發(fā)。
在圖3中,驅動軟件模塊305,在所述判斷堆疊設備是否還有屬于所述 指定DLA端口組的端口之前,進一步用于向上層軟件模塊304通知所述故 障端口,并在所述上層軟件模塊304返回刪除所述故障端口的指令后,從驅 動DLA表中刪除所述故障端口,然后執(zhí)行所述判斷堆疊設備是否還有屬于 所述指定DLA端口組的端口的步驟。上層軟件模塊304,進一步用于在收 到驅動軟件模塊305的故障端口通知后,從上層軟件DLA表中刪除所述故 障端口,然后向驅動軟件模塊305返回刪除所述故障端口的指令,同時向除 所述堆疊設備以外的所有其他堆疊設備發(fā)送刪除所述故障端口的通知。
或者,在圖3中,驅動軟件模塊305,在所述判斷堆疊設備是否還有屬 于所述指定DLA端口組的端口之前,進一步用于從驅動DLA表中刪除所述 故障端口 ;對硬件DLA表執(zhí)行完所述的刪除故障端口或刪除故障端口并將 其他堆疊設備的端口更新到硬件DLA表的操作后,進一步用于向上層軟件 模塊304通知所述故障端口。上層軟件模塊304,進一步用于在收到驅動軟 件模塊305的故障端口通知后,從上層軟件DLA表中刪除所述故障端口 , 然后向除所述堆疊設備以外的所有其他堆疊設備發(fā)送刪除所述故障端口的 通知。
在圖3中,上層軟件模塊304,在所述堆疊設備收到其他堆疊設備發(fā)送 的刪除指定故障端口的通知后,從上層軟件DLA表中刪除所述指定故障端 口 ,向驅動軟件模塊305下發(fā)刪除所述指定故障端口的指令;驅動軟件模塊
305,在收到上層軟件模塊304下發(fā)的刪除所述指定故障端口的指令后,從 驅動DLA表中刪除所述指定故障端口 ,判斷硬件DLA表中是否僅保存了所 述堆疊設備的屬于所述指定DLA端口組的端口 ,是則,不對硬件DLA表進 行處理,否則,從硬件DLA表中刪除所述指定故障端口。
綜上所述,本發(fā)明這種構成堆疊的每個堆疊設備的驅動軟件在自身所屬 堆疊設備有至少一個端口屬于所述指定DLA端口組時,將自身所屬堆疊設 備的所有屬于所述指定DLA端口組的端口發(fā)布到自身所屬堆疊設備的硬件 DLA表中,反之,在自身所屬堆疊設備沒有屬于所述指定DLA端口組的端 口時,將全局DLA表發(fā)布到自身所屬堆疊設備的硬件DLA表中;并且堆疊 設備的驅動軟件檢測到屬于所述指定DLA端口組的端口發(fā)生故障時,判斷 該疊設備除了所述故障端口以外是否還有屬于所述指定DLA端口組的端 口,是則從該堆疊設備的硬件DLA表中刪除所述故障端口 ,否則從該堆疊 設備的硬件DLA表中刪除所述故障端口,并將所有其他堆疊設備的屬于所 述DLA端口組的端口發(fā)布到該堆疊設備的硬件DLA表中的技術方案,使得 每個堆疊設備的硬件DLA表中只保存本機的DLA端口 ,當本機的DLA端 口發(fā)生故障時,只要刷新本機的硬件DLA表后就可以繼續(xù)進行流轉發(fā),因 此大大縮短了 DLA故障的收斂時間。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護 范圍,凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進等, 均應包含在本發(fā)明的保護范圍之內(nèi)。
權利要求
1、一種分布式鏈路聚合DLA故障收斂方法,其特征在于,構成堆疊的每個堆疊設備的上層軟件DLA表和驅動DLA表均為全局DLA表,全局DLA表中保存有所有堆疊設備上的屬于指定DLA端口組的端口;每個堆疊設備的驅動軟件在自身所屬堆疊設備有至少一個端口屬于所述指定DLA端口組時,將自身所屬堆疊設備的所有屬于所述指定DLA端口組的端口發(fā)布到自身所屬堆疊設備的硬件DLA表中,反之,在自身所屬堆疊設備沒有屬于所述指定DLA端口組的端口時,將全局DLA表發(fā)布到自身所屬堆疊設備的硬件DLA表中;所述故障收斂方法包括當構成所述堆疊的第一堆疊設備的驅動軟件檢測到第一堆疊設備的屬于所述指定DLA端口組的端口發(fā)生故障時,判斷第一堆疊設備除了所述故障端口以外是否還有屬于所述指定DLA端口組的端口,若是,則從第一堆疊設備的硬件DLA表中刪除所述故障端口,并且第一堆疊設備根據(jù)所述已刪除故障端口的硬件DLA表繼續(xù)對報文進行轉發(fā);若否,則從第一堆疊設備的硬件DLA表中刪除所述故障端口,并將除了第一堆疊設備以外的所有其他堆疊設備的屬于所述DLA端口組的端口更新到第一堆疊設備的硬件DLA表中,以便第一堆疊設備根據(jù)所述經(jīng)更新得到的硬件DLA表繼續(xù)對報文進行轉發(fā)。
2、 如權利要求l所述的方法,其特征在于,該方法在所述第一堆疊設 備的驅動軟件判斷第一堆疊設備是否還有屬于指定DLA端口組的端口之前 進一步包括第一堆疊設備的驅動軟件向第一堆疊設備的上層軟件通知所述故障端口 ;第一堆疊設備的上層軟件從自身的上層軟件DLA表中刪除所述故障端 口,然后向第一堆疊設備的驅動軟件下發(fā)刪除所述故障端口的指令,同時向除第一堆疊設備以外的所有其他堆疊設備發(fā)送刪除所述故障端口的通知;第 一 堆疊設備的驅動軟件在收到所述刪除故障端口的指令后從自身的驅動DLA表中刪除所述故障端口,然后執(zhí)行所述判斷第一堆疊設備是否還 有屬于所述指定DLA端口組的端口的步驟。
3、 如權利要求l所述的方法,其特征在于,該方法在所述第一堆疊設 備的驅動軟件判斷第一堆疊設備是否還有屬于指定DLA端口組的端口之前 進一步包括所述第一堆疊設備的驅動軟件從自身的驅動DLA表中刪除所 述故障端口;在所述所有步驟之后進一步包括第一堆疊設備的驅動軟件向第一堆疊 設備的上層軟件通知所述故障端口;第一堆疊設備的上層軟件從自身的上層 軟件DLA表中刪除所述故障端口 ,然后向除第一堆疊設備以外的所有其他 堆疊設備發(fā)送刪除所述故障端口的通知。
4、 如權利要求2或3所述的方法,其特征在于,該方法進一步包括 除了第 一堆疊設備以外的其他堆疊設備中的第二堆疊設備在接收到所述刪 除故障端口的通知后,該第二堆疊設備的上層軟件從自身的上層軟件DLA 表中刪除所述故障端口 ,向第二堆疊設備的驅動軟件下發(fā)刪除所述故障端口 的指令;第二堆疊設備的驅動軟件從自身的驅動DLA表中刪除所述故障端 口 ,判斷第二堆疊設備的硬件DLA表中是否僅保存了第二堆疊設備的屬于 所述指定DLA端口組的端口 ,是則,不對第二堆疊設備的硬件DLA表進行 處理,否則,從第二堆疊設備的硬件DLA表中刪除所述故障端口。
5、 一種堆疊設備,該堆疊設備與至少一個其他的堆疊設備構成一個堆 疊,其特征在于,該設備包括上層軟件DLA表存儲模塊、驅動DLA表存 儲模塊、硬件DLA表存儲模塊、上層軟件模塊和驅動軟件模塊,其中,所述上層軟件DLA表存儲模塊,用于存儲上層軟件模塊寫入的上層軟 件DLA表;所述驅動DLA表存儲模塊,用于存儲驅動軟件模塊寫入的驅動DLA表; 其中,所述上層軟件DLA表和驅動DLA表均為全局DLA表,全局DLA 表中保存有構成所述堆疊的所有堆疊設備上的屬于指定DLA端口組的端D ;所述硬件DLA表存儲模塊,用于保存驅動軟件模塊發(fā)布的硬件DLA表;所述驅動軟件模塊,用于在所述堆疊設備有至少一個端口屬于所述指定 DLA端口組時,由所述堆疊設備的所有屬于所述指定DLA端口組的端口構 成硬件DLA表發(fā)布到硬件DLA表存儲模塊中,反之,在所述堆疊設備沒有 屬于所述指定DLA端口組的端口時,將全局DLA表作為硬件DLA表發(fā)布 到硬件DLA表存儲模塊中;用于在檢測到所述堆疊設備的屬于所述指定 DLA端口組的端口發(fā)生故障時,判斷所述堆疊設備除了所述故障端口以外 是否還有屬于所述指定DLA端口組的端口,若是,則從硬件DLA表中刪除 所述故障端口 ,以便所述堆疊設備根據(jù)已刪除故障端口的硬件DLA表繼續(xù) 對報文進行轉發(fā);若否,則從硬件DLA表中刪除所述故障端口 ,并將除了 所述堆疊設備以外的所有其他堆疊設備的屬于所述DLA端口組的端口更新 到硬件DLA表中,以便所述堆疊設備根據(jù)所述經(jīng)更新得到的硬件DLA表繼 續(xù)對報文進行轉發(fā)。
6、 如權利要求5所述的堆疊設備,其特征在于,所述驅動軟件模塊,在所述判斷堆疊設備是否還有屬于所述指定DLA 端口組的端口之前,進一步用于向上層軟件模塊通知所述故障端口,并在所 述上層軟件模塊返回刪除所述故障端口的指令后,從驅動DLA表中刪除所 述故障端口 ,然后執(zhí)行所述判斷疊設備是否還有屬于所述指定DLA端口組 的端口的步驟;所述上層軟件模塊,進一步用于在收到驅動軟件模塊的故障端口通知 后,從上層軟件DLA表中刪除所述故障端口 ,然后向驅動軟件模塊返回刪 除所述故障端口的指令,同時向除所述堆疊設備以外的所有其他堆疊設備發(fā) 送刪除所述故障端口的通知。
7、 如權利要求5所述的堆疊設備,其特征在于,所迷驅動軟件模塊,在所述判斷堆疊設備是否還有屬于所述指定DLA 端口組的端口之前,進一步用于從驅動DLA表中刪除所述故障端口;對硬 件DLA表執(zhí)行完所述的刪除故障端口或刪除故障端口并將其他堆疊設備的 端口更新到硬件DLA表的操作后,進一步用于向上層軟件模塊通知所述故 障端口;所述上層軟件模塊,進一 步用于在收到驅動軟件模塊的故障端口通知 后,從上層軟件DLA表中刪除所述故障端口,然后向除所述堆疊設備以外 的所有其他堆疊設備發(fā)送刪除所述故障端口的通知。
8、如權利要求6或7所述的方法,其特征在于,所述上層軟件模塊,在所述堆疊設備收到其他堆疊設備發(fā)送的刪除指定 故障端口的通知后,從上層軟件DLA表中刪除所述指定故障端口 ,向驅動 軟件模塊下發(fā)刪除所述指定故障端口的指令;所述驅動軟件模塊,在收到上層軟件模塊下發(fā)的刪除所述指定故障端口 的指令后,從驅動DLA表中刪除所述指定故障端口 ,判斷硬件DLA表中是 否僅保存了所述堆疊設備的屬于所述指定DLA端口組的端口,是則,不對 硬件DLA表進行處理,否則,從硬件DLA表中刪除所述指定故障端口。
全文摘要
本發(fā)明公開了一種分布式鏈路聚合DLA故障收斂方法和一種堆疊設備。方法包括堆疊設備的上層軟件DLA表和驅動DLA表均為全局DLA表;堆疊設備的驅動軟件判斷本堆疊設備是否有端口屬于指定DLA端口組,是則,將本堆疊設備的屬于指定DLA端口組的端口發(fā)布到硬件DLA表中,否則,將全局DLA表發(fā)布到硬件DLA表中;當驅動軟件檢測到本堆疊設備的端口發(fā)生故障時,判斷本堆疊設備除了所述故障端口以外是否還有屬于指定DLA端口組的端口,是則從硬件DLA表中刪除所述故障端口,否則將除了本堆疊設備以外的所有其他堆疊設備的屬于DLA端口組的端口刷新到硬件DLA表中。本發(fā)明的技術方案能夠有效縮短DLA故障的收斂時間。
文檔編號G06F15/16GK101340456SQ20081011852
公開日2009年1月7日 申請日期2008年8月15日 優(yōu)先權日2008年8月15日
發(fā)明者宋玉兵, 楊小朋, 汪順利 申請人:杭州華三通信技術有限公司