專(zhuān)利名稱(chēng):支持IPv6單組播業(yè)務(wù)線速轉(zhuǎn)發(fā)的方法及路由器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種IPv6(Internet Protocol Version 6,第6版因特網(wǎng)協(xié)議)路由器中基于硬件的線速轉(zhuǎn)發(fā)方法,尤其涉及一種對(duì)IPv6單播和組播業(yè)務(wù)進(jìn)行線速轉(zhuǎn)發(fā)的方法。
背景技術(shù):
IPv6是下一代互聯(lián)網(wǎng)的網(wǎng)際協(xié)議,與現(xiàn)在的IPv4網(wǎng)際協(xié)議相比,IPv6支持資源分配,具有更大的地址空間、更好的報(bào)頭格式和更多的安全性等優(yōu)勢(shì)。IPv6除了支持傳統(tǒng)的點(diǎn)到點(diǎn)的播送,即單播外,還通過(guò)定義范圍實(shí)現(xiàn)了多點(diǎn)播送,即組播。這就要求IPv6網(wǎng)絡(luò)中的路由器同時(shí)支持單播和組播,而如何用更少的資源和更簡(jiǎn)單的控制實(shí)現(xiàn)這一功能,便成為路由器設(shè)計(jì)的重要環(huán)節(jié)。
圖1所示為路由器的典型結(jié)構(gòu)。線路接口模塊10接收進(jìn)入路由器的IP(Internet Protocol,網(wǎng)際協(xié)議)報(bào)文,在報(bào)頭添加供本路由器處理該報(bào)文所需的內(nèi)部輸入標(biāo)簽后,將報(bào)文轉(zhuǎn)給轉(zhuǎn)發(fā)引擎20。轉(zhuǎn)發(fā)引擎20對(duì)該報(bào)文進(jìn)行第三層查表和報(bào)頭處理等操作,包括提取IP報(bào)頭,根據(jù)報(bào)文類(lèi)型分別進(jìn)行單播查表、組播查表、安全過(guò)濾查表、優(yōu)先級(jí)映射查表以及報(bào)頭本身的報(bào)頭檢查,并根據(jù)操作結(jié)果生成對(duì)報(bào)文的處理方式,包括只對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā),只對(duì)報(bào)文進(jìn)行上報(bào)、轉(zhuǎn)發(fā)并上報(bào)報(bào)文和丟棄當(dāng)前報(bào)文等四種操作方式,其中對(duì)轉(zhuǎn)發(fā)報(bào)文和上報(bào)報(bào)文還需要根據(jù)操作結(jié)果生成相應(yīng)的內(nèi)部轉(zhuǎn)發(fā)標(biāo)簽和內(nèi)部上報(bào)標(biāo)簽,貼于報(bào)文的頭部,供交換網(wǎng)絡(luò)30或主控模塊40識(shí)別。之后,轉(zhuǎn)發(fā)引擎20將上報(bào)報(bào)文發(fā)送到主控模塊40;將轉(zhuǎn)發(fā)報(bào)文發(fā)送到交換網(wǎng)絡(luò)30,交換網(wǎng)絡(luò)30根據(jù)報(bào)文的內(nèi)部轉(zhuǎn)發(fā)標(biāo)簽將該報(bào)文送到相應(yīng)的輸出調(diào)度模塊50,輸出調(diào)度模塊50將報(bào)文封裝為標(biāo)準(zhǔn)IP報(bào)文,并通過(guò)線路接口模塊10輸出。
可見(jiàn),在路由器中最核心的部件為轉(zhuǎn)發(fā)引擎20。對(duì)同時(shí)處理單播和組播報(bào)文的轉(zhuǎn)發(fā)引擎20,現(xiàn)有的技術(shù)采用單播報(bào)頭處理和組播報(bào)頭處理兩個(gè)獨(dú)立的模塊來(lái)實(shí)現(xiàn)轉(zhuǎn)發(fā)引擎20對(duì)單組播業(yè)務(wù)線速轉(zhuǎn)發(fā)的支持,典型結(jié)構(gòu)如圖2所示。
圖2中,對(duì)經(jīng)線路接口模塊10輸入到轉(zhuǎn)發(fā)引擎20的報(bào)文首先進(jìn)行緩存,然后由輸出分路進(jìn)行報(bào)文類(lèi)型的判斷。若當(dāng)前處理的報(bào)文類(lèi)型是單播報(bào)文,則生成單播查表關(guān)鍵字,向單播查表單元發(fā)送基于目的IP地址的單播查表請(qǐng)求,同時(shí)將報(bào)文讀取后寫(xiě)入單播報(bào)頭處理的單播緩存FIFO(First In First Out,先入先出寄存器)。
單播查表單元包括單播CAM(Content Addressable Memory,內(nèi)容尋址存儲(chǔ)器)和單播SRAM(Static Random Access Memory,靜態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器),采用流水線結(jié)構(gòu)。
在得出單播查表結(jié)果的同時(shí),報(bào)頭檢查單元檢查報(bào)頭中的版本號(hào)、TTL(Time-to-Live,存活時(shí)間)超時(shí)、報(bào)文長(zhǎng)度和地址范圍等是否有錯(cuò)誤。之后,邏輯仲裁單元根據(jù)報(bào)頭檢查和單播查表結(jié)果按照IPv6單播報(bào)文的相關(guān)RFC(Request for Comments)協(xié)議生成報(bào)文四種處理方式,包括只對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)、只對(duì)報(bào)文進(jìn)行上報(bào)和轉(zhuǎn)發(fā)同時(shí)上報(bào)報(bào)文以及丟棄報(bào)文。邏輯仲裁單元對(duì)于需轉(zhuǎn)發(fā)的報(bào)文,生成內(nèi)部轉(zhuǎn)發(fā)報(bào)頭;對(duì)于需上報(bào)的報(bào)文,生成內(nèi)部上報(bào)報(bào)頭。內(nèi)部報(bào)文生成單元從單播緩存FIFO中讀取報(bào)文的報(bào)頭,用邏輯仲裁單元生成的新報(bào)頭進(jìn)行替換,并寫(xiě)入與報(bào)頭相應(yīng)的單播上報(bào)分組緩存FIFO或單播轉(zhuǎn)發(fā)分組緩存FIFO。
若當(dāng)前處理的報(bào)文類(lèi)型是組播報(bào)文,在PIM-DM(Protocol IndependentMulticast-Dense Mode,協(xié)議無(wú)關(guān)組播協(xié)議-密集模式)組播協(xié)議模式下,需要首先進(jìn)行組播RPF(Reversal Path Forwarding,反向路徑轉(zhuǎn)發(fā))檢查,即進(jìn)行基于報(bào)文源IP地址的單播查表,比較查表結(jié)果和報(bào)文的源端口號(hào)和源接口號(hào)是否一致,產(chǎn)生RPF檢查的結(jié)果,如果一致,RPF檢查通過(guò);否則,RPF檢查失敗,當(dāng)前報(bào)文不進(jìn)行轉(zhuǎn)發(fā),產(chǎn)生RPF檢查失敗的上報(bào)ICMP(InternetControl Message Protocol,Internet控制消息協(xié)議)報(bào)文。所以對(duì)于組播報(bào)文,需要同時(shí)生成組播查表關(guān)鍵字和單播查表關(guān)鍵字,分別送往單播查表單元和組播查表單元,同時(shí)將報(bào)文讀取后寫(xiě)入組播報(bào)頭處理的組播緩存FIFO。在PIM-SM(Protocol Independent Multicast-Sparse Mode,協(xié)議相關(guān)組播協(xié)議-松散模式)協(xié)議模式下,只需要生成組播查表關(guān)鍵字,可以利用PIM-SM組播查表結(jié)果的RPF項(xiàng)進(jìn)行組播RPF檢查。
組播查表單元也包括組播CAM和組播SRAM,同樣采用流水線結(jié)構(gòu)。
對(duì)于組播報(bào)頭處理單元,將取出的單播查表結(jié)果進(jìn)行組播RPF檢查,在組播的報(bào)頭檢查中,除了進(jìn)行單播報(bào)文中的檢查外,還要進(jìn)行組播直連檢查,該檢查就是將組播報(bào)文的源IP地址子網(wǎng)號(hào)和與當(dāng)前報(bào)文源接口相連的子網(wǎng)號(hào)進(jìn)行比較,如果一致,則當(dāng)前報(bào)文為直連組播包,產(chǎn)生上報(bào)ICMP報(bào)文;否則,非直連組播包,不進(jìn)行上報(bào)操作。之后,邏輯仲裁單元根據(jù)報(bào)頭檢查和組播查表結(jié)果按照IPv6組播報(bào)文的相關(guān)RFC協(xié)議生成報(bào)文的四種處理方式,內(nèi)部轉(zhuǎn)發(fā)報(bào)頭和內(nèi)部上報(bào)報(bào)頭的生成,以及內(nèi)部報(bào)文生成單元的工作方式和過(guò)程均與單播的處理機(jī)制相同。
轉(zhuǎn)發(fā)分組合路完成單播轉(zhuǎn)發(fā)分組和組播轉(zhuǎn)發(fā)分組的合路操作,從兩路數(shù)據(jù)中選擇一路送入交換網(wǎng)絡(luò)30,由交換網(wǎng)絡(luò)30將其送到相應(yīng)的輸出端口。上報(bào)分組合路完成單播上報(bào)分組和組播上報(bào)分組的合路操作,從兩路數(shù)據(jù)中選擇一路送入主控模塊40,由主控模塊40進(jìn)行相應(yīng)的協(xié)議處理。
從以上對(duì)現(xiàn)有技術(shù)工作過(guò)程的介紹中可以看出,現(xiàn)有技術(shù)具有以下缺點(diǎn)首先,設(shè)計(jì)中對(duì)單播和組播報(bào)頭處理要分別實(shí)現(xiàn)基于輸入和輸出的緩存,設(shè)計(jì)中一般每個(gè)緩存FIFO至少需要能夠緩存一個(gè)最長(zhǎng)的IP包,通常為2K字節(jié),因而需要大量的RAM資源來(lái)實(shí)現(xiàn)對(duì)報(bào)文的緩存;其次,報(bào)頭檢查等通用的功能單元需要在單播和組播報(bào)頭處理中重復(fù)實(shí)現(xiàn),同時(shí)由于單播和組播報(bào)頭處理采用獨(dú)立的單元進(jìn)行實(shí)現(xiàn),相當(dāng)于各種邏輯資源需要兩倍;第三,需要實(shí)現(xiàn)基于報(bào)文類(lèi)型(單播或組播)的分路操作,以及單播轉(zhuǎn)發(fā)分組和組播轉(zhuǎn)發(fā)分組的合路操作以及單播上報(bào)分組和組播上報(bào)分組的合路操作。
因此,現(xiàn)有技術(shù)對(duì)單組播線速轉(zhuǎn)發(fā)的實(shí)現(xiàn)不僅需要更多元件,而且邏輯結(jié)構(gòu)復(fù)雜,造成路由器邏輯控制復(fù)雜,在實(shí)際運(yùn)行中穩(wěn)定性不高,而且制造成本高。
發(fā)明內(nèi)容
為了解決先前IPv6路由器元件功能重復(fù)、邏輯控制復(fù)雜的問(wèn)題,本發(fā)明提供了一種支持IPv6單組播業(yè)務(wù)線速轉(zhuǎn)發(fā)的方法及應(yīng)用該方法的路由器,具有更低的成本和更高的穩(wěn)定性。
本發(fā)明所述支持IPv6單組播業(yè)務(wù)線速轉(zhuǎn)發(fā)的方法包括以下步驟a.對(duì)線路接口模塊輸出的報(bào)文先進(jìn)行緩存,之后輸出控制單元讀取緩存的報(bào)文,將該報(bào)文的報(bào)頭寫(xiě)入報(bào)頭檢查單元,生成單播查表關(guān)鍵字寫(xiě)入單播查表單元,生成組播查表關(guān)鍵字寫(xiě)入組播查表單元,并將該報(bào)文寫(xiě)入報(bào)頭處理緩存先入先出寄存器;b.單播查表單元對(duì)所述單播查表關(guān)鍵字進(jìn)行查表得出單播查表結(jié)果,組播查表單元對(duì)所述組播查表關(guān)鍵字進(jìn)行查表得出組播查表結(jié)果;c.報(bào)頭檢查單元對(duì)所述報(bào)文的報(bào)頭進(jìn)行檢查得出報(bào)頭檢查結(jié)果;d.組播RPF檢查單元根據(jù)單播查表結(jié)果或組播查表結(jié)果和從緩存先入先出寄存器讀出的所述報(bào)文得出RPF檢查結(jié)果;e.邏輯仲裁單元根據(jù)報(bào)頭檢查結(jié)果、單播查表結(jié)果、組播查表結(jié)果、組播RPF檢查結(jié)果,生成內(nèi)部上報(bào)報(bào)頭或內(nèi)部轉(zhuǎn)發(fā)報(bào)頭;f.內(nèi)部報(bào)文生成單元用邏輯仲裁單元生成的所述內(nèi)部報(bào)頭將從緩存先入先出寄存器讀入的所述報(bào)文重新封裝后,生成上報(bào)報(bào)文寫(xiě)入上報(bào)分組緩存先入先出寄存器,之后送入主控模塊;生成轉(zhuǎn)發(fā)報(bào)文寫(xiě)入轉(zhuǎn)發(fā)分組緩存先入先出寄存器,之后送入交換網(wǎng)絡(luò)。
為了實(shí)現(xiàn)上述各個(gè)步驟,在步驟a之前應(yīng)將線路接口模塊設(shè)置為在所述輸出報(bào)文上添加包含報(bào)文類(lèi)型的內(nèi)部標(biāo)簽。
在上述步驟c中,同時(shí)完成了IPv6協(xié)議中的組播直連檢查。
步驟c中的組播直連檢查的方式是所述報(bào)頭檢查單元根據(jù)報(bào)頭中的報(bào)文類(lèi)型標(biāo)簽判斷當(dāng)前報(bào)文是單播報(bào)文還是組播報(bào)文,是單播報(bào)文則將組播直連檢查的結(jié)果置為無(wú)效;是組播報(bào)文則進(jìn)行組播直連檢查。
上述步驟d中,所述組播RPF檢查單元根據(jù)從緩存先入先出寄存器中讀取所述報(bào)文報(bào)頭中的報(bào)文類(lèi)型標(biāo)簽,是單播報(bào)文則將RPF檢查通過(guò)置為有效;是組播報(bào)文則用單播查表結(jié)果進(jìn)行RPF檢查。
上述步驟e可以進(jìn)一步分解為以下各步
e1.判斷所述報(bào)文是單播報(bào)文還是組播報(bào)文,如果所述報(bào)文是單播報(bào)文,則進(jìn)入步驟e2;如果所述報(bào)文是組播報(bào)文,則進(jìn)入步驟e3;e2.若報(bào)頭檢查未通過(guò),則按照RFC相關(guān)協(xié)議生成內(nèi)部上報(bào)報(bào)頭;若報(bào)頭檢查通過(guò),單播查表未命中,則按照RFC相關(guān)協(xié)議生成內(nèi)部上報(bào)報(bào)頭;若報(bào)頭檢查通過(guò),單播查表命中,則生成內(nèi)部轉(zhuǎn)發(fā)報(bào)頭;e3.若報(bào)頭檢查未通過(guò),則按照RFC相關(guān)協(xié)議生成內(nèi)部上報(bào)報(bào)頭;若報(bào)頭檢查通過(guò),單播查表未命中,則丟棄當(dāng)前報(bào)文;若報(bào)頭檢查通過(guò),單播查表命中,RPF檢查失敗,則按照RFC相關(guān)協(xié)議生成內(nèi)部上報(bào)報(bào)頭;若報(bào)頭檢查通過(guò),單播查表命中,RPF檢查通過(guò),同時(shí)為直連組播報(bào)文,則按照RFC相關(guān)協(xié)議生成內(nèi)部上報(bào)報(bào)頭,同時(shí)生成內(nèi)部轉(zhuǎn)發(fā)報(bào)頭;若報(bào)頭檢查通過(guò),單播查表命中,RPF檢查通過(guò),同時(shí)為非直連組播報(bào)文,則生成內(nèi)部轉(zhuǎn)發(fā)報(bào)頭。
本發(fā)明同時(shí)提供了一種IPv6路由器,其基本結(jié)構(gòu)與現(xiàn)有技術(shù)的路由器相同,包括線路接口模塊、轉(zhuǎn)發(fā)引擎、交換網(wǎng)絡(luò)、主控模塊、輸出調(diào)度模塊。本發(fā)明的特征在于轉(zhuǎn)發(fā)引擎包括下列模塊轉(zhuǎn)發(fā)引擎輸入緩存先入先出寄存器,用于緩存線路接口模塊輸入的報(bào)文;輸出控制模塊,用于讀取緩存的報(bào)文,將該報(bào)文的報(bào)頭寫(xiě)入報(bào)頭檢查模塊,生成單播查表關(guān)鍵字寫(xiě)入單播查表模塊,生成組播查表關(guān)鍵字寫(xiě)入組播查表模塊,并將該報(bào)文寫(xiě)入報(bào)頭處理緩存先入先出寄存器;單播查表模塊,用于對(duì)所述單播查表關(guān)鍵字進(jìn)行查表得出單播查表結(jié)果;組播查表模塊,用于對(duì)所述組播查表關(guān)鍵字進(jìn)行查表得出組播查表結(jié)果;報(bào)頭檢查模塊,對(duì)所述報(bào)文的報(bào)頭進(jìn)行檢查得出報(bào)頭檢查結(jié)果;組播RPF檢查模塊,用于根據(jù)單播查表結(jié)果或組播查表結(jié)果和從緩存先入先出寄存器讀出的所述報(bào)文得出RPF檢查結(jié)果;
邏輯仲裁模塊,用于根據(jù)報(bào)頭檢查結(jié)果、單播查表結(jié)果、組播查表結(jié)果、組播RPF檢查結(jié)果,生成內(nèi)部上報(bào)報(bào)頭或內(nèi)部轉(zhuǎn)發(fā)報(bào)頭;內(nèi)部報(bào)文生成模塊,用于用邏輯仲裁模塊生成的所述內(nèi)部報(bào)頭將從緩存先入先出寄存器讀入的所述報(bào)文重新封裝后,生成上報(bào)報(bào)文寫(xiě)入上報(bào)分組緩存先入先出寄存器,之后送入主控模塊;生成轉(zhuǎn)發(fā)報(bào)文寫(xiě)入轉(zhuǎn)發(fā)分組緩存先入先出寄存器,之后送入交換網(wǎng)絡(luò)。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)首先,設(shè)計(jì)中采用單一的處理單元來(lái)同時(shí)支持單播和組播報(bào)文的報(bào)頭處理,輸入緩存FIFO、轉(zhuǎn)發(fā)分組FIFO和上報(bào)分組FIFO都只需要一個(gè),節(jié)省了一倍的緩存資源;其次,由于本發(fā)明中對(duì)報(bào)頭檢查等通用邏輯進(jìn)行了提取,對(duì)單播和組播的操作進(jìn)行了統(tǒng)一的支持,只是內(nèi)部轉(zhuǎn)發(fā)標(biāo)簽和內(nèi)部上報(bào)標(biāo)簽按照單播和組播分別實(shí)現(xiàn),大量節(jié)省了設(shè)計(jì)中的邏輯資源;第三,本發(fā)明不需要基于報(bào)文類(lèi)型的分路操作,讀取的報(bào)文不經(jīng)過(guò)任何判決,直接寫(xiě)入后級(jí)的報(bào)頭處理輸入緩存FIFO,控制更為簡(jiǎn)單;第四,不需要實(shí)現(xiàn)單播轉(zhuǎn)發(fā)分組和組播轉(zhuǎn)發(fā)分組的合路以及單播上報(bào)分組和組播上報(bào)分組的合路,簡(jiǎn)化了設(shè)計(jì)復(fù)雜度。
綜上,本發(fā)明由于使用了較少的元件降低了路由器的制造成本,同時(shí)采用更為簡(jiǎn)單的邏輯控制,從而提高了路由器的運(yùn)行穩(wěn)定性。
附圖1所示為典型的路由器結(jié)構(gòu);附圖2所示為現(xiàn)有技術(shù)中將單播和組播報(bào)頭分路處理的方法;
附圖3是本發(fā)明所述統(tǒng)一處理單組播報(bào)頭的方法;附圖4是本發(fā)明所述報(bào)頭處理的判決工作流程圖;附圖5是本發(fā)明所述由線路接口模塊10添加標(biāo)簽后的內(nèi)部報(bào)文格式;附圖6是本發(fā)明所述報(bào)文類(lèi)型的各比特位的表征意義;附圖7是本發(fā)明所述內(nèi)部報(bào)頭生成單元產(chǎn)生的單播轉(zhuǎn)發(fā)分組封裝格式;附圖8是本發(fā)明所述內(nèi)部報(bào)頭生成單元產(chǎn)生的組播轉(zhuǎn)發(fā)分組封裝格式;附圖9是本發(fā)明所述內(nèi)部報(bào)頭生成單元產(chǎn)生的上報(bào)分組封裝格式;附圖10是附圖9中分組標(biāo)志的各比特位含義。
具體實(shí)施例方式
下面我們將結(jié)合附圖,對(duì)本發(fā)明的優(yōu)選實(shí)施方案進(jìn)行詳細(xì)描述。
本發(fā)明提供了一種IPv6路由器,其基本結(jié)構(gòu)與現(xiàn)有的路由器相同,如圖1所示。本發(fā)明的創(chuàng)新之處在于轉(zhuǎn)發(fā)引擎20的實(shí)現(xiàn)方法,對(duì)于進(jìn)入轉(zhuǎn)發(fā)引擎20的報(bào)文,本發(fā)明將現(xiàn)有技術(shù)中單播報(bào)頭處理和組播報(bào)頭處理兩個(gè)獨(dú)立的模塊合成為一個(gè)統(tǒng)一的報(bào)頭處理單元,來(lái)同時(shí)支持單播報(bào)文和組播報(bào)文的轉(zhuǎn)發(fā),參見(jiàn)圖3。為了實(shí)現(xiàn)統(tǒng)一報(bào)頭處理單元對(duì)單播和組播業(yè)務(wù)轉(zhuǎn)發(fā)的支持,對(duì)單播和組播的轉(zhuǎn)發(fā)行為分析如下。
轉(zhuǎn)發(fā)引擎20對(duì)單播和組播業(yè)務(wù)處理的相同點(diǎn)1.提取IP報(bào)頭,并將相應(yīng)的關(guān)鍵字送往查表單元CAM+SRAM;2.對(duì)報(bào)頭的報(bào)頭檢查(包括版本號(hào)、報(bào)文長(zhǎng)度、TTL超時(shí)和地址范圍等);3.根據(jù)查表結(jié)果和報(bào)頭檢查結(jié)果進(jìn)行邏輯仲裁判決,生成報(bào)文的處理方式;4.在生成報(bào)文的處理方式以后,都要由內(nèi)部報(bào)文生成單元將報(bào)文貼上相應(yīng)的內(nèi)部報(bào)頭,送到相應(yīng)的緩存單元。
轉(zhuǎn)發(fā)引擎20對(duì)單播和組播業(yè)務(wù)處理的不同點(diǎn)1.送到查表單元的關(guān)鍵字不同;2.對(duì)組播報(bào)文除了單播所要求的報(bào)頭檢查以外,還要進(jìn)行組播直連檢查和RPF檢查;3.在生成報(bào)文的處理方式時(shí),對(duì)直連組播報(bào)文除了正常轉(zhuǎn)發(fā)該報(bào)文外,要產(chǎn)生組播直連上報(bào)ICMP報(bào)文;對(duì)RPF檢查失敗的組播報(bào)文,對(duì)該報(bào)文丟棄的同時(shí)產(chǎn)生RPF失敗上報(bào)ICMP報(bào)文;4.對(duì)單播報(bào)文和組播報(bào)文所生成的內(nèi)部報(bào)頭不同。
基于以上分析,本實(shí)施例基于單個(gè)報(bào)頭處理單元支持單組播業(yè)務(wù)線速轉(zhuǎn)發(fā)的方案如圖3所示。
本實(shí)施例中,首先將線路接口模塊10設(shè)置為將輸出報(bào)文貼上包含源端口、源接口以及報(bào)文類(lèi)型等數(shù)據(jù)的內(nèi)部標(biāo)簽。報(bào)文從線路接口模塊10送入轉(zhuǎn)發(fā)引擎20后寫(xiě)入轉(zhuǎn)發(fā)引擎輸入緩存FIFO中,轉(zhuǎn)發(fā)引擎20的輸出控制單元21從轉(zhuǎn)發(fā)引擎輸入緩存FIFO中讀取當(dāng)前報(bào)文,并將讀出的報(bào)頭寫(xiě)入報(bào)頭檢查單元22,生成單播查表關(guān)鍵字寫(xiě)入單播查表單元,生成組播查表關(guān)鍵字寫(xiě)入組播查表單元,同時(shí)將讀取的完整報(bào)文寫(xiě)入報(bào)頭處理緩存FIFO23。所以在本發(fā)明中,報(bào)頭檢查和單播查表、組播查表是并行操作的。
報(bào)頭檢查單元22、單播查表單元、組播查表單元、組播RPF檢查單元23、邏輯仲裁單元25的總體工作及判斷的詳細(xì)流程如圖4所示。
本實(shí)施例中組播直連檢查功能在報(bào)頭檢查單元22實(shí)現(xiàn)。報(bào)頭檢查單元22根據(jù)線路接口模塊10添加的報(bào)文類(lèi)型標(biāo)簽判別當(dāng)前處理的報(bào)文類(lèi)型是單播報(bào)文還是組播報(bào)文,如果是單播報(bào)文則直接將組播直連檢查的結(jié)果置為無(wú)效;如果是組播報(bào)文,則用該報(bào)文的源端口號(hào)和源接口號(hào)進(jìn)行直連子網(wǎng)查表,并將查表結(jié)果與報(bào)文的源IP地址前64位進(jìn)行比較。若一致,則產(chǎn)生直連組播有效;若不一致,則產(chǎn)生直連組播無(wú)效。
為了實(shí)現(xiàn)對(duì)單播和組播報(bào)文的統(tǒng)一處理,本實(shí)施例中有一個(gè)獨(dú)立的組播RPF檢查單元24,在單播查表結(jié)果送入時(shí),組播RPF檢查單元24從報(bào)頭處理緩存FIFO23中讀出當(dāng)前報(bào)文由線路接口模塊10添加的內(nèi)部標(biāo)簽,該標(biāo)簽攜帶了報(bào)文的源端口號(hào)、源接口號(hào)和報(bào)文類(lèi)型等信息。內(nèi)部標(biāo)簽格式如圖5所示。其中63~61位表示報(bào)文類(lèi)型,具體含義如圖6所示。
如果組播RPF檢查單元24從報(bào)頭處理緩存FIFO23中讀出的當(dāng)前報(bào)文為組播報(bào)文,則用單播查表結(jié)果中的目的端口號(hào)和目的接口號(hào)或組播查表結(jié)果的RPF項(xiàng)與當(dāng)前組播報(bào)文的源端口號(hào)和源接口號(hào)進(jìn)行比較。如果一致,則將RPF檢查通過(guò)置為有效;如果不一致,則將RPF檢查通過(guò)置為無(wú)效。如果讀出的當(dāng)前報(bào)文為單播報(bào)文,則直接將RPF檢查通過(guò)的置為有效,因?yàn)閱尾?bào)文不需要RPF檢查,不可能產(chǎn)生RPF檢查失敗的結(jié)果。
邏輯仲裁單元25在收到報(bào)頭檢查結(jié)果、組播RPF檢查結(jié)果、單播查表結(jié)果以及組播查表結(jié)果之后,按照如下方式生成報(bào)文的處理方式1.當(dāng)前報(bào)文為單播報(bào)文a)如果報(bào)頭檢查未通過(guò),即有版本號(hào)、TTL超時(shí)、報(bào)文長(zhǎng)度和地址范圍等錯(cuò)誤,則按照RFC相關(guān)協(xié)議生成上報(bào)分組的內(nèi)部報(bào)頭(只上報(bào));b)如果報(bào)頭檢查通過(guò),單播查表未命中,則按照RFC相關(guān)協(xié)議生成上報(bào)分組的內(nèi)部報(bào)頭(只上報(bào));c)如果報(bào)頭檢查通過(guò),單播查表命中,則按照轉(zhuǎn)發(fā)標(biāo)簽格式生成轉(zhuǎn)發(fā)分組的內(nèi)部報(bào)頭(只轉(zhuǎn)發(fā))。
2.當(dāng)前報(bào)文為組播報(bào)文a)如果報(bào)頭檢查未通過(guò),即有版本號(hào)、TTL超時(shí)、報(bào)文長(zhǎng)度和地址范圍等錯(cuò)誤,則按照RFC相關(guān)協(xié)議生成上報(bào)分組的內(nèi)部報(bào)頭(只上報(bào));b)如果報(bào)頭檢查通過(guò),單播查表未命中,則丟棄當(dāng)前報(bào)文(丟棄);c)如果報(bào)頭檢查通過(guò),單播查表命中,RPF檢查失敗,則按照RFC相關(guān)協(xié)議生成上報(bào)分組的內(nèi)部報(bào)頭(只上報(bào));d)如果報(bào)頭檢查通過(guò),單播查表命中,RPF檢查通過(guò),同時(shí)為直連組播報(bào)文,則按照RFC相關(guān)協(xié)議生成上報(bào)分組的內(nèi)部報(bào)頭,同時(shí)按照轉(zhuǎn)發(fā)標(biāo)簽格式生成轉(zhuǎn)發(fā)分組的內(nèi)部報(bào)頭(轉(zhuǎn)發(fā)并上報(bào));e)如果報(bào)頭檢查通過(guò),單播查表命中,RPF檢查通過(guò),同時(shí)為非直連組播報(bào)文,則按照轉(zhuǎn)發(fā)標(biāo)簽格式生成轉(zhuǎn)發(fā)分組的內(nèi)部報(bào)頭(只轉(zhuǎn)發(fā))。
圖4中的安檢結(jié)果,由查安全過(guò)濾表獲得,本實(shí)施例中為了支持對(duì)IP報(bào)文的安全過(guò)濾,在對(duì)報(bào)文進(jìn)行單播查表、組播查表的同時(shí)還可以實(shí)現(xiàn)安檢查表以及優(yōu)先級(jí)查表。
內(nèi)部報(bào)文生成單元按照邏輯仲裁單元25送入的結(jié)果,分別生成轉(zhuǎn)發(fā)分組內(nèi)部報(bào)頭和上報(bào)分組內(nèi)部報(bào)頭,并從報(bào)頭處理緩存FIFO23中讀取報(bào)文,用新的內(nèi)部報(bào)頭對(duì)報(bào)文重新封裝,生成上報(bào)報(bào)文、轉(zhuǎn)發(fā)報(bào)文、版本號(hào)差錯(cuò)報(bào)文、地址范圍差錯(cuò)報(bào)文、超時(shí)差錯(cuò)報(bào)文、單播查表不中差錯(cuò)報(bào)文、組播查表未中協(xié)議報(bào)文、組播RPF失敗協(xié)議報(bào)文、組播直連檢查協(xié)議報(bào)文等,對(duì)應(yīng)轉(zhuǎn)發(fā)的報(bào)文寫(xiě)入后級(jí)的轉(zhuǎn)發(fā)分組緩存FIFO,對(duì)應(yīng)上報(bào)的報(bào)文寫(xiě)入后級(jí)的上報(bào)分組緩存FIFO。
在本實(shí)施例中,數(shù)據(jù)寬度采用64比特,其中61到63的3個(gè)比特為報(bào)文類(lèi)型控制位,64和65比特為頭尾標(biāo)志,方便路由器內(nèi)部實(shí)現(xiàn)基于包的處理。內(nèi)部報(bào)文生成單元生成的單播轉(zhuǎn)發(fā)分組報(bào)文的封裝格式如圖7所示,組播轉(zhuǎn)發(fā)分組報(bào)文的封裝格式如圖8所示,上報(bào)協(xié)議分組報(bào)文的封裝格式如圖9所示。圖9中的分組標(biāo)志由報(bào)頭檢查結(jié)果、組播RPF檢查結(jié)果以及安全過(guò)濾查表結(jié)果等生成,可采用如圖10所示的格式。
本實(shí)施例是基于FPGA(Field Programable Gate Array,現(xiàn)場(chǎng)可編程門(mén)陣列)來(lái)設(shè)計(jì)的,在實(shí)際的工程實(shí)現(xiàn)中還可以采用基于NP(Network Processor,網(wǎng)絡(luò)處理器)、ASIC(Application Specific Integrated Circuit,特定應(yīng)用集成電路)等來(lái)實(shí)現(xiàn)。
本實(shí)施例中是以64位數(shù)據(jù)總線來(lái)進(jìn)行論述,具體實(shí)現(xiàn)中可以采用128等其他總線寬度。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施方式,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限定。任何在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種支持IPv6單組播業(yè)務(wù)線速轉(zhuǎn)發(fā)的方法,應(yīng)用于IPv6路由器,其特征在于,包括以下步驟a.對(duì)線路接口模塊輸出的報(bào)文先進(jìn)行緩存,之后輸出控制單元讀取緩存的報(bào)文,將該報(bào)文的報(bào)頭寫(xiě)入報(bào)頭檢查單元,生成單播查表關(guān)鍵字寫(xiě)入單播查表單元,生成組播查表關(guān)鍵字寫(xiě)入組播查表單元,并將該報(bào)文寫(xiě)入報(bào)頭處理緩存先入先出寄存器;b.單播查表單元對(duì)所述單播查表關(guān)鍵字進(jìn)行查表得出單播查表結(jié)果,組播查表單元對(duì)所述組播查表關(guān)鍵字進(jìn)行查表得出組播查表結(jié)果;c.報(bào)頭檢查單元對(duì)所述報(bào)文的報(bào)頭進(jìn)行檢查得出報(bào)頭檢查結(jié)果;d.組播RPF檢查單元根據(jù)單播查表結(jié)果或組播查表結(jié)果和從緩存先入先出寄存器讀出的所述報(bào)文得出RPF檢查結(jié)果;e.邏輯仲裁單元根據(jù)報(bào)頭檢查結(jié)果、單播查表結(jié)果、組播查表結(jié)果、組播RPF檢查結(jié)果,生成內(nèi)部上報(bào)報(bào)頭或內(nèi)部轉(zhuǎn)發(fā)報(bào)頭;f.內(nèi)部報(bào)文生成單元用邏輯仲裁單元生成的所述內(nèi)部報(bào)頭將從緩存先入先出寄存器讀入的所述報(bào)文重新封裝后,生成上報(bào)報(bào)文寫(xiě)入上報(bào)分組緩存先入先出寄存器,之后送入主控模塊;生成轉(zhuǎn)發(fā)報(bào)文寫(xiě)入轉(zhuǎn)發(fā)分組緩存先入先出寄存器,之后送入交換網(wǎng)絡(luò)。
2.按照權(quán)利要求1所述的支持IPv6單組播業(yè)務(wù)線速轉(zhuǎn)發(fā)的方法,其特征在于在所述步驟a之前,將線路接口模塊設(shè)置為在所述輸出報(bào)文上添加包含報(bào)文類(lèi)型的內(nèi)部標(biāo)簽。
3.按照權(quán)利要求2所述的支持IPv6單組播業(yè)務(wù)線速轉(zhuǎn)發(fā)的方法,其特征在于所述步驟c中還包括組播直連檢查。
4.按照權(quán)利要求3所述支持IPv6單組播業(yè)務(wù)線速轉(zhuǎn)發(fā)的方法,其特征在于所述報(bào)頭檢查單元根據(jù)報(bào)頭中的報(bào)文類(lèi)型標(biāo)簽判斷當(dāng)前報(bào)文是單播報(bào)文還是組播報(bào)文,是單播報(bào)文則將組播直連檢查的結(jié)果置為無(wú)效;是組播報(bào)文則進(jìn)行組播直連檢查。
5.按照權(quán)利要求2所述的支持IPv6單組播業(yè)務(wù)線速轉(zhuǎn)發(fā)的方法,其特征在于所述步驟d中,所述組播RPF檢查單元根據(jù)從緩存先入先出寄存器中讀取所述報(bào)文報(bào)頭中的報(bào)文類(lèi)型標(biāo)簽,是單播報(bào)文則將RPF檢查通過(guò)置為有效;是組播報(bào)文則用單播查表結(jié)果進(jìn)行RPF檢查。
6.按照權(quán)利要求1所述的支持IPv6單組播業(yè)務(wù)線速轉(zhuǎn)發(fā)的方法,其特征在于所述步驟e具體包括e1.判斷所述報(bào)文是單播報(bào)文還是組播報(bào)文,如果所述報(bào)文是單播報(bào)文,則進(jìn)入步驟e2;如果所述報(bào)文是組播報(bào)文,則進(jìn)入步驟e3;e2.若報(bào)頭檢查未通過(guò),則按照RFC相關(guān)協(xié)議生成內(nèi)部上報(bào)報(bào)頭;若報(bào)頭檢查通過(guò),單播查表未命中,則按照RFC相關(guān)協(xié)議生成內(nèi)部上報(bào)報(bào)頭;若報(bào)頭檢查通過(guò),單播查表命中,則生成內(nèi)部轉(zhuǎn)發(fā)報(bào)頭;e3.若報(bào)頭檢查未通過(guò),則按照RFC相關(guān)協(xié)議生成內(nèi)部上報(bào)報(bào)頭;若報(bào)頭檢查通過(guò),單播查表未命中,則丟棄當(dāng)前報(bào)文;若報(bào)頭檢查通過(guò),單播查表命中,RPF檢查失敗,則按照RFC相關(guān)協(xié)議生成內(nèi)部上報(bào)報(bào)頭;若報(bào)頭檢查通過(guò),單播查表命中,RPF檢查通過(guò),同時(shí)為直連組播報(bào)文,則按照RFC相關(guān)協(xié)議生成內(nèi)部上報(bào)報(bào)頭,同時(shí)生成內(nèi)部轉(zhuǎn)發(fā)報(bào)頭;若報(bào)頭檢查通過(guò),單播查表命中,RPF檢查通過(guò),同時(shí)為非直連組播報(bào)文,則生成內(nèi)部轉(zhuǎn)發(fā)報(bào)頭。
7.一種IPv6路由器,包括線路接口模塊、轉(zhuǎn)發(fā)引擎、交換網(wǎng)絡(luò)、主控模塊、輸出調(diào)度模塊,其特征在于,所述轉(zhuǎn)發(fā)引擎包括以下模塊轉(zhuǎn)發(fā)引擎輸入緩存先入先出寄存器,用于緩存線路接口模塊輸入的報(bào)文;輸出控制模塊,用于讀取緩存的報(bào)文,將該報(bào)文的報(bào)頭寫(xiě)入報(bào)頭檢查模塊,生成單播查表關(guān)鍵字寫(xiě)入單播查表模塊,生成組播查表關(guān)鍵字寫(xiě)入組播查表模塊,并將該報(bào)文寫(xiě)入報(bào)頭處理緩存先入先出寄存器;單播查表模塊,用于對(duì)所述單播查表關(guān)鍵字進(jìn)行查表得出單播查表結(jié)果;組播查表模塊,用于對(duì)所述組播查表關(guān)鍵字進(jìn)行查表得出組播查表結(jié)果;報(bào)頭檢查模塊,用于對(duì)所述報(bào)文的報(bào)頭進(jìn)行檢查得出報(bào)頭檢查結(jié)果;組播RPF檢查模塊,用于根據(jù)單播查表結(jié)果或組播查表結(jié)果和從緩存先入先出寄存器讀出的所述報(bào)文得出RPF檢查結(jié)果;邏輯仲裁模塊,用于根據(jù)報(bào)頭檢查結(jié)果、單播查表結(jié)果、組播查表結(jié)果、組播RPF檢查結(jié)果,生成內(nèi)部上報(bào)報(bào)頭或內(nèi)部轉(zhuǎn)發(fā)報(bào)頭;內(nèi)部報(bào)文生成模塊,用于用邏輯仲裁模塊生成的所述內(nèi)部報(bào)頭將從緩存先入先出寄存器讀入的所述報(bào)文重新封裝后,生成上報(bào)報(bào)文寫(xiě)入上報(bào)分組緩存先入先出寄存器,之后送入主控模塊;生成轉(zhuǎn)發(fā)報(bào)文寫(xiě)入轉(zhuǎn)發(fā)分組緩存先入先出寄存器,之后送入交換網(wǎng)絡(luò)。
全文摘要
本發(fā)明提供了一種支持IPv6單組播業(yè)務(wù)線速轉(zhuǎn)發(fā)的方法,對(duì)線路接口模塊輸出的報(bào)文先進(jìn)行緩存,之后輸出控制單元讀取緩存的報(bào)文,將該報(bào)文的報(bào)頭寫(xiě)入報(bào)頭檢查單元,生成單播查表關(guān)鍵字進(jìn)行單播查表,生成組播查表關(guān)鍵字進(jìn)行組播查表,并將該報(bào)文寫(xiě)入報(bào)頭處理緩存先入先出寄存器。組播RPF檢查單元用單播查表結(jié)果或組播查表結(jié)果和該報(bào)文得出RPF檢查結(jié)果;邏輯仲裁單元綜合報(bào)頭檢查結(jié)果、單播查表結(jié)果、組播查表結(jié)果、組播RPF檢查結(jié)果,生成內(nèi)部上報(bào)報(bào)頭或內(nèi)部轉(zhuǎn)發(fā)報(bào)頭;由內(nèi)部報(bào)文生成單元用該內(nèi)部報(bào)頭將該報(bào)文重新封裝后,生成上報(bào)報(bào)文送入主控模塊;生成轉(zhuǎn)發(fā)報(bào)文送入交換網(wǎng)絡(luò)。本發(fā)明同時(shí)提供了一種應(yīng)用上述方法的IPv6路由器。
文檔編號(hào)H04L12/56GK1728683SQ20041007068
公開(kāi)日2006年2月1日 申請(qǐng)日期2004年7月29日 優(yōu)先權(quán)日2004年7月29日
發(fā)明者蘭巨龍, 張興明, 劉勤讓, 趙昭靈, 黃惠群, 李玉峰 申請(qǐng)人:國(guó)家數(shù)字交換系統(tǒng)工程技術(shù)研究中心