一種混合處理上游標(biāo)簽和下游標(biāo)簽的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及MPLS (Mult1-Protocol Label Switching,多協(xié)議標(biāo)簽交換)技術(shù)傳輸領(lǐng)域,具體涉及一種混合處理上游標(biāo)簽和下游標(biāo)簽的方法及系統(tǒng)。
【背景技術(shù)】
[0002]在傳統(tǒng)的IP轉(zhuǎn)發(fā)中,一個路由器在自己的路由表中為兩個不同的報文進(jìn)行路由查找時,若發(fā)現(xiàn)兩個不同的報文具有相同的地址前綴X、且X是對每個報文的目的IP地址進(jìn)行最長匹配的結(jié)果,則認(rèn)為兩個不同的報文屬于相同的FEC(轉(zhuǎn)發(fā)等價類)。當(dāng)一個報文在網(wǎng)絡(luò)中傳送的過程中,每一跳都需要重新檢查該報文的首部,并且將其分配的一個FEC中。在MPLS網(wǎng)絡(luò)中,報文進(jìn)入MPLS網(wǎng)絡(luò)時才會分配至一個FEC,報文所屬的FEC使用一個定長的值來編碼,該值就是所謂的標(biāo)簽。當(dāng)一個報文被轉(zhuǎn)發(fā)給它的下一跳的時候,標(biāo)簽和報文一起發(fā)送,也就是說這個報文轉(zhuǎn)發(fā)之前被打上了標(biāo)簽。
[0003]在MPLS體系架構(gòu)最初設(shè)計(jì)時,只定義了下游標(biāo)簽分配,即綁定一個標(biāo)簽L到轉(zhuǎn)發(fā)等價類F是由下游節(jié)點(diǎn)的LSR (Label Switching Router,標(biāo)簽交換路由器)決定,下游LSR通知上游LSR這個綁定,標(biāo)簽綁定的分發(fā)是沿著“從下游到上游”這個方向的。
[0004]隨著MPLS技術(shù)的發(fā)展,MPLS體系架構(gòu)從支持下游標(biāo)簽分配被擴(kuò)展為支持上游標(biāo)簽分配,即綁定一個標(biāo)簽L到轉(zhuǎn)發(fā)等價類F是由上游節(jié)點(diǎn)的LSR來決定的,上游LSR通知下游LSR這個綁定,標(biāo)簽綁定的分發(fā)是沿著“從上游到下游”的方向。
[0005]參見圖1所示,現(xiàn)有對報文進(jìn)行路由查找的方法一般包括以下步驟:
[0006]步驟一、對頂層標(biāo)簽進(jìn)行查找;
[0007]步驟二、判斷當(dāng)前標(biāo)簽是否為非棧底標(biāo)簽、且處理行為為POP(出棧),若是,轉(zhuǎn)到步驟三,否則轉(zhuǎn)到步驟四;
[0008]步驟三、對下一層標(biāo)簽基于標(biāo)簽值進(jìn)行查找,重新執(zhí)行步驟二 ;
[0009]步驟四、按照標(biāo)簽表配置的行為處理當(dāng)前標(biāo)簽。
[0010]但是,現(xiàn)有對報文進(jìn)行路由查找的方法僅支持下游標(biāo)簽分配,無法支持MPLS體系架構(gòu)擴(kuò)展后的上游標(biāo)簽分配,難以滿足MPLS體系架構(gòu)的需求。
【發(fā)明內(nèi)容】
[0011]針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種混合處理上游標(biāo)簽和下游標(biāo)簽的方法及系統(tǒng),本發(fā)明能夠混合處理上游分配標(biāo)簽或下游分配標(biāo)簽,進(jìn)而支持上游標(biāo)簽分配,不僅能夠滿足MPLS體系架構(gòu)的需求,而且能夠用于所有支持MPLS的設(shè)備,適用范圍比較廣泛。
[0012]為達(dá)到以上目的,本發(fā)明提供的一種混合處理上游標(biāo)簽和下游標(biāo)簽的方法,包括以下步驟:
[0013]A、存儲本站點(diǎn)的有效多協(xié)議標(biāo)簽交換MPLS標(biāo)簽的標(biāo)簽信息,形成MPLS標(biāo)簽表,轉(zhuǎn)到步驟B ;
[0014]MPLS標(biāo)簽的類型包括上游分配標(biāo)簽和下游分配標(biāo)簽,所述上游分配標(biāo)簽的標(biāo)簽信息包括上游站點(diǎn)分配給本站點(diǎn)的MPLS標(biāo)簽值、以及與MPLS標(biāo)簽值對應(yīng)的環(huán)境context參數(shù);所述下游分配標(biāo)簽的標(biāo)簽信息包括本站點(diǎn)分配給上游站點(diǎn)的MPLS標(biāo)簽值;
[0015]B、存儲MPLS標(biāo)簽表中每個MPLS標(biāo)簽相應(yīng)的處理行為,形成MPLS行為表,轉(zhuǎn)到步驟C.’
[0016]C、收到MPLS封裝的數(shù)據(jù)幀時,判斷當(dāng)前數(shù)據(jù)幀是否被封裝到隧道中:
[0017]若當(dāng)前數(shù)據(jù)幀被封裝到隧道中,判定封裝當(dāng)前數(shù)據(jù)幀的隧道在收到MPLS封裝的數(shù)據(jù)幀的站點(diǎn)終結(jié);判斷是否能夠通過隧道獲取context參數(shù),若是,則證明當(dāng)前數(shù)據(jù)幀的當(dāng)層MPLS標(biāo)簽為上游分配標(biāo)簽,轉(zhuǎn)到步驟D,否則證明當(dāng)前數(shù)據(jù)幀的當(dāng)層MPLS標(biāo)簽為下游分配標(biāo)簽,轉(zhuǎn)到步驟E ;
[0018]若當(dāng)前數(shù)據(jù)幀未被封裝到隧道中,證明當(dāng)前數(shù)據(jù)幀的當(dāng)層MPLS標(biāo)簽為下游分配標(biāo)簽,轉(zhuǎn)到步驟E ;
[0019]D、根據(jù)當(dāng)前數(shù)據(jù)幀的context參數(shù)和當(dāng)層MPLS標(biāo)簽值進(jìn)行哈希HASH運(yùn)算,得到索引值,轉(zhuǎn)到步驟F ;
[0020]E、根據(jù)當(dāng)前數(shù)據(jù)幀的當(dāng)層MPLS標(biāo)簽值進(jìn)行HASH運(yùn)算,得到索引值,轉(zhuǎn)到步驟F ;
[0021]F、判定根據(jù)索引值在MPLS標(biāo)簽表查找到相應(yīng)的標(biāo)簽信息,根據(jù)當(dāng)前標(biāo)簽信息在MPLS行為表中查找對應(yīng)的處理行為;根據(jù)當(dāng)前標(biāo)簽信息和處理行為,判定當(dāng)前標(biāo)簽為非棧底標(biāo)簽、且處理行為為出棧POP,轉(zhuǎn)到步驟G ;
[0022]G、判斷當(dāng)前數(shù)據(jù)幀的所有MPLS標(biāo)簽是否處理完畢,若是,結(jié)束,否則進(jìn)行下一層MPLS標(biāo)簽的處理。
[0023]在上述技術(shù)方案的基礎(chǔ)上,步驟C中所述判定封裝當(dāng)前數(shù)據(jù)幀的隧道在收到MPLS封裝的數(shù)據(jù)幀的站點(diǎn)終結(jié)時,還包括以下步驟:若封裝當(dāng)前數(shù)據(jù)幀的隧道未在收到MPLS封裝的數(shù)據(jù)幀的站點(diǎn)終結(jié),按照隧道的指示對數(shù)據(jù)幀進(jìn)行處理,結(jié)束。
[0024]在上述技術(shù)方案的基礎(chǔ)上,步驟F中所述判定根據(jù)索引值在MPLS標(biāo)簽表查找到相應(yīng)的標(biāo)簽信息時,還包括以下步驟:若根據(jù)索引值在MPLS標(biāo)簽表查為找到相應(yīng)的標(biāo)簽信息,則丟棄當(dāng)前數(shù)據(jù)幀,結(jié)束。
[0025]在上述技術(shù)方案的基礎(chǔ)上,步驟F中所述判定根據(jù)索引值在MPLS標(biāo)簽表查找到相應(yīng)的標(biāo)簽信息時,若所述索引值根據(jù)context參數(shù)和MPLS標(biāo)簽值運(yùn)算得出,則相應(yīng)的標(biāo)簽信息為:與索引值對應(yīng)的context值與MPLS標(biāo)簽值的組合;若所述索引值為根據(jù)context參數(shù)和MPLS標(biāo)簽值運(yùn)算得出時,則相應(yīng)的標(biāo)簽信息為:與索引值對應(yīng)的MPLS標(biāo)簽值。
[0026]在上述技術(shù)方案的基礎(chǔ)上,步驟F中所述判定當(dāng)前標(biāo)簽為非棧底標(biāo)簽、且處理行為為出棧POP時,還包括以下步驟:若當(dāng)前標(biāo)簽為棧底標(biāo)簽、或者當(dāng)前標(biāo)簽為非棧底標(biāo)簽、且處理行為為非POP,則根據(jù)當(dāng)前處理行對當(dāng)前數(shù)據(jù)幀的當(dāng)層MPLS標(biāo)簽進(jìn)行處理,轉(zhuǎn)到步驟G。
[0027]在上述技術(shù)方案的基礎(chǔ)上,步驟G中所述進(jìn)行下一層MPLS標(biāo)簽的處理,具體包括以下步驟:判斷步驟F中對應(yīng)的處理行為中是否配置context參數(shù),若是,轉(zhuǎn)到步驟D進(jìn)行下一層MPLS標(biāo)簽的處理,將步驟G中的context參數(shù)作為步驟D中的context參數(shù),將當(dāng)前數(shù)據(jù)幀的下一層MPLS標(biāo)簽的值作為步驟D中的MPLS標(biāo)簽值;否則轉(zhuǎn)到步驟E進(jìn)行下一層MPLS標(biāo)簽的處理,將當(dāng)前數(shù)據(jù)幀的下一層MPLS標(biāo)簽值作為步驟E中的MPLS標(biāo)簽值。
[0028]在上述技術(shù)方案的基礎(chǔ)上,步驟A中所述context參數(shù)為空表示專用于下游分配標(biāo)簽,非空值表示專用于上游分配標(biāo)簽。
[0029]在上述技術(shù)方案的基礎(chǔ)上,步驟B中所述MPLS行為表還包括生存時間TTL的處理行為和流量類型TC的處理行為,TTL的處理行為和TC的處理行為用于作為最終的數(shù)據(jù)幀處理行為進(jìn)行輸出。
[0030]本發(fā)明提供一種實(shí)現(xiàn)上述方法的混合處理上游標(biāo)簽和下游標(biāo)簽的系統(tǒng),該系統(tǒng)包括MPLS標(biāo)簽表配置模塊、MPLS行為表配置模塊和MPLS處理組件,MPLS標(biāo)簽表配置模塊、MPLS行為表配置模塊均與MPLS處理組件信號連接;
[0031]所述MPLS標(biāo)簽表配置模塊用于:存儲本站點(diǎn)的有效多協(xié)議標(biāo)簽交換MPLS標(biāo)簽的標(biāo)簽信息,形成MPLS標(biāo)簽表,向MPLS行為表配置模塊發(fā)送MPLS行為表配置信號;
[0032]所述MPLS行為表配置模塊用于:收到MPLS行為表配置信號時,存儲MPLS標(biāo)簽表中每個MPLS標(biāo)簽相應(yīng)的處理行為,形成MPLS行為表;
[0033]所述MPLS處理組件包括參數(shù)獲取判斷模塊、上游標(biāo)簽索引運(yùn)算模塊、下游標(biāo)簽索引運(yùn)算模塊、標(biāo)簽信息查找模塊和標(biāo)簽處理進(jìn)度控制模塊;
[0034]所述參數(shù)獲取判斷模塊用于:收到MPLS封裝的數(shù)據(jù)幀時,判斷當(dāng)前數(shù)據(jù)幀是否被封裝到隧道中:
[0035]若當(dāng)前數(shù)據(jù)幀被封裝到隧道中,判定封裝當(dāng)前數(shù)據(jù)幀的隧道在收到MPLS封裝的數(shù)據(jù)幀的站點(diǎn)終結(jié);判斷是否能夠通過隧道獲取context參數(shù),若是,則證明當(dāng)前數(shù)據(jù)幀的當(dāng)層MPLS標(biāo)簽為上游分配標(biāo)簽,向上游標(biāo)簽索引運(yùn)算模塊發(fā)送上游標(biāo)簽索引運(yùn)算信號,否則證明當(dāng)前數(shù)據(jù)幀的當(dāng)層MPLS標(biāo)簽為下游分配標(biāo)簽,向下游標(biāo)簽索引運(yùn)算模塊發(fā)送下游標(biāo)簽索引運(yùn)算信號;
[0036]若當(dāng)前數(shù)據(jù)幀未被封裝到隧道中,證明當(dāng)前數(shù)據(jù)幀的當(dāng)層MPLS標(biāo)簽為下游分配標(biāo)簽,向下游標(biāo)簽索引運(yùn)算模塊發(fā)送下游標(biāo)簽索引運(yùn)算信號;
[0037]所述上游標(biāo)簽索引運(yùn)算模塊用于:收到上游標(biāo)簽索引運(yùn)算信號后,根據(jù)當(dāng)前數(shù)據(jù)幀的context參數(shù)和當(dāng)層MPLS標(biāo)簽值進(jìn)行哈希HASH運(yùn)算,得到索引值,向標(biāo)簽信息查找模塊發(fā)送標(biāo)簽信息查找信號;
[0038]所述下游標(biāo)簽索引運(yùn)算模塊用于:收到下游標(biāo)簽索引運(yùn)算信號后,根據(jù)當(dāng)前數(shù)據(jù)幀的