本發(fā)明的實(shí)施例涉及以太網(wǎng)網(wǎng)絡(luò)中的幀轉(zhuǎn)發(fā)領(lǐng)域。更具體來(lái)說(shuō),本發(fā)明的實(shí)施例涉及用于在支持最短路徑橋接(spb)協(xié)議的實(shí)現(xiàn)的以太網(wǎng)網(wǎng)絡(luò)中增強(qiáng)具有循環(huán)抑制的連通性的彈性的方法和系統(tǒng)。
背景技術(shù):
當(dāng)今以太網(wǎng)是局域網(wǎng)(lan)的主導(dǎo)計(jì)算機(jī)連網(wǎng)技術(shù)。隨著以太網(wǎng)在企業(yè)、運(yùn)營(yíng)商和云服務(wù)提供商之中廣受歡迎,以太網(wǎng)架構(gòu)將lan段從僅實(shí)現(xiàn)為無(wú)源共享介質(zhì)轉(zhuǎn)變成實(shí)現(xiàn)為主動(dòng)切換網(wǎng)絡(luò)。在以太網(wǎng)的主動(dòng)切換網(wǎng)絡(luò)中,彈性無(wú)循環(huán)幀轉(zhuǎn)發(fā)對(duì)有效數(shù)據(jù)通信是不可缺少的,以及最短路徑橋接(spb))協(xié)議是已經(jīng)標(biāo)準(zhǔn)化的以太網(wǎng)連網(wǎng)中的最新演進(jìn)的一步。在2012年3月29日,電氣和電子工程師協(xié)會(huì)審議委員會(huì)(ieeerevcom)批準(zhǔn)了spb協(xié)議的802.1aq標(biāo)準(zhǔn)。
spb引入到以太網(wǎng)的鏈路狀態(tài)路由選擇,以取代作為快速生成樹(shù)協(xié)議(rstp,標(biāo)準(zhǔn)化為ieee802.1d)的基礎(chǔ)的距離向量,并且使用邊緣根最短路徑樹(shù)的多個(gè)集合來(lái)代替單個(gè)或少量生成樹(shù)。spb網(wǎng)絡(luò)中的節(jié)點(diǎn)保持最短路徑樹(shù)集合,使得節(jié)點(diǎn)知道如何將幀轉(zhuǎn)發(fā)到網(wǎng)絡(luò)中的其它節(jié)點(diǎn)。根據(jù)定義,以太網(wǎng)節(jié)點(diǎn)不在幀轉(zhuǎn)發(fā)中將幀轉(zhuǎn)發(fā)回到達(dá)端口(有時(shí)稱(chēng)作“反向毒性”),以避免轉(zhuǎn)發(fā)循環(huán)。但是轉(zhuǎn)發(fā)循環(huán)仍然可在啟用了反向毒性的spb網(wǎng)絡(luò)中發(fā)生。例如,轉(zhuǎn)發(fā)循環(huán)可在距離反演時(shí)發(fā)生。距離反演的最簡(jiǎn)單形式是當(dāng)兩個(gè)節(jié)點(diǎn)各認(rèn)為另一個(gè)更接近目標(biāo)節(jié)點(diǎn)、因而預(yù)計(jì)送往目標(biāo)節(jié)點(diǎn)的幀將在兩個(gè)節(jié)點(diǎn)之間來(lái)回轉(zhuǎn)發(fā)時(shí)。毒性反向表示這種循環(huán)不能在以太網(wǎng)中發(fā)生,但是通過(guò)缺乏創(chuàng)建距離反演情形的多個(gè)交換機(jī)的同步所引起的循環(huán)顯然能夠發(fā)生。
轉(zhuǎn)發(fā)循環(huán)引起對(duì)網(wǎng)絡(luò)帶寬的慢性流失。更壞的情況是,對(duì)于多播幀轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)循環(huán)能夠是災(zāi)難性的,特別是在循環(huán)反饋到另一個(gè)循環(huán)中時(shí),從而引起網(wǎng)絡(luò)中消耗的帶寬的指數(shù)增加,并且引起近瞬時(shí)的網(wǎng)絡(luò)“崩潰”。由于這個(gè)和其它原因,循環(huán)預(yù)防對(duì)spb網(wǎng)絡(luò)是至關(guān)重要的。
如所規(guī)定的最短路徑橋接采用反向路徑轉(zhuǎn)發(fā)檢查(rpfc,其在ieee802.1aq中稱(chēng)作入口檢查)來(lái)擴(kuò)大。入口檢查(又稱(chēng)作入口檢查或源地址查找)檢查給定以太網(wǎng)幀的源mac地址與那個(gè)地址的預(yù)計(jì)到達(dá)端口。如果存在差異,則丟棄該幀。這增加對(duì)循環(huán)抑制的健壯性,但不是授權(quán)的,因此采用控制平面握手來(lái)擴(kuò)大,以在沒(méi)有同步多個(gè)交換機(jī)時(shí)專(zhuān)門(mén)防止循環(huán)。rpfc的嚴(yán)格性所添加的是當(dāng)節(jié)點(diǎn)不能“盲”利用到給定目標(biāo)的預(yù)備轉(zhuǎn)發(fā)路徑時(shí)的限制彈性選項(xiàng),因?yàn)橥ㄟ^(guò)rpfc,只有來(lái)自源的一個(gè)路徑在任何給定主干虛擬lan標(biāo)識(shí)符(b-vid)中被任何給定節(jié)點(diǎn)所準(zhǔn)許。所期望的是具有802.1aq的循環(huán)抑制的更寬松形式,使得在故障情形中,可利用到無(wú)循環(huán)預(yù)備路徑的快速本地切換。
技術(shù)實(shí)現(xiàn)要素:
公開(kāi)一種在支持最短路徑橋接(spb)協(xié)議的網(wǎng)絡(luò)中的節(jié)點(diǎn)的轉(zhuǎn)發(fā)以太網(wǎng)幀的方法。該節(jié)點(diǎn)包含過(guò)濾數(shù)據(jù)庫(kù)(fdb)以指導(dǎo)以太網(wǎng)幀轉(zhuǎn)發(fā),以及fdb更新在任一個(gè)節(jié)點(diǎn)初始化或者網(wǎng)絡(luò)的拓?fù)渥兓瘯r(shí)通過(guò)該節(jié)點(diǎn)與一個(gè)或多個(gè)相鄰節(jié)點(diǎn)之間的摘要交換來(lái)協(xié)調(diào)。該方法開(kāi)始于由節(jié)點(diǎn)(稱(chēng)作計(jì)算節(jié)點(diǎn))進(jìn)行的最短路徑計(jì)算。最短路徑計(jì)算如802.1aq中所規(guī)定來(lái)選擇到網(wǎng)絡(luò)中的各目標(biāo)節(jié)點(diǎn)的一個(gè)最短路徑,其中記錄到達(dá)各節(jié)點(diǎn)的最短路徑上的相鄰節(jié)點(diǎn)。它然后計(jì)算目標(biāo)節(jié)點(diǎn)的下游無(wú)循環(huán)預(yù)備(lfa)節(jié)點(diǎn)(若存在的話(huà)),其中l(wèi)fa節(jié)點(diǎn)在計(jì)算節(jié)點(diǎn)下游,但是不在從計(jì)算節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的所選最短路徑上,以及計(jì)算節(jié)點(diǎn)具有與lfa節(jié)點(diǎn)的現(xiàn)有數(shù)據(jù)庫(kù)摘要協(xié)定,使得通過(guò)lfa節(jié)點(diǎn)從計(jì)算節(jié)點(diǎn)向目標(biāo)節(jié)點(diǎn)轉(zhuǎn)發(fā)以太網(wǎng)幀已知為不會(huì)引起轉(zhuǎn)發(fā)循環(huán)。在下游表示lfa節(jié)點(diǎn)比計(jì)算節(jié)點(diǎn)更接近目標(biāo)節(jié)點(diǎn),以及摘要協(xié)定的存在表示兩個(gè)節(jié)點(diǎn)均商定其相對(duì)目標(biāo)的相對(duì)位置。因此,在到所計(jì)算最短路徑上的相鄰節(jié)點(diǎn)的連通性因鏈路或節(jié)點(diǎn)故障而被檢測(cè)為處于異常狀態(tài)時(shí),節(jié)點(diǎn)則可通過(guò)具有關(guān)于將不會(huì)形成循環(huán)的置信度的lfa節(jié)點(diǎn)來(lái)轉(zhuǎn)發(fā)與最短路徑并且與對(duì)應(yīng)于目標(biāo)節(jié)點(diǎn)的目標(biāo)介質(zhì)訪問(wèn)控制(mac)地址關(guān)聯(lián)的主干-vid(b-vid)的任何單播以太網(wǎng)幀。
要使這種技術(shù)進(jìn)行工作,當(dāng)前規(guī)定的rpfc(又稱(chēng)作入口檢查)必須修改成在沒(méi)有丟棄基于rpfc的幀的情況下準(zhǔn)許使用無(wú)循環(huán)預(yù)備。這通過(guò)僅放寬單播幀的rpfc來(lái)實(shí)現(xiàn)。該方法開(kāi)始于確定來(lái)自節(jié)點(diǎn)的端口(以太網(wǎng)幀的“接收端口”)的所接收以太網(wǎng)幀是多播幀。如果所接收以太網(wǎng)幀是多播幀,則該方法確定在fdb中,以太網(wǎng)幀的源mac地址或vid是否具有匹配mac地址或匹配vid。如果存在匹配,則處理所確定的多播以太網(wǎng)幀供幀轉(zhuǎn)發(fā),否則將它丟棄。如果確定所接收幀不是多播幀,則發(fā)送所接收幀,以用于預(yù)備入口檢查處理。
單播的rpfc的嚴(yán)格性的放寬的技術(shù)增加多個(gè)故障情形中的單播循環(huán)形成的可能性。采取容許端口映射的形式供具有給定目標(biāo)mac地址的幀的接收附加過(guò)濾可使其更為健壯(注意,這與幀中的vid無(wú)關(guān),因?yàn)榭偼負(fù)涫撬衯id共同的,但是這對(duì)多拓?fù)鋾?huì)需要重新考慮,從而每拓?fù)鋵?shí)例需要不同的容許端口映射)。容許端口映射基于與映射中的可接受端口關(guān)聯(lián)的、計(jì)算節(jié)點(diǎn)上游的節(jié)點(diǎn)以及當(dāng)前存在的與那個(gè)節(jié)點(diǎn)的摘要協(xié)定的確定來(lái)編程。在網(wǎng)絡(luò)中的故障時(shí),存在準(zhǔn)許端口映射的削減的規(guī)則,以去除其循環(huán)的風(fēng)險(xiǎn)變成不可接受的候選上游節(jié)點(diǎn)。
公開(kāi)一種配置為支持spb協(xié)議的實(shí)現(xiàn)的網(wǎng)絡(luò)中的節(jié)點(diǎn)的網(wǎng)絡(luò)裝置。網(wǎng)絡(luò)裝置包括幀處理器。幀處理器包括路徑計(jì)算處理器,其配置成選擇到網(wǎng)絡(luò)中的各目標(biāo)節(jié)點(diǎn)的一個(gè)最短路徑,該路徑計(jì)算處理器還配置成計(jì)算目標(biāo)節(jié)點(diǎn)的無(wú)循環(huán)預(yù)備(lfa)節(jié)點(diǎn),lfa節(jié)點(diǎn)在網(wǎng)絡(luò)裝置下游但是不在從網(wǎng)絡(luò)裝置到目標(biāo)節(jié)點(diǎn)的所選最短路徑上,并且那個(gè)網(wǎng)絡(luò)裝置具有與lfa節(jié)點(diǎn)的現(xiàn)有數(shù)據(jù)庫(kù)摘要協(xié)定,使得通過(guò)lfa節(jié)點(diǎn)從網(wǎng)絡(luò)裝置向目標(biāo)節(jié)點(diǎn)轉(zhuǎn)發(fā)以太網(wǎng)幀已知為不會(huì)引起轉(zhuǎn)發(fā)循環(huán)。幀處理器包括:無(wú)循環(huán)備選(lfa)記錄,配置成記錄由路徑計(jì)算處理器對(duì)可接受lfa節(jié)點(diǎn)的確定;過(guò)濾數(shù)據(jù)庫(kù)(fdb),配置成包含端口到mac地址的多個(gè)映射;以及幀轉(zhuǎn)發(fā)處理器,配置成在到最短路徑上的相鄰節(jié)點(diǎn)的連通性被檢測(cè)為處于異常狀態(tài)時(shí),通過(guò)lfa節(jié)點(diǎn)轉(zhuǎn)發(fā)具有與目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的目標(biāo)介質(zhì)訪問(wèn)控制(mac)地址的以太網(wǎng)幀。網(wǎng)絡(luò)裝置還包括多播幀檢測(cè)器,其配置成確定所接收以太網(wǎng)幀是否為多播幀。如果所接收幀不是多播幀,則在沒(méi)有本領(lǐng)域已知的rpfc檢查但是具有稱(chēng)作預(yù)備入口檢查處理的預(yù)備過(guò)程的情況下將其轉(zhuǎn)發(fā)。如果所接收以太網(wǎng)幀是多播幀,則rpfc檢查如本領(lǐng)域已知那樣來(lái)執(zhí)行;多播幀檢測(cè)器還配置成檢查所接收以太網(wǎng)幀的源mac地址,以確定以太網(wǎng)幀的接收端口對(duì)應(yīng)于fdb中預(yù)計(jì)的端口(其也是發(fā)送送往mac地址的幀的端口)。多播幀檢測(cè)器響應(yīng)fdb中沒(méi)有找到接收端口的匹配mac地址的確定而丟棄所接收以太網(wǎng)幀。另外,網(wǎng)絡(luò)裝置包括連通性模塊,其配置成監(jiān)測(cè)節(jié)點(diǎn)與相鄰節(jié)點(diǎn)的連通性。
附圖說(shuō)明
通過(guò)附圖、作為示例而不是限制來(lái)說(shuō)明本發(fā)明,附圖中,相似的參考標(biāo)號(hào)表示相似的元件。應(yīng)當(dāng)注意,本公開(kāi)中的“一”、“一個(gè)”實(shí)施例的不同說(shuō)法不一定表示同一個(gè)實(shí)施例,并且這類(lèi)說(shuō)法表示至少一個(gè)。此外,在結(jié)合一個(gè)實(shí)施例來(lái)描述具體特征、結(jié)構(gòu)或特性時(shí),無(wú)論是否明確描述,均認(rèn)為結(jié)合其它實(shí)施例來(lái)實(shí)現(xiàn)這種特征、結(jié)構(gòu)或特性是在本領(lǐng)域的技術(shù)人員的知識(shí)范圍之內(nèi)的。
圖1a是示出支持最短路徑橋接(spb)協(xié)議的網(wǎng)絡(luò)配置的一個(gè)實(shí)施例的框圖。
圖1b是示出按照本發(fā)明的一個(gè)實(shí)施例的spb幀轉(zhuǎn)發(fā)的一個(gè)實(shí)施例的框圖。
圖2是示出spb網(wǎng)絡(luò)的一個(gè)實(shí)施例中的鏈路故障時(shí)的幀轉(zhuǎn)發(fā)的框圖。
圖3是示出按照本發(fā)明的一個(gè)實(shí)施例、實(shí)現(xiàn)單播無(wú)循環(huán)預(yù)備(lfa)的方法的框圖。
圖4是示出按照本發(fā)明的一個(gè)實(shí)施例、在局部修復(fù)點(diǎn)(plr)實(shí)現(xiàn)單播lfa的方法的流程圖。
圖5是示出按照本發(fā)明的一個(gè)實(shí)施例、在所選lfa節(jié)點(diǎn)實(shí)現(xiàn)單播lfa的方法的流程圖。
圖6是示出按照本發(fā)明的一個(gè)實(shí)施例、在所選lfa節(jié)點(diǎn)實(shí)現(xiàn)lfa的方法的流程圖。
圖7是示出按照本發(fā)明的一個(gè)實(shí)施例、在所選lfa節(jié)點(diǎn)選擇準(zhǔn)許端口集合的方法的流程圖。
圖8a是示出按照本發(fā)明的一個(gè)實(shí)施例、在所選lfa節(jié)點(diǎn)選擇準(zhǔn)許端口集合的另一種方法的框圖。
圖8b是示出按照本發(fā)明的一個(gè)實(shí)施例、在所選lfa節(jié)點(diǎn)的分割水平端口表的框圖。
圖9是示出按照本發(fā)明的一個(gè)實(shí)施例、在所選lfa節(jié)點(diǎn)的端口水平分割的創(chuàng)建的流程圖。
圖10是示出按照本發(fā)明的一個(gè)實(shí)施例、用作實(shí)現(xiàn)單播lfa的節(jié)點(diǎn)的網(wǎng)絡(luò)裝置的框圖。
具體實(shí)施方式
在以下描述中提出許多具體細(xì)節(jié)。但是要理解,即使沒(méi)有這些具體細(xì)節(jié)也可實(shí)施本發(fā)明的實(shí)施例。在其它情況下,沒(méi)有詳細(xì)示出眾所周知的電路、結(jié)構(gòu)和技術(shù),以免影響對(duì)本描述的了解。然而,本領(lǐng)域的技術(shù)人員將會(huì)理解,即使沒(méi)有這類(lèi)具體細(xì)節(jié),也可實(shí)施本發(fā)明。通過(guò)所包含的描述,本領(lǐng)域的技術(shù)人員將能夠?qū)崿F(xiàn)適當(dāng)?shù)墓δ苄远鵁o(wú)需過(guò)分實(shí)驗(yàn)。
說(shuō)明書(shū)中提到“一個(gè)實(shí)施例”、“一實(shí)施例”、“一示例實(shí)施例”等表示所述的實(shí)施例可包括特定特征、結(jié)構(gòu)或特性,但可能不一定每一個(gè)實(shí)施例都包括該特定特征、結(jié)構(gòu)或特性。此外,這類(lèi)詞語(yǔ)不一定指同一實(shí)施例。此外,在結(jié)合一實(shí)施例來(lái)描述特定特征、結(jié)構(gòu)或特性時(shí),無(wú)論是否明確描述,均認(rèn)為結(jié)合其它實(shí)施例來(lái)實(shí)現(xiàn)這種特征、結(jié)構(gòu)或特性是在本領(lǐng)域的技術(shù)人員的知識(shí)范圍之內(nèi)的。
在以下描述和權(quán)利要求書(shū)中,可使用術(shù)語(yǔ)“耦合”和“連接”及其派生。應(yīng)當(dāng)理解,這些術(shù)語(yǔ)并不是要作為彼此的同義詞。“耦合”用來(lái)表示彼此可以有或者可以沒(méi)有直接物理或電接觸的兩個(gè)或更多元件相互配合或交互?!斑B接”用來(lái)表示相互耦合的兩個(gè)或更多元件之間的通信的建立。
將參照?qǐng)D10的示范實(shí)施例來(lái)描述流程圖的操作。但是應(yīng)當(dāng)理解,流程圖的操作能夠通過(guò)除了參照?qǐng)D4-7和圖9所述實(shí)施例之外的本發(fā)明的實(shí)施例來(lái)執(zhí)行,并且參照?qǐng)D10所述的實(shí)施例能夠與參照?qǐng)D4-7和圖9的流程圖所述操作不同的操作。
如本文所使用的“網(wǎng)絡(luò)元件”(例如路由器、交換機(jī)和橋接器)是包括硬件和軟件的一臺(tái)連網(wǎng)設(shè)備,其在通信上互連網(wǎng)絡(luò)上的其它設(shè)備(例如其它網(wǎng)絡(luò)元件、端系統(tǒng))。一些網(wǎng)絡(luò)裝置是“多服務(wù)網(wǎng)絡(luò)裝置”,其提供對(duì)多個(gè)連網(wǎng)功能(例如路由選擇、橋接、vlan(虛擬lan)交換、第2層聚合、會(huì)話(huà)邊界控制、服務(wù)質(zhì)量和/或訂戶(hù)管理)的支持,和/或提供對(duì)多個(gè)應(yīng)用服務(wù)(例如數(shù)據(jù)、語(yǔ)音和視頻)的支持。訂戶(hù)端系統(tǒng)(例如服務(wù)器、工作站、膝上型、上網(wǎng)本、掌上型、移動(dòng)電話(huà)、智能電話(huà)、多媒體電話(huà)、基于因特網(wǎng)協(xié)議的語(yǔ)音(voip)電話(huà)、用戶(hù)設(shè)備、終端、便攜媒體播放器、gps單元、游戲系統(tǒng)、機(jī)頂盒)訪問(wèn)通過(guò)因特網(wǎng)所提供的內(nèi)容/服務(wù)和/或覆蓋于因特網(wǎng)的虛擬專(zhuān)用網(wǎng)絡(luò)(vpn)上(例如通過(guò)其中隧道傳遞)提供的內(nèi)容/服務(wù)。內(nèi)容和/或服務(wù)通常由屬于服務(wù)或內(nèi)容提供商的一個(gè)或多個(gè)端系統(tǒng)(例如服務(wù)器端系統(tǒng))或者參與對(duì)等服務(wù)的端系統(tǒng)來(lái)提供,并且可包括例如公開(kāi)網(wǎng)頁(yè)(例如免費(fèi)內(nèi)容、店面、搜索服務(wù))、私人網(wǎng)頁(yè)(例如提供電子郵件服務(wù)的用戶(hù)名/密碼訪問(wèn)網(wǎng)頁(yè))和/或基于vpn的公司網(wǎng)絡(luò)。通常,訂戶(hù)端系統(tǒng)(例如通過(guò)與接入網(wǎng)(有線(xiàn)或無(wú)線(xiàn))耦合的客戶(hù)駐地設(shè)備)耦合到邊緣網(wǎng)絡(luò)裝置,邊緣網(wǎng)絡(luò)裝置(例如通過(guò)一個(gè)或多個(gè)核心網(wǎng)絡(luò)裝置)耦合到與其它端系統(tǒng)(例如服務(wù)器端系統(tǒng))耦合的其它邊緣網(wǎng)絡(luò)裝置。網(wǎng)絡(luò)裝置一般通過(guò)其介質(zhì)訪問(wèn)(mac)地址、因特網(wǎng)協(xié)議(ip)地址/子網(wǎng)、網(wǎng)絡(luò)套接字/端口和/或上osi層標(biāo)識(shí)符來(lái)識(shí)別。
網(wǎng)絡(luò)裝置通常分為控制平面和數(shù)據(jù)平面(有時(shí)稱(chēng)作轉(zhuǎn)發(fā)平面或媒體平面)。在網(wǎng)絡(luò)裝置是交換機(jī)/橋接器(或者實(shí)現(xiàn)橋接器功能性)的情況下,控制平面通常確定將要如何轉(zhuǎn)發(fā)幀(例如以太網(wǎng)幀)(例如幀的下一跳和那個(gè)幀的外出端口),而數(shù)據(jù)平面負(fù)責(zé)轉(zhuǎn)發(fā)那個(gè)幀。例如,控制平面通常包括一個(gè)或多個(gè)轉(zhuǎn)發(fā)/路由選擇協(xié)議(例如邊界網(wǎng)關(guān)協(xié)議(bgp)、內(nèi)部網(wǎng)關(guān)協(xié)議(igp)(例如開(kāi)放式最短路徑優(yōu)先(ospf)、路由選擇信息協(xié)議(rip)、中間系統(tǒng)到中間系統(tǒng)(is-is))、標(biāo)記分布協(xié)議(ldp)、資源保存協(xié)議(rsvp)),其與其它網(wǎng)絡(luò)裝置進(jìn)行通信以交換路徑并且基于一個(gè)或多個(gè)量度來(lái)選擇那些路徑。注意,在控制平面和數(shù)據(jù)平面處于獨(dú)立網(wǎng)絡(luò)裝置中時(shí),本發(fā)明的實(shí)施例也適用。
本發(fā)明的不同實(shí)施例可使用軟件、固件和/或硬件的不同組合來(lái)實(shí)現(xiàn)。因此,附圖所示的技術(shù)能夠使用在一個(gè)或多個(gè)電子裝置(例如端系統(tǒng)、網(wǎng)絡(luò)裝置)上存儲(chǔ)和運(yùn)行的代碼及數(shù)據(jù)來(lái)實(shí)現(xiàn)。這類(lèi)電子裝置使用諸如非暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(例如磁盤(pán)、光盤(pán)、隨機(jī)存取存儲(chǔ)器、只讀存儲(chǔ)器、閃速存儲(chǔ)器裝置、相變存儲(chǔ)器)和暫時(shí)計(jì)算機(jī)可讀傳輸介質(zhì)(例如電、光、聲或其它形式的傳播信號(hào)——例如載波、紅外信號(hào)、數(shù)字信號(hào))之類(lèi)的計(jì)算機(jī)可讀介質(zhì)來(lái)存儲(chǔ)和傳遞(內(nèi)部通信和/或通過(guò)網(wǎng)絡(luò)與其它計(jì)算裝置進(jìn)行通信)代碼和數(shù)據(jù)。另外,這類(lèi)電子裝置通常包括一組一個(gè)或多個(gè)處理器,處理器耦合到諸如一個(gè)或多個(gè)存儲(chǔ)裝置(非暫時(shí)機(jī)器可讀存儲(chǔ)介質(zhì))、用戶(hù)輸入/輸出裝置(例如鍵盤(pán)、觸摸屏和/或顯示器)和網(wǎng)絡(luò)連接之類(lèi)的一個(gè)或多個(gè)其它組件。處理器集合和其它組件的耦合通常通過(guò)一個(gè)或多個(gè)總線(xiàn)和橋接器(又稱(chēng)作控制器)進(jìn)行。因此,給定電子裝置的存儲(chǔ)裝置通常存儲(chǔ)代碼和/或數(shù)據(jù),供那個(gè)電子裝置的該組一個(gè)或多個(gè)處理器上執(zhí)行。
術(shù)語(yǔ)
本描述中使用下列術(shù)語(yǔ)。
單播:向通過(guò)獨(dú)特單獨(dú)mac地址所識(shí)別的單個(gè)目標(biāo)節(jié)點(diǎn)發(fā)送幀。
多播:從單個(gè)源節(jié)點(diǎn)同時(shí)向多個(gè)目標(biāo)節(jié)點(diǎn)發(fā)送幀,其中獨(dú)特編組mac地址識(shí)別接收方集合。
根:根節(jié)點(diǎn)(或“根”)是生成樹(shù)或最短路徑樹(shù)的中央節(jié)點(diǎn)(又稱(chēng)作最高節(jié)點(diǎn))。對(duì)于單播幀轉(zhuǎn)發(fā),根是目標(biāo)節(jié)點(diǎn)。相比之下,對(duì)于多播幀轉(zhuǎn)發(fā),根是源節(jié)點(diǎn)。
上游節(jié)點(diǎn):對(duì)于節(jié)點(diǎn)計(jì)算單播幀轉(zhuǎn)發(fā)路徑(稱(chēng)作“計(jì)算節(jié)點(diǎn)”),上游節(jié)點(diǎn)是比計(jì)算節(jié)點(diǎn)更遠(yuǎn)離根的節(jié)點(diǎn)。
下游節(jié)點(diǎn):對(duì)于單播,下游節(jié)點(diǎn)是比計(jì)算節(jié)點(diǎn)更接近根的節(jié)點(diǎn)。
最短路徑橋接—vlan模式(spbv):基于vlan的一種類(lèi)型的spb,即,各最短路徑樹(shù)通過(guò)不同vlan標(biāo)識(shí)符(vid)來(lái)定義。
最短路徑橋接—mac模式(spbm):另一種類(lèi)型的spb,其中最短路徑樹(shù)是基于mac的,即,各最短路徑樹(shù)通過(guò)獨(dú)特mac地址或者mac地址的縮寫(xiě)形式來(lái)識(shí)別。vlan用來(lái)描繪多路徑變化。
等價(jià)樹(shù)(ect):有時(shí)稱(chēng)作等價(jià)多樹(shù)(ecmt)。在到根的多個(gè)等價(jià)路由存在時(shí),各最短路徑樹(shù)是到根的ect。spb網(wǎng)絡(luò)中的節(jié)點(diǎn)在特定ect的構(gòu)造中使用所指定打破平局算法。ect集合通過(guò)ect算法來(lái)識(shí)別,以及在一個(gè)實(shí)施例中,vlan與獨(dú)特ect算法關(guān)聯(lián)。
網(wǎng)絡(luò)配置
圖1a是示出支持最短路徑橋接(spb)協(xié)議的網(wǎng)絡(luò)配置的一個(gè)實(shí)施例的框圖。網(wǎng)絡(luò)100包含六個(gè)節(jié)點(diǎn)n1-n6。六個(gè)節(jié)點(diǎn)經(jīng)過(guò)互連,從而形成網(wǎng)格拓?fù)洹W⒁?,網(wǎng)絡(luò)100是現(xiàn)實(shí)世界中的操作spb網(wǎng)絡(luò)的簡(jiǎn)化。spb網(wǎng)絡(luò)可放大到數(shù)千個(gè)節(jié)點(diǎn),并且提供數(shù)百萬(wàn)獨(dú)特服務(wù)。實(shí)際上,符合ieee802.1aq的spbmac模式網(wǎng)絡(luò)能夠支持主干vlan中的多達(dá)1600萬(wàn)獨(dú)特服務(wù)。因此,網(wǎng)絡(luò)100僅用來(lái)示出按照本發(fā)明的幀轉(zhuǎn)發(fā)的實(shí)施例,以及作為本文的基礎(chǔ)的原理適用于大許多的網(wǎng)絡(luò)。
圖1b是示出按照本發(fā)明的一個(gè)實(shí)施例的spb幀轉(zhuǎn)發(fā)的框圖。任務(wù)框1-3示出執(zhí)行操作的順序。在任務(wù)框1,各節(jié)點(diǎn)計(jì)算拓?fù)浼捌浔镜剡^(guò)濾數(shù)據(jù)庫(kù)(fdb)。在一個(gè)實(shí)施例中,操作可通過(guò)節(jié)點(diǎn)初始化或者拓?fù)渥兓瘉?lái)觸發(fā)。在spb網(wǎng)絡(luò)中,轉(zhuǎn)發(fā)拓?fù)涫褂梅植际铰酚蛇x擇系統(tǒng)來(lái)構(gòu)成,其中各節(jié)點(diǎn)從路由選擇系統(tǒng)數(shù)據(jù)庫(kù)中的信息來(lái)單獨(dú)計(jì)算其本地單播和多播fdb。路由選擇系統(tǒng)數(shù)據(jù)庫(kù)是網(wǎng)絡(luò)的鏈路狀態(tài)信息的資料庫(kù),其將是公共的,并且當(dāng)網(wǎng)絡(luò)處于穩(wěn)定狀態(tài)時(shí)跨所有路由選擇節(jié)點(diǎn)來(lái)同步。公共資料庫(kù)的一致性通過(guò)在網(wǎng)絡(luò)中的相鄰節(jié)點(diǎn)之間交換拓?fù)涓爬ㄕ獊?lái)檢查。當(dāng)摘要相同時(shí),節(jié)點(diǎn)知道它們共享網(wǎng)絡(luò)拓?fù)涞南嗤晥D,并且具有關(guān)于到網(wǎng)絡(luò)中的所有根的距離的顯式協(xié)定。注意,各節(jié)點(diǎn)具有其自己的本地fdb,并且個(gè)性化存在,因?yàn)楦鞴?jié)點(diǎn)在網(wǎng)絡(luò)中具有不同位置。例如,在節(jié)點(diǎn)3和5的拓?fù)溆?jì)算之后,兩者均計(jì)算到根節(jié)點(diǎn)1(圖中所示)的相同最短路徑樹(shù)(spt)。注意,沒(méi)有使用不在spt上的端口,因此spt上的幀將不會(huì)通過(guò)這些端口來(lái)轉(zhuǎn)發(fā)。節(jié)點(diǎn)5與節(jié)點(diǎn)3、4和6之間的連接在圖1b中是具有復(fù)縱線(xiàn)的虛線(xiàn)。該記法代表節(jié)點(diǎn)之間的邏輯連通性沒(méi)有由那個(gè)樹(shù)來(lái)使用,即使物理連接完整無(wú)缺。
前進(jìn)到任務(wù)框2,當(dāng)節(jié)點(diǎn)5接收目標(biāo)為節(jié)點(diǎn)1的單播幀時(shí),它將幀轉(zhuǎn)發(fā)到節(jié)點(diǎn)2。節(jié)點(diǎn)5沒(méi)有將幀轉(zhuǎn)發(fā)到節(jié)點(diǎn)3、4或6,即使它們也與節(jié)點(diǎn)5相鄰,因?yàn)楣?jié)點(diǎn)5具有其本地fdb,并且知道節(jié)點(diǎn)2處于預(yù)計(jì)送往節(jié)點(diǎn)1的單播幀的最短路徑上。
在任務(wù)框3,當(dāng)節(jié)點(diǎn)3從其面向節(jié)點(diǎn)5的端口(例如因故障)接收預(yù)計(jì)送往節(jié)點(diǎn)1的單播幀時(shí),它沒(méi)有轉(zhuǎn)發(fā)而丟棄該幀。進(jìn)行丟棄判定,因?yàn)楣?jié)點(diǎn)3知道它不在到根1的節(jié)點(diǎn)5的最短路徑上。另一方面,如果節(jié)點(diǎn)3從其面向節(jié)點(diǎn)6的端口接收預(yù)計(jì)送往節(jié)點(diǎn)1的單播幀,則它轉(zhuǎn)發(fā)該幀(圖1b中未示出)。檢查進(jìn)入幀以確定接收端口是否有效在ieee802.1aq規(guī)范中又稱(chēng)作入口檢查,在本領(lǐng)域也常常稱(chēng)作反向路徑轉(zhuǎn)發(fā)檢查(rpfc)。注意,任務(wù)框2和3無(wú)需以所述順序發(fā)生。節(jié)點(diǎn)3在節(jié)點(diǎn)5向節(jié)點(diǎn)3發(fā)出幀之前或之后進(jìn)行相同的rpfc判定。換言之,節(jié)點(diǎn)3基于它的網(wǎng)絡(luò)100拓?fù)涞囊晥D進(jìn)行其自己的rpfc判定。雖然圖1b示出spbm網(wǎng)絡(luò)中的rpfc的一個(gè)實(shí)施例,但是rpfc也在spbv網(wǎng)絡(luò)中實(shí)現(xiàn)。在spbv網(wǎng)絡(luò)中,不是檢查源mac地址,rpfc而是檢查vlan的端口成員資格,并且轉(zhuǎn)發(fā)僅到最短路徑vid(spvid)的有效入口端口的進(jìn)入幀。
rpfc也用于多播業(yè)務(wù)。注意,給定ect集合的單播和多播業(yè)務(wù)在網(wǎng)絡(luò)中的任何給定節(jié)點(diǎn)對(duì)之間均具有沿正向和反向的相同所選路徑,甚至當(dāng)存在多個(gè)等價(jià)候選路徑可用時(shí)。因此,對(duì)于單播業(yè)務(wù)示為到根節(jié)點(diǎn)1的最短路徑是對(duì)于多播業(yè)務(wù)到根節(jié)點(diǎn)1的相同最短路徑。全等(congruency)是重要的,因?yàn)樗_保以太網(wǎng)操作執(zhí)行和管理(oa&m)機(jī)制能夠在spb網(wǎng)絡(luò)中正確地起作用,并且為所有業(yè)務(wù)保存幀排序。
基于vid或mac的rpfc充分改進(jìn)針對(duì)以太網(wǎng)轉(zhuǎn)發(fā)循環(huán)的保護(hù)。實(shí)際上,由于對(duì)給定根,rpfc允許節(jié)點(diǎn)僅接收單入口端口的幀,從兩個(gè)或更多方向的流量絕不能合并,并且瞬時(shí)網(wǎng)絡(luò)崩潰的概率顯著降低。然而,rpfc的剛性加強(qiáng)是有代價(jià)的,即,rpfc在異常條件時(shí)阻止業(yè)務(wù)的任何快速單方面重新路由,因此變更需要在多個(gè)節(jié)點(diǎn)之間同步。
圖2是示出spb網(wǎng)絡(luò)的一個(gè)實(shí)施例中的鏈路故障時(shí)的幀轉(zhuǎn)發(fā)的框圖。網(wǎng)絡(luò)200與網(wǎng)絡(luò)100相似,并且相同或相似參考標(biāo)號(hào)表示具有相同或相似功能性的元件或組件。任務(wù)框1-3示出執(zhí)行操作的順序。網(wǎng)絡(luò)200具有與網(wǎng)絡(luò)100相同的最短路徑生成樹(shù),其中節(jié)點(diǎn)1作為根。
在任務(wù)框1,在節(jié)點(diǎn)5檢測(cè)節(jié)點(diǎn)2與節(jié)點(diǎn)5之間的鏈路的異常連通性。在一個(gè)實(shí)施例中,異常連通性檢測(cè)可通過(guò)鏈路降級(jí)/故障或者在遠(yuǎn)程節(jié)點(diǎn)(本例中為節(jié)點(diǎn)2)的節(jié)點(diǎn)無(wú)響應(yīng)/故障來(lái)觸發(fā)。在檢測(cè)到故障時(shí),節(jié)點(diǎn)5執(zhí)行任務(wù)框2,它重新計(jì)算拓?fù)洌⑶姨崛⌒畔?,以?gòu)建它的新本地過(guò)濾數(shù)據(jù)庫(kù)(fdb)。通過(guò)重新計(jì)算,節(jié)點(diǎn)5構(gòu)建新的最短路徑樹(shù)(spt),其中節(jié)點(diǎn)5到節(jié)點(diǎn)1的最短路徑經(jīng)過(guò)到節(jié)點(diǎn)3的鏈路而不是到節(jié)點(diǎn)2的異常鏈路。通過(guò)新的spt和新的fdb條目,節(jié)點(diǎn)5這時(shí)將預(yù)計(jì)送往節(jié)點(diǎn)1的幀轉(zhuǎn)發(fā)到節(jié)點(diǎn)3而不是節(jié)點(diǎn)2。但是在節(jié)點(diǎn)3,因上文所述的rpfc而丟棄來(lái)自節(jié)點(diǎn)5、預(yù)計(jì)送往節(jié)點(diǎn)1的幀(未示出)。
前進(jìn)到任務(wù)框3,其中通知節(jié)點(diǎn)3關(guān)于拓?fù)渥兓?。因?yàn)楣?jié)點(diǎn)3不是與異常條件緊鄰,所以可能在比節(jié)點(diǎn)5檢測(cè)異常條件要遲的時(shí)間通知節(jié)點(diǎn)3關(guān)于拓?fù)渥兓?。?jié)點(diǎn)3執(zhí)行與節(jié)點(diǎn)5相同的拓?fù)渲匦掠?jì)算,并且節(jié)點(diǎn)3還重建其fdb。此后,節(jié)點(diǎn)3認(rèn)識(shí)到它處于節(jié)點(diǎn)5到節(jié)點(diǎn)1的最短路徑上,則節(jié)點(diǎn)3不再丟棄從節(jié)點(diǎn)5重定向的、預(yù)計(jì)送往節(jié)點(diǎn)1的幀。
網(wǎng)絡(luò)200的操作是本領(lǐng)域已知的,并且可稱(chēng)作“先開(kāi)后合(breakbeforemake)”,因?yàn)樗鼪](méi)有在其拓?fù)溆?jì)算中搶先地計(jì)算可能的任何備選路徑。因此,業(yè)務(wù)重新路由花費(fèi)時(shí)間,并且延遲能夠是相當(dāng)大的,此外,它引起幀丟失,特別是當(dāng)支持ieee802.1aq的spb網(wǎng)絡(luò)放大到數(shù)千個(gè)節(jié)點(diǎn)和數(shù)百萬(wàn)服務(wù)時(shí)。
實(shí)現(xiàn)單播無(wú)循環(huán)備選(lfa)
圖3是示出按照本發(fā)明的一個(gè)實(shí)施例、實(shí)現(xiàn)單播無(wú)循環(huán)預(yù)備(lfa)的方法的框圖。網(wǎng)絡(luò)300與網(wǎng)絡(luò)100相似,并且相同或相似參考標(biāo)號(hào)表示具有相同或相似功能性的元件或組件。任務(wù)框1-4示出執(zhí)行操作的順序。網(wǎng)絡(luò)300具有與網(wǎng)絡(luò)100相同的最短路徑樹(shù),其中節(jié)點(diǎn)1作為根。
在任務(wù)框1,各節(jié)點(diǎn)計(jì)算拓?fù)?、其本地過(guò)濾數(shù)據(jù)庫(kù)(fdb)和下游無(wú)循環(huán)預(yù)備(lfa)。拓?fù)浜蚮db的計(jì)算與圖1b中的任務(wù)框1相似,因此在這里不作贅述。下游lfa的額外計(jì)算是新的并且值得詳細(xì)論述。無(wú)循環(huán)備選路徑是不在計(jì)算節(jié)點(diǎn)的當(dāng)前最短路徑樹(shù)上的路徑,然而是到給定根的無(wú)循環(huán)路徑。無(wú)循環(huán)備選路徑上到計(jì)算節(jié)點(diǎn)的緊鄰節(jié)點(diǎn)是無(wú)循環(huán)備選節(jié)點(diǎn)或者無(wú)循環(huán)預(yù)備。在下文的說(shuō)明書(shū)中,術(shù)語(yǔ)“無(wú)循環(huán)備選節(jié)點(diǎn)”和“無(wú)循環(huán)預(yù)備(lfa)”可互換地使用,除非另加說(shuō)明。在網(wǎng)格spb網(wǎng)絡(luò)中,多個(gè)路徑可通向給定根,并且lfa節(jié)點(diǎn)在那種情況下存在。這個(gè)計(jì)算設(shè)法查找下游lfa,即,比計(jì)算節(jié)點(diǎn)更接近根的lfa節(jié)點(diǎn)。注意,在一些拓?fù)渲校@種節(jié)點(diǎn)可能不存在,而在其它拓?fù)渲校纱嬖诙鄠€(gè)可能的選擇。在多個(gè)選擇存在的情況下,與802.1aq的大多數(shù)方面不同,不要求計(jì)算節(jié)點(diǎn)和lfa節(jié)點(diǎn)進(jìn)行相同選擇,從而使計(jì)算節(jié)點(diǎn)能夠自由使用它選擇的無(wú)論什么標(biāo)準(zhǔn)來(lái)從候選lfa節(jié)點(diǎn)集合中進(jìn)行選擇。在其它標(biāo)準(zhǔn)不存在的情況下,從抑制循環(huán)和多個(gè)故障情形的角度來(lái)看,最接近根的候選lfa節(jié)點(diǎn)通常是最健壯選擇。通常在拓?fù)渥兓笠呀?jīng)使拓?fù)湟晥D/數(shù)據(jù)庫(kù)穩(wěn)定、即鄰居具有匹配摘要時(shí),執(zhí)行這些計(jì)算操作。
在網(wǎng)絡(luò)300中,例如,在節(jié)點(diǎn)5,節(jié)點(diǎn)2如所示處于其到根節(jié)點(diǎn)1的所選最短路徑上。節(jié)點(diǎn)3、4和6不在所選最短路徑上。但是節(jié)點(diǎn)3、4和6是節(jié)點(diǎn)5的lfa節(jié)點(diǎn),因?yàn)檫x擇它們其中之一不會(huì)引起轉(zhuǎn)發(fā)循環(huán)。例如,經(jīng)過(guò)節(jié)點(diǎn)5-節(jié)點(diǎn)4-節(jié)點(diǎn)2-節(jié)點(diǎn)1的路徑?jīng)]有造成循環(huán),并且它是經(jīng)過(guò)節(jié)點(diǎn)5-節(jié)點(diǎn)2-節(jié)點(diǎn)1的所選路徑的有效預(yù)備。但是,節(jié)點(diǎn)4和6不是節(jié)點(diǎn)5到根節(jié)點(diǎn)1的“下游”lfa,假定各鏈路攜帶相同成本/權(quán)重。這是因?yàn)楣?jié)點(diǎn)5是背離根節(jié)點(diǎn)1的兩跳,以及兩個(gè)節(jié)點(diǎn)4和6也是背離根節(jié)點(diǎn)1的兩跳。另一方面,節(jié)點(diǎn)3只是背離根節(jié)點(diǎn)1的單跳,因而從lfa節(jié)點(diǎn)3、4和6中,通過(guò)任務(wù)框1選擇節(jié)點(diǎn)3作為獨(dú)特下游lfa。注意,當(dāng)存在多個(gè)下游lfa時(shí),通過(guò)任務(wù)框1選擇單個(gè)lfa。節(jié)點(diǎn)3的lfa選擇由節(jié)點(diǎn)5連同其它fdb信息一起來(lái)保存。
前進(jìn)到任務(wù)框2,其中節(jié)點(diǎn)5檢測(cè)到節(jié)點(diǎn)2的異常連通性。在一個(gè)實(shí)施例中,異常連通性檢測(cè)可通過(guò)鏈路降級(jí)/故障或者在遠(yuǎn)程節(jié)點(diǎn)(本例中為節(jié)點(diǎn)2)的節(jié)點(diǎn)無(wú)響應(yīng)/故障來(lái)觸發(fā)。在檢測(cè)到故障時(shí),節(jié)點(diǎn)5立即將預(yù)計(jì)送往根節(jié)點(diǎn)1的幀重定向到預(yù)先選擇的lfa節(jié)點(diǎn)3,而無(wú)需執(zhí)行任何重新計(jì)算。注意,幀轉(zhuǎn)發(fā)的立即重定向與圖2的任務(wù)框2(其中不執(zhí)行幀轉(zhuǎn)發(fā),直到拓?fù)涞男掠?jì)算完成)相反。
在任務(wù)框3,節(jié)點(diǎn)3這時(shí)接收從節(jié)點(diǎn)5所轉(zhuǎn)發(fā)的幀,這些幀預(yù)計(jì)送往節(jié)點(diǎn)1。不是如上文所述來(lái)執(zhí)行rpfc,節(jié)點(diǎn)3這時(shí)不再丟棄從節(jié)點(diǎn)5重定向的單播幀。在一個(gè)實(shí)施例中,節(jié)點(diǎn)3只是不采用單播幀的rpfc(經(jīng)由目標(biāo)mac地址中編碼的m位是可識(shí)別的),因而來(lái)自節(jié)點(diǎn)5或者任何其它節(jié)點(diǎn)的進(jìn)入單播幀被接受并且然后轉(zhuǎn)發(fā)。在另一個(gè)實(shí)施例中,節(jié)點(diǎn)3在允許來(lái)自給定目標(biāo)的一組假定安全節(jié)點(diǎn)的其它單播幀被處理以用于轉(zhuǎn)發(fā)的同時(shí)執(zhí)行丟棄一些單播幀的附加任務(wù)。
注意,在網(wǎng)絡(luò)300中,從鏈路/節(jié)點(diǎn)故障的恢復(fù)比網(wǎng)絡(luò)200的恢復(fù)要快許多。故障時(shí)的快速恢復(fù)在本說(shuō)明書(shū)中稱(chēng)作快速重新路由(frr)。lfa的計(jì)算在初始拓?fù)溆?jì)算階段來(lái)執(zhí)行,并且它是查找802.1aq控制平面所執(zhí)行的最短路徑計(jì)算的所有成對(duì)的副產(chǎn)品,因此lfa的附加查找不消耗顯著的附加計(jì)算資源。lfa信息能夠緊接因鏈路或節(jié)點(diǎn)故障引起的拓?fù)渥兓瘉?lái)使用。在縮放spb網(wǎng)絡(luò)中,網(wǎng)絡(luò)匯聚的效率使通過(guò)附加計(jì)算的單播lfa的實(shí)現(xiàn)是值得的。
在局部修復(fù)點(diǎn)(plr)的單播lfa的實(shí)現(xiàn)
圖4是示出按照本發(fā)明的一個(gè)實(shí)施例、在局部修復(fù)點(diǎn)(plr)實(shí)現(xiàn)單播無(wú)循環(huán)預(yù)備(lfa)的方法的流程圖。在本說(shuō)明書(shū)中,plr是與鏈路故障緊鄰的節(jié)點(diǎn)。例如在圖3中,節(jié)點(diǎn)5是網(wǎng)絡(luò)300的plr(因?yàn)樗苯舆B接到節(jié)點(diǎn)2與5之間的出故障鏈路),因此方法400可在圖3的節(jié)點(diǎn)5上實(shí)現(xiàn)。
參照?qǐng)D4,在參考標(biāo)號(hào)404,節(jié)點(diǎn)在接收計(jì)算到目標(biāo)節(jié)點(diǎn)的最短路徑的請(qǐng)求時(shí)計(jì)算從該節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的最短路徑。該請(qǐng)求可通過(guò)網(wǎng)絡(luò)的所檢測(cè)或者所通知的拓?fù)渥兓瘉?lái)觸發(fā)。在一個(gè)實(shí)施例中,該計(jì)算基于網(wǎng)絡(luò)的鏈路狀態(tài)信息的公共資料庫(kù)。在計(jì)算中記錄到達(dá)每個(gè)根節(jié)點(diǎn)的最短路徑上的相鄰節(jié)點(diǎn)。在參考標(biāo)號(hào)406,計(jì)算節(jié)點(diǎn)還計(jì)算到目標(biāo)的下游無(wú)循環(huán)預(yù)備節(jié)點(diǎn)。如上文所述,下游lfa節(jié)點(diǎn)是相對(duì)根處于計(jì)算節(jié)點(diǎn)下游的相鄰節(jié)點(diǎn),共享網(wǎng)絡(luò)的同步視圖,并且因此也是在沒(méi)有引起轉(zhuǎn)發(fā)循環(huán)的情況下到達(dá)目標(biāo)的有效轉(zhuǎn)接節(jié)點(diǎn)。注意,雖然參考標(biāo)號(hào)404和406表示為兩個(gè)獨(dú)立步驟以具體指出與常規(guī)拓?fù)溆?jì)算相比的額外計(jì)算,但是在一些實(shí)施例中,兩個(gè)步驟同時(shí)執(zhí)行。換言之,下游lfa的確定與最短路徑計(jì)算同時(shí)地執(zhí)行。所確定lfa和所計(jì)算最短路徑則在計(jì)算節(jié)點(diǎn)保存。
在參考標(biāo)號(hào)408,當(dāng)計(jì)算節(jié)點(diǎn)檢測(cè)到與到根的最短路徑連接的鏈路的異常時(shí),計(jì)算節(jié)點(diǎn)對(duì)預(yù)計(jì)送往根的所有幀(如通過(guò)幀的目標(biāo)mac地址所示)切換到lfa節(jié)點(diǎn)。在一個(gè)實(shí)施例中,異??赡芡ㄟ^(guò)鏈路降級(jí)/故障而引起。在另一個(gè)實(shí)施例中,異常可能通過(guò)節(jié)點(diǎn)故障或者某個(gè)時(shí)間周期之后在遠(yuǎn)程節(jié)點(diǎn)無(wú)響應(yīng)而引起。另外,plr節(jié)點(diǎn)可通知網(wǎng)絡(luò)中的其它節(jié)點(diǎn)關(guān)于拓?fù)渥兓呀?jīng)發(fā)生。
注意,節(jié)點(diǎn)可查找各在不同ect集合中的給定根的多個(gè)ect。在那種情況下,方法400被執(zhí)行多次,并且它設(shè)法查找給定根的每個(gè)ect的lfa節(jié)點(diǎn)。在檢測(cè)到ect集合的最短路徑的相鄰節(jié)點(diǎn)的鏈路的異常連通性時(shí),計(jì)算節(jié)點(diǎn)將預(yù)計(jì)送往根的幀重定向到ect的lfa節(jié)點(diǎn)。還要注意,lfa在任何ect集合中可能不可用于那個(gè)目標(biāo)——處于或者不處于目標(biāo)的粒度,如果一個(gè)ect集合具有預(yù)備,則其余ect也將這樣。當(dāng)沒(méi)有l(wèi)fa可用時(shí),在鏈路異常時(shí),計(jì)算節(jié)點(diǎn)例如必須如圖2所示重新計(jì)算新網(wǎng)絡(luò)拓?fù)?,而不能參與增強(qiáng)恢復(fù)。
方法400能夠在spbm網(wǎng)絡(luò)中實(shí)現(xiàn),因?yàn)槎嗖サ娜肟跈z查(常常稱(chēng)作rpfc)處理能夠與對(duì)單播不同的方式進(jìn)行。
在無(wú)循環(huán)備選(lfa)節(jié)點(diǎn)的單播lfa的實(shí)現(xiàn)
圖5是示出按照本發(fā)明的一個(gè)實(shí)施例、在所選lfa節(jié)點(diǎn)實(shí)現(xiàn)單播無(wú)循環(huán)預(yù)備(lfa)的方法的流程圖。例如在圖3中,節(jié)點(diǎn)3是節(jié)點(diǎn)5的所選lfa,以及方法500可在圖3的節(jié)點(diǎn)3上實(shí)現(xiàn)。參照?qǐng)D5,在參考標(biāo)號(hào)502,節(jié)點(diǎn)接收以太網(wǎng)幀。節(jié)點(diǎn)確定所接收以太網(wǎng)幀是否為參考標(biāo)號(hào)505的多播幀。該確定可基于所接收以太網(wǎng)幀的幀報(bào)頭,以及在一個(gè)實(shí)施例中,節(jié)點(diǎn)檢查幀報(bào)頭中的目標(biāo)mac地址的“m”位,以進(jìn)行確定。如果所接收以太網(wǎng)幀是多播幀,則節(jié)點(diǎn)執(zhí)行rpfc處理。也就是說(shuō),節(jié)點(diǎn)在參考標(biāo)號(hào)506確定接收端口是否為過(guò)濾數(shù)據(jù)庫(kù)(fdb)中的所接收以太網(wǎng)幀的源mac地址的匹配端口。如果所接收以太網(wǎng)幀的源mac地址不是來(lái)自每fdb的匹配端口,則在參考標(biāo)號(hào)510丟棄所接收幀。否則,在參考標(biāo)號(hào)508處理所接收多播幀以用于幀轉(zhuǎn)發(fā)。
又參照參考標(biāo)號(hào)505,如果節(jié)點(diǎn)確定所接收以太網(wǎng)幀不是多播幀,則在參考標(biāo)號(hào)512轉(zhuǎn)發(fā)所接收以太網(wǎng)幀以用于預(yù)備入口檢查處理。換言之,方法500對(duì)多播幀但是不對(duì)單播幀執(zhí)行rpfc。與ieee802.1aq下的入口檢查當(dāng)前所允許相比,rpfc的放寬允許spb節(jié)點(diǎn)考慮對(duì)轉(zhuǎn)發(fā)可接受的更多幀。直觀地,放寬有代價(jià)的。具體來(lái)說(shuō),在沒(méi)有加強(qiáng)rpfc的情況下,多個(gè)故障情形可引起轉(zhuǎn)發(fā)循環(huán)。又如上文所述,更壞轉(zhuǎn)發(fā)循環(huán)通過(guò)沒(méi)有rpfc的多播幀轉(zhuǎn)發(fā)而引起,因?yàn)檠h(huán)可饋入另一循環(huán)中,因而引起瞬時(shí)網(wǎng)絡(luò)崩潰。由于方法500加強(qiáng)了多播幀的rpfc,所以抑制了網(wǎng)絡(luò)崩潰的風(fēng)險(xiǎn)。另外,對(duì)于單播業(yè)務(wù),方法500能夠進(jìn)一步增強(qiáng)。還要注意,僅將下游lfa用于單播不會(huì)增加因基本以太網(wǎng)轉(zhuǎn)發(fā)引起的循環(huán)的風(fēng)險(xiǎn),即,幀沒(méi)有在接收端口上回送。
圖6是示出按照本發(fā)明的一個(gè)實(shí)施例、在所選lfa節(jié)點(diǎn)實(shí)現(xiàn)單播無(wú)循環(huán)預(yù)備(lfa)的方法的流程圖。方法600當(dāng)方法500的過(guò)程在如圖5所示的參考標(biāo)號(hào)a結(jié)束時(shí)接著方法500處理單播幀,以及參考標(biāo)號(hào)a是圖6中的方法600的起始點(diǎn)。與方法500相似,方法600可在所選lfa節(jié)點(diǎn)、例如圖3的節(jié)點(diǎn)3來(lái)執(zhí)行。
參照?qǐng)D6,節(jié)點(diǎn)可在參考標(biāo)號(hào)606直接處理所接收單播幀以用于幀轉(zhuǎn)發(fā)。也就是說(shuō),在無(wú)需任何進(jìn)一步過(guò)濾的情況下轉(zhuǎn)發(fā)所接收單播幀,以抑制轉(zhuǎn)發(fā)循環(huán)。備選地,節(jié)點(diǎn)可在參考標(biāo)號(hào)602檢查所接收單播幀的目標(biāo)mac地址。節(jié)點(diǎn)然后在參考標(biāo)號(hào)604確定接收端口是否處于目標(biāo)mac地址的準(zhǔn)許端口集合中,其中準(zhǔn)許端口集合是被確定在節(jié)點(diǎn)上游并且具有數(shù)據(jù)庫(kù)摘要中的當(dāng)前協(xié)議對(duì)其存在的節(jié)點(diǎn)的集合(注意,這個(gè)端口集合是給定路由選擇拓?fù)涞乃衑ct集合共同的)。在一個(gè)實(shí)施例中,準(zhǔn)許端口集合存儲(chǔ)在準(zhǔn)許端口映射中。如果該端口處于目標(biāo)mac地址的準(zhǔn)許端口集合中,則在參考標(biāo)號(hào)606處理該幀以用于幀轉(zhuǎn)發(fā),否則在參考標(biāo)號(hào)608丟棄該幀。換言之,沒(méi)有處理所接收單播幀以用于幀轉(zhuǎn)發(fā),除非它從幀的目標(biāo)的準(zhǔn)許端口集合(其是明確已知為連接到給定目標(biāo)的最短路徑樹(shù)上的上游節(jié)點(diǎn)的集合)其中之一來(lái)接收。在參考標(biāo)號(hào)604的增加檢查進(jìn)一步抑制轉(zhuǎn)發(fā)循環(huán)。直觀地,沒(méi)有對(duì)給定目標(biāo)mac地址的準(zhǔn)許端口集合的檢查表示對(duì)節(jié)點(diǎn)的較少過(guò)濾/處理必須進(jìn)行,但是轉(zhuǎn)發(fā)循環(huán)更有可能發(fā)生。因此,關(guān)鍵是選擇給定目標(biāo)mac地址的準(zhǔn)許端口的最佳集合,使得不要求節(jié)點(diǎn)進(jìn)行詳盡計(jì)算,同時(shí)使轉(zhuǎn)發(fā)循環(huán)保持為較低。
圖7是示出按照本發(fā)明的一個(gè)實(shí)施例、在所選lfa節(jié)點(diǎn)選擇準(zhǔn)許端口集合的方法的流程圖。方法700可在所選lfa節(jié)點(diǎn)、例如圖3的節(jié)點(diǎn)3來(lái)執(zhí)行。在參考標(biāo)號(hào)702,節(jié)點(diǎn)檢查所接收以太網(wǎng)幀,并且確定其目標(biāo)mac地址和進(jìn)入端口。然后在參考標(biāo)號(hào)704,節(jié)點(diǎn)先驗(yàn)地確定它是否比面向它用于幀轉(zhuǎn)發(fā)的最短路徑樹(shù)上的進(jìn)入端口的節(jié)點(diǎn)要更接近所接收幀的目標(biāo)。換言之,節(jié)點(diǎn)確定它相對(duì)根(目標(biāo)節(jié)點(diǎn))是否在它從其中接收幀的節(jié)點(diǎn)(可稱(chēng)作相鄰發(fā)送節(jié)點(diǎn))的下游。在參考標(biāo)號(hào)706,如果節(jié)點(diǎn)更接近目標(biāo)節(jié)點(diǎn)(因而在相鄰發(fā)送節(jié)點(diǎn)的下游),則節(jié)點(diǎn)接受所接收幀以用于幀轉(zhuǎn)發(fā),否則丟棄所接收幀。也就是說(shuō),如果所接收幀來(lái)自相對(duì)根處于該節(jié)點(diǎn)上游的節(jié)點(diǎn),則節(jié)點(diǎn)僅接受所接收幀以用于幀轉(zhuǎn)發(fā)。安全端口的已更新集合則能夠用來(lái)接受或丟棄將來(lái)的進(jìn)入幀。當(dāng)拓?fù)渥兓l(fā)生時(shí),給定ect的非plr節(jié)點(diǎn)對(duì)它沒(méi)有與其進(jìn)行數(shù)據(jù)庫(kù)同步的所有上游節(jié)點(diǎn)將plr位置與離根的先前距離進(jìn)行比較,并且從可接受集合中去除存在它們這時(shí)處于下游的風(fēng)險(xiǎn)的那些節(jié)點(diǎn)。由于數(shù)據(jù)庫(kù)同步與這些節(jié)點(diǎn)重新取得,所以該集合然后能夠再次相應(yīng)地修正。
圖8a是示出按照本發(fā)明的一個(gè)實(shí)施例、在所選lfa節(jié)點(diǎn)選擇準(zhǔn)許端口集合的另一種方法的框圖。圖8a中,節(jié)點(diǎn)(節(jié)點(diǎn)8或n8)將其端口分為兩個(gè)編組。給定目標(biāo)(目標(biāo)是如參考標(biāo)號(hào)802所示的節(jié)點(diǎn)20(n20))的分割(稱(chēng)作“分割水平”)基于端口是否面向更遠(yuǎn)離n20的節(jié)點(diǎn)(與計(jì)算節(jié)點(diǎn)(n8)相比)。如果進(jìn)入節(jié)點(diǎn)比n8更遠(yuǎn)離n20,則面向進(jìn)入節(jié)點(diǎn)的端口對(duì)幀轉(zhuǎn)發(fā)是安全的,否則就不是。在這個(gè)示例中,節(jié)點(diǎn)9和10比n8更遠(yuǎn)離節(jié)點(diǎn)20,因此連接到節(jié)點(diǎn)9和10的端口處于端口的安全集合中,而連接到節(jié)點(diǎn)11和12的端口不是。
圖8b是示出按照本發(fā)明的一個(gè)實(shí)施例、在所選lfa節(jié)點(diǎn)的分割水平端口表的框圖。分割水平端口表用于節(jié)點(diǎn)8,并且它包含目標(biāo)節(jié)點(diǎn)的一行。該行可包含spb網(wǎng)絡(luò)中除了計(jì)算節(jié)點(diǎn)(本例中為節(jié)點(diǎn)8)的各節(jié)點(diǎn)的一列。該表包含面向給定目標(biāo)節(jié)點(diǎn)的節(jié)點(diǎn)的上游端口(即,安全端口)的另一行。該表還可包含面向給定目標(biāo)節(jié)點(diǎn)的節(jié)點(diǎn)的非上游端口(即,不安全端口)的另一行。第一列用于目標(biāo)節(jié)點(diǎn)20。如圖8a所示,連接到節(jié)點(diǎn)9和10的端口處于上游端口的條目中,而連接到節(jié)點(diǎn)11和12的端口處于非上游端口的條目中。注意,該表僅用于說(shuō)明,以及安全集合表可以?xún)H保持端口而不是連接到端口的節(jié)點(diǎn)的記錄。還要注意,存在構(gòu)成解釋構(gòu)建端口的安全集合中的分割水平的許多方式。端口的安全集合能夠是表、陣列、元組或者使用圖8a-b所示的相同原理的其它數(shù)據(jù)結(jié)構(gòu)。
圖9是示出按照本發(fā)明的一個(gè)實(shí)施例、在所選lfa節(jié)點(diǎn)的端口分割水平的創(chuàng)建的流程圖。方法900可在所選lfa節(jié)點(diǎn)、例如圖3的節(jié)點(diǎn)3來(lái)執(zhí)行。在參考標(biāo)號(hào)902,對(duì)于給定目標(biāo)的節(jié)點(diǎn)的ect,節(jié)點(diǎn)(“計(jì)算節(jié)點(diǎn)”)確定給定端口是否為上游端口。如果端口面向比計(jì)算節(jié)點(diǎn)離目標(biāo)更遠(yuǎn)的節(jié)點(diǎn),則該端口是上游端口。在參考標(biāo)號(hào)904,節(jié)點(diǎn)將所有端口分為給定目標(biāo)的兩個(gè)集合,第一集合是上游端口而第二集合是非上游端口(包括下游端口以及面向與目標(biāo)等距離的節(jié)點(diǎn)的端口)。然后在參考標(biāo)號(hào)906,當(dāng)幀到達(dá)第一集合(上游)端口時(shí),節(jié)點(diǎn)接受送往目標(biāo)節(jié)點(diǎn)的幀以用于幀轉(zhuǎn)發(fā)。在參考標(biāo)號(hào)908,當(dāng)幀到達(dá)第二組(非上游)端口時(shí),節(jié)點(diǎn)丟棄送往目標(biāo)節(jié)點(diǎn)的幀。
實(shí)現(xiàn)單播lfa的網(wǎng)絡(luò)裝置的實(shí)施例
圖10是示出按照本發(fā)明的一個(gè)實(shí)施例、用作實(shí)現(xiàn)單播f無(wú)循環(huán)預(yù)備的節(jié)點(diǎn)的網(wǎng)絡(luò)裝置的框圖。在一個(gè)實(shí)施例中,網(wǎng)絡(luò)裝置包括一個(gè)或多個(gè)線(xiàn)路卡/處理器(例如連通性監(jiān)測(cè)模塊1002、多播幀檢測(cè)器1004和通信模塊1006)集合、一個(gè)或多個(gè)控制卡(例如幀處理器1010)集合以及可選的一個(gè)或多個(gè)服務(wù)卡(有時(shí)稱(chēng)作資源卡)集合。這些卡通過(guò)一個(gè)或多個(gè)機(jī)構(gòu)(例如耦合線(xiàn)路卡的第一全網(wǎng)格以及耦合全部卡的第二全網(wǎng)格)。線(xiàn)路卡集合組成數(shù)據(jù)平面,而控制卡集合提供控制平面并且通過(guò)線(xiàn)路卡與外部網(wǎng)絡(luò)裝置交換分組。注意,在控制平面和數(shù)據(jù)平面處于獨(dú)立網(wǎng)絡(luò)裝置中時(shí),本發(fā)明的實(shí)施例適用。不僅為了便于說(shuō)明而示出與實(shí)施例相關(guān)的模塊/處理器,而且還示出使節(jié)點(diǎn)正確起作用所要求的其它模塊/處理器。
節(jié)點(diǎn)1000可包含連通性監(jiān)測(cè)模塊1002,其配置成監(jiān)測(cè)到相鄰節(jié)點(diǎn)的連通性。模塊1002檢測(cè)鏈路異常性。例如,模塊1002可檢測(cè)鏈路降級(jí)/故障或遠(yuǎn)程節(jié)點(diǎn)故障/在某個(gè)時(shí)間周期之后無(wú)響應(yīng)。模塊1002向幀處理器1010通知鏈路異常性。節(jié)點(diǎn)1000還可包含多播幀檢測(cè)器1004,其確定進(jìn)入幀是否為多播幀。該確定是重要的,因?yàn)楣?jié)點(diǎn)1000可加強(qiáng)多播幀的rpfc,同時(shí)放寬單播幀的rpfc。另外,節(jié)點(diǎn)1000可包含通信模塊1006,以便與網(wǎng)絡(luò)的其余節(jié)點(diǎn)進(jìn)行通信。例如,通信模塊1006可執(zhí)行與相鄰節(jié)點(diǎn)的拓?fù)涓爬ㄕ粨Q。
節(jié)點(diǎn)1000包含幀處理器1010。幀處理器1010是物理處理器,并且它可包含路徑計(jì)算處理器1018和幀轉(zhuǎn)發(fā)處理器1020。路徑計(jì)算處理器1018計(jì)算到給定目標(biāo)的最短路徑。它還可計(jì)算無(wú)循環(huán)預(yù)備,并且確定哪一個(gè)無(wú)循環(huán)預(yù)備處于到目標(biāo)的節(jié)點(diǎn)1000的下游。幀轉(zhuǎn)發(fā)處理器1020處理幀以用于轉(zhuǎn)發(fā),并且它還在所接收幀的轉(zhuǎn)發(fā)不安全時(shí)將其丟棄。過(guò)濾數(shù)據(jù)庫(kù)(fdb)是從網(wǎng)絡(luò)的鏈路狀態(tài)信息的公共資料庫(kù)所計(jì)算的本地?cái)?shù)據(jù)庫(kù)。fdb基于節(jié)點(diǎn)在網(wǎng)絡(luò)中的位置。無(wú)循環(huán)預(yù)備(lfa)記錄1014保存給定目標(biāo)的所計(jì)算lfa。安全集合記錄1016保存給定目標(biāo)的安全端口集合。注意,fdb1012、lfa記錄1014和安全集合記錄1016可在幀處理器1010外部來(lái)實(shí)現(xiàn)。另外,幀處理器1010能夠是通用或?qū)S锰幚砥鳌>W(wǎng)絡(luò)處理器1010中的單獨(dú)模塊能夠包含其專(zhuān)用網(wǎng)絡(luò)處理單元(npu),或者它們能夠在多個(gè)模塊之間共享npu。例如,路徑計(jì)算處理器1018和幀轉(zhuǎn)發(fā)處理器1020可共享同一npu。
節(jié)點(diǎn)1000可用作在局部修復(fù)點(diǎn)(plr)的spb節(jié)點(diǎn)。在一個(gè)實(shí)施例中,路徑計(jì)算處理器1018在所檢測(cè)或者所通知的拓?fù)渥兓瘯r(shí)計(jì)算到網(wǎng)絡(luò)的其它節(jié)點(diǎn)的最短路徑。路徑計(jì)算處理器1018還選擇下游lfa,并且將所選下游lfa保存到lfa記錄1014。注意,可找出到其它節(jié)點(diǎn)的ect集合。然后,路徑計(jì)算處理器1018將所有所計(jì)算ect集合的本地轉(zhuǎn)發(fā)配置保存到fdb1012。另外,路徑計(jì)算處理器1018將每個(gè)ect的各目標(biāo)的所選下游lfa保存到lfa記錄1014。當(dāng)下游lfa對(duì)所計(jì)算ect的目標(biāo)為不存在時(shí),沒(méi)有為所計(jì)算ect的目標(biāo)保存lfa記錄。在一個(gè)實(shí)施例中,將要通過(guò)故障所調(diào)用的lfa記錄集合通過(guò)它們將響應(yīng)連通性異常性而被調(diào)用的端口來(lái)索引。
然后,在連通性監(jiān)測(cè)模塊1002檢測(cè)到最短路徑節(jié)點(diǎn)的連接的連通性異常時(shí),幀轉(zhuǎn)發(fā)處理器1018通過(guò)從lfa記錄1014所檢索的lfa將進(jìn)入幀轉(zhuǎn)發(fā)到其目標(biāo)。另外,通過(guò)通信模塊1006,節(jié)點(diǎn)1000通知網(wǎng)絡(luò)中的其它節(jié)點(diǎn)關(guān)于網(wǎng)絡(luò)的拓?fù)湟呀?jīng)改變。
節(jié)點(diǎn)1000可用作所選lfa節(jié)點(diǎn)的spb節(jié)點(diǎn)。在一個(gè)實(shí)施例中,多播幀檢測(cè)器1004確定進(jìn)入幀是否為多播幀。如果進(jìn)入幀是多播幀,則rpfc適用,以及節(jié)點(diǎn)1000檢查fdb1012,并且確定接收以太網(wǎng)幀的端口是否為源mac地址的匹配端口。如果是的話(huà),則接收多播幀經(jīng)過(guò)處理以用于幀轉(zhuǎn)發(fā)處理器1018進(jìn)行幀轉(zhuǎn)發(fā)。如果不是的話(huà),則丟棄所接收多播幀。在一個(gè)實(shí)施例中,如果進(jìn)入幀是單播幀,則節(jié)點(diǎn)1000將幀直接放到幀轉(zhuǎn)發(fā)處理器1018以用于幀轉(zhuǎn)發(fā)。在另一個(gè)實(shí)施例中,幀處理器1010通過(guò)檢查安全集合記錄1016來(lái)檢查并且查看進(jìn)入端口是否處于單播幀的所指定目標(biāo)的端口的安全集合中。如果進(jìn)入端口處于所指定目標(biāo)的端口的安全集合中,則將該幀轉(zhuǎn)發(fā)到幀轉(zhuǎn)發(fā)處理器1018以用于幀轉(zhuǎn)發(fā),否則丟棄該幀。
在一個(gè)實(shí)施例中,安全集合記錄1016通過(guò)對(duì)節(jié)點(diǎn)1000的端口應(yīng)用分割水平來(lái)形成。在分割水平計(jì)算中,對(duì)于各目標(biāo),端口分類(lèi)為是否為上游端口,以及上游端口接受給定目標(biāo)的進(jìn)入幀被認(rèn)為是安全的,而非上游端口是不安全的。
雖然上文的附圖中的流程圖示出本發(fā)明的某些實(shí)施例所執(zhí)行的操作的特定順序,但是應(yīng)當(dāng)理解,這種順序是示范性的(例如備選實(shí)施例可按照不同順序來(lái)執(zhí)行操作、組合某些操作、重疊某些操作等)。
雖然按照若干實(shí)施例描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員將會(huì)知道,本發(fā)明并不局限于所述實(shí)施例,而是可在所附權(quán)利要求書(shū)的精神和范圍之內(nèi),經(jīng)過(guò)修改和變更來(lái)實(shí)施。因此,本描述被看作是說(shuō)明性而不是限制性的。