專利名稱:Rsvp-te隧道中的松散節點及其路徑計算方法
技術領域:
本發明涉及數據網絡通訊領域,具體涉及一種基于流量工程的資源預留協議(Resource Reservation Protocol-Traffic Engineer,簡稱 RSVP-TE)隧道中的松散節點路徑計算的方法、松散節點和非松散節點以及RSVP-TE網絡。
背景技術:
RSVP-TE 是一種基于 MPLS (Multi-Protocol Label Switching,多協議標簽交換)的流量工程技術。RSVP經擴展后可以支持MPLS標簽的分發,并在傳送標簽綁定消息的同時攜帶資源預留信息,這種擴展后的RSVP稱為RSVP-TE,作為一種信令協議用于在MPLS TE中建立LSP隧道,通過信息發布、路徑計算、信令交互(RSVP-TE)、數據轉發這四個功能配合使用可以實現業務流量在TE隧道(TE Tunnels)中的轉發。RSVP-TE隧道在路徑計算的過程中大致分為兩類一類是動態算路;一類是通過配置的顯式路徑算路。動態算路是一種沒有其他約束的一種算路機制,只要一條路徑能夠滿足隧道建立所需要的資源即可。如果是動態算路,只會在頭節點提交一次CSPF (Constrained Shorest Path Tree,約束最短路徑優先算法)計算,算出從隧道頭節點到隧道尾節點的完整路徑;顯式路徑算路是一種具有配置約束的一種算路機制,可以配置隧道路徑必須排除某個接口或者節點,可以配置隧道必須嚴格或者松散的經過某個接口或者節點。如果是顯式路徑算路,隧道頭節點提交CSPF計算時,算出的是從隧道頭節點到顯示路徑中的第一個松散節點的路徑(如果顯示路徑中都是嚴格的配置,那么算出來的也是從隧道頭節點到隧道尾節點的完整路徑),當PATH消息到達第一個松散節點后,會再次進行CSPF計算,算到下一個松散點。這樣最終計算到隧道尾節點。在RFC4874中提出了一種XRO對象用于路徑計算中顯式的排除某些鏈路或者節點,并且通過PATH消息一直攜帶至下游尾節點。使用RSVP-TE中PATH消息中已有的對象XRO(Exlucde Route 0bject,排除路由對象)對路徑計算進行約束。由于建立路徑的PATH消息到達松散節點后,進行CSPF計算只是將顯示路徑中配置需要顯式排除的接口或者節點排除,并沒有將之前經過的路徑進行排除,因此再次計算出來的路徑很有可能與之前經過的節點重合,當然這個可以通過PATH消息中的RRO (Record Route 0b ject,記錄路由對象)進行環路檢測,發現環路并通告給頭節點進行隧道的拆除。如圖I所示,隧道由Rl建立到R5,通過顯式路徑建立。配置的顯示路徑為排除R4節點,并且松散到R3,所以隧道在頭節點只會計算出一條由Rl到R3的路徑,按照現有的拓撲可能的路徑為Rl- > R2- > R3,當建立路徑的PATH消息達到R3(松散節點)的時候,會再次進行CSPF計算,這次計算同樣會排除R4節點,算出來的路徑可能是R3- > R2- >R5 (假設,這條路徑優于R3- > R5),在RRO環路檢測時會發現在R2節點有環路,PATH-ERR消息通告至頭節點,拆除隧道。這時,會出現這樣的問題等到隧道重建的時候,又重復上述的步驟,隧道始終建立不起來。 由上述分析可知,在后面隧道重建過程中沒有一種機制使得在松散節點算路過程中自動去避免產生這種環路計算的結果,使得隧道一直在算路、環路檢測、拆除的過程中循環,而無法建立成功。
發明內本發明需要解決的技術問題是提供一種RSVP-TE隧道中松散節點路徑計算的方法、松散節點、非松散節點及RSVP-TE網絡,以實現在松散節點計算路徑時自動避免產生環路。為了解決上述技術問題,本發明提供了一種RSVP-TE隧道中松散節點路徑計算的方法,包括基于流量工程的資源預留協議RSVP-TE隧道中每個節點往下游節點發送攜帶有本節點的路由器ID的PATH消息;松散節點在計算路徑時,將所述路由器ID作為路徑排除的約束條件提交約束最短路徑優先算法CSPF計算路徑。進一步地,所述RSVP-TE隧道中每個節點往下游節點發送攜帶有本節點的路由器ID的PATH消息時,將本節點的路由器ID添加到所述PATH消息的排除路由對象XRO中;所述松散節點在計算路徑時,從收到的所述PATH消息中的XRO中獲取所述路由器ID作為路徑排除的約束條件,提交CSPF計算路徑。進一步地,所述方法還包括擴展PATH消息的SESSION ATTRIBUTE對象中的flag字段,新定義一個標志位指明需要自動將本節點的路由器ID添加到XRO中。進一步地,所述RSVP-TE隧道中每個節點往下游節點發送攜帶有本節點的路由器ID的PATH消息時,將本節點的路由器ID添加到所述PATH消息的排除路由對象XRO中,包括所述RSVP-TE隧道中的頭節點往下游節點發送PATH消息時,將本節點的路由器ID添加到所述XRO中,并擴展所述PATH消息的SESSION ATTRIBUTE對象中的flag字段,新定義一個標志位指明需要自動將本節點的路由器ID添加到XRO中;所述下游節點在收到所述PATH消息時,如果發現所述SESSION ATTRIBUTE對象中的flag字段有所述標志位,則所述下游節點在往其下游節點發送PATH消息時,將本節點的路由器ID添加到所述PATH消息的XRO中。為了解決上述技術問題,本發明還提供了一種RSVP-TE隧道中的松散節點,包括接收模塊,用于接收上游節點發來的PATH消息,并從中獲取路由器ID ;路徑計算模塊,用于將所述路由器ID作為路徑排除的約束條件提交約束最短路徑優先算法CSPF計算路徑;消息生成模塊,用于在所述松散節點往下游節點發送的PATH消息中添加本節點的路由器ID。進一步地,所述接收模塊,用于從所述PATH消息的排除路由對象XRO中獲取所述路由器ID ;所述消息生成模塊,用于在所述松散節點往下游節點發送的PATH消息的XRO中添加本節點的路由器ID。
進一步地,所述消息生成模塊,還用于擴展PATH消息的SESSION ATTRIBUTE對象中的flag字段,新定義一個標志位指明需要自動將本節點的路由器ID添加到所述XRO中。為了解決上述技術問題,本發明還提供了一種RSVP-TE隧道中的非松散節點,包括消息生成模塊,用于在所述非松散節點往下游節點發送的PATH消息中添加本節點的路由器ID;發送模塊,用于將所述攜帶有本節點路由器ID的PATH消息發送至所述下游節點。進一步地,所述消息生成模塊,用于將本節點的路由器ID添加到所述PATH消息的排除路由對象XRO中。進一步地,所述消息生成模塊,還用于擴展PATH消息的SESSION ATTRIBUTE對象中的flag字段,新定義一個標志位指明需要自動將本節點的路由器ID添加到XRO中。進一步地,所述非松散節點還包括 接收模塊,用于接收上游節點發來的PATH消息,如果發現所述PATH消息的SESSION ATTRIBUTE對象中的flag字段有所述標志位,則通知所述消息生成模塊將本節點的路由器ID添加到所述PATH消息的XRO中;所述消息生成模塊,用于在收到所述接收模塊的通知后,將本節點的路由器ID添加到所述PATH消息的XRO中。為了解決上述技術問題,本發明還提供了一種RSVP-TE網絡,包括如上所述的松散節點和如上所述的非松散節點。與現有技術相比,本發明提供的RSVP-TE隧道中松散節點路徑計算的方法、松散節點、非松散節點及RSVP-TE網絡,通過將上游節點的本地路由器ID作為路徑排除的約束條件,大大減少了松散節點算路時產生環路的可能性。
圖I是傳統的隧道建立的組網圖;圖2是實施例中RSVP-TE隧道中的松散節點路徑計算的方法流程圖;圖3是實施例中RSVP-TE隧道中的松散節點結構圖;圖4是實施例中RSVP-TE隧道中的非松散節點結構圖;圖5是一個應用示例中隧道建立的組網圖;圖6是一個應用示例中RSVP-TE隧道中松散節點路徑計算的方法流程圖。
具體實施例方式為使本發明的目的、技術方案和優點更加清楚明白,下文中將結合附圖對本發明的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。實施例如圖2所示,本實施例提供了一種RSVP-TE隧道中松散節點路徑計算的方法 ,包括SlOl =RSVP-TE隧道中每個節點往下游節點發送攜帶有本節點的路由器ID的PATH消息;在本實施例中,作為一種優選的方式,可以將本節點的路由器ID添加到所述PATH消息的排除路由對象XRO中。此外,擴展PATH消息的SESSION ATTRIBUTE對象中的flag字段,新定義一個標志位,例如0x20,指明需要自動將本節點的路由器ID添加到XRO中,這樣當下游節點收到PATH消息時就可以對PATH消息的SESSION ATTRIBUTE對象進行識別,以確定是否需要自動將本節點的路由器ID添加到XRO中。例如,RSVP-TE隧道中的頭節點往下游節點發送PATH消息時,自動將本節點的路由器ID添加到XRO中,并擴展PATH消息的SESSION ATTRIBUTE對象中的flag字段,新定義一個標志位指明需要自動將本節點的路由器ID添加到XRO中; 所述下游節點在收到所述PATH消息時,如果發現所述SESSION ATTRIBUTE對象中的flag字段有所述標志位,則所述下游節點在往其下游節點發送PATH消息時,將本節點的路由器ID添加到XRO中。這樣,通過自動添加本地路由器ID至XRO中,將本地路由器ID作為路徑排除的約束條件,大大減少了松散節點算路產生環路的可能性。S102 :松散節點在計算路徑時,將所述路由器ID作為路徑排除的約束條件提交約束最短路徑優先算法(CSPF)計算路徑。其中,所述松散節點在計算路徑時,從收到的所述PATH消息中的XRO中獲取所述路由器ID作為路徑排除的約束條件,提交CSPF計算路徑。CSPF算法為現有技術,此處不再贅述。另外,在松散節點計算出路徑后,所述松散節點往下游節點發送PATH消息時,自動將本松散節點的路由器ID添加到所述XRO中,以防止后面還有松散節點,確保直至隧道尾節點都能避免松散節點產生的環路,順利建立隧道。如圖3所示,本實施例提供了一種RSVP-TE隧道中的松散節點,包括接收模塊,用于接收上游節點發來的PATH消息,并從中獲取路由器ID ;其中,所述接收模塊從所述PATH消息中的XRO中獲取所述路由器ID。路徑計算模塊,用于將所述路由器ID作為路徑排除的約束條件提交約束最短路徑優先算法CSPF計算路徑;消息生成模塊,用于在所述松散節點往下游節點發送的PATH消息中添加本節點的路由器ID。其中,所述消息生成模塊在所述松散節點往下游節點發送的PATH消息中的排除路由對象XRO中添加本節點的路由器ID。所述消息生成模塊,還用于擴展PATH消息的SESSION ATTRIBUTE對象中的flag字段,新定義一個標志位指明需要自動將本節點的路由器ID添加到XRO中。如圖4所示,本實施例提供了一種RSVP-TE隧道中的非松散節點,包括消息生成模塊,用于在所述非松散節點往下游節點發送的PATH消息中添加本節點的路由器ID;其中,所述消息生成模塊將本節點的路由器ID添加到所述PATH消息的排除路由對象XRO中。
所述消息生成模塊,還用于擴展PATH消息的SESSION ATTRIBUTE對象中的flag字段,新定義一個標志位指明需要自動將本節點的路由器ID添加到XRO中。發送模塊,用于將所述攜帶有本節點路由器ID的PATH消息發送至下游節點。此外,作為一種優選的方式,所述非松散節點還包括接收模塊,用于接收上游節點發來的PATH消息,如果發現所述SESSIONATTRIBUTE對象中的flag字段有所述標志位,則通知所述消息生成模塊將本節點的路由器ID添加到所述PATH消息的XRO中;所述消息生成模塊,用于在收到所述接收模塊的通知后,將本節點的路由器ID添加到所述PATH消息的XRO中。此外,本實施例還提供了一種RSVP-TE網絡,包括如上所述的松散節點和如上所述的非松散節點。 在一個應用示例中,如圖5所示,隧道頭節點為R1,尾節點為R5。隧道使用的是顯式路徑,并且顯式路徑中有松散節點,5個節點的路由器ID分別為Ridl、Rid2、Rid3、Rid4、Rid5。擴展PATH消息的SESSION ATTRIBUTE對象中的flag字段,新定義一個標志位0x20指明需要自動將本節點的路由器ID添加到XRO中。如圖6所示,RSVP-TE松散節點路徑計算的方法,包括以下步驟S201 :隧道頭結點Rl將Ridl加入XRO中,同時將SESSION ATTRIBUTE對象flag字段為0x20的標記通過PATH消息攜帶至下游節點R2 ;S202 :在R2處理收到的PATH消息的時候,發現SESSION ATTRIBUTE中的flag字段有0x20的標記,則在往下游節點R3發送的PATH消息中在XRO中會添加本節點的路由器ID Rid2 ;S203 :在R3接收到上游節點R2發送的PATH時,XRO對象中有Ridl、Rid2等子對象,由于R3是松散節點,需要再次提交CSPF計算,提交計算的時候需要將XRO中的子對象作為計算的約束條件;這個時候算出來的路徑只可能是R3- > R5,路徑R3_ > R2- > R5被約束條件排除在外。S204 R3向R5發送的PATH消息中也將本節點的Rid3加入XRO中,防止后面還有松散節點,直至隧道的尾節點;S205 R5收到PATH消息之后,因為是隧道尾節點,會向上游發送RESV消息,直至頭結點。這樣,隧道就建立成功了,同時避免了在松散節點產生的環路。從上述實施例可以看出,相對于現有技術,上述實施例中提供的RSVP-TE松散節點路徑計算的方法及系統,通過自動添加本地路由器ID至XRO中,可以大大減少松散節點算路時產生環路的可能性。本領域普通技術人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關硬件完成,所述程序可以存儲于計算機可讀存儲介質中,如只讀存儲器、磁盤或光盤等。可選地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現。相應地,上述實施例中的各模塊/單元可以采用硬件的形式實現,也可以采用軟件功能模塊的形式實現。本發明不限制于任何特定形式的硬件和軟件的結合。
以上所述僅為本發明的優選實施例而已,并非用于限定本發明的保護范圍。根據本發明的發明內容,還可有其他多種實施例,在不背離本發明精神及其實質的情況下,熟悉 本領域的技術人員當可根據本發明作出各種相應的改變和變形,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
權利要求
1.一種RSVP-TE隧道中松散節點路徑計算的方法,包括 基于流量工程的資源預留協議RSVP-TE隧道中每個節點往下游節點發送攜帶有本節點的路由器ID的PATH消息; 松散節點在計算路徑時,將所述路由器ID作為路徑排除的約束條件提交約束最短路徑優先算法CSPF計算路徑。
2.如權利要求I所述的方法,其特征在于 所述RSVP-TE隧道中每個節點往下游節點發送攜帶有本節點的路由器ID的PATH消息時,將本節點的路由器ID添加到所述PATH消息的排除路由對象XRO中; 所述松散節點在計算路徑時,從收到的所述PATH消息中的XRO中獲取所述路由器ID作為路徑排除的約束條件,提交CSPF計算路徑。
3.如權利要求I或2所述的方法,其特征在于所述方法還包括 擴展PATH消息的SESSION ATTRIBUTE對象中的flag字段,新定義一個標志位指明需要自動將本節點的路由器ID添加到XRO中。
4.如權利要求3所述的方法,其特征在于 所述RSVP-TE隧道中每個節點往下游節點發送攜帶有本節點的路由器ID的PATH消息時,將本節點的路由器ID添加到所述PATH消息的排除路由對象XRO中,包括 所述RSVP-TE隧道中的頭節點往下游節點發送PATH消息時,將本節點的路由器ID添加到所述XRO中,并擴展所述PATH消息的SESSION ATTRIBUTE對象中的flag字段,新定義一個標志位指明需要自動將本節點的路由器ID添加到XRO中; 所述下游節點在收到所述PATH消息時,如果發現所述SESSION ATTRIBUTE對象中的flag字段有所述標志位,則所述下游節點在往其下游節點發送PATH消息時,將本節點的路由器ID添加到所述PATH消息的XRO中。
5.一種RSVP-TE隧道中的松散節點,包括 接收模塊,用于接收上游節點發來的PATH消息,并從中獲取路由器ID ; 路徑計算模塊,用于將所述路由器ID作為路徑排除的約束條件提交約束最短路徑優先算法CSPF計算路徑; 消息生成模塊,用于在所述松散節點往下游節點發送的PATH消息中添加本節點的路由器ID。
6.如權利要求5所述的松散節點,其特征在于 所述接收模塊,用于從所述PATH消息的排除路由對象XRO中獲取所述路由器ID ; 所述消息生成模塊,用于在所述松散節點往下游節點發送的PATH消息的XRO中添加本節點的路由器ID。
7.如權利要求5或6所述的松散節點,其特征在于 所述消息生成模塊,還用于擴展PATH消息的SESSION ATTRIBUTE對象中的flag字段,新定義一個標志位指明需要自動將本節點的路由器ID添加到所述XRO中。
8.一種RSVP-TE隧道中的非松散節點,包括 消息生成模塊,用于在所述非松散節點往下游節點發送的PATH消息中添加本節點的路由器ID ; 發送模塊,用于將所述攜帶有本節點路由器ID的PATH消息發送至所述下游節點。
9.如權利要求8所述的非松散節點,其特征在于 所述消息生成模塊,用于將本節點的路由器ID添加到所述PATH消息的排除路由對象XRO 中。
10.如權利要求9所述的非松散節點,其特征在于 所述消息生成模塊,還用于擴展PATH消息的SESSION ATTRIBUTE對象中的flag字段,新定義一個標志位指明需要自動將本節點的路由器ID添加到XRO中。
11.如權利要求10所述的非松散節點,其特征在于所述非松散節點還包括 接收模塊,用于接收上游節點發來的PATH消息,如果發現所述PATH消息的SESSIONATTRIBUTE對象中的flag字段有所述標志位,則通知所述消息生成模塊將本節點的路由器ID添加到所述PATH消息的XRO中; 所述消息生成模塊,用于在收到所述接收模塊的通知后,將本節點的路由器ID添加到所述PATH消息的XRO中。
12.—種RSVP-TE網絡,包括如權利要求5-7所述的松散節點和如權利要求8_11所述的非松散節點。
全文摘要
本發明公開了一種RSVP-TE隧道中松散節點路徑計算的方法、松散節點、非松散節點及RSVP-TE網絡,該方法包括RSVP-TE隧道中每個節點往下游節點發送攜帶有本節點的路由器ID的PATH消息;松散節點在計算路徑時,將所述路由器ID作為路徑排除的約束條件提交CSPF計算路徑。其中,松散節點包括接收模塊、路徑計算模塊和消息生成模塊,非松散節點包括消息生成模塊和發送模塊;RSVP-TE網絡包括所述松散節點和所述非松散節點,本發明提供的方法、松散節點、非松散節點及RSVP-TE網絡,通過將上游節點的本地路由器ID作為路徑排除的約束條件,大大減少了松散節點算路時產生環路的可能性。
文檔編號H04L12/56GK102647340SQ20121007768
公開日2012年8月22日 申請日期2012年3月22日 優先權日2012年3月22日
發明者付志濤 申請人:中興通訊股份有限公司