數(shù)據(jù)報(bào)文處理方法、裝置及開放流交換機(jī)的制作方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種數(shù)據(jù)報(bào)文處理方法、裝置及開放流交換機(jī)。【
背景技術(shù):
】[0002]由于現(xiàn)在的網(wǎng)絡(luò)暴露出了越來越多的弊病以及人們對網(wǎng)絡(luò)性能的需求越來越高,研究人員不得不把很多復(fù)雜功能加入到路由器的體系結(jié)構(gòu)當(dāng)中,例如,開放式最短路徑優(yōu)先協(xié)議(OpenShortestPathFirst,簡稱為0SPF)、邊界網(wǎng)關(guān)協(xié)議(BorderGatewayProtocol,簡稱為BGP)、組播、區(qū)分服務(wù)、流量工程、網(wǎng)絡(luò)地址轉(zhuǎn)換(NetworkAddressTranslation,簡稱為NAT)、防火墻、多協(xié)議標(biāo)記交換(Multi-ProtocolLabelSwitching,簡稱為MPLS)等等。這就使得路由器等交換設(shè)備越來越臃腫而且性能提升的空間越來越小。[0003]然而與網(wǎng)絡(luò)領(lǐng)域的困境截然不同的是,計(jì)算機(jī)領(lǐng)域?qū)崿F(xiàn)了日新月異的發(fā)展。仔細(xì)回顧計(jì)算機(jī)領(lǐng)域的發(fā)展,不難發(fā)現(xiàn)其關(guān)鍵在于計(jì)算機(jī)領(lǐng)域找到了一種簡單可用的硬件底層(x86指令集)。由于有了這樣一種公用的硬件底層,所以在軟件方面,不論是應(yīng)用程序還是操作系統(tǒng)都取得了飛速的發(fā)展。現(xiàn)在很多主張重新設(shè)計(jì)計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)的人士認(rèn)為:網(wǎng)絡(luò)可以復(fù)制計(jì)算機(jī)領(lǐng)域的成功來解決現(xiàn)在網(wǎng)絡(luò)所遇到的所有問題。在這種思想的指導(dǎo)下,將來的網(wǎng)絡(luò)必將是這樣的:底層的數(shù)據(jù)通路(交換機(jī)、路由器)是"啞的、簡單的、最小的",并定義一個對外開放的關(guān)于流表的公用的應(yīng)用程序接口(ApplicationProgramInterface,簡稱為API),同時(shí)采用控制器來控制整個網(wǎng)絡(luò)。未來的研究人員就可以在控制器上自由的調(diào)用底層的API來編程,從而實(shí)現(xiàn)網(wǎng)絡(luò)的創(chuàng)新。[0004]基于上述的理念,出現(xiàn)了軟件定義網(wǎng)絡(luò)(SoftwareDefinedNetwork,簡稱為SDN),其最初是由美國斯坦福大學(xué)cleanslate研究組提出的一種新型網(wǎng)絡(luò)創(chuàng)新架構(gòu)。圖1是相關(guān)技術(shù)中開放流配置協(xié)議和開放流協(xié)議應(yīng)用示意圖,如圖1所示,該新型網(wǎng)絡(luò)架構(gòu)應(yīng)用開放流配置(〇F-Config)協(xié)議和開放流(OpenFlow)協(xié)議,其核心技術(shù)OpenFlow協(xié)議通過將網(wǎng)絡(luò)設(shè)備控制面(包含OpenFlowController(開放流控制器))與數(shù)據(jù)面(包含OpenFlowCapableSwitch(開放流能力交換機(jī)))分離開來,從而實(shí)現(xiàn)了網(wǎng)絡(luò)流量的靈活控制,為核心網(wǎng)絡(luò)及應(yīng)用的創(chuàng)新提供了良好的平臺。[0005]OpenFlow協(xié)議用來描述控制器和交換機(jī)之間交互所用信息的標(biāo)準(zhǔn),以及控制器和交換機(jī)的接口標(biāo)準(zhǔn)。協(xié)議的核心部分是用于OpenFlow協(xié)議信息結(jié)構(gòu)的集合。圖2是根據(jù)相關(guān)技術(shù)中報(bào)文流通過開放流處理管道的示意圖,圖3是根據(jù)相關(guān)技術(shù)中基于每個流表的報(bào)文處理示意圖,如圖2、3所示,流表(OpenFlow)或經(jīng)過編排的多個流表級聯(lián)而成管道用來配置交換機(jī)轉(zhuǎn)發(fā)路徑,流表?xiàng)l目由匹配字段(MatchFields)、計(jì)數(shù)器(Counters)和指令集(Instructions)等如下幾個字段構(gòu)成:[0006][0007]其中,MatchFields是報(bào)文匹配的輸入關(guān)鍵字,用于匹配一條流表項(xiàng);計(jì)數(shù)器是用于管理用的各種統(tǒng)計(jì)信息;指令集(Instructions)是指對報(bào)文的操作指令,包括丟棄、轉(zhuǎn)發(fā)報(bào)文到指定端口、設(shè)置報(bào)文頭部字段值、增加封裝標(biāo)簽等。動作集(ActionSet)和每個報(bào)文相關(guān)聯(lián),它在流水線的多個流表之間傳遞并被各流表的指令所修改,直到流水線處理結(jié)束,形成最終的動作集。[0008]在openflowl.3版本中,每個OpenFlow交換機(jī)的流水線(pipeline)包含多個流表,每個流表包含多個流表項(xiàng)。OpenFlow的流水線處理定義了數(shù)據(jù)包如何與那些流表進(jìn)行交互(參見圖2)。OpenFlow交換機(jī)需要具有流表中的至少一個,并可以有更多的可選擇的流表。只有一個單一的流表的OpenFlow交換機(jī)是有效的,而且在這種情況下流水線處理進(jìn)程可以大大簡化。[0009]OpenFlow允許系統(tǒng)中存在一到多張流表并且他們之間以一種流水線的方式運(yùn)行。但是,這種流水線處理流程,在每個流表中的操作,會給最終的執(zhí)行動作集合(executeactionset)帶來問題,圖4是根據(jù)相關(guān)技術(shù)中的對流表采用流水線操作處理的原理示意圖,如圖4所示,對流表采用流水線操作處理的原理包括兩部分:(a)Packetarematchedagainstmultipletablesinthepipeline(報(bào)文與流水線中的多個匹配表相匹配),(b)Per-tablepacketprocessing(報(bào)文在每個流表的處理),其中,(b)中的①表示查找最高優(yōu)先級的流匹配條目,②表示應(yīng)用指令:i.更改報(bào)文&更新匹配域(應(yīng)用動作指令更新動作集(清除動作指示和/或?qū)懭雱幼髦甘荆?;iii.更新元數(shù)據(jù),③表示將匹配數(shù)據(jù)和動作集傳送至下一流表。舉例而言,對于數(shù)據(jù)包流入后,匹配上A、B、C三種業(yè)務(wù)流表,其中,根據(jù)其業(yè)務(wù)特性,A、B、C有著相同的動作action的類型,例如,ABC都是對路由下一條進(jìn)行設(shè)置或清除。假設(shè)B業(yè)務(wù)是ACL流表,要求如果匹配B流表成功,根據(jù)ABC業(yè)務(wù)特性,其必須清除A、C的動作。但是如果依次按照A、B、C的流水線匹配下來,A流表處理的結(jié)果是對actionset設(shè)置了下一條,B流表處理的結(jié)果是清除了A的動作,即清除A設(shè)置的下一條。最后到C流表進(jìn)行處理時(shí),又在actionset設(shè)置了路由的下一條,C流表的處理結(jié)果無法被B流表所清除。[0010]因此,在相關(guān)技術(shù)中基于流水線處理的方式對流表進(jìn)行處理,存在與業(yè)務(wù)處理需求相沖突的問題?!?br/>發(fā)明內(nèi)容】[0011]本發(fā)明提供了一種數(shù)據(jù)報(bào)文處理方法、裝置及開放流交換機(jī),以至少在相關(guān)技術(shù)中基于流水線處理的方式對流表進(jìn)行處理,存在與業(yè)務(wù)處理需求相沖突的問題。[0012]根據(jù)本發(fā)明的一個方面,提供了一種數(shù)據(jù)報(bào)文處理方法,包括:確定與接收到的所述數(shù)據(jù)報(bào)文匹配的一個或多個流表項(xiàng);按照所述一個或多個流表項(xiàng)形成的流水線,根據(jù)所述一個或多個流表項(xiàng)的指令優(yōu)先級,確定對所述數(shù)據(jù)報(bào)文執(zhí)行操作的動作集;依據(jù)確定的動作集對所述數(shù)據(jù)報(bào)文執(zhí)行操作處理。[0013]優(yōu)選地,在按照所述一個或多個流表項(xiàng)形成的流水線,根據(jù)所述一個或多個流表項(xiàng)的指令優(yōu)先級,確定對所述數(shù)據(jù)報(bào)文執(zhí)行操作的動作集之前,還包括:依據(jù)所述一個或多個流表項(xiàng)所對應(yīng)的業(yè)務(wù)的類型確定所述一個或多個流表項(xiàng)的指令優(yōu)先級。[0014]優(yōu)選地,按照所述一個或多個流表項(xiàng)形成的流水線,根據(jù)所述一個或多個流表項(xiàng)的指令優(yōu)先級,確定對所述數(shù)據(jù)報(bào)文執(zhí)行操作的動作集包括:按照所述一個或多個流表項(xiàng)形成的流水線,依次判斷流表項(xiàng)的指令優(yōu)先級是否高于所述動作集的優(yōu)先級;在判斷結(jié)果為是的情況下,將所述流表項(xiàng)對應(yīng)的動作更新到所述動作集中,并將所述動作集的優(yōu)先級更新為所述流表項(xiàng)的優(yōu)先級,直至所述流水線處理結(jié)束;和/或,在判斷結(jié)果為否的情況下,維持所述動作集中相應(yīng)的動作以及所述動作集的優(yōu)先級不變。[0015]優(yōu)選地,依次判斷所述流表項(xiàng)的指令優(yōu)先級是否高于所述動作集的優(yōu)先級包括:依據(jù)所述動作集中所包括動作的類型,為所述動作集中的動作劃分動作優(yōu)先級;依據(jù)所述動作優(yōu)先級,依次判斷所述流表項(xiàng)的指令優(yōu)先級是否高于所述動作集的優(yōu)先級。[0016]優(yōu)選地,所述指令優(yōu)先級和/或所述動作集的優(yōu)先級依據(jù)數(shù)值的大小來表征。[0017]根據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)報(bào)文處理裝置,包括:第一確定模塊,用于確定與接收到的所述數(shù)據(jù)報(bào)文匹配的一個或多個流表項(xiàng);第二確定模塊,用于按照所述一個或多個流表項(xiàng)形成的流水線,根據(jù)所述一個或多個流表項(xiàng)的指令優(yōu)先級,確定對所述數(shù)據(jù)報(bào)文執(zhí)行操作的動作集;處理模塊,用于依據(jù)確定的動作集對所述數(shù)據(jù)報(bào)文執(zhí)行操作處理。[0018]優(yōu)選地,該裝置還包括:第三確定模塊,用于依據(jù)所述一個或多個流表項(xiàng)所對應(yīng)的業(yè)務(wù)的類型確定所述一個或多個流表項(xiàng)的指令優(yōu)先級。[0019]優(yōu)選地,所述第二確定模塊包括:判斷單元,用于按照所述一個或多個流表項(xiàng)形成的流水線,依次判斷流表項(xiàng)的指令優(yōu)先級是否高于所述動作集的優(yōu)先級;更新單元,用于在所述判斷單元的判斷結(jié)果為是的情況下,將所述流表項(xiàng)對應(yīng)的動作更新到所述動作集中,并將所述動作集的優(yōu)先級更新為所述流表項(xiàng)的優(yōu)先級,直至所述流水線處理結(jié)束;和/或,維持單元,用于在所述判斷單元的判斷結(jié)果為否的情況下,維持所述動作集中相應(yīng)的動作以及所述動作集的優(yōu)先級不變。[0020]優(yōu)選地,所述判斷單元包括:劃分子單元,用于依據(jù)所述動作集中所包括動作的類型,為所述動作集中的動作劃分動作優(yōu)先級;判斷子單元,用于依據(jù)所述動作優(yōu)先級,依次判斷所述流表項(xiàng)的指令優(yōu)先級是否高于所述動作集的優(yōu)先級。[0021]根據(jù)本發(fā)明的還一方面,提供了一種開放流OpenFlow交換機(jī),包括上述任一項(xiàng)所述的裝置。[0022]通過本發(fā)明,采用確定與接收到的所述數(shù)據(jù)報(bào)文匹配的一個或多個流表項(xiàng);按照所述一個或多個流表項(xiàng)形成的流水線,根據(jù)所述一個或多個流表項(xiàng)的指當(dāng)前第1頁1 2 3