專利名稱:冗余轉(zhuǎn)發(fā)引擎的最優(yōu)化切換的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及數(shù)據(jù)通信,更具體地說,涉及用于改進網(wǎng)絡元件中的故障恢復的方法和系統(tǒng)。
背景技術:
當今,在網(wǎng)絡上傳輸?shù)男畔⒃絹碓蕉?,商家在向其顧客提供及時的服務和信息時,已經(jīng)變得嚴重依賴其網(wǎng)絡基礎結(jié)構。這種網(wǎng)絡基礎結(jié)構中的故障在收入損失和雇員閑散方面都是代價高昂的。因而,高可靠性系統(tǒng)對連網(wǎng)設備的用戶來說越來越具有吸引力。
此外,需要路由器、交換機以及其他的這類網(wǎng)絡元件在如此高的可靠性下提供不斷增長的分組處理速率,而同時又要保持緊湊封裝,通常這就會要求使用在非常高的頻率工作的高度專用的ASIC(專用集成電路),因此這會散發(fā)出大量的熱量。這些考慮還會使設計適當?shù)臋C架的問題復雜化。當在上述需求中加入對高可用性(冗余)的需求時,問題變得更加復雜。
交換機體系結(jié)構的一個示例提供了服務于不同類型的物理接口的端口卡(port card),這些端口卡將它們的流量提供到轉(zhuǎn)發(fā)引擎。這些轉(zhuǎn)發(fā)引擎支持使用專用硬件的分布式轉(zhuǎn)發(fā)形式,其中專用硬件通常使用一個或多個ASIC。這些轉(zhuǎn)發(fā)引擎通過交換結(jié)構(switching fabric)互連。通常還提供路由處理器(或者為了冗余目的,提供多個路由處理器),來管理異常處理以及轉(zhuǎn)發(fā)引擎不能管理的其他任務。
端口卡與轉(zhuǎn)發(fā)引擎卡分離,這允許使用相同的轉(zhuǎn)發(fā)引擎基礎結(jié)構來容納多種通信技術。通過設計這樣的網(wǎng)絡元件,使該網(wǎng)絡元件的端口卡與轉(zhuǎn)發(fā)引擎功能性分離,從而在使用相同的基本轉(zhuǎn)發(fā)引擎體系結(jié)構同時,可以通過使用變化的端口卡體系結(jié)構來支持這樣的多種通信技術(例如,協(xié)議、硬件接口等)。因此,這有利于避免為了支持不同線路接口而需要使用多種版本的轉(zhuǎn)發(fā)引擎。但是,在考慮冗余問題時,這種方法在處理向端口卡提供轉(zhuǎn)發(fā)功能的轉(zhuǎn)發(fā)引擎的故障時存在別的問題。
但是,必須在冗余與對這些設計的物理及商業(yè)限制之間達到平衡。正如所指出的那樣,雖然希望獲得高可用性,但是必須在這種可用性與這種設計的成本以及物理尺寸和必須散發(fā)的熱能之間取得平衡。因為在給定的體系結(jié)構中加入了冗余元件,所以該體系結(jié)構的可用性(可靠性)增加,但是由此其成本也上升,其尺寸和所產(chǎn)生的熱能也增大。因而,冗余的數(shù)量應該被最小化,同時還提供必需的可用性水平。
可以從網(wǎng)絡元件的可用性與故障的影響及響應于故障所執(zhí)行的恢復兩方面來看待這種可靠性。正如所指出的那樣,這種系統(tǒng)應該在給定條件下提供可靠的服務。在發(fā)生故障時,這種系統(tǒng)也應該最大可能地(或者,至少應該是商業(yè)上可接受的程度)提供服務的連續(xù)性。具體地,這意味著如果發(fā)生故障,則網(wǎng)絡元件所傳輸?shù)臄?shù)據(jù)流如果確實經(jīng)歷了中斷的話,那么應該經(jīng)歷最小的中斷。
從前面的描述中可以清楚看到,雖然確實可以提供高可用性,但是以劃算且商業(yè)上合理的方式提供這種可靠性是具有挑戰(zhàn)性的。與大多數(shù)工程問題一樣,無論是由于成本、復雜度、物理需求等何種原因,商業(yè)上不合理的解決方案都不能向用戶(或制造商)提供真正的好處。因此,需要的是以經(jīng)濟合理的方式提供數(shù)據(jù)流的可靠傳輸。此外,還應該以如下方式來提供這種傳輸在面對傳輸這些數(shù)據(jù)流的網(wǎng)絡元件內(nèi)的故障時,應該對如此支持的服務引起最小的中斷。
發(fā)明內(nèi)容
應用根據(jù)本發(fā)明的方法和系統(tǒng)的網(wǎng)絡元件滿足了前述需要,并且因此在其轉(zhuǎn)發(fā)引擎之一發(fā)生故障時能快速、有效地恢復服務。如隨后指出的那樣,這種技術(這里稱為“基于個體的切換”技術)通過單獨處理每個轉(zhuǎn)發(fā)引擎、并且對適當信息的復制一完成就執(zhí)行切換、并使網(wǎng)絡元件恢復服務,實現(xiàn)了這一目的,而不需要等待一組轉(zhuǎn)發(fā)引擎完成它們各自的切換。使用這種基于個體的切換技術,可以將入路徑的切換與出路徑的切換相分離,以進一步改進性能。這允許給定轉(zhuǎn)發(fā)引擎的入轉(zhuǎn)發(fā)路徑返回服務,而該轉(zhuǎn)發(fā)引擎的出路徑仍在經(jīng)歷切換。此時,轉(zhuǎn)發(fā)引擎的入路徑能夠向其他轉(zhuǎn)發(fā)引擎(其出路徑已經(jīng)完成切換,或者其沒有參與切換)轉(zhuǎn)發(fā)分組,這減少了恢復服務的時間。
在本發(fā)明的一個實施例中,公開了一種方法,該方法包括接收轉(zhuǎn)發(fā)引擎應該執(zhí)行切換操作的指示,并響應于接收指示的步驟,執(zhí)行切換操作。切換操作包括在第一接口卡和第二接口卡之間切換轉(zhuǎn)發(fā)引擎的耦合。切換操作的執(zhí)行獨立于另一切換操作。其他切換操作由另一轉(zhuǎn)發(fā)引擎執(zhí)行。
在本發(fā)明的另一實施例中,公開了一種方法,該方法包括接收轉(zhuǎn)發(fā)引擎已經(jīng)完成了切換操作的指示。在多個轉(zhuǎn)發(fā)引擎中的一個處接收到該指示。該方法還包括響應于接收到轉(zhuǎn)發(fā)引擎已經(jīng)完成切換操作的指示,使多個轉(zhuǎn)發(fā)引擎之一確認該指示。該轉(zhuǎn)發(fā)引擎是多個轉(zhuǎn)發(fā)引擎之一。
在本發(fā)明的另一實施例中,公開了一種網(wǎng)絡元件中的故障恢復方法。該方法包括向多個轉(zhuǎn)發(fā)引擎指示轉(zhuǎn)發(fā)引擎已經(jīng)完成切換操作,并響應于該指示,使這多個轉(zhuǎn)發(fā)引擎中至少一個轉(zhuǎn)發(fā)引擎確認該轉(zhuǎn)發(fā)引擎已經(jīng)完成切換操作。
在本發(fā)明的另一實施例中,公開了一種轉(zhuǎn)發(fā)引擎。該轉(zhuǎn)發(fā)引擎包括入口路徑、出口路徑和控制器。入口路徑和出口路徑彼此獨立??刂破鞅获詈弦元毩⒌乜刂迫肟诼窂胶统隹诼窂健?br>
前面是一個概述,所以包括必要的簡化、歸納以及對細節(jié)的省略;因此,本領域的技術人員應該理解,這個概述只是示例性的,并不是要做出任何限制。本領域的技術人員也應該清楚,這里所公開的操作可以以多種方式實現(xiàn),并且可以做出的這些改變和修改,而不脫離本發(fā)明及其更廣的方面。在下面的非限定性詳細描述中,由所附權利要求單獨規(guī)定的本發(fā)明的其他方面、創(chuàng)造性特征和優(yōu)點將變清楚。
通過參考附圖,本領域的技術人員可以更好地理解本發(fā)明,并且清楚其眾多的目的、特征和優(yōu)點。
圖1圖示了根據(jù)本發(fā)明的轉(zhuǎn)發(fā)引擎冗余方案的交換機的方框圖。
圖2A圖示了根據(jù)本發(fā)明實施例的端口卡的方框圖。
圖2B圖示了根據(jù)本發(fā)明實施例的轉(zhuǎn)發(fā)引擎的方框圖。
圖3圖示了由根據(jù)本發(fā)明實施例的過程執(zhí)行的動作的流程圖。
圖4圖示了根據(jù)本發(fā)明的基本轉(zhuǎn)發(fā)引擎切換過程的示例的流程圖。
圖5A和5B圖示了根據(jù)本發(fā)明的示例最優(yōu)化轉(zhuǎn)發(fā)引擎切換過程的流程圖。
圖6圖示了路由處理器和正在經(jīng)歷切換的單個轉(zhuǎn)發(fā)引擎之間的基本切換協(xié)議。
圖7圖示了路由處理器和具有不同響應時間的多個轉(zhuǎn)發(fā)引擎之間的互動。
在不同附圖中使用相同的標號指示相似或相同的項目。
具體實施例方式
下文意在提供對本發(fā)明的示例的詳細描述,而不應該用來限制發(fā)明本身。相反地,多種改變可以落在由所附權利要求所定義的本發(fā)明的范圍之內(nèi)。
引言本發(fā)明以商業(yè)上合理的方式提供了數(shù)據(jù)流的可靠傳輸。通過提供冗余轉(zhuǎn)發(fā)引擎(FE)并支持在這些FE之間的快速和高效切換(switchover),在使用分離的端口卡和轉(zhuǎn)發(fā)引擎的網(wǎng)絡元件中獲得了這種可靠性。這種網(wǎng)絡元件通常使用N+L個FE(例如,N+1;其中N是端口卡的數(shù)目,L是冗余(或備用)FE的數(shù)目),以及在端口卡和FE之間的分布式交換結(jié)構(也被稱為分布式結(jié)構,或者更簡單地,稱為結(jié)構;其中有N個端口卡和M(=N+L)個FE)。
更具體地,這種網(wǎng)絡元件通過提供至少1:N冗余度的轉(zhuǎn)發(fā)引擎(或者,更一般地,L:N冗余度),向端口卡接口提供轉(zhuǎn)發(fā)引擎冗余,以提供高可用性的服務。具體地,這種網(wǎng)絡元件支持這樣一種機制,通過這種機制,一個轉(zhuǎn)發(fā)引擎可以接替另一(發(fā)生故障的)轉(zhuǎn)發(fā)引擎。可是這種方法的實現(xiàn)需要端口卡和轉(zhuǎn)發(fā)引擎之間的交換結(jié)構。但是如果有其他更實際的限制(例如,需要緊湊的機架及受限的散熱),這種解決方案是不可行的。一種折衷方法是直接將端口卡接口互連到少量的(例如,兩個)轉(zhuǎn)發(fā)引擎,據(jù)此形成分布式結(jié)構。這不再需要端口卡接口和轉(zhuǎn)發(fā)引擎之間的傳統(tǒng)交換結(jié)構,并且使機架的散熱保持在可接受的水平。不幸的是,這種折衷方法使得提供從發(fā)生故障的轉(zhuǎn)發(fā)引擎到另一轉(zhuǎn)發(fā)引擎的快速切換的任務變得復雜得多,這是由于轉(zhuǎn)發(fā)引擎只連接到最多兩個端口卡接口的限制。具體地,問題在于系統(tǒng)中發(fā)生故障的轉(zhuǎn)發(fā)引擎和空閑轉(zhuǎn)發(fā)引擎可能沒有(并且,通常都沒有)連接到相同的端口卡接口。
因而,本發(fā)明提供了一種方法和系統(tǒng),它們被設計來通過單獨處理每個轉(zhuǎn)發(fā)引擎,管理切換并且對適當信息的復制一完成就使轉(zhuǎn)發(fā)引擎恢復服務,而不需要等待一組轉(zhuǎn)發(fā)引擎完成它們的切換,來解決FE切換問題。因為使用了這樣的手段,所以這里將這種方法稱為“基于個體的切換”方法。
這種“基于個體的切換”方法也是可擴展的。在一個實施例中,這種方法將給定FE的入(incoming)路徑的切換與該FE的出(outgoing)路徑的切換相隔離。這種方法允許給定轉(zhuǎn)發(fā)引擎的入轉(zhuǎn)發(fā)路徑返回服務,而該FE的出路徑還在經(jīng)歷切換。這允許給定轉(zhuǎn)發(fā)引擎的入路徑將分組轉(zhuǎn)發(fā)到出路徑已經(jīng)完成切換或者未參與切換的其他轉(zhuǎn)發(fā)引擎。因而,使得從轉(zhuǎn)發(fā)引擎的切換到恢復服務的時間最小。
本發(fā)明具有許多優(yōu)點。使用這種方法和系統(tǒng)的網(wǎng)絡元件體系結(jié)構在FE發(fā)生故障時能快速、高效地恢復服務。正如所指出的那樣,這種“基于個體的切換”技術通過單獨處理每個轉(zhuǎn)發(fā)引擎,對適當信息的復制一完成就執(zhí)行切換并且使網(wǎng)絡元件恢復服務,而不需要等待一組轉(zhuǎn)發(fā)引擎完成它們各自的切換,來實現(xiàn)這一優(yōu)點。使用這種基于個體的切換技術,可以將入路徑的切換與出路徑的切換相隔離,以便進一步改進性能。這允許給定轉(zhuǎn)發(fā)引擎的入轉(zhuǎn)發(fā)路徑返回服務,而該轉(zhuǎn)發(fā)引擎的出路徑還在經(jīng)歷切換。此時,轉(zhuǎn)發(fā)引擎的入路徑能夠?qū)⒎纸M轉(zhuǎn)發(fā)到其他轉(zhuǎn)發(fā)引擎(其出路徑已經(jīng)完成切換,或者其沒有參與切換),這減少了恢復服務時間。
根據(jù)本發(fā)明的交換機在FE發(fā)生故障時提供了快速、高效的恢復,而其在成本方面相對于隨后描述的可能解決方案是相當或更低的。此外,端口卡和FE之間的連接不需要被路由通過中央復用器/解復用器,所以在連接性基礎結(jié)構中(例如,在交換機的中板和/或背板中)不那么擁擠,除了其他優(yōu)點之外,這還降低了成本、改進了可靠性并減少了散熱需要。并且,與使用中央復用器/解復用器的體系結(jié)構相比,不需要設計高MTBF的中央復用器/解復用器,可以預料這種中央復用器/解復用器需要其自身的冗余。這種冗余在中板/背板中還加入了更多的連接,以及關于該冗余的管理和該中央復用器/解復用器的故障轉(zhuǎn)移的更多的復雜度。但是,本發(fā)明允許以快速、高效的方式對分布式交換結(jié)構進行交換,這允許用戶享受可靠操作的優(yōu)點,而不必忍受過長的故障恢復時間。因而,通過解決對可靠性的需要,而同時將成本維持在相對低的水平,本發(fā)明以經(jīng)濟合理的方式滿足了用戶對可靠交換的需要。
示例網(wǎng)絡元件體系結(jié)構圖1圖示了使用本發(fā)明的實施例所支持的冗余方案的網(wǎng)絡元件(這里是交換機)的方框圖。圖1中圖示的交換機100包括多個端口卡(表示為端口卡110(1)~(N))、多個轉(zhuǎn)發(fā)引擎(表示為轉(zhuǎn)發(fā)引擎120(1)~(N+1))、路由處理器130和交換矩陣140。應該注意,雖然這種情形不是一般性的(隨后將要指出),但是該圖中,端口卡的數(shù)目(N)與轉(zhuǎn)發(fā)引擎的數(shù)目(N+1;或者更一般的情形是M(=N+L))相關。路由處理器130被耦合以控制端口卡110(1)~(N)和轉(zhuǎn)發(fā)引擎120(1)~(N+1)。如圖1所示,端口卡110(1)~(N)和轉(zhuǎn)發(fā)引擎120(1)~(N+1)之間的連接,以及這些元件中的一部分組合在一起以代表分布式交換結(jié)構150。分布式交換結(jié)構150代表分布式復用器/解復用器布置,其提供對根據(jù)題為“METHOD AND SYSTEM FOR PROVIDINGREDUNDANCY WITHIN A NETWORK ELEMENT”(在網(wǎng)絡元件內(nèi)提供冗余的方法和系統(tǒng))的專利申請的N+1轉(zhuǎn)發(fā)引擎冗余方案所必需的連接度的支持,該專利申請結(jié)合于此用作參考。
在發(fā)生故障時,路由處理器130通常會采取對轉(zhuǎn)發(fā)引擎120(1)~(N+1)中的故障作出反應所必需的動作。這是因為發(fā)生故障的轉(zhuǎn)發(fā)引擎可能不能夠完成切換,并且其他轉(zhuǎn)發(fā)引擎可能無法知道這個故障。這一因素也突出了每個FE能自己切換到其備用模式而不需要從另一FE(其可能發(fā)生了故障,并且不能提供這樣的信息)發(fā)送信息這種方法的優(yōu)點。
交換機100的體系結(jié)構可以被歸納為在其中具有N個端口卡和M個FE的體系結(jié)構。這種情形中,有N個主FE(這里也被稱為主FE)和L(其中L=M-N)個備用FE??梢砸远喾N方式實現(xiàn)端口卡到FE的互連,隨后將結(jié)合圖5和圖6所描述的示例對此進行描述。在這種一般情形中,每個端口卡耦合到主FE和多個(L個)備用FE。實際上,L的極限是N。這種臨界情形為每個端口卡提供了主FE和備用FE,所以這種布置在其所帶的限制下退化為與每個端口使用主FE和備份FE的體系結(jié)構相似的體系結(jié)構。
因而,每個端口卡通過主鏈路和L個備用鏈路耦合到其的對應的L+1個FE。這里所使用的鏈路通常是某一種類的傳輸介質(zhì)(例如,光纜、同軸電纜等),并且雖然這可能包括各種類型的信號處理(放大、再生、帶寬定形等),但是這種傳輸介質(zhì)不包括從任一源(例如,端口卡或FE)到任一目的地(例如,分別是FE或端口卡)的任何數(shù)據(jù)流交換。本領域的技術人員會清楚,隨著數(shù)目L的增加,交換機中備用鏈路和FE的數(shù)目也會增加,并伴隨著復雜度和成本的增加。但是,通過具有多個備用FE所提供的MTBF(因而也是可靠性)的增加可以在一定程度上抵消這種復雜度和成本的增加,盡管這種抵消很可能隨著L的增加而趨于迅速減小,這使得大的L是相對不經(jīng)濟的(并且在臨界情形中,導致先前指出的成本限制)。使用這種體系結(jié)構,一個(或多個)發(fā)生了故障的FE停止了服務,并且受影響的端口卡(以及那些朝向備用FE的端口卡)移動適當數(shù)目的FE(等于發(fā)生故障的FE的數(shù)目)。因而,如果一個FE發(fā)生故障,則連接到該發(fā)生故障的FE和備用FE之間的FE的每個端口卡切換(移動)一個FE。需要交換的FE/端口卡的總數(shù)目等于發(fā)生故障的FE與備用FE之間的FE的數(shù)目。在一種情形中,這是以串行方式完成的,F(xiàn)E一個接一個地進行交換,并且這里稱之為級聯(lián)技術。在題為“METHOD ANDSYSTEM FOR PROVIDING REDUNDANCY WITHIN A NETWORKELEMENT”(在網(wǎng)絡元件內(nèi)提供冗余的方法和系統(tǒng))的專利申請中對該技術進行了更詳細地描述,該專利申請結(jié)合于此用作參考。
除了能夠處理多個同時發(fā)生的FE故障之外,這種體系結(jié)構還能處理多個時間上連續(xù)的FE故障。因此,在第一FE發(fā)生故障并且受影響的端口卡被切換之后,另一故障導致新切換的端口卡的切換。以這種方式,使用這種體系結(jié)構的交換機能夠在面臨多個FE故障時連續(xù)運行。當然,這種權衡是增加了復雜度和成本,但是在具有高得多的MTBF需求的給定應用中,這可能是值得的。
應該注意,在此處描述的附圖中的幾個實例中,變量標識符“N”用來更簡單地表示一系列相關或相似元件中的最后一個元件。這些變量標識符的重復使用并不意味著這些元件系列的規(guī)模之間必然存在相關性,盡管這種相關性可能存在。這些變量標識符的使用不需要每個系列的元件具有的元件數(shù)目與由同一變量標識符限定的其他系列相同。相反地,在每個使用實例中,由“N”所標識的變量(或者任何其他標識符)可以具有與相同變量表示符的其他實例相同或不同的值。。
此外,關于這里所述的信號,本領域的技術人員應該認識到,信號可以從第一方框直接傳輸?shù)降诙娇?,或者在方框之間可以修改信號(例如,放大、衰減、延遲、鎖存、緩沖、反相、濾波或其他修改)。雖然上述實施例中的信號被特征化為從一個方框傳輸?shù)较乱环娇?,但是本發(fā)明的其他實施例可以包括修改信號,來代替這些直接傳輸?shù)男盘?,只要信號的信息?或功能方面在方框之間傳輸。在某種程度上,在第二方框處輸入的信號可以被概念化為第二信號,其是由于所包含的電路系統(tǒng)的物理限制(例如,不可避免地會有某些衰減和延遲),而從第一方框輸出的第一信號得到的。因此,這里所使用的從第一信號得到的第二信號包括第一信號或?qū)Φ谝恍盘柕娜魏涡薷模瑹o論這種修改是由于電路限制或是由于通過其他不改變第一信號的信息和/或最終功能方面的電路元件。
前面所述的實施例中不同的組件包含在不同的其他組件內(nèi)(例如,各種元件被表示為交換機100的組件)。應該理解,這些描述的結(jié)構只是示例,實際上,可以實現(xiàn)許多其他獲得相同功能的結(jié)構。言簡意賅地說,為了獲得相同功能的組件的任意排列被有效“關聯(lián)”,從而能獲得希望的功能。因此,此處被組合來獲得特定功能的任意兩個組件都可被視為彼此“關聯(lián)”,從而獲得希望的功能,而無論結(jié)構或中間組件如何。同樣,這樣關聯(lián)的任意兩個組件也可以被視為彼此“可操作地連接”,或彼此“可操作地耦合”,以獲得希望的功能。
根據(jù)本發(fā)明所構建的交換機(例如,交換機100)的重要特征是分布式交換結(jié)構(例如,分布式交換結(jié)構150)。與其他選擇相比,分布式交換結(jié)構向端口卡和FE之間的互連需要提供了更簡單、更有效且更優(yōu)雅的解決方案。這種簡單性轉(zhuǎn)化為更好的可靠性(更高的MTBF)和更低的成本,因此比其他選擇更好地解決了用戶的需要。對N+1技術來說更是如此,這一技術將分布式交換結(jié)構減少為在每個端口卡和FE上的2輸入復用器/解復用器。將參考圖2A和圖2B更詳細地描述這種類型的結(jié)構。
在典型的實施例中,轉(zhuǎn)發(fā)引擎包括兩部分入路徑(入口(ingress)路徑,其包括對從端口卡接口接收到的分組進行處理的組件)和出路徑(出口(egress)路徑,其在將分組發(fā)送到端口卡接口之前對這些分組進行進一步處理)。通常,在端口卡接口中接收到的給定分組被傳遞到該端口卡接口所連接到的轉(zhuǎn)發(fā)引擎。該轉(zhuǎn)發(fā)引擎的入路徑對分組進行處理,并經(jīng)由交換結(jié)構將分組交換到另一轉(zhuǎn)發(fā)引擎,其出路徑在將分組發(fā)送到其他轉(zhuǎn)發(fā)引擎所連接到的端口卡接口之前對分組進行進一步處理。
作為在轉(zhuǎn)發(fā)引擎中的處理的一部分,通常會參考某些信息,例如轉(zhuǎn)發(fā)、訪問控制列表(某種形式的過濾)以及其他這樣的信息。這種信息存儲在概念/邏輯表中,這些表存儲在隨機訪問存儲器(RAM)形式的硬件中或者稱為“三重內(nèi)容可編址存儲器”(TCAM)的專用存儲器中。這一事實的重要性在于,雖然特定的轉(zhuǎn)發(fā)引擎設置有某一數(shù)量的存儲器,其形成能容納端口卡接口所預期的“合理”數(shù)量信息所需要的規(guī)模,但是通常不能假設該存儲器能存儲連接到該給定轉(zhuǎn)發(fā)引擎的兩個端口卡接口的信息。對于其中轉(zhuǎn)發(fā)引擎用作多個端口卡的備用FE的體系結(jié)構更是如此。
結(jié)果,在執(zhí)行切換時必需考慮兩類一般的轉(zhuǎn)發(fā)引擎在轉(zhuǎn)發(fā)硬件中具有雙配置的轉(zhuǎn)發(fā)引擎(即,這種轉(zhuǎn)發(fā)引擎中的轉(zhuǎn)發(fā)硬件能容納連接到它的兩個端口卡接口的配置)和在轉(zhuǎn)發(fā)硬件中具有單配置的轉(zhuǎn)發(fā)引擎(即,這種轉(zhuǎn)發(fā)引擎中的轉(zhuǎn)發(fā)硬件僅能容納連接到它的端口卡接口中的一個的配置)。結(jié)果,在具有單配置的轉(zhuǎn)發(fā)引擎上,另一配置被保持在一般的存儲器中,并且該配置在切換時需要復制到轉(zhuǎn)發(fā)硬件存儲器。實際上,也可以考慮這樣的情形轉(zhuǎn)發(fā)引擎在其路徑之一中(例如,入路徑)具有雙配置能力,而在另一路徑中(例如,出路徑)具有單配置能力。
圖2A是端口卡200的方框圖。端口卡200代表圖1中的端口卡110(1)~(N)之一。如其名稱所示,端口卡200支持多個入站(inbound)端口和出站(outbound)端口,這些端口向其數(shù)據(jù)流需要被交換的網(wǎng)絡元件提供連接。圖2A中將這些連接表示為網(wǎng)絡輸入205(1)~(N)和網(wǎng)絡輸出210(1)~(N)。端口卡200還包括轉(zhuǎn)發(fā)引擎選擇器(表示為轉(zhuǎn)發(fā)引擎(FE)選擇器220)。FE選擇器220耦合到主轉(zhuǎn)發(fā)引擎(未示出)和備用FE(也未示出)。在正常情況中,選擇器220將端口卡200經(jīng)由主鏈路230耦合到其主轉(zhuǎn)發(fā)引擎。如果主轉(zhuǎn)發(fā)引擎發(fā)生故障,則選擇器220將端口卡200經(jīng)由備用鏈路240耦合到其備用轉(zhuǎn)發(fā)引擎。圖1中用實線示出了端口卡110(1)~(N)與轉(zhuǎn)發(fā)引擎120(1)~(N)之間的到主轉(zhuǎn)發(fā)引擎的連接。類似地,圖1中用虛線示出了端口卡110(1)~(N)和轉(zhuǎn)發(fā)引擎120(1)~(N+1)之間的端口卡和其備用轉(zhuǎn)發(fā)引擎之間的連接。
圖2B圖示了轉(zhuǎn)發(fā)引擎(表示為轉(zhuǎn)發(fā)引擎250)的示例的方框圖。轉(zhuǎn)發(fā)引擎250代表圖1中的轉(zhuǎn)發(fā)引擎120(1)~(N+1)之一。在把耦合到轉(zhuǎn)發(fā)引擎250的端口卡接收到的數(shù)據(jù)流所攜帶的信息向交換矩陣255傳遞時,轉(zhuǎn)發(fā)引擎250控制該信息的轉(zhuǎn)發(fā)。清楚的是,交換矩陣255是交換矩陣140的示例。轉(zhuǎn)發(fā)引擎250作為主轉(zhuǎn)發(fā)引擎經(jīng)由主鏈路260a接收這些數(shù)據(jù)流,并且作為主轉(zhuǎn)發(fā)引擎經(jīng)由主鏈路260b發(fā)送數(shù)據(jù)流。類似地,轉(zhuǎn)發(fā)引擎250作為備用轉(zhuǎn)發(fā)引擎經(jīng)由備用鏈路265a接收數(shù)據(jù)流,并且作為備用轉(zhuǎn)發(fā)引擎經(jīng)由備用鏈路265b發(fā)送數(shù)據(jù)流。在圖2B中如此描述主鏈路和備用鏈路的接收和發(fā)送部分,從而使得更詳細地描述了轉(zhuǎn)發(fā)引擎250的體系結(jié)構。分別由入站FE選擇器270和出站FE選擇器275(它們被一起稱為選擇單元276)執(zhí)行主鏈路260a和260b以及備用鏈路265a和265b之間的選擇。入站FE選擇器270提供從所選擇的鏈路到入站處理元件280的數(shù)據(jù)流。入站處理元件280然后在轉(zhuǎn)發(fā)控制器285的控制下將該數(shù)據(jù)流轉(zhuǎn)發(fā)到交換矩陣255。
相反地,由出站處理元件290對從交換矩陣255接收到的數(shù)據(jù)流進行處理。出站處理元件290在轉(zhuǎn)發(fā)控制器285的控制下將該數(shù)據(jù)流傳遞到出站FE選擇器275,出站FE選擇器275接著通過主鏈路260b或備用鏈路265b將該數(shù)據(jù)流傳遞回預期的端口卡。雖然轉(zhuǎn)發(fā)控制器285包括一定數(shù)量的存儲器(例如,片上或緩存存儲器),但是經(jīng)常需要額外的存儲器(例如,為了存儲額外的配置信息)。圖2中將該額外存儲器表示為主存儲器(或者更簡單地,存儲器)295,其耦合到轉(zhuǎn)發(fā)控制器285,并且例如是DRAM存儲器。也可以如圖2B所示,在入站處理元件280和出入處理元件290中,分別由緩存存儲器296和297提供配置信息的存儲。
如圖2B所示,除了其他組件之外,轉(zhuǎn)發(fā)引擎250可以被分為入口路徑298和出口路徑299。入口路徑298,這里也被稱為入站路徑,包括入站FE選擇器270和入站處理元件280。類似地,出口路徑299包括出站處理元件290和出站FE選擇器275。出口路徑299在這里也被稱為出站路徑。如在本文其他地方所描述的那樣,入口路徑298和出口路徑299的特征是它們的能獨立地被交換的能力,正如下述事實所示例的那樣將入站FE選擇器270和出站FE選擇275表示為分立的單元(盡管在物理上入站FE選擇器270和出站FE選擇器275可以包括在單個交換單元中(例如,使用相同的控制線路來控制))??刂破?85也是采用這種理念設計的,所以能夠獨立地交換這兩個路徑(例如,在軟件、固件或硬件的控制下),就如本文其他地方所描述的那樣。
配置信息(例如,用來將分組轉(zhuǎn)發(fā)到其預期目的地的每個源/目的地對的轉(zhuǎn)發(fā)條目)的存儲對這些網(wǎng)絡元件的操作是至關重要的。在FE充當主FE時該FE所使用的配置信息這里被稱為主配置信息,而在FE充當備用FE時該FE所使用的配置信息這里被稱為備用配置信息。因而,這意味著對這些信息的容易的訪問對于其正確操作是至關重要的。通過將必需的信息存儲在經(jīng)濟上可行的最快速的存儲器中,來支持這種訪問。如果這些配置信息不易訪問,則結(jié)果可能是丟失分組,并且因此不能向用戶提供高可用性網(wǎng)絡元件。
可以存儲FE配置信息的位置有多處,因此必須做出設計權衡。關于該信息被存儲在何處的決定受多種因素的影響。這些因素包括訪問和存儲信息所需的時間、這樣的延遲在發(fā)生故障時對交換機的無縫操作的影響、在每個可能位置處的存儲器空間的大小和成本(通常,存儲器設置地離數(shù)據(jù)路徑越遠,該存儲器就越大且更便宜)、可用來作為緩存存儲器的集成電路(IC)面積以及其他這樣的考慮。例如,如果配置信息(主FE配置信息和備用FE配置信息)可以存儲在緩存存儲器296和297(較快,但是通常較小且更昂貴)中,則優(yōu)選地將該信息存儲在存儲器295(較慢,但是較大且更便宜)中。也可以從交換機的路由處理器中下載這些信息。這種權衡會影響配置信息存儲和讀取的方式,由此影響FE相互接替的方式。
因而,如果用于主FE和備用FE的信息(分別是主配置信息和備用配置信息)都能存儲在緩存存儲器296和297中,則切換將相對較快,但是這種解決方案很可能更昂貴(在成本和IC內(nèi)的面積需求方面)。相反地,如果用于主FE和備用FE的信息存儲在存儲器295中,則切換可能相對較慢,但是這種解決方案很可能更便宜。如果緩存存儲器296和297不是足夠大,以致不能容納全部的必要信息(即,只能容納一組配置信息(例如,主配置信息)),這可能迫使設計者如此構造交換機,從而在發(fā)生故障時,從轉(zhuǎn)發(fā)控制器的存儲器復制備用配置信息,或者甚至從一個FE向另一FE復制備用配置信息(以前面所描述的方式)。
也應該注意到,設計者可以通過將緩存存儲器296和297具有的尺寸設計為恰好足夠大,以致允許它們僅存儲用于一組配置信息的配置(例如,主FE配置),來選擇在速度和資源的使用效率之間達到平衡。備用FE配置則存儲在存儲器295中。這樣做的優(yōu)點是(通過使昂貴的片上緩存存儲器最小)使成本最小并高效地使用IC,同時通過在本地存儲備用信息使得控制消息流量最小(并且提高了使這些信息變?yōu)榭捎玫乃俣?,這是由于在存儲器295與緩存存儲器296和297之間可用的相對高速的傳輸)。
在處理N:M冗余度方案的更一般的情形中,可能的備用FE越多,必須存儲的配置就越多,因此需要更大的存儲器空間,并且需要端口卡和FE之間的多個備用鏈路。結(jié)果,這使得在緩存中存儲這些信息的選擇變得更加不切實際(或者甚至不可能),并且很可能變得更加昂貴。這些考慮促使使用更簡單(且更便宜)的N+1冗余度方案,這是因為只需要保存支持兩個FE所需的信息,所以需要較少的存儲器。但是,如下文指出的那樣,如果在兩種配置中有大量重復,則還可以進一步減小對存儲器空間的需求。
如此存儲/復制的信息可以不必是全部配置信息,而僅僅是將一個FE與另一FE相區(qū)分的信息。這可以使得這些信息的存儲可以更靠近數(shù)據(jù)路徑(例如,在緩存存儲器296和297中,或者至少在存儲器295中)。在L>1(或L>>1)的情形中這種技術是尤其有吸引力的,這是因為在這種情形中,存儲器需求的減少可以使得在其他情況下不能實現(xiàn)的布置變?yōu)榭赡堋?br>
如果使用圖1所示的體系結(jié)構,一種最優(yōu)化方法認可第N+1個FE(這里也被稱為備用FE)只需要加載有第N個FE的配置信息,并且第一個FE只需要加載有第N+1個FE的配置信息。這是因為總是只在一種狀態(tài)中(分別是備用FE和主FE)使用這兩個FE。因而,只有其他受影響的FE需要將它們的信息從一個FE復制到另一FE。應該注意到,在替換體系結(jié)構中,可以使用同時交換技術,其中在每個FE內(nèi)存儲部分或所有配置信息。
還應該注意到,無需排他地使用這些技術。取決于具體情況,可以使用同時切換和級聯(lián)切換的組合。例如,比較靠近故障的FE可以使用級聯(lián)技術來切換,而離發(fā)生故障的FE較遠的那些FE可以使用同時技術(執(zhí)行最小限度的級聯(lián)轉(zhuǎn)變所需的時間已經(jīng)給出了準備轉(zhuǎn)換的時間)?;蛘撸梢耘渲肍E的組來同時切換。
可以在能夠使用根據(jù)本發(fā)明的技術的網(wǎng)絡元件中使用其他可替換的體系結(jié)構或它們的組合。例如,一個這樣的實施例通過使備用FE處于FE的“中間”,減少了在主轉(zhuǎn)發(fā)引擎發(fā)生故障時切換到一個或多個備用轉(zhuǎn)發(fā)引擎所需的平均等待時間。在這種配置中,雖然備用轉(zhuǎn)發(fā)引擎在結(jié)構上與網(wǎng)絡元件中其他轉(zhuǎn)發(fā)引擎沒有區(qū)別,但是其作為備用轉(zhuǎn)發(fā)引擎而被耦合到兩個端口卡,并且因此能夠通過選擇適當?shù)膫溆面溌穪沓洚斶@兩個端口卡中任一個的備用轉(zhuǎn)發(fā)引擎。在這種體系結(jié)構中,切換只涉及發(fā)生故障的FE、備用FE和這兩者之間的FE。通過允許網(wǎng)絡元件的受影響端口卡各自選擇這些轉(zhuǎn)發(fā)引擎中的轉(zhuǎn)發(fā)引擎(包括備用轉(zhuǎn)發(fā)引擎)作為備用轉(zhuǎn)發(fā)引擎,這種體系結(jié)構通過減少切換操作所牽涉的FE的數(shù)目,簡化并加速了切換。
或者,可以使用輪轉(zhuǎn)調(diào)度(round-robin)方法。備用轉(zhuǎn)發(fā)引擎(例如,圖1中的轉(zhuǎn)發(fā)引擎120(N+1))可以耦合到第一個和最后一個端口卡(例如,如圖所示,分別是端口卡110(N)和端口卡110(1))。這種情形中,端口卡110(1)~(N)中每一個都耦合到三個轉(zhuǎn)發(fā)引擎主轉(zhuǎn)發(fā)引擎、在“順時針”方向的備用轉(zhuǎn)發(fā)引擎、以及在“逆時針”方向的備用轉(zhuǎn)發(fā)引擎。因此,取決于故障的位置,切換將涉及最少數(shù)目的FE(即,恢復涉及沿著發(fā)生故障的FE和備用FE之間的最短路線的FE(即,參與切換的轉(zhuǎn)發(fā)引擎的數(shù)目最少的方向))。實際上,這可以將備用FE放在“中間”,這樣該備用FE離最遠的FE是等距的(假設網(wǎng)絡元件被完全填滿了端口卡/FE)。
此外,任何一項前述的體系結(jié)構都可以用在“成組”的體系結(jié)構中。使用這種體系結(jié)構,基本的體系結(jié)構(或它們的變體)被劃分為組。備用轉(zhuǎn)發(fā)引擎支持這些組中的每個組。當給定組的轉(zhuǎn)發(fā)引擎之一發(fā)生故障時,由該組的適當?shù)亩丝诳?、轉(zhuǎn)發(fā)引擎和備用轉(zhuǎn)發(fā)引擎選擇適當?shù)膫溆面溌?,恢復故障。以這種方式,適當?shù)毓芾碓谠摻M的轉(zhuǎn)發(fā)引擎之一中的故障,而不干擾其他(一個或多個)組。簡單地說,通過加入備用轉(zhuǎn)發(fā)引擎,減少了等待時間,而增加了故障間平均時間,結(jié)果,這允許端口卡和轉(zhuǎn)發(fā)引擎被分為組。這些組中的每一個組雖然具有較少的端口卡和轉(zhuǎn)發(fā)引擎,但是都以與該組的基本體系結(jié)構相似的方式工作,因此在任意給定情形中,只要執(zhí)行更少的切換。
在題為“METHOD AND SYSTEM FOR PROVIDING REDUNDANCYWITHIN A NETWORK ELEMENT”(在網(wǎng)絡元件內(nèi)提供冗余的方法和系統(tǒng))的專利申請中對上述體系結(jié)構和替換進行了更詳細地描述,該專利申請結(jié)合于此用作參考。
轉(zhuǎn)發(fā)引擎切換的基本示例圖3一般性地圖示了由根據(jù)實現(xiàn)本發(fā)明實施例的網(wǎng)絡元件(例如,諸如交換機100之類的網(wǎng)絡元件)的過程所執(zhí)行的動作的流程圖。該過程開始于由端口卡和轉(zhuǎn)發(fā)引擎選擇主鏈路來提供這些元件之間的連接(步驟300)。一旦選定了主鏈路,則交換機的路由處理器等待在活動轉(zhuǎn)發(fā)引擎之一中發(fā)生故障的指示(步驟310)。如果不發(fā)生這些故障,則該過程只循環(huán)。如果發(fā)生了這種故障,則由受影響的端口卡和轉(zhuǎn)發(fā)引擎選擇一個或多個備用鏈路。可以以多種方式中的任意一種來完成這種切換。例如,可以在交換機的路由處理器的控制下,同時對所有這些受影響的鏈路執(zhí)行交換,如圖3所示,無論使用級聯(lián)技術或其他技術。但是,就像指出的那樣,使用級聯(lián)的方法通常要慢得多。在同時切換過程中,路由處理器使連接到發(fā)生故障的轉(zhuǎn)發(fā)引擎的端口卡切換到其備用鏈路,并且使該端口卡的備用轉(zhuǎn)發(fā)引擎也切換到備用鏈路,以支持該端口卡(步驟320)。大約在此時,也切換其他(受影響的)FE。通過(大約)在相同時間執(zhí)行切換,可以并行執(zhí)行與切換受影響的FE相關的大部分工作,這節(jié)省了時間,并盡可能地使切換變?yōu)闊o縫。此時可以更換已經(jīng)被切換出服務的發(fā)生故障的轉(zhuǎn)發(fā)引擎。
這樣,路由處理器只配置受影響的端口卡和轉(zhuǎn)發(fā)引擎,以便(大約)在相同時間分別切換到它們的相應備用轉(zhuǎn)發(fā)引擎/端口卡。以這種方式,轉(zhuǎn)發(fā)引擎被配置來支持這種端口卡,對于該端口卡那些轉(zhuǎn)發(fā)引擎是備用轉(zhuǎn)發(fā)引擎,并且因此優(yōu)選地,在某些容易訪問的位置中存儲它們的備用配置信息,以便在發(fā)生故障時快速可用。但是,這意味著每個轉(zhuǎn)發(fā)引擎需要支持這些配置信息(主連接和備用連接)的某種方式的存儲,因而可以不需要相對長的延遲就能完成切換,其中相對長的延遲是從一個轉(zhuǎn)發(fā)引擎復制配置信息到另一轉(zhuǎn)發(fā)引擎引起的。
正如指出的那樣,圖3圖示了根據(jù)本發(fā)明一個實施例的過程的流程圖。應該理解,這里所討論的操作可以由計算機系統(tǒng)用戶直接鍵入的命令或?qū)S糜布K所執(zhí)行的步驟組成,但是優(yōu)選實施例包括軟件模塊所執(zhí)行的步驟。這里所稱的步驟的功能可以與模塊或模塊的一部分的功能相對應。
這里所稱的操作可以是模塊(例如,軟件、固件或硬件模塊)或模塊的一部分。例如,雖然所述實施例包括軟件模塊并且/或者包括手動鍵入的用戶命令,但是各種示例模塊可以是專用硬件模塊。這里所述的軟件模塊可以包括腳本、批處理或其他可執(zhí)行文件,或者這些文件的組合和/或這些文件的一部分。軟件模塊可以包括編碼在計算機可讀介質(zhì)中的計算機程序或其子程序。
另外,本領域的技術人員會認識到,模塊之間的邊界只是示例性的,并且其他實施例可以將模塊合并,或者將模塊的功能做其他分解。例如,這里所述的模塊可以被分解為子模塊,它們可以被當作多個計算機進程執(zhí)行,或者可選地在多個計算機上執(zhí)行。此外,其他實施例可以將特定模塊或子模塊的多個實例組合起來。另外,本領域的技術人員將認識到,在示例實施例中描述的操作只是示例性的。根據(jù)本發(fā)明,可以將操作組合,或者將操作的功能分散到另外的操作中。
或者,可以在實現(xiàn)這些功能的電路系統(tǒng)的結(jié)構中包含這些動作,例如復雜指令集計算機(CISC)的微碼、編程在可編程或可擦除/可編程器件中的固件、現(xiàn)場可編程門陣列(FPGA)的配置、門陣列或全定制專用集成電路(ASIC)的設計等等。
流程圖中的每個方框可以由一個模塊(例如,軟件模塊)或一個模塊的一部分或計算機系統(tǒng)用戶來執(zhí)行。因此,可以在被配置來執(zhí)行上述方法的操作的計算機系統(tǒng)上執(zhí)行上述方法、其操作以及用于其的模塊,并且/或者可以從計算機可讀介質(zhì)執(zhí)行上述方法、其操作以及用于其的模塊??梢栽谟脕砼渲糜嬎銠C系統(tǒng)以執(zhí)行該方法的機器可讀和/或計算機可讀介質(zhì)中包括該方法。這樣,可以將軟件模塊存儲在計算機系統(tǒng)存儲器中和/或發(fā)送到計算機系統(tǒng)存儲器,以配置計算機系統(tǒng)來執(zhí)行模塊的功能。
這樣的計算機系統(tǒng)通常根據(jù)程序(一列內(nèi)部存儲的指令,諸如具體的應用程序和/或操作系統(tǒng))來處理信息,并且經(jīng)由I/O設備產(chǎn)生結(jié)果輸出信息。計算機進程通常包括正在執(zhí)行(正在運行)的程序或程序的一部分、當前程序值和狀態(tài)信息、以及操作系統(tǒng)用來管理該進程的執(zhí)行的資源。父進程可以產(chǎn)生其他子進程,以幫助執(zhí)行父進程的整體功能。因為父進程專門產(chǎn)生子進程來執(zhí)行父進程的整體功能的一部分,所以子進程(以及孫進程)執(zhí)行的功能有時可以被描述為由父進程執(zhí)行的功能。
這樣的計算機系統(tǒng)通常包括多個“并發(fā)”執(zhí)行的計算機進程。計算機系統(tǒng)經(jīng)常包括單處理單元,其能夠交替支持許多活動進程。雖然多個進程可能看起來被并發(fā)執(zhí)行,但是在任意給定時間點,單處理單元實際上只執(zhí)行一個進程。通過快速改變進程執(zhí)行,計算機系統(tǒng)看起來就像并發(fā)執(zhí)行進程一樣。計算機系統(tǒng)的在執(zhí)行的各個階段中在多個進程之間共享資源的能力能力被稱為多任務。具有多個處理單元的系統(tǒng)被稱為多處理系統(tǒng),其中多處理單元的定義是能支持真正的并發(fā)處理。當活動進程在多任務環(huán)境和/多處理環(huán)境中被執(zhí)行時,這些進程常常被稱作并發(fā)執(zhí)行。
這里所述的軟件模塊可以由這樣的計算機系統(tǒng)例如從計算機可讀介質(zhì)接收。計算機可讀介質(zhì)可以被永久地、可拆卸地或遠程地耦合到計算機系統(tǒng)。例如,計算機可讀介質(zhì)可以非排他地包括下列介質(zhì)中的任意多個磁存儲介質(zhì),包括磁盤和磁帶存儲介質(zhì);光存儲介質(zhì),諸如光盤介質(zhì)(例如,CD-ROM、CD-R等)和數(shù)字視頻盤存儲介質(zhì);非易失性存儲器存儲介質(zhì),包括基于半導體的存儲器單元,諸如閃存、EEPROM、EPROM、EOM或?qū)S眉呻娐?;易失性存儲介質(zhì),包括寄存器、緩沖器或緩存、主存儲器、RAM等;以及數(shù)據(jù)傳輸介質(zhì),包括計算機網(wǎng)絡、點對點遠程通信和載波傳輸介質(zhì)。在基于UNIX的實施例中,軟件模塊可以包含在文件(其可以是設備、終端、本地或遠程文件)、套接字、網(wǎng)絡連接、信號或其他通信或狀態(tài)變化的手段中??梢允褂闷渌碌囊约案鞣N類型的計算機可讀介質(zhì)來存儲和/或傳輸這里所述的軟件模塊。
應該注意,取決于實現(xiàn)方式,結(jié)合圖3討論的轉(zhuǎn)變可能導致兩個端口卡在短暫的一段時間中耦合到相同F(xiàn)E。如果這可以在給定設計中發(fā)生,則應該將FE設計為從多個端口卡接受數(shù)據(jù)流,并正確地轉(zhuǎn)發(fā)該信息。清楚的是,這種系統(tǒng)中的FE還應該被設計為在相同時間耦合到多個鏈路。相反地,這種系統(tǒng)的端口卡必須能夠通過其主鏈路和備用鏈路來接收數(shù)據(jù)流。這些能力確保了數(shù)據(jù)在這樣的轉(zhuǎn)變期間不會丟失。
還應注意,無論在實施本發(fā)明的實施例時用于向FE提供編程的方法如何,到備用FE的切換都應該是有狀態(tài)的(即,維持關于發(fā)生故障的FE的狀態(tài)信息,以便允許就像沒有發(fā)生故障一樣處理據(jù)此被切換的數(shù)據(jù)流)。正如指出的那樣,這可以通過預先將必要的信息編程到每個FE中,或者通過將信息從一個FE復制到另一FE,或者通過某些其他方法(例如,通過從交換機的路由處理器下載這些信息)來完成。這是重要的特征,因為其支持交換機在面對FE故障時維持正被交換的數(shù)據(jù)流的能力。
替代切換技術在這里所討論的網(wǎng)絡元件中,可以使用各種技術來切換轉(zhuǎn)發(fā)引擎。這些方法包括如下這些。
1)這里被稱為“同時切換”方法的一種方法,其中每個FE存儲在切換情況中可能需要的所有可能配置的完整配置(例如,主配置和備用配置)。但是,這種方法只適用于這樣的配置其中所有轉(zhuǎn)發(fā)引擎例如都是雙配置類型。
2)這里被稱為“級聯(lián)切換”方法的另一種方法,其適用于任意類型的轉(zhuǎn)發(fā)引擎。但是,這種方法不能在最優(yōu)數(shù)量的時間中完成FE的切換和恢復服務,因為如先前指出的那樣,切換必須級聯(lián)通過FE/端口卡。
3)也可以使用這里被稱為“改進的同時切換”的另一種方法,但是其有它自身的限制。雖然這種方法適用于任何轉(zhuǎn)發(fā)引擎配置,但是這種方法強迫所有轉(zhuǎn)發(fā)引擎的切換以步伐一致(lockstep)方式進行。因此,雖然控制簡單,但是這種方法為了等待單配置轉(zhuǎn)發(fā)引擎的切換,影響了提供雙配置的轉(zhuǎn)發(fā)引擎的恢復服務時間。
4)“基于組”的切換,與先前討論的方式相似,其將轉(zhuǎn)發(fā)引擎的集合分為兩個組雙配置的轉(zhuǎn)發(fā)引擎和單配置的轉(zhuǎn)發(fā)引擎,并且以步伐一致的方式執(zhí)行每個組的切換。雖然這種方法改進了雙配置轉(zhuǎn)發(fā)引擎的恢復服務時間,但是該方法還是將單配置轉(zhuǎn)發(fā)引擎限制為單獨的一組,并且這個單獨的配置組的成員還可能具有差別非常大的切換時間,這是因為在其硬件表中可以存儲的信息量不一樣。另外,實際上,雙配置FE不是常例,而是例外。實際上,盡管可以在入口路徑中使用雙配置FE,但是設計約束可能要求在出路徑上使用單配置FE。
因而,雖然上述方法在發(fā)生故障及隨后進行切換時可以提供可接受的性能,但是希望如果可能的話,在這些情形中提供改進的性能。下面描述的技術提供了這種改進的性能。
最優(yōu)化切換技術的示例根據(jù)本發(fā)明的方法和系統(tǒng)提供了針對FE切換問題的一種設計,其單獨處理每個轉(zhuǎn)發(fā)引擎,管理切換,并且適當信息的復制一完成就使轉(zhuǎn)發(fā)引擎恢復服務,而不需要等待一組轉(zhuǎn)發(fā)引擎完成它們的切換。由于所使用的手段,這種方法在這里被稱為“基于個體的切換”方法。
這種“基于個體的切換”方法也是可擴展的。在一個實施例中,這種方法將給定FE的入路徑的切換與該FE的出路徑的切換相隔離。這種方法允許給定轉(zhuǎn)發(fā)引擎的入轉(zhuǎn)發(fā)路徑返回服務,而該FE的出路徑還在經(jīng)歷切換。這允許給定轉(zhuǎn)發(fā)引擎的入路徑將分組轉(zhuǎn)發(fā)到出路徑已經(jīng)完成切換或者未參與切換的其他轉(zhuǎn)發(fā)引擎。因而,使得從轉(zhuǎn)發(fā)引擎的切換到恢復服務的時間最小。
使用先前所述的網(wǎng)絡元件體系結(jié)構作為示例,可以看到,可以使得路由處理器(RP)負責協(xié)調(diào)受影響的FE的切換。正如指出的那樣,根據(jù)本發(fā)明實施例的切換方案通過允許并行執(zhí)行大多數(shù)(如果不是全部的話)切換操作,使切換時間和服務的恢復最小,因而消除了會增加切換所需時間的順序操作。
在這種方案中,每個FE單獨地經(jīng)歷切換。然后,對每個FE而言,只要任何FE(包括該FE自身)一準備好向其發(fā)送流量,則該FE就恢復服務。當較慢的FE(即,需要較長時間來指示其發(fā)送流量的能力的FE)準備向給定FE發(fā)送流量時,使得較慢的FE能夠發(fā)送流量(即,去除從該FE到剛變?yōu)闇蕚浜冒l(fā)送流量的FE的流控制)。
給定的FE基于其當前配置,可能需要不同的時間量來切換。例如,可以導致切換所必需的時間量不同的三種不同配置包括1)單配置(存儲在緩存存儲器中)的FE,2)入FE(IFE)雙配置而出FE(OFE)單配置的FE,和3)雙配置的FE。因為需要(或不需要)從FE的主存儲器將配置信息復制到入口和/或出口路徑的緩存存儲器,所以這些配置中的每一個在切換所必需的時間方面都不同。
在單配置中,F(xiàn)E內(nèi)的給定路徑支持僅包括活動配置的緩存存儲器。備用配置存儲在主存儲器中。因此,這種體系結(jié)構需要對給定路徑的硬件的完全重編程,所以通常需要最多的時間。具有IFE雙配置和OFE單配置的FE是混合解決方案,其中入口路徑表具有被編程于其中的活動配置和備用配置,而出口路徑表只具有被編程于其中的活動配置。由此,切換只需對出口路徑表進行重編程。結(jié)果,這種體系結(jié)構相對于單配置而言需要較少的時間來重編程,但是相對于雙配置而言則需要較多的時間。最后,支持雙配置的FE需要相對少的時間來切換,這是由于路徑的硬件表已經(jīng)加載有活動配置和備用配置。
為了適應這些切換所需的不同時間量,根據(jù)本發(fā)明的一種方法使得每個切換盡可能獨立(與其他FE的切換),而不強迫一個FE去等待另一FE的任務的完成。這允許每個FE能盡可能快的進行切換,同時使得系統(tǒng)受切換操作影響的時間最小。
對這種方法的一種優(yōu)化通過將入轉(zhuǎn)發(fā)引擎(IFE)和出轉(zhuǎn)發(fā)引擎(OFE)的切換分離,允許更快的服務恢復。因而,當IFE已經(jīng)對它的表重編程時(如果需要任何這樣的重編程的話),再次允許入口流量流動,而不必等待OFE。這允許分組從IFE到達不直接參與切換或者雖然直接參與切換但是已經(jīng)完成切換的FE的OFE。
基本的FE切換圖4圖示了基本的FE切換過程的流程圖。首先,網(wǎng)絡元件的RP得知FE發(fā)生故障(步驟400),結(jié)果,將該FE標記為FAILED(步驟410),并開始關閉該故障FE的進程(步驟420)。應該注意,通常,RP中的軟件實體(例如,系統(tǒng)診斷或管理軟件)隨后在嘗試判斷不需要其他硬件介入是否能恢復該FE時,會嘗試以多種方式之一(例如,向該FE循環(huán)供電,重新加載該FE,或其他這樣的技術)來恢復該FE。
接著,RP判斷是否有適當?shù)目臻eFE可用(步驟430)。應該注意,雖然在網(wǎng)絡元件內(nèi)可能存在空閑FE,但是該空閑FE可能并不處于對該特定故障條件有用的機架位置中。如果能找到(當前冗余域的)空閑FE(步驟430),則RP判定切換將直接涉及哪個FE(步驟440)。通常,位于發(fā)生故障的FE和該空閑FE之間的所有FE都直接參與切換。形成切換列表(步驟450),并且發(fā)起現(xiàn)在所描述的過程。否則,故障是不可恢復的,并且向系統(tǒng)操作者指示錯誤(步驟470)。
最優(yōu)化的FE切換過程示例在討論示例切換過程之前,應該回顧在其描述中所使用的術語。從RP發(fā)送到FE#x的消息MESSAGE_1被稱為MESSAGE_1(x)。從RP發(fā)送到FE#x的消息MESSAGE_2(關于涉及FE#y的某些操作)被稱為MESSAGE_2(x,y)。從FE#x發(fā)送到RP的消息MESSAGE_3被稱為MESSAGE_3(x),而從FE#x發(fā)送到RP的消息MESSAGE_4(關于涉及FE#y的某些操作)被稱為MESSAGE_4(x,y)。
圖5A和圖5B圖示了根據(jù)本發(fā)明的示例最優(yōu)化FE切換過程的流程圖。這一過程例如可以如下構建。
1)RP將對使用其總線的端口卡支配地位(mastership)的控制切換到端口卡(步驟500)。支配地位從活動FE改變到備用FE。這允許備用FE控制到端口卡的鏈路。
2)RP向直接參與切換的所有FE#x(即,在發(fā)生故障的FE(要被更換的FE)和空閑FE之間的所有FE)發(fā)送SWITCHOVER_INITIATE(x)命令(步驟505)。RP還啟動持續(xù)T秒的全局切換定時器(TIMER(x,Ts)),以監(jiān)控來自FE#x的消息(在這里被稱作FE_REPROGRAM_COMPLETE(x)消息)的最終接收。(如果TIMER(x,Ts)期滿,則指示錯誤條件,并且對其進行適當處理)。
3)一旦接收到SWITCHOVER_INITIATE(x)命令,則FE#x執(zhí)行下述操作(步驟510)a)停止入口流量(應該注意,停止入口流量避免了轉(zhuǎn)發(fā)硬件(正嘗試轉(zhuǎn)發(fā)分組)和CPU(正嘗試對這些相同的表重編程)對硬件表的并發(fā)訪問,因此加速了重編程);b)執(zhí)行涉及FE入口路徑的處理(例如,允許入口緩沖區(qū)排空、讀取入口統(tǒng)計數(shù)據(jù)等);c)對入口相關的硬件表重編程(如果任何這種重編程是必需的話);和d)將任何剩余的入口緩沖區(qū)都轉(zhuǎn)儲清空(如果希望/必要的話),并且允許輸出緩沖區(qū)排空。
應該注意,F(xiàn)E的控制器使用已經(jīng)在FE控制器的主存儲器中的備用配置來對入口相關的硬件表編程。這可能是這樣一種情形特定的FE可以在入口路徑的緩存存儲器中存儲活動配置和備用配置。如果是這種情形,則不必對硬件表執(zhí)行實際的編程。
4)一旦完成對入口相關硬件表的重編程(應該注意,在雙配置FE中,概念上的重編程不花費時間),F(xiàn)E#x就執(zhí)行下列操作(步驟515)a)請求對從其他FE和RP數(shù)據(jù)路徑到FE#x的單播和多播流的流控制;b)執(zhí)行涉及FE出口路徑的處理(例如,將出路徑緩沖區(qū)轉(zhuǎn)儲清空);和c)將來自正連接到FE#x中的端口卡的鏈路切換到來自將要被連接到FE#x的新端口卡的鏈路。
此時,開始處理連接到FE#x的新端口卡的入口流量,并將其轉(zhuǎn)發(fā)到所有沒有流控制的FE#x。尚未完成切換的那些FE的流量將在適當?shù)拿慷丝?每優(yōu)先級緩沖隊列中積累,一旦這些流量各自的FE完成它們的切換,并且去除了它們向FE#x的流控制,就最終允許這些流量再次流動。
5)FE#x然后等待其出緩沖區(qū)排空(步驟520),此時除了其他潛在操作之外,F(xiàn)E#x開始對出口相關的硬件表進行重編程(如果任何這樣的重編程是必需的話)(步驟525和530)。
6)當完成對出口相關硬件表的重編程時(在雙配置FE中,概念上的重編程不花費時間),F(xiàn)E#x向RP發(fā)送FE_REPROGRAM_COMPLETE(x),從RP去除對單播和多播的流控制(步驟535、536和537),并且開始檢查以判斷是否有任何SWITCHOVER_ADVERTISE消息要處理(步驟540)。
7)一旦RP從FE#z接收到FE_REPRPGRAM_COMPLETE(z)消息(步驟540),RP就向系統(tǒng)中所有FE#y(即,直接參與切換的所有FE,以及未直接參與切換的所有FE)發(fā)送SWITCHOVER_ADVERTISE(y,z)消息(步驟545)。在該SWITCHOVER_ADVERTISE(y,z)消息中,RP請求a)更新與FE#z將要替換的FE相關的“交換結(jié)構端口映射表”條目(即,可以是這種情形,在該情形中,請求用FE#z的交換端口結(jié)構更新與FE#(z-1)或FE#(z+1)相對應的“交換結(jié)構端口映射表”條目);和b)在硬件表中更新所有受切換影響的多播條目。
例如,如果RP從FE#3接收到FE_REPRPGRAM_COMPLETE(3)消息,則其向所有FE#y發(fā)送SWITCHOVER_ADVERTISE(y,3)消息,請求更新表(具體地,如果FE#3將接替FE#2的話,則請求更新用于FE#2的“交換結(jié)構端口映射表”;以及請求更新指定直接參與切換的FE之一的多播條目)。同樣,當RP從FE#4接收到FE_REPRPGRAM_COMPLETE(4)消息時,RP向所有FE#y發(fā)送SWITCHOVER_ADVERTISE(y,4)消息,請求更新表(具體地,如果FE#4將接替FE#3的話,則請求更新用于FE#3的“交換結(jié)構端口映射表”;以及請求更新指定直接參與切換的FE之一的多播條目)。
8)無論FE#x何時接收到SWITCHOVER_ADVERTISE(x,w),F(xiàn)E#x都執(zhí)行一定的動作(步驟550)。
圖5B圖示了這些動作的流程圖
a)如果FE#x是未直接參與切換的FE(即,沒有接收到SWITCHOVER_INITIATE(x)消息的FE)(步驟570),則FE#x立即執(zhí)行所請求的更新(步驟575);b)如果FE#x是直接參與切換的FE(即,已經(jīng)接收到SWITCHOVER_INITIATE(x)消息的FE)(步驟570)并且FE#x先前已經(jīng)向RP發(fā)送了FE_REPRPGRAM_COMPLETE(x)消息(步驟580),則FE#x立即執(zhí)行所請求的更新(步驟585);c)如果FE#x是直接參與切換的FE(即,已經(jīng)接收到SWITCHOVER_INITIATE(x)消息的FE)(步驟570)并且FE#x尚未發(fā)送FE_REPRPGRAM_COMPLETE(x)消息(例如,該FE是單配置組的成員,因此由于對硬件表實際上進行重編程所花的時間,將花費較長的時間來切換)(步驟580),則FE#x只將SWITCHOVER_ADVERTISE(x,w)消息加入隊列(步驟590),用于隨后處理(在FE#x最終發(fā)送了其FE_REPRPGRAM_COMPLETE(x)消息之后)。
應該注意,F(xiàn)E#x要進行的更新通常包括如下幾項。首先,F(xiàn)E#x針對消息中所指示的FE參數(shù)(即,可能是FE#(w-1)或FE#(w+1)),將“交換結(jié)構端口映射表”條目更新為FE#w。本質(zhì)上,當FE參數(shù)是(w-1)時,地址是FE#(w-1)的交換結(jié)構端口的條目現(xiàn)在被更新為包括FE#w的交換結(jié)構端口的值。其次,如果對任何FE#w,這是所處理的第一個SWITCHOVER_ADVERTISE(x,w)消息,則FE#x更新包括任何直接參與切換的FE的多播條目,就如消息的參數(shù)所指示的那樣。
9)當FE#x完成SWITCHOVER_ADVERTISE(x,w)消息所請求的更新時,該FE#x向RP回復ADVERTISE_COMPLETED(x,w)消息。作為示例,F(xiàn)E#7向RP發(fā)送ADVERTISE_COMPLETED(7,3)消息,指示該消息來自FE#7,并且由RP所請求的涉及FE#3的更新已經(jīng)完成。
10)對于RP從FE#w接收到的指示涉及FE#x的更新已經(jīng)完成的每個ADVERTISE_COMPLETE(w,x)消息(步驟555),RP向FE#x發(fā)送REMOVE_FLOW_CONTROL(x,w)消息(步驟560),請求去除FE#w的流控制。
11)當FE#x接收到請求去除FE#w的流控制的REMOVE_FLOW_CONTROL(x,w)消息時,F(xiàn)E#x去除向FE#w的強制單播和多播流控制(步驟565)。
結(jié)果,F(xiàn)E#x又開始處理從FE#w去往FE#x的流量,并且當每個其他FE完成其它們的切換時(如果它們是直接參與切換的FE的話),或者當它們只更新其表中的條目時(如果它們是未直接參與切換的FE的話),在FE#x的出轉(zhuǎn)發(fā)引擎(OFE)上重新開始處理來自這些FE的流量。
圖6圖示了RP和正在經(jīng)歷切換的單個FE之間的基本切換協(xié)議。如先前更詳細地描述一樣,RP首先向FE發(fā)送SWITCHOVER_INITIATE(x)消息600,以在FE中發(fā)起切換操作。一旦FE的重編程完成,則FE以FE_REPRPGRAM_COMPLETE(X)消息610做出響應。然后RP發(fā)送出SWITCHOVER_ADVERTISE(X,X)消息620,以請求FE更新各種硬件配置信息。然后一旦FE完成RP所請求的更新,就發(fā)送ADVERTISE_COMPLETE(X,X)消息630。然后RP發(fā)送REMOVE_FLOW_CONTROL(X,X)消息640,以請求去除系統(tǒng)中該FE和其他FE之間的流控制。
應該注意,當機架中有多個FE時,RP向所有FE發(fā)送“SWITCHOVER ADVERTISE”消息,最終請求來自每個FE的“ADVERTISE COMPLETE”響應。一旦接收到“ADVERTISECOMPLETE”響應,RP就向剛完成切換的FE發(fā)送針對以“ADVERTISECOMPLETE”做出響應的每個FE的“REMOVE FLOW CONTROL”消息。因此,為了示出基本的協(xié)議,該圖中刪去了與多個FE相關的大多數(shù)復雜度。
圖7圖示了RP和三個不同F(xiàn)E之間的交互作用,其中一個FE由于是單配置FE所以切換較慢(稱為FE#X),另一FE由于具有雙配置所以切換較快(稱為FE#Y),而另一個FE非參與FE(稱為FE#Z)。該圖有助于理解如何經(jīng)由“SWITCHOVER ADVERTISE”消息將每個切換傳送到其他FE。圖7還示出了“快速切換”FE在“慢速切換”FE完成其切換之前完成自身切換的方式。實際上,每個FE獨立于其他FE而進行切換,而同時使其他FE得知其進度。圖7中代表消息的每條線的圓點端表示該消息的發(fā)信方。圖7中代表消息的每條線的箭頭端表示該消息的接收方。
該過程開始于RP向FE#X發(fā)送SWITCHOVER_INITIATE(X)消息700,并向FE#Y發(fā)送SWITCHOVER_INITIATE(Y)消息705。但是不向FE#Z發(fā)送這種消息,因為其并不參與該切換。一旦完成對入口相關的硬件表的重編程(對于FE#X,這要快于FE#Y完成),則FE#X以FE_REPRPGRAM_COMPLETE(X)消息710做出響應。然后RP向FE#X發(fā)送SWITCHOVER_ADVERTISE(X,X)消息715,向FE#Y發(fā)送SWITCHOVER_ADVERTISE(Y,X)消息720,并向FE#Z發(fā)送SWITCHOVER_ADVERTISE(Z,X)消息725,以向這些FE通知FE#X已經(jīng)完成其切換。然后FE#X以ADVERTISE_COMPLETE(X,X)消息730做出應答,指示FE#X已經(jīng)完成RP所要求的更新。然后FE#Z以ADVERTISE_COMPLETE(Z,X)消息735做出應答,指示FE#Z也完成了RP所要求的更新。FE#X和FE#Z已經(jīng)完成了這些更新,則RP現(xiàn)在向FE#X發(fā)送REMOVE_FLOW_CONTROL(X,X)消息740,并向FE#Z發(fā)送REMOVE_FLOW_CONTROL(X,Z)消息745,以從FE#X和FE#Z去除到FE#X的流控制。
FE#Y現(xiàn)在響應于RP已經(jīng)發(fā)送的SWITCHOVER_INITIATE(Y)消息705,向RP發(fā)送FE_REPRPGRAM_COMPLETE(Y)消息750,指示完成了對FE#Y的入口相關硬件表的重編程。FE#Y現(xiàn)在還響應于RP發(fā)送的SWITCHOVER_ADVERTISE(Y,X)消息720,向RP發(fā)送ADVERTISE_COMPLETE(Y,X)消息755。RP以REMOVE_FLOW_CONTROL(X,Y)消息760響應于該消息,指示FE#Y應該去除對FE#X的流控制。RP還向FE#X發(fā)送SWITCHOVER_ADVERTISE(X,Y)消息765,向FE#Y發(fā)送SWITCHOVER_ADVERTISE(Y,Y)消息770,并向FE#Z發(fā)送SWITCHOVER_ADVERTISE(Z,Y)消息775,指示各個FE應該執(zhí)行所請求的更新。FE#Y以ADVERTISE_COMPLETE(Y,Y)消息780做出響應,指示FE#Y已經(jīng)完成所請求的更新。然后RP以REMOVE_FLOW_CONTROL(Y,Y)消息785做出響應,以使FE#Y從其自身流去除流控制。FE#X現(xiàn)在以ADVERTISE_COMPLETE(X,Y)消息790響應于RP發(fā)送的SWITCHOVER_ADVERTISE(X,Y)消息765。然后RP通過向FE#Y發(fā)送REMOVE_FLOW_CONTROL(Y,X)消息792,來指示FE#Y應該去除流控制。FE#Z現(xiàn)在通過向RP發(fā)送ADVERTISE_COMPLETE(Z,Y)消息794,以響應RP發(fā)送的SWITCHOVER_ADVERTISE(Z,Y)消息775。RP通過向FE#Y發(fā)送REMOVE_FLOW_CONTROL(Y,Z)796消息做出響應,以去除流控制。
根據(jù)本發(fā)明的方法和系統(tǒng)提供了眾多優(yōu)點。使用這種方法和系統(tǒng)的網(wǎng)絡元件體系結(jié)構在FE發(fā)生故障時能迅速、高效地恢復服務。這種“基于個體的切換”技術通過單獨處理每個轉(zhuǎn)發(fā)引擎,對適當信息的復制一完成就執(zhí)行切換并使網(wǎng)絡元件恢復服務,而不需要等待一組轉(zhuǎn)發(fā)引擎完成其各自的切換,獲得了這種優(yōu)點。這種基于個體的切換技術還可以將入路徑的切換與出路徑的切換相分離。這種方法允許給定轉(zhuǎn)發(fā)引擎的入轉(zhuǎn)發(fā)路徑恢復服務,而該轉(zhuǎn)發(fā)引擎的出路徑還在經(jīng)歷切換。這允許轉(zhuǎn)發(fā)引擎的入路徑向其他轉(zhuǎn)發(fā)引擎(它們的出路徑已經(jīng)完成切換,或者它們沒有參與切換)轉(zhuǎn)發(fā)分組,從而減少了恢復服務的時間。
雖然示出并描述了本發(fā)明的具體實施例,但是本領域的技術人員應該清楚,基于這里的教導,可以做出改變和修改,而不脫離本發(fā)明及其更廣的方面,因此,所附權利要求是要在其范圍之內(nèi)包括處于本發(fā)明的真正精神和范圍之內(nèi)的所有這些改變和修改。另外,還應理解,本發(fā)明只由所附權利要求規(guī)定。
權利要求
1.一種方法,包括接收轉(zhuǎn)發(fā)引擎應該執(zhí)行切換操作的指示;和響應于所述接收所述指示的步驟,執(zhí)行所述切換操作,其中所述切換操作包括在第一接口卡和第二接口卡之間切換所述轉(zhuǎn)發(fā)引擎的耦合,獨立于另一切換操作執(zhí)行所述切換操作,并且由另一轉(zhuǎn)發(fā)引擎執(zhí)行所述另一切換操作。
2.如權利要求1所述的方法,其中所述執(zhí)行所述切換操作的步驟包括重編程所述轉(zhuǎn)發(fā)引擎的入口路徑;和重編程所述轉(zhuǎn)發(fā)引擎的出口路徑。
3.如權利要求2所述的方法,其中所述對所述轉(zhuǎn)發(fā)引擎的所述入口路徑進行重編程的步驟與所述對所述轉(zhuǎn)發(fā)引擎的所述出口路徑進行重編程的步驟彼此獨立。
4.如權利要求1所述的方法,還包括指示所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作。
5.如權利要求4所述的方法,還包括接收所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作的所述指示;和對所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作的所述指示作出確認。
6.如權利要求5所述的方法,其中所述轉(zhuǎn)發(fā)引擎是多個轉(zhuǎn)發(fā)引擎之一,并且每個所述轉(zhuǎn)發(fā)引擎都接收所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作的所述指示。
7.如權利要求6所述的方法,還包括確認所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作。
8.如權利要求4所述的方法,還包括確認所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作。
9.如權利要求8所述的方法,還包括去除所述轉(zhuǎn)發(fā)引擎和執(zhí)行所述確認的轉(zhuǎn)發(fā)引擎之間的流控制。
10.如權利要求9所述的方法,其中,只在執(zhí)行所述確認的所述轉(zhuǎn)發(fā)引擎執(zhí)行所述確認之后,才執(zhí)行所述去除所述流控制的步驟。
11.一種計算機程序產(chǎn)品,包括可在計算機系統(tǒng)上執(zhí)行的第一組指令,被配置為接收所述轉(zhuǎn)發(fā)引擎應該執(zhí)行切換操作的指示;可在所述計算機系統(tǒng)上執(zhí)行的第二組指令,被配置為響應于所述指示來執(zhí)行所述切換操作,其中被配置為使所述處理器執(zhí)行所述切換操作的所述計算機代碼還被配置為在第一接口卡和第二接口卡之間切換所述轉(zhuǎn)發(fā)引擎的耦合,獨立于另一切換操作執(zhí)行所述切換操作,并且由另一轉(zhuǎn)發(fā)引擎執(zhí)行所述另一切換操作;以及計算機可讀介質(zhì),其中所述計算機程序產(chǎn)品被編碼在所述計算機可讀介質(zhì)中。
12.如權利要求11所述的計算機程序產(chǎn)品,其中所述第二組指令包括可在所述計算機系統(tǒng)上執(zhí)行的第一子集指令,被配置為重編程所述轉(zhuǎn)發(fā)引擎的入口路徑;和可在所述計算機系統(tǒng)上執(zhí)行的第二子集指令,被配置為重編程所述轉(zhuǎn)發(fā)引擎的出口路徑。
13.如權利要求12所述的計算機程序產(chǎn)品,其中所述入口路徑和所述出口路徑被配置為彼此獨立地被重編程。
14.如權利要求11所述的計算機程序產(chǎn)品,還包括可在所述計算機系統(tǒng)上執(zhí)行的第三組指令,被配置為其中所述入口路徑和所述出口路徑被配置為彼此獨立地被重編程。
15.如權利要求14所述的計算機程序產(chǎn)品,還包括可在所述計算機系統(tǒng)上執(zhí)行的第四組指令,被配置為接收所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作的所述指示;和可在所述計算機系統(tǒng)上執(zhí)行的第五組指令,被配置為對所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作的所述指示作出確認。
16.一種設備,包括用于接收轉(zhuǎn)發(fā)引擎應該執(zhí)行切換操作的指示的裝置;和用于執(zhí)行所述切換操作的裝置,其中用于執(zhí)行所述切換操作的所述裝置耦合到用于接收所述指示的所述裝置,所述切換操作包括在第一接口卡和第二接口卡之間切換所述轉(zhuǎn)發(fā)引擎的耦合,獨立于另一切換操作執(zhí)行所述切換操作,并且由另一轉(zhuǎn)發(fā)引擎執(zhí)行所述另一切換操作。
17.如權利要求16所述的設備,其中所述轉(zhuǎn)發(fā)引擎包括入口路徑和出口路徑,并且用于執(zhí)行所述切換操作的所述裝置包括用于重編程所述入口路徑的裝置;和用于重編程所述出口路徑的裝置。
18.如權利要求17所述的設備,其中用于重編程所述入口路徑的所述裝置和用于重編程所述出口路徑的所述裝置彼此獨立工作。
19.如權利要求16所述的設備,還包括用于指示所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作的裝置。
20.如權利要求19所述的設備,還包括用于接收所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作的所述指示的裝置;和用于對所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作的所述指示作出確認的裝置。
21.如權利要求20所述的設備,其中所述轉(zhuǎn)發(fā)引擎是多個轉(zhuǎn)發(fā)引擎之一,并且每個所述轉(zhuǎn)發(fā)引擎都被配置為接收所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作的所述指示。
22.如權利要求19所述的設備,還包括用于確認所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作的裝置。
23.一種方法,包括接收轉(zhuǎn)發(fā)引擎已經(jīng)完成切換操作的指示,其中在多個轉(zhuǎn)發(fā)引擎之一處接收所述指示,并且所述多個轉(zhuǎn)發(fā)引擎包括所述轉(zhuǎn)發(fā)引擎;和響應于接收到所述指示的所述接收步驟,使所述多個轉(zhuǎn)發(fā)引擎中的所述一個轉(zhuǎn)發(fā)引擎確認所述指示,其中所述指示指出所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作。
24.如權利要求23所述的方法,還包括去除所述轉(zhuǎn)發(fā)引擎和所述多個轉(zhuǎn)發(fā)引擎中的所述一個轉(zhuǎn)發(fā)引擎之間的流控制。
25.如權利要求24所述的方法,其中所述去除所述流控制的步驟包括接收所述轉(zhuǎn)發(fā)引擎應該去除所述流控制的指示;和響應于所述轉(zhuǎn)發(fā)引擎應該去除所述流控制的所述指示,使所述轉(zhuǎn)發(fā)引擎去除所述流控制。
26.如權利要求25所述的方法,其中所述轉(zhuǎn)發(fā)引擎應該去除所述流控制的所述指示是接收到去除流控制消息。
27.如權利要求24所述的方法,其中只在所述多個轉(zhuǎn)發(fā)引擎中的所述一個轉(zhuǎn)發(fā)引擎對接收到所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作的所述指示的所述接收作出確認之后,才執(zhí)行所述去除所述流控制的步驟。
28.一種設備,包括用于接收轉(zhuǎn)發(fā)引擎已經(jīng)完成切換操作的指示的裝置,其中在多個轉(zhuǎn)發(fā)引擎之一處接收所述指示,并且所述多個轉(zhuǎn)發(fā)引擎包括所述轉(zhuǎn)發(fā)引擎;和用于響應于接收到所述指示的所述接收步驟,使所述多個轉(zhuǎn)發(fā)引擎中的所述一個轉(zhuǎn)發(fā)引擎確認所述指示的裝置,其中所述指示指出所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作。
29.如權利要求28所述的設備,還包括用于去除所述轉(zhuǎn)發(fā)引擎和所述多個轉(zhuǎn)發(fā)引擎中的所述一個轉(zhuǎn)發(fā)引擎之間的流控制的裝置。
30.如權利要求29所述的設備,其中所述去除所述流控制的步驟包括用于接收所述轉(zhuǎn)發(fā)引擎應該去除所述流控制的指示的裝置;和用于響應于所述轉(zhuǎn)發(fā)引擎應該去除所述流控制的所述指示,使所述轉(zhuǎn)發(fā)引擎去除所述流控制的裝置。
31.如權利要求30所述的設備,其中所述轉(zhuǎn)發(fā)引擎應該去除所述流控制的所述指示是接收到去除流控制消息。
32.如權利要求29所述的設備,其中只在所述多個轉(zhuǎn)發(fā)引擎中的所述一個轉(zhuǎn)發(fā)引擎對接收到所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作的所述指令的所述接收作出確認之后,所述用于去除流控制的裝置才去除所述流控制。
33.一種網(wǎng)絡元件中的故障恢復方法,所述方法包括向多個轉(zhuǎn)發(fā)引擎指示轉(zhuǎn)發(fā)引擎已經(jīng)完成切換操作;和響應于所述指示,使所述多個轉(zhuǎn)發(fā)引擎中的至少一個轉(zhuǎn)發(fā)引擎確認所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作。
34.如權利要求33所述的方法,其中所述指示步驟包括從路由處理器向所述轉(zhuǎn)發(fā)引擎發(fā)送第一消息,其中所述網(wǎng)絡元件包括通信耦合到所述轉(zhuǎn)發(fā)引擎的所述路由處理器,并且所述第一消息指示所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作;和所述使確認的步驟包括從所述多個轉(zhuǎn)發(fā)引擎中的所述至少一個轉(zhuǎn)發(fā)引擎向所述路由處理器發(fā)送第二消息,其中所述第二消息指示所述多個轉(zhuǎn)發(fā)引擎中的所述至少一個轉(zhuǎn)發(fā)引擎確認所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作。
35.如權利要求34所述的方法,其中所述第一消息是切換廣告消息。
36.如權利要求35所述的方法,其中所述第二消息是廣告完成消息。
37.如權利要求34所述的方法,其中所述轉(zhuǎn)發(fā)引擎是所述多個轉(zhuǎn)發(fā)引擎之一。
38.如權利要求34所述的方法,還包括使所述轉(zhuǎn)發(fā)引擎執(zhí)行所述切換操作。
39.如權利要求38所述的方法,其中所述使所述轉(zhuǎn)發(fā)引擎執(zhí)行所述切換操作的步驟包括從所述路由處理器向所述轉(zhuǎn)發(fā)引擎發(fā)送第三消息,其中所述第三消息指示所述轉(zhuǎn)發(fā)引擎應該執(zhí)行所述切換操作;和響應于所述第一消息使所述轉(zhuǎn)發(fā)引擎執(zhí)行所述切換操作。
40.如權利要求39所述的方法,其中所述第三消息是切換發(fā)起消息。
41.如權利要求39所述的方法,其中所述使所述轉(zhuǎn)發(fā)引擎執(zhí)行所述切換操作的步驟還包括從所述轉(zhuǎn)發(fā)引擎向所述路由處理器發(fā)送第四消息,其中所述第四消息向所述路由處理器指示所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作。
42.如權利要求41所述的方法,其中所述第四消息是FE重編程完成消息。
43.如權利要求38所述的方法,其中所述切換操作包括重編程所述轉(zhuǎn)發(fā)引擎。
44.如權利要求43所述的方法,其中所述重編程所述轉(zhuǎn)發(fā)引擎的步驟包括重編程所述轉(zhuǎn)發(fā)引擎的入口路徑;和重編程所述轉(zhuǎn)發(fā)引擎的出口路徑。
45.如權利要求34所述的方法,還包括去除所述轉(zhuǎn)發(fā)引擎和所述多個轉(zhuǎn)發(fā)引擎中至少一個轉(zhuǎn)發(fā)引擎之間的流控制。
46.如權利要求45所述的方法,其中所述去除所述流控制的步驟包括從所述路由處理器向所述轉(zhuǎn)發(fā)引擎發(fā)送第五消息,其中所述第五消息指示所述轉(zhuǎn)發(fā)引擎應該去除所述流控制;和響應于所述第五消息,使所述轉(zhuǎn)發(fā)引擎去除所述流控制。
47.如權利要求46所述的方法,其中所述第五消息是去除流控制消息。
48.如權利要求45所述的方法,其中只在所述多個轉(zhuǎn)發(fā)引擎中的所述至少一個轉(zhuǎn)發(fā)引擎確認所述轉(zhuǎn)發(fā)引擎已經(jīng)完成所述切換操作之后,才執(zhí)行所述去除流控制的步驟。
49.一種轉(zhuǎn)發(fā)引擎,包括入口路徑;出口路徑;和控制器,其中所述入口路徑和所述出口路徑彼此獨立,并且所述控制器被耦合以獨立地控制所述入口路徑和所述出口路徑。
50.如權利要求49所述的轉(zhuǎn)發(fā)引擎,其中所述轉(zhuǎn)發(fā)引擎能夠擔當主轉(zhuǎn)發(fā)引擎和備用轉(zhuǎn)發(fā)引擎之一。
51.如權利要求49所述的轉(zhuǎn)發(fā)引擎,其中所述入口路徑包括入站處理元件,并且所述出口路徑包括出站處理元件。
52.如權利要求51所述的轉(zhuǎn)發(fā)引擎,其中所述入口路徑還包括耦合到所述入站處理元件的入站選擇器,并且所述出口路徑還包括耦合到所述出站處理元件的出站選擇器。
53.如權利要求52所述的轉(zhuǎn)發(fā)引擎,其中所述入站選擇器被配置為將所述入站處理元件耦合到第一接口單元和第二接口單元之一,并且所述出站選擇器被配置為將所述出站處理元件耦合到所述第一接口單元和所述第二接口單元之一。
54.如權利要求51所述的轉(zhuǎn)發(fā)引擎,其中所述入站處理元件包括第一緩存存儲器,并且所述出站處理元件包括第二緩存存儲器。
55.如權利要求54所述的轉(zhuǎn)發(fā)引擎,其中所述轉(zhuǎn)發(fā)引擎被配置為將第一配置信息存儲在所述第一緩存中,并將第二配置信息存儲在所述第二緩存中,并且所述第一配置信息和所述第二配置信息代表所述轉(zhuǎn)發(fā)引擎的第一配置。
56.如權利要求55所述的轉(zhuǎn)發(fā)引擎,其中所述轉(zhuǎn)發(fā)引擎還被配置為將第三配置信息存儲在所述第一緩存中,并將第四配置信息存儲在所述第二緩存中,并且所述第三配置信息和所述第四配置信息代表所述轉(zhuǎn)發(fā)引擎的第二配置。
57.如權利要求56所述的轉(zhuǎn)發(fā)引擎,其中所述轉(zhuǎn)發(fā)引擎通過被配置為使用存儲在所述第一緩存中的所述第三配置信息并使用存儲在所述第二緩存中的所述第四配置信息,被配置為在所述轉(zhuǎn)發(fā)引擎的所述第一配置和所述轉(zhuǎn)發(fā)引擎的所述第二配置之間切換。
58.如權利要求55所述的轉(zhuǎn)發(fā)引擎,還包括耦合到所述控制器的存儲器。
59.如權利要求58所述的轉(zhuǎn)發(fā)引擎,其中所述控制器被配置為在所述存儲器中存儲第三配置信息和第四配置信息,并且所述第三配置信息和所述第三配置信息代表所述轉(zhuǎn)發(fā)引擎的第二配置。
60.如權利要求59所述的轉(zhuǎn)發(fā)引擎,其中所述轉(zhuǎn)發(fā)引擎通過被配置為從所述存儲器將所述第三配置信息復制到所述第一緩存并從所述存儲器將所述第四配置信息復制到所述第二緩存,被配置為在所述轉(zhuǎn)發(fā)引擎的所述第一配置和所述轉(zhuǎn)發(fā)引擎的所述第二配置之間切換。
全文摘要
本發(fā)明公開了一種網(wǎng)絡元件(100)中的故障恢復方法。該方法包括向眾多轉(zhuǎn)發(fā)引擎(120(1)~(N+1))指示某一轉(zhuǎn)發(fā)引擎已經(jīng)完成切換操作,并響應于該指示,使這多個轉(zhuǎn)發(fā)引擎(120(1)~(N+1))中至少一個確認所述轉(zhuǎn)發(fā)引擎已經(jīng)完成切換操作。
文檔編號H04L1/22GK1706160SQ200480001237
公開日2005年12月7日 申請日期2004年1月11日 優(yōu)先權日2003年1月13日
發(fā)明者馬庫斯·A·馬蘭奧, 邁克爾·羅伊·史密斯, 約翰·M·奈特, 魯希特·什里瓦斯塔瓦, 安娜·H·布爾蓋萊亞 申請人:思科技術公司