利用流表轉(zhuǎn)發(fā)數(shù)據(jù)的方法及系統(tǒng)的制作方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及一種數(shù)據(jù)轉(zhuǎn)發(fā)技術(shù),特別是涉及一種利用流表轉(zhuǎn)發(fā)數(shù)據(jù)的方法及系統(tǒng)。【
背景技術(shù):
】[0002]OpenFlow是美國斯坦福大學(xué)于2007年提出的一種支持網(wǎng)絡(luò)創(chuàng)新研宄的新型網(wǎng)絡(luò)交換模型,。OpenFlow的設(shè)計目標(biāo)之一就是將網(wǎng)絡(luò)設(shè)備的控制功能與轉(zhuǎn)發(fā)功能進(jìn)行分離,進(jìn)而將控制功能全部集中到遠(yuǎn)程的控制器上完成。而OpenFlow交換機只負(fù)責(zé)在本地做簡單高速的數(shù)據(jù)轉(zhuǎn)發(fā)。在OpenFlow交換機的運行過程中,其數(shù)據(jù)轉(zhuǎn)發(fā)的依據(jù)就是流表(flowtable)。所謂流表,其實可被視作是OpenFlow對網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)轉(zhuǎn)發(fā)功能的一種抽象。[0003]在傳統(tǒng)網(wǎng)絡(luò)設(shè)備中,TCAM(ternarycontentaddressablememory三態(tài)內(nèi)容尋址存儲器)主要用于FIB、MAC、MPLSLable和ACL表。由于每個表的匹配字段長度不一,所以可以分別設(shè)計,并且具有最大容量限制以期達(dá)到最小的開銷。而在OpenFlow交換中,不再區(qū)分匹配長度較短的FIB、MAC、MPLSLable表以及較長的ACL表,而一律采用具有最大長度的流表項記錄代替。對OpenFlowvl.0而言,流表的匹配字段長度長達(dá)252位,而一般的IPv4RIBTCAM匹配字段長度只有60至80位,其開銷增加了三倍以上。[0004]為了減少流表開銷,OpenFlowvl.1設(shè)計了多級流表,即將流表進(jìn)行特征提取,進(jìn)而將匹配過程分解成多個步驟,形成流水線的處理形式,從而降低總的流表記錄條數(shù)。但超過三級的多級流表的實際物理實現(xiàn),受芯片復(fù)雜度,成本等因素的影響,可行性比較低。目前已經(jīng)實現(xiàn)的最多流表級數(shù)是三級。[0005]隨著網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)復(fù)雜度的增加,OpenFlow交換機在解析帶有嵌套的數(shù)據(jù)(如QinQ數(shù)據(jù))時,每解析一層嵌套就必須將下一層子數(shù)據(jù)從所述OpenFlow交換機的物理輸出端口再返回該OpenFlow交換機的物理輸入端口,以實現(xiàn)下一層嵌套的解析。冗余的輸入輸出,導(dǎo)致OpenFlow交換機的物理端口的資源變得緊張。為了解決上述問題,需要對現(xiàn)有技術(shù)進(jìn)行改進(jìn)?!?br/>發(fā)明內(nèi)容】[0006]鑒于以上所述現(xiàn)有技術(shù)的缺點,本發(fā)明的目的在于提供一種利用流表轉(zhuǎn)發(fā)數(shù)據(jù)的方法及系統(tǒng),用于解決現(xiàn)有技術(shù)中無法高效的利用OpenFlow交換機的資源的問題。[0007]為實現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種利用流表轉(zhuǎn)發(fā)數(shù)據(jù)的方法,包括:根據(jù)數(shù)據(jù)的業(yè)務(wù)類型預(yù)設(shè)由至少一個流表所構(gòu)成的虛擬流轉(zhuǎn)路徑;根據(jù)所接收數(shù)據(jù)的業(yè)務(wù)類型選擇一個虛擬流轉(zhuǎn)路徑,并根據(jù)所接收的數(shù)據(jù)在所選擇的虛擬流轉(zhuǎn)路徑中流轉(zhuǎn)時所得到的各流表的值,選擇下一虛擬流轉(zhuǎn)路徑,直至所選擇的虛擬流轉(zhuǎn)路徑中的最后一個流表的屬性為不可跳轉(zhuǎn),則根據(jù)所述最后一個虛擬流轉(zhuǎn)路徑中各流表的值對所接收的數(shù)據(jù)予以轉(zhuǎn)發(fā)。[0008]優(yōu)選地,所述根據(jù)數(shù)據(jù)的業(yè)務(wù)類型預(yù)設(shè)由至少一個流表所構(gòu)成的虛擬流轉(zhuǎn)路徑的方式包括:提供一用于輸入業(yè)務(wù)類型和流表的配置界面,根據(jù)用戶在所述配置界面中進(jìn)行的業(yè)務(wù)類型和所對應(yīng)的虛擬流轉(zhuǎn)路徑的設(shè)計操作,生成一虛擬流轉(zhuǎn)路徑。[0009]優(yōu)選地,在所述根據(jù)所接收數(shù)據(jù)的業(yè)務(wù)類型選擇一個虛擬流轉(zhuǎn)路徑的步驟之前,還包括:為所接收的數(shù)據(jù)開辟一緩存區(qū),將所接收的數(shù)據(jù)存入所述緩存區(qū)。[0010]優(yōu)選地,所述根據(jù)所接收數(shù)據(jù)的業(yè)務(wù)類型選擇一個虛擬流轉(zhuǎn)路徑的方式包括:按照預(yù)設(shè)的各業(yè)務(wù)類型的優(yōu)先級由高到低,依次將所述緩存區(qū)中的數(shù)據(jù)對應(yīng)選擇一個虛擬流轉(zhuǎn)路徑。[0011]優(yōu)選地,所述虛擬流轉(zhuǎn)路徑中包含用于轉(zhuǎn)發(fā)數(shù)據(jù)的端口,對應(yīng)的,在根據(jù)所接收數(shù)據(jù)的業(yè)務(wù)類型選擇一個虛擬流轉(zhuǎn)路徑,并根據(jù)所接收的數(shù)據(jù)在所選擇的虛擬流轉(zhuǎn)路徑中流轉(zhuǎn)時所得到的各流表的值,選擇下一虛擬流轉(zhuǎn)路徑,直至所選擇的虛擬流轉(zhuǎn)路徑中的最后一個流表的屬性為不可跳轉(zhuǎn),則根據(jù)所述最后一個虛擬流轉(zhuǎn)路徑中各流表的值對所接收的數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)的過程中,所述方法還包括:根據(jù)預(yù)設(shè)的調(diào)度策略,將在各自虛擬流轉(zhuǎn)路徑中需要使用同一個流表、和/或端口的不同數(shù)據(jù)進(jìn)行調(diào)度。[0012]基于上述目的,本發(fā)明還提供一種利用流表轉(zhuǎn)發(fā)數(shù)據(jù)的系統(tǒng),包括:預(yù)設(shè)單元,用于根據(jù)數(shù)據(jù)的業(yè)務(wù)類型預(yù)設(shè)由至少一個流表所構(gòu)成的虛擬流轉(zhuǎn)路徑;轉(zhuǎn)發(fā)單元,用于根據(jù)所接收數(shù)據(jù)的業(yè)務(wù)類型選擇一個虛擬流轉(zhuǎn)路徑,并根據(jù)所接收的數(shù)據(jù)在所選擇的虛擬流轉(zhuǎn)路徑中流轉(zhuǎn)時所得到的各流表的值,選擇下一虛擬流轉(zhuǎn)路徑,直至所選擇的虛擬流轉(zhuǎn)路徑中的最后一個流表的屬性為不可跳轉(zhuǎn),則根據(jù)所述最后一個虛擬流轉(zhuǎn)路徑中各流表的值對所接收的數(shù)據(jù)予以轉(zhuǎn)發(fā)。[0013]優(yōu)選地,所述預(yù)設(shè)單元用于提供一用于輸入業(yè)務(wù)類型和流表的配置界面,根據(jù)用戶在所述配置界面中進(jìn)行的業(yè)務(wù)類型和所對應(yīng)的虛擬流轉(zhuǎn)路徑的設(shè)計操作,生成一虛擬流轉(zhuǎn)路徑。[0014]優(yōu)選地,所述系統(tǒng)還包括:緩存單元,用于在所述轉(zhuǎn)發(fā)單元根據(jù)所接收數(shù)據(jù)的業(yè)務(wù)類型選擇一個虛擬流轉(zhuǎn)路徑之前,為所接收的數(shù)據(jù)開辟一緩存區(qū),將所接收的數(shù)據(jù)存入所述緩存區(qū)。[0015]優(yōu)選地,所述轉(zhuǎn)發(fā)單元還用于按照預(yù)設(shè)的各業(yè)務(wù)類型的優(yōu)先級由高到低,依次將所述緩存區(qū)中的數(shù)據(jù)對應(yīng)選擇一個虛擬流轉(zhuǎn)路徑。[0016]優(yōu)選地,所述虛擬流轉(zhuǎn)路徑中包含用于轉(zhuǎn)發(fā)數(shù)據(jù)的端口,對應(yīng)的,在所述轉(zhuǎn)發(fā)單元為多個數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)處理的過程中,所述系統(tǒng)還包括:調(diào)度單元,用于根據(jù)預(yù)設(shè)的調(diào)度策略,將在各自虛擬流轉(zhuǎn)路徑中需要使用同一個流表、和/或端口的不同數(shù)據(jù)進(jìn)行調(diào)度。[0017]如上所述,本發(fā)明的利用流表轉(zhuǎn)發(fā)數(shù)據(jù)的方法及系統(tǒng),具有以下有益效果:通過根據(jù)業(yè)務(wù)類型設(shè)置虛擬流轉(zhuǎn)路徑,能將帶有嵌套的數(shù)據(jù)和非嵌套數(shù)據(jù)加以區(qū)分,并針對嵌套數(shù)據(jù)的業(yè)務(wù)類型設(shè)置每一層嵌套的虛擬流轉(zhuǎn)路徑,并根據(jù)對前一虛擬流轉(zhuǎn)路徑中各流表匹配數(shù)據(jù)所得到的值來確定下一層嵌套所對應(yīng)的虛擬流轉(zhuǎn)路徑,并直接轉(zhuǎn)至相應(yīng)虛擬流轉(zhuǎn)路徑,如此,能夠有效避免現(xiàn)有的OpenFlow交換機需要多次將數(shù)據(jù)從物理輸出端口輸出再返回物理輸入端口的重復(fù)操作,提高了物理端口的使用效率;另外,由于OpenFlow交換機可同時處理多條虛擬流轉(zhuǎn)路徑,而各虛擬流轉(zhuǎn)路徑可復(fù)用各流表和端口,因此,對各流表和端口進(jìn)行調(diào)度,以保證每條虛擬流轉(zhuǎn)路徑都能及時處理待轉(zhuǎn)發(fā)的數(shù)據(jù),有效提高了數(shù)據(jù)轉(zhuǎn)發(fā)的效率;此外,為技術(shù)人員提供虛擬流轉(zhuǎn)路徑的設(shè)計界面,能夠便于技術(shù)人員根據(jù)實際需求來調(diào)整現(xiàn)有的虛擬流轉(zhuǎn)路徑?!靖綀D說明】[0018]圖1顯示為本發(fā)明的利用流表轉(zhuǎn)發(fā)數(shù)據(jù)的方法的流程圖。[0019]圖2顯示為本發(fā)明的利用流表轉(zhuǎn)發(fā)數(shù)據(jù)的方法中數(shù)據(jù)在多條虛擬流轉(zhuǎn)路徑中流轉(zhuǎn)的示意圖。[0020]圖3顯示為本發(fā)明的利用流表轉(zhuǎn)發(fā)數(shù)據(jù)的系統(tǒng)結(jié)構(gòu)示意圖?!揪唧w實施方式】[0021]以下通過特定的具體實例說明本發(fā)明的實施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點與功效。本發(fā)明還可以通過另外不同的【具體實施方式】加以實施或應(yīng)用,本說明書中的各項細(xì)節(jié)也可以基于不同觀點與應(yīng)用,在沒有背離本發(fā)明的精神下進(jìn)行各種修飾或改變。[0022]如圖1所示,本發(fā)明提供一種利用流表轉(zhuǎn)發(fā)數(shù)據(jù)的方法。所述轉(zhuǎn)發(fā)方法主要由轉(zhuǎn)發(fā)系統(tǒng)來執(zhí)行。所述轉(zhuǎn)發(fā)系統(tǒng)包括:包含流表的網(wǎng)絡(luò)接入設(shè)備中的軟件和硬件。其中,所述網(wǎng)絡(luò)接入設(shè)備中的硬件包括:用于執(zhí)行所述轉(zhuǎn)發(fā)方法的芯片。所述網(wǎng)絡(luò)接入設(shè)備包括但不限于:交換機、路由器等。[0023]在步驟SI中,所述轉(zhuǎn)發(fā)系統(tǒng)根據(jù)數(shù)據(jù)的業(yè)務(wù)類型預(yù)設(shè)由至少一個流表所構(gòu)成的虛擬流轉(zhuǎn)路徑。[0024]具體地,所述轉(zhuǎn)發(fā)系統(tǒng)預(yù)先保存有至少一個流表。所述流表可被視作是OpenFlow對網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)轉(zhuǎn)發(fā)功能的一種抽象。所述轉(zhuǎn)發(fā)系統(tǒng)將所接收的數(shù)據(jù)按照所述虛擬流轉(zhuǎn)路徑流轉(zhuǎn)于至少一個流表中,能夠從相應(yīng)的流表中獲得用于轉(zhuǎn)發(fā)所述數(shù)據(jù)的目的地址、端口等信息。其中,一個數(shù)據(jù)的轉(zhuǎn)發(fā)可以由一條所述虛擬流轉(zhuǎn)路徑來實現(xiàn),也可以由多條所述虛擬流轉(zhuǎn)路徑來實現(xiàn)。若由多條所述虛擬流轉(zhuǎn)路徑來轉(zhuǎn)發(fā)數(shù)據(jù)時,所述轉(zhuǎn)發(fā)系統(tǒng)所選擇的虛擬流轉(zhuǎn)路徑中的最后一個流表可以跳轉(zhuǎn)至下一個虛擬流轉(zhuǎn)路徑中的第一個流表。[0025]在此,所述業(yè)務(wù)類型包括但不限于:視頻類型、網(wǎng)頁類型、基于網(wǎng)頁嵌套的類型、基于視頻嵌套的類型等。所述轉(zhuǎn)發(fā)系統(tǒng)可根據(jù)現(xiàn)有的業(yè)務(wù)類型固定設(shè)置相應(yīng)的虛擬流轉(zhuǎn)路徑。[0026]在此,在所述虛擬流轉(zhuǎn)路徑中的各流表具有可跳轉(zhuǎn)/不可跳轉(zhuǎn)的屬性。其當(dāng)前第1頁1 2 3