OpenFlow網(wǎng)絡中的流表表項處理方法及設備的制作方法【專利摘要】本申請公開了一種OpenFlow網(wǎng)絡中的流表表項處理方法及設備,OpenFlow網(wǎng)絡中包括:控制器和轉(zhuǎn)發(fā)設備,該方法應用于控制器,該方法包括:接收到轉(zhuǎn)發(fā)設備發(fā)來的報文之后,計算該報文的轉(zhuǎn)發(fā)路徑;根據(jù)計算出的轉(zhuǎn)發(fā)路徑,生成用于指導該報文轉(zhuǎn)發(fā)的流表表項,其中,生成的流表表項的指令集中包括:在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,轉(zhuǎn)發(fā)路徑鏈表中包含轉(zhuǎn)發(fā)路徑的路徑信息;將流表表項發(fā)送給發(fā)來該報文的轉(zhuǎn)發(fā)設備。本申請中,控制器只需向邊緣轉(zhuǎn)發(fā)設備下發(fā)流表表項,降低了控制器的流表表項下發(fā)負擔,提高了業(yè)務部署效率?!緦@f明】OpenFlow網(wǎng)絡中的流表表項處理方法及設備【
技術領域:
】[0001]本申請涉及網(wǎng)絡通信【
技術領域:
】,特別涉及一種OpenFlow網(wǎng)絡中的流表表項處理方法及設備?!?br>背景技術:
】[0002]傳統(tǒng)的IP(InternetProtocol,因特網(wǎng)協(xié)議)報文的路由轉(zhuǎn)發(fā)方式是采用路由器或L3(LeVe13,3層)層交換機來完成的。以路由器為例,路由器的主要特點是單點行為,艮P,路由協(xié)議的交互和IP報文的轉(zhuǎn)發(fā)動作,都是單點行為。路由器各自之間交互鏈路、端口狀態(tài)、路由協(xié)議等信息,對于IP報文的轉(zhuǎn)發(fā)判斷和策略處理都是各自完成,相互之間可以不依賴于對方。轉(zhuǎn)發(fā)過程只是根據(jù)報文頭中的信息完成,如根據(jù)目的IP地址確定本機轉(zhuǎn)發(fā)端口,根據(jù)IPT0S(TypeOfService,服務類型)標記確定轉(zhuǎn)發(fā)優(yōu)先級,等等。因此,傳統(tǒng)路由器不適合構(gòu)建端到端的業(yè)務轉(zhuǎn)發(fā)路徑。[0003]SDN/OpenFlow(開放流)架構(gòu)的提出,打破了路由器的傳統(tǒng)轉(zhuǎn)發(fā)方式與過程。SDN(SoftwareDefinedNetwork)即軟件定義網(wǎng)絡,從廣義上說是指讓網(wǎng)絡專家用高級別的語言指明配置,而這些配置會告訴路由器和交換機如何優(yōu)先處理數(shù)據(jù)流以及管理數(shù)據(jù)流。SDN分離了網(wǎng)絡的轉(zhuǎn)發(fā)平面和控制平面,把整個控制平面移到了單獨的控制器中。這個名為控制器的設備會為特定的工作負載計算最佳路徑,為數(shù)據(jù)平面的數(shù)據(jù)轉(zhuǎn)發(fā)進行規(guī)劃。控制器可以是一個裝置或虛擬機,也可以是一個物理服務器。[0004]SDN的核心技術是OpenFlow,在網(wǎng)絡數(shù)據(jù)轉(zhuǎn)發(fā)平面和控制器之間使用OpenFlow協(xié)議,再由控制器來規(guī)劃所有網(wǎng)絡數(shù)據(jù)轉(zhuǎn)發(fā)平面的轉(zhuǎn)發(fā)動作。OpenFlow提出的最初出發(fā)點是為了解決校園內(nèi)網(wǎng)絡研究人員實驗其創(chuàng)新網(wǎng)絡架構(gòu)、協(xié)議,考慮到實際的網(wǎng)絡創(chuàng)新思想需要在實際網(wǎng)絡上才能更好地驗證,而研究人員又無法修改在網(wǎng)的網(wǎng)絡設備的問題,而提出了OpenFlow的控制轉(zhuǎn)發(fā)分離架構(gòu),將控制邏輯從網(wǎng)絡設備盒子中引出來,研究者可以對其進行任意的編程從而實現(xiàn)新型的網(wǎng)絡協(xié)議、拓撲架構(gòu)而無需改動網(wǎng)絡設備本身。[0005]如圖1所示,OpenFlow網(wǎng)絡的架構(gòu)中有兩種設備角色:控制器(Controller)和轉(zhuǎn)發(fā)設備(Forwarder)。[0006]每一個轉(zhuǎn)發(fā)設備維護一個或多個FlowTable(流表),并且只按照FlowTable對報文進行轉(zhuǎn)發(fā),F(xiàn)lowtable本身的生成、維護和下發(fā)完全由外置的控制器來執(zhí)行。[0007]控制器上可以運行各種路由協(xié)議,根據(jù)需要將計算出來的流表表項下發(fā)給相應的轉(zhuǎn)發(fā)設備。流表表項的下發(fā)可以是主動的,也可以是被動的,在主動模式中,控制器將自身收集的流表表項主動下發(fā)給轉(zhuǎn)發(fā)設備,隨后轉(zhuǎn)發(fā)設備在接收到報文后可以直接根據(jù)流表對報文進行查表轉(zhuǎn)發(fā);在被動模式中,轉(zhuǎn)發(fā)設備收到報文后,若在流表中沒有查找到匹配表項,則將該報文轉(zhuǎn)發(fā)給控制器,由控制器決策該報文的轉(zhuǎn)發(fā)路徑,并下發(fā)相應的流表表項。被動模式的好處是轉(zhuǎn)發(fā)設備無需維護全部的流表表項,只有當實際的數(shù)據(jù)流產(chǎn)生時才向控制器獲取流表表項并存儲,當老化定時器超時后可以刪除相應的流表表項。[0008]流表中包括:MatchFields(匹配域)、計數(shù)器(Counter)和指令集(InstructionSet)三個部分。MatchFields是報文匹配的輸入關鍵字,MatchFields中包括:進入接口(InPort)、VLAN(VirtualLocalAreaNetwork,虛擬局域網(wǎng))ID(標識)、Ethernet(以太網(wǎng))源地址(SA)、Ethernet目標地址(DA)、Ethernet類型(Type)、IP源地址(SA)、IP目標地址(DA)、IP協(xié)議、TCP(TransmissionControlProtocol,傳輸控制協(xié)議)/UDP(UserDatagramProtocol,用戶數(shù)據(jù)報協(xié)議)目標端口(DstPort)、TCP/UDP源端口(SrcPort)等。計數(shù)器是管理所需,用來統(tǒng)計流量的一些信息,例如活動表項、查找次數(shù)、發(fā)送包數(shù)等,可以針對每張表、每個流、每個端口、每個隊列來維護。指令集中包括一系列用于決定報文如何轉(zhuǎn)發(fā)的執(zhí)行動作(Action),執(zhí)行動作的類型包括:轉(zhuǎn)發(fā)給某個端口、封裝改寫報文后轉(zhuǎn)發(fā)、以及丟棄。[0009]在現(xiàn)有技術中,轉(zhuǎn)發(fā)設備在接收到一個報文之后,根據(jù)該報文的報文頭中的多個域的值在本地流表中查找匹配表項,如果查找到了匹配表項,則按照該匹配表項的指令集中的執(zhí)行動作對該報文進行相應處理;否則,將該報文轉(zhuǎn)發(fā)給控制器,控制器收到該報文后,計算該報文的轉(zhuǎn)發(fā)路徑以及該轉(zhuǎn)發(fā)路徑上每一個轉(zhuǎn)發(fā)設備的轉(zhuǎn)發(fā)端口等,生成流表表項,并將流表表項下發(fā)給該轉(zhuǎn)發(fā)路徑上的對應轉(zhuǎn)發(fā)設備,其中,下發(fā)給該轉(zhuǎn)發(fā)路徑上的一個轉(zhuǎn)發(fā)設備的流表表項的指令集中的執(zhí)行動作是通過該轉(zhuǎn)發(fā)設備上的某一個轉(zhuǎn)發(fā)接口轉(zhuǎn)發(fā)。這樣,每增加一種新業(yè)務數(shù)據(jù)流,控制器就需要向相關轉(zhuǎn)發(fā)路徑上的所有轉(zhuǎn)發(fā)設備下發(fā)對應的流表表項,增加了控制器的負擔,降低了業(yè)務部署的效率?!?br/>發(fā)明內(nèi)容】[0010]本申請?zhí)峁┝艘环NOpenFlow網(wǎng)絡中的流表表項處理方法及設備,以解決現(xiàn)有技術中存在的控制器的流表表項下發(fā)負擔較大,業(yè)務部署效率較低的問題。[0011]本申請的技術方案如下:[0012]一方面,提供了一種OpenFlow網(wǎng)絡中的流表表項處理方法,OpenFlow網(wǎng)絡中包括:控制器和轉(zhuǎn)發(fā)設備,該方法應用于控制器,該方法包括:[0013]接收到轉(zhuǎn)發(fā)設備發(fā)來的報文之后,計算該報文的轉(zhuǎn)發(fā)路徑;[0014]根據(jù)計算出的轉(zhuǎn)發(fā)路徑,生成用于指導該報文轉(zhuǎn)發(fā)的流表表項,其中,生成的流表表項的指令集中包括:在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,轉(zhuǎn)發(fā)路徑鏈表中包含轉(zhuǎn)發(fā)路徑的路徑信息;[0015]將流表表項發(fā)送給發(fā)來該報文的轉(zhuǎn)發(fā)設備。[0016]另一方面,還提供了一種OpenFlow網(wǎng)絡中的流表表項處理方法,OpenFlow網(wǎng)絡中包括:控制器和轉(zhuǎn)發(fā)設備,該方法應用于轉(zhuǎn)發(fā)設備,該方法包括:[0017]接收到OpenFlow網(wǎng)絡連接的外部網(wǎng)絡發(fā)來的報文之后,根據(jù)該報文的報頭中的信息在本地的流表中查找匹配表項;[0018]若沒有查找到匹配表項,則將該報文發(fā)送給控制器;[0019]接收控制器發(fā)來的用于指導該報文轉(zhuǎn)發(fā)的流表表項,將流表表項添加到該本地的流表中,其中,流表表項的指令集中包括:在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)打動作,轉(zhuǎn)發(fā)路徑鏈表中包含轉(zhuǎn)發(fā)路徑的路徑信息。[0020]又一方面,還提供了一種OpenFlow網(wǎng)絡中的控制器,OpenFlow網(wǎng)絡中包括:控制器和轉(zhuǎn)發(fā)設備,該控制器包括:[0021]接收模塊,用于接收轉(zhuǎn)發(fā)設備發(fā)來的報文;[0022]計算模塊,用于在接收模塊接收到轉(zhuǎn)發(fā)設備發(fā)來的報文之后,計算該報文的轉(zhuǎn)發(fā)路徑;[0023]表項生成模塊,用于根據(jù)計算模塊計算出的轉(zhuǎn)發(fā)路徑,生成用于指導該報文轉(zhuǎn)發(fā)的流表表項,其中,生成的流表表項的指令集中包括:在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,轉(zhuǎn)發(fā)路徑鏈表中包含轉(zhuǎn)發(fā)路徑的路徑信息;[0024]發(fā)送模塊,用于將表項生成模塊生成的流表表項發(fā)送給發(fā)來該報文的轉(zhuǎn)發(fā)設備。[0025]又一方面,還提供了一種OpenFlow網(wǎng)絡中的轉(zhuǎn)發(fā)設備,OpenFlow網(wǎng)絡中包括:控制器和轉(zhuǎn)發(fā)設備,該轉(zhuǎn)發(fā)設備包括:[0026]接收模塊,用于接收OpenFlow網(wǎng)絡連接的外部網(wǎng)絡發(fā)來的報文;還用于接收控制器發(fā)來的用于指導該報文轉(zhuǎn)發(fā)的流表表項;[0027]查找模塊,用于在接收模塊接收到外部網(wǎng)絡發(fā)來的報文之后,根據(jù)該報文的報頭中的信息在本設備的流表中查找匹配表項;[0028]發(fā)送模塊,用于若查找模塊沒有查找到匹配表項,則將該報文發(fā)送給控制器;[0029]添加模塊,用于將接收模塊接收到的流表表項添加到該本設備的流表中,其中,流表表項的指令集中包括:在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,轉(zhuǎn)發(fā)路徑鏈表中包含轉(zhuǎn)發(fā)路徑的路徑信息。[0030]通過本申請的技術方案,控制器接收到某一個轉(zhuǎn)發(fā)設備(為了描述方便,稱為邊緣轉(zhuǎn)發(fā)設備)發(fā)來的報文之后,計算該報文的轉(zhuǎn)發(fā)路徑,根據(jù)計算出的轉(zhuǎn)發(fā)路徑生成用于指導該報文轉(zhuǎn)發(fā)的流表表項,生成的流表表項的指令集中包括:在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,轉(zhuǎn)發(fā)路徑鏈表中包含有該轉(zhuǎn)發(fā)路徑的路徑信息,然后,控制器僅將該流表表項發(fā)送給邊緣轉(zhuǎn)發(fā)設備,而不需要再為該轉(zhuǎn)發(fā)路徑上的其他轉(zhuǎn)發(fā)設備(稱為中間轉(zhuǎn)發(fā)設備)生成并下發(fā)流表表項。這樣,邊緣轉(zhuǎn)發(fā)設備后續(xù)就可以按照該流表表項對該報文及其同類報文進行轉(zhuǎn)發(fā)處理,即,在報文中插入包含有報文的轉(zhuǎn)發(fā)路徑的路徑信息的轉(zhuǎn)發(fā)路徑鏈表并轉(zhuǎn)發(fā)出去,這樣,該轉(zhuǎn)發(fā)路徑上后續(xù)的中間轉(zhuǎn)發(fā)設備就可以按照報文中的轉(zhuǎn)發(fā)路徑的路徑信息對報文進行轉(zhuǎn)發(fā),從而,中間轉(zhuǎn)發(fā)設備不再需要按照流表表項對報文進行轉(zhuǎn)發(fā)處理,即不再需要控制器為其生成并下發(fā)相應地流表表項。由上,控制器只需向邊緣轉(zhuǎn)發(fā)設備下發(fā)流表表項,降低了控制器的流表表項下發(fā)負擔,提高了業(yè)務部署效率?!緦@綀D】【附圖說明】[0031]圖1是OpenFlow網(wǎng)絡的架構(gòu)示意圖;[0032]圖2是本申請實施例一的OpenFlow網(wǎng)絡中的流表表項處理方法的流程圖;[0033]圖3是本申請實施例一的轉(zhuǎn)發(fā)路徑鏈表的一種形式示意圖;[0034]圖4是本申請實施例一的轉(zhuǎn)發(fā)路徑鏈表的另一種簡化形式示意圖;[0035]圖5是圖3和圖4中的轉(zhuǎn)發(fā)鏈表指示的格式示意圖;[0036]圖6是本申請實施例二的原始報文和插入了轉(zhuǎn)發(fā)路徑鏈表的特定報文的報文格式示意圖;[0037]圖7是本申請實施例二的轉(zhuǎn)發(fā)路徑鏈表的形式示意圖;[0038]圖8是彈出圖7中的第一個設備相關信息后的轉(zhuǎn)發(fā)路徑鏈表的形式示意圖;[0039]圖9是本申請實施例三的轉(zhuǎn)發(fā)路徑鏈表的形式示意圖;[0040]圖10是本申請實施例四的OpenFlow網(wǎng)絡中的控制器的結(jié)構(gòu)示意圖;[0041]圖11是本申請實施例四的OpenFlow網(wǎng)絡中的轉(zhuǎn)發(fā)設備的結(jié)構(gòu)示意圖;[0042]圖12是本申請實施例五的OpenFlow網(wǎng)絡中的控制器的硬件結(jié)構(gòu)示意圖;[0043]圖13是本申請實施例五的OpenFlow網(wǎng)絡中的轉(zhuǎn)發(fā)設備的硬件結(jié)構(gòu)示意圖?!揪唧w實施方式】[0044]為了解決現(xiàn)有技術中存在的控制器的流表表項下發(fā)負擔較大,業(yè)務部署效率較低的問題,本申請的以下實施例中提供了一種OpenFlow網(wǎng)絡中的流表表項處理方法,以及一種控制器和轉(zhuǎn)發(fā)設備。[0045]如圖1所示,本申請以下實施例的OpenFlow網(wǎng)絡中包括:控制器和轉(zhuǎn)發(fā)設備。在本申請實施例中,控制器接收到某一個轉(zhuǎn)發(fā)設備(為了描述方便,稱為邊緣轉(zhuǎn)發(fā)設備)發(fā)來的報文之后,計算該報文的轉(zhuǎn)發(fā)路徑,根據(jù)計算出的轉(zhuǎn)發(fā)路徑生成用于指導該報文轉(zhuǎn)發(fā)的流表表項,生成的流表表項的指令集中包括:在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,轉(zhuǎn)發(fā)路徑鏈表中包含有該轉(zhuǎn)發(fā)路徑的路徑信息,然后,控制器僅將該流表表項發(fā)送給邊緣轉(zhuǎn)發(fā)設備,而不需要再為該轉(zhuǎn)發(fā)路徑上的其他轉(zhuǎn)發(fā)設備(稱為中間轉(zhuǎn)發(fā)設備)生成并下發(fā)流表表項。這樣,邊緣轉(zhuǎn)發(fā)設備后續(xù)就可以按照該流表表項對該報文及其同類報文進行轉(zhuǎn)發(fā)處理,艮P,在報文中插入包含有報文的轉(zhuǎn)發(fā)路徑的路徑信息的轉(zhuǎn)發(fā)路徑鏈表并轉(zhuǎn)發(fā)出去,這樣,該轉(zhuǎn)發(fā)路徑上后續(xù)的中間轉(zhuǎn)發(fā)設備就可以按照報文中的轉(zhuǎn)發(fā)路徑的路徑信息對報文進行轉(zhuǎn)發(fā),從而,中間轉(zhuǎn)發(fā)設備不再需要按照流表表項對報文進行轉(zhuǎn)發(fā)處理,即不再需要控制器為其生成并下發(fā)相應地流表表項。由上,控制器只需向邊緣轉(zhuǎn)發(fā)設備下發(fā)流表表項,降低了控制器的流表表項下發(fā)負擔,提高了業(yè)務部署效率。[0046]為簡化描述,以下實施例中,針對一種業(yè)務數(shù)據(jù)流,將該業(yè)務數(shù)據(jù)流所經(jīng)過的轉(zhuǎn)發(fā)設備的角色做如下定義:[0047]1、邊緣轉(zhuǎn)發(fā)設備:接收到該業(yè)務數(shù)據(jù)流的第一個轉(zhuǎn)發(fā)設備,也即,該業(yè)務數(shù)據(jù)流進入OpenFlow網(wǎng)絡的第一個轉(zhuǎn)發(fā)設備;[0048]2、中間轉(zhuǎn)發(fā)設備:該業(yè)務數(shù)據(jù)流所經(jīng)過的除邊緣轉(zhuǎn)發(fā)設備以外的其他轉(zhuǎn)發(fā)設備。[0049]實施例一[0050]本申請實施例一的OpenFlow網(wǎng)絡中的流表表項處理方法由控制器來執(zhí)行。如圖2所示,該方法包括以下步驟:[0051]步驟S102,控制器接收到轉(zhuǎn)發(fā)設備發(fā)來的報文之后,計算該報文的轉(zhuǎn)發(fā)路徑;[0052]控制器收集所有轉(zhuǎn)發(fā)設備的鏈路狀態(tài)及拓撲信息,為需要轉(zhuǎn)發(fā)的數(shù)據(jù)流計算路由(轉(zhuǎn)發(fā)路徑),同時對各個轉(zhuǎn)發(fā)設備進行管理和監(jiān)控。[0053]步驟S104,控制器根據(jù)計算出的轉(zhuǎn)發(fā)路徑,生成用于指導該報文轉(zhuǎn)發(fā)的流表表項,其中,生成的流表表項的指令集中包括:在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,轉(zhuǎn)發(fā)路徑鏈表中包含轉(zhuǎn)發(fā)路徑的路徑信息;[0054]在實際實施過程中,轉(zhuǎn)發(fā)路徑鏈表中除了包含有轉(zhuǎn)發(fā)路徑的路徑信息以外,還可以包含有鏈表長度,鏈表長度的值置為轉(zhuǎn)發(fā)路徑上的轉(zhuǎn)發(fā)設備的總數(shù);轉(zhuǎn)發(fā)路徑的路徑信息包括:轉(zhuǎn)發(fā)路徑上的每一個轉(zhuǎn)發(fā)設備的設備相關信息,并且,各個轉(zhuǎn)發(fā)設備的設備相關信息按照在轉(zhuǎn)發(fā)路徑上的先后順序排列,其中,設備相關信息可以用轉(zhuǎn)發(fā)設備+轉(zhuǎn)發(fā)接口來表示,即,一個轉(zhuǎn)發(fā)設備的設備相關信息為該轉(zhuǎn)發(fā)設備的設備標識以及該轉(zhuǎn)發(fā)設備上用于轉(zhuǎn)發(fā)該報文的轉(zhuǎn)發(fā)接口的接口標識,或者,設備相關信息也可以用采用一種簡化形式,只用轉(zhuǎn)發(fā)接口來表示,即,一個轉(zhuǎn)發(fā)設備的設備相關信息為該轉(zhuǎn)發(fā)設備上用于轉(zhuǎn)發(fā)該報文的轉(zhuǎn)發(fā)接口的接口標識。[0055]這樣,當設備相關信息用轉(zhuǎn)發(fā)設備+轉(zhuǎn)發(fā)接口來表示時,轉(zhuǎn)發(fā)路徑鏈表的形式可以參見圖3所示,圖3中,所經(jīng)第一個轉(zhuǎn)發(fā)設備即為業(yè)務數(shù)據(jù)流的邊緣轉(zhuǎn)發(fā)設備,所經(jīng)第二個轉(zhuǎn)發(fā)設備至所經(jīng)最后一個轉(zhuǎn)發(fā)設備即為業(yè)務數(shù)據(jù)流的中間轉(zhuǎn)發(fā)設備,轉(zhuǎn)發(fā)鏈表指示中攜帶有鏈表長度;當設備相關信息只用轉(zhuǎn)發(fā)接口來表示時,轉(zhuǎn)發(fā)路徑鏈表的形式可以參見圖4所示,圖4中,轉(zhuǎn)發(fā)鏈表指示中攜帶有鏈表長度。在實際實施過程中,還可以在圖3和圖4中的轉(zhuǎn)發(fā)鏈表指示字段中定義數(shù)據(jù)流的優(yōu)先級等,此時,轉(zhuǎn)發(fā)鏈表指示字段的格式可以參見圖5。[0056]步驟S106,控制器將生成的流表表項發(fā)送給發(fā)來該報文的轉(zhuǎn)發(fā)設備。[0057]上述的轉(zhuǎn)發(fā)設備即為針對該報文所屬的業(yè)務數(shù)據(jù)流的邊緣轉(zhuǎn)發(fā)設備。[0058]控制器只向一種業(yè)務數(shù)據(jù)流的邊緣轉(zhuǎn)發(fā)設備下發(fā)流表表項,對于中間轉(zhuǎn)發(fā)設備,不再下發(fā)流表表項,也即中間轉(zhuǎn)發(fā)設備中沒有用于指導該業(yè)務數(shù)據(jù)流轉(zhuǎn)發(fā)的流表表項。[0059]實施例二[0060]本申請實施例二的OpenFlow網(wǎng)絡中的流表表項處理方法由轉(zhuǎn)發(fā)設備來執(zhí)行。當一個轉(zhuǎn)發(fā)設備為一種業(yè)務數(shù)據(jù)流的邊緣轉(zhuǎn)發(fā)設備時,該方法包括以下步驟:[0061]步驟S202,轉(zhuǎn)發(fā)設備接收到OpenFlow網(wǎng)絡連接的外部網(wǎng)絡發(fā)來的報文之后,根據(jù)該報文的報頭中的信息在本地的流表中查找匹配表項,若沒有查找到匹配表項,則執(zhí)行步驟S204,若查找到了匹配表項,則執(zhí)行步驟S210;[0062]在實際實施過程中,如果接收的報文中不攜帶轉(zhuǎn)發(fā)路徑鏈表,則說明是外部網(wǎng)絡發(fā)來的報文。[0063]步驟S204,轉(zhuǎn)發(fā)設備將該報文發(fā)送給控制器;然后,執(zhí)行步驟S206;[0064]在步驟S202-S204中,轉(zhuǎn)發(fā)設備接收到一個全新的業(yè)務數(shù)據(jù)流的報文,將首包(第一個報文)轉(zhuǎn)發(fā)給控制器進行路徑計算。在步驟S204中,轉(zhuǎn)發(fā)設備將該報文發(fā)送給控制器之后,控制器執(zhí)行的操作可以參見實施例一的步驟S102-S106,這里不再贅述。[0065]步驟S206,轉(zhuǎn)發(fā)設備接收控制器發(fā)來的用于指導該報文轉(zhuǎn)發(fā)的流表表項,將流表表項添加到該本地的流表中,其中,該流表表項的指令集中包括:在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,轉(zhuǎn)發(fā)路徑鏈表中包含轉(zhuǎn)發(fā)路徑的路徑信息;然后,執(zhí)行步驟S208;[0066]轉(zhuǎn)發(fā)路徑鏈表的形式可以參見圖3-5,這里不再贅述。[0067]步驟S208,根據(jù)該報文的報頭中的信息在流表中查找到匹配表項;然后,執(zhí)行步驟S210;[0068]步驟S210,按照該匹配表項的指令集中的在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,在該報文中插入轉(zhuǎn)發(fā)路徑鏈表,得到攜帶有轉(zhuǎn)發(fā)路徑鏈表的特定報文;然后,執(zhí)行步驟S212;[0069]在實際實施過程中,轉(zhuǎn)發(fā)設備接收到的外部網(wǎng)絡發(fā)來的報文(稱為原始報文)的格式如圖6所示,在該報文中插入如圖3或圖4所示的轉(zhuǎn)發(fā)路徑鏈表時,可以將轉(zhuǎn)發(fā)路徑鏈表插入到如圖6所示的原始報文的鏈路層之后以及IP頭之前的位置,插入了轉(zhuǎn)發(fā)路徑鏈表后得到的特定報文的格式如圖6所示。[0070]步驟S212,將特定報文的轉(zhuǎn)發(fā)路徑鏈表中的第一個設備相關信息彈出,并將該轉(zhuǎn)發(fā)路徑鏈表中的鏈表長度的值減1;然后,執(zhí)行步驟S214;[0071]由于在轉(zhuǎn)發(fā)路徑鏈表中,轉(zhuǎn)發(fā)路徑上的各個轉(zhuǎn)發(fā)設備的相關信息都是按照在轉(zhuǎn)發(fā)路徑上的先后順序排列的,因此,特定報文的轉(zhuǎn)發(fā)路徑鏈表中的第一個設備相關信息必定是本轉(zhuǎn)發(fā)設備的設備相關信息。[0072]假設,在步驟S210中得到的特定報文中的轉(zhuǎn)發(fā)路徑鏈表的形式如圖7所示,則經(jīng)過步驟S212之后的特定報文中的轉(zhuǎn)發(fā)路徑鏈表的形式如圖8所示。[0073]步驟S214,轉(zhuǎn)發(fā)設備判斷減1后的鏈表長度的值是否為0,若不為0,則執(zhí)行步驟S216,若為0,則執(zhí)行步驟S218;[0074]步驟S216,轉(zhuǎn)發(fā)設備將經(jīng)過步驟S210之后的特定報文通過彈出的設備相關信息中的接口標識所指示的接口轉(zhuǎn)發(fā)出去;[0075]步驟S218,轉(zhuǎn)發(fā)設備將經(jīng)過步驟S302之后的特定報文中的轉(zhuǎn)發(fā)路徑鏈表彈出后,通過彈出的設備相關信息中的接口標識所指示的接口轉(zhuǎn)發(fā)出去。[0076]在步驟S218中,若減1后的鏈表長度的值為0,則說明本轉(zhuǎn)發(fā)設備是該報文所經(jīng)的最后一個轉(zhuǎn)發(fā)設備,則將特定報文中的轉(zhuǎn)發(fā)路徑鏈表整個彈出,得到原始報文,將原始報文轉(zhuǎn)發(fā)出去。[0077]另外,當一個轉(zhuǎn)發(fā)設備作為一種業(yè)務數(shù)據(jù)流的中間轉(zhuǎn)發(fā)設備時,該轉(zhuǎn)發(fā)設備還會接收到鄰居轉(zhuǎn)發(fā)設備(可以是該業(yè)務數(shù)據(jù)流的邊緣轉(zhuǎn)發(fā)設備,也可以是該業(yè)務數(shù)據(jù)流的中間轉(zhuǎn)發(fā)設備)發(fā)來的特定報文,此時,該轉(zhuǎn)發(fā)設備需要執(zhí)行的操作包括以下步驟:[0078]步驟S302,轉(zhuǎn)發(fā)設備接收到鄰居轉(zhuǎn)發(fā)設備發(fā)來的特定報文之后,將該特定報文的轉(zhuǎn)發(fā)路徑鏈表中的第一個設備相關信息彈出,并將該轉(zhuǎn)發(fā)路徑鏈表中的鏈表長度的值減1;[0079]步驟S304,轉(zhuǎn)發(fā)設備判斷減1后的鏈表長度的值是否為0,若不為0,則執(zhí)行步驟S306,若為0,則執(zhí)行步驟S308;[0080]步驟S306,轉(zhuǎn)發(fā)設備將經(jīng)過步驟S302之后的特定報文通過彈出的設備相關信息中的接口標識所指示的接口轉(zhuǎn)發(fā)出去;[0081]步驟S308,轉(zhuǎn)發(fā)設備將經(jīng)過步驟S302之后的特定報文中的轉(zhuǎn)發(fā)路徑鏈表彈出后,通過彈出的設備相關信息中的接口標識所指示的接口轉(zhuǎn)發(fā)出去。[0082]由此可見,只有業(yè)務數(shù)據(jù)流的邊緣轉(zhuǎn)發(fā)設備需要接收并保存控制器下發(fā)的包含有該業(yè)務數(shù)據(jù)流的轉(zhuǎn)發(fā)路徑的路徑信息的流表表項,后續(xù)的中間轉(zhuǎn)發(fā)設備不再需要接收并保存流表表項,進而不再有表項的插入、老化和刷新等事情,也不再需要在本地進行長流表匹配,從而極大地簡化了中間轉(zhuǎn)發(fā)設備的軟硬件設計和開發(fā)設計難度,不再有表項規(guī)模限制和TCAM(TernaryContentAddressableMemory,三態(tài)內(nèi)容尋址存儲器)成本問題,提高了整個OpenFlow網(wǎng)絡的業(yè)務容量。[0083]另外,中間轉(zhuǎn)發(fā)設備不需要再根據(jù)報文頭中的IP地址等信息對報文進行查表轉(zhuǎn)發(fā),因此,IP地址可以重疊部署,易于實現(xiàn)各種VPN(VirtualPrivateNetwork,虛擬專用網(wǎng)絡)模型。[0084]在本實施例中,因為在原始報文中增加了新的字段:轉(zhuǎn)發(fā)路徑鏈表,導致報文長度增加,可能會超出鏈路層能夠傳輸報文的最大長度,因此,邊緣轉(zhuǎn)發(fā)設備可能需要先對原始報文進行報文分片等動作,然后再將轉(zhuǎn)發(fā)路徑鏈表插入到各個分片中。[0085]實施例三[0086]以如圖1所示的OpenFlow網(wǎng)絡為例,對上述實施例一和實施例二中的方法進行詳細說明。圖1中的OpenFlow網(wǎng)絡中包括:控制器和轉(zhuǎn)發(fā)設備F1-F4。[0087]轉(zhuǎn)發(fā)設備F1從外部網(wǎng)絡接收到報文之后,根據(jù)報頭中的信息在流表中查找匹配表項,若沒有查找到匹配表項,則將該報文發(fā)送給控制器,由控制器決策該報文的轉(zhuǎn)發(fā)路徑,假設轉(zhuǎn)發(fā)路徑為F1-F2-F4,控制器根據(jù)該轉(zhuǎn)發(fā)路徑生成用于指導該報文轉(zhuǎn)發(fā)的流表表項,并只將該流表表項發(fā)送給F1,該流表表項的形式例如可以參見表1所不。[0088]表1[0089]【權(quán)利要求】1.一種開放流化enFlow網(wǎng)絡中的流表表項處理方法,化enFlow網(wǎng)絡中包括;控制器和轉(zhuǎn)發(fā)設備,所述方法應用于所述控制器,其特征在于,所述方法包括:接收到轉(zhuǎn)發(fā)設備發(fā)來的報文之后,計算該報文的轉(zhuǎn)發(fā)路徑;根據(jù)計算出的轉(zhuǎn)發(fā)路徑,生成用于指導該報文轉(zhuǎn)發(fā)的流表表項,其中,生成的流表表項的指令集中包括:在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,所述轉(zhuǎn)發(fā)路徑鏈表中包含所述轉(zhuǎn)發(fā)路徑的路徑信息;將所述流表表項發(fā)送給發(fā)來該報文的轉(zhuǎn)發(fā)設備。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述轉(zhuǎn)發(fā)路徑鏈表中還包含鏈表長度,所述鏈表長度的值置為所述轉(zhuǎn)發(fā)路徑上的轉(zhuǎn)發(fā)設備的總數(shù);所述轉(zhuǎn)發(fā)路徑的路徑信息包括:所述轉(zhuǎn)發(fā)路徑上的每一個轉(zhuǎn)發(fā)設備的設備相關信息,并且,各個轉(zhuǎn)發(fā)設備的設備相關信息按照在所述轉(zhuǎn)發(fā)路徑上的先后順序排列,其中,所述設備相關信息包括:該轉(zhuǎn)發(fā)設備的設備標識W及該轉(zhuǎn)發(fā)設備上用于轉(zhuǎn)發(fā)該報文的轉(zhuǎn)發(fā)接口的接口標識,或該轉(zhuǎn)發(fā)設備上用于轉(zhuǎn)發(fā)該報文的轉(zhuǎn)發(fā)接口的接口標識。3.-種開放流化enFlow網(wǎng)絡中的流表表項處理方法,化enFlow網(wǎng)絡中包括;控制器和轉(zhuǎn)發(fā)設備,所述方法應用于所述轉(zhuǎn)發(fā)設備,其特征在于,所述方法包括:接收到所述化enFlow網(wǎng)絡連接的外部網(wǎng)絡發(fā)來的報文之后,根據(jù)該報文的報頭中的信息在本地的流表中查找匹配表項;若沒有查找到匹配表項,則將該報文發(fā)送給控制器;接收控制器發(fā)來的用于指導該報文轉(zhuǎn)發(fā)的流表表項,將所述流表表項添加到所述本地的流表中,其中,所述流表表項的指令集中包括;在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,所述轉(zhuǎn)發(fā)路徑鏈表中包含所述轉(zhuǎn)發(fā)路徑的路徑信息。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述轉(zhuǎn)發(fā)路徑鏈表中還包含鏈表長度,所述鏈表長度的值置為所述轉(zhuǎn)發(fā)路徑上的轉(zhuǎn)發(fā)設備的總數(shù);所述轉(zhuǎn)發(fā)路徑的路徑信息包括:所述轉(zhuǎn)發(fā)路徑上的每一個轉(zhuǎn)發(fā)設備的設備相關信息,并且,各個轉(zhuǎn)發(fā)設備的設備相關信息按照在所述轉(zhuǎn)發(fā)路徑上的先后順序排列,其中,所述設備相關信息包括:該轉(zhuǎn)發(fā)設備的設備標識W及該轉(zhuǎn)發(fā)設備上用于轉(zhuǎn)發(fā)該報文的轉(zhuǎn)發(fā)接口的接口標識,或該轉(zhuǎn)發(fā)設備上用于轉(zhuǎn)發(fā)該報文的轉(zhuǎn)發(fā)接口的接口標識。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,在將所述流表表項添加到所述本地的流表中之后,還包括:根據(jù)該報文的報頭中的信息在所述流表中查找到匹配表項,按照該匹配表項的指令集中的在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,在該報文中插入轉(zhuǎn)發(fā)路徑鏈表,得到攜帶有轉(zhuǎn)發(fā)路徑鏈表的特定報文;將特定報文的轉(zhuǎn)發(fā)路徑鏈表中的第一個設備相關信息彈出,并將該轉(zhuǎn)發(fā)路徑鏈表中的鏈表長度的值減1;判斷減1后的鏈表長度的值是否為0,若不為0,則將該特定報文通過彈出的設備相關信息中的接口標識所指示的接口轉(zhuǎn)發(fā)出去。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括:接收到鄰居轉(zhuǎn)發(fā)設備發(fā)來的特定報文之后,將該特定報文的轉(zhuǎn)發(fā)路徑鏈表中的第一個設備相關信息彈出,并將該轉(zhuǎn)發(fā)路徑鏈表中的鏈表長度的值減1;判斷減1后的鏈表長度的值是否為0,若不為0,則將該特定報文通過彈出的設備相關信息中的接口標識所指示的接口轉(zhuǎn)發(fā)出去。7.根據(jù)權(quán)利要求5或6所述的方法,其特征在于,在判斷減1后的鏈表長度的值是否為0之后,還包括:若為0,則將該特定報文中的轉(zhuǎn)發(fā)路徑鏈表彈出后,通過彈出的設備相關信息中的接口標識所指示的接口轉(zhuǎn)發(fā)出去。8.-種開放流化enFlow網(wǎng)絡中的控制器,化enFlow網(wǎng)絡中包括;所述控制器和轉(zhuǎn)發(fā)設備,其特征在于,所述控制器包括:接收模塊,用于接收轉(zhuǎn)發(fā)設備發(fā)來的報文;計算模塊,用于在所述接收模塊接收到轉(zhuǎn)發(fā)設備發(fā)來的報文之后,計算該報文的轉(zhuǎn)發(fā)路徑;表項生成模塊,用于根據(jù)所述計算模塊計算出的轉(zhuǎn)發(fā)路徑,生成用于指導該報文轉(zhuǎn)發(fā)的流表表項,其中,生成的流表表項的指令集中包括:在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,所述轉(zhuǎn)發(fā)路徑鏈表中包含所述轉(zhuǎn)發(fā)路徑的路徑信息;發(fā)送模塊,用于將所述表項生成模塊生成的流表表項發(fā)送給發(fā)來該報文的轉(zhuǎn)發(fā)設備。9.根據(jù)權(quán)利要求8所述的控制器,其特征在于,所述轉(zhuǎn)發(fā)路徑鏈表中還包含鏈表長度,所述鏈表長度的值置為所述轉(zhuǎn)發(fā)路徑上的轉(zhuǎn)發(fā)設備的總數(shù);所述轉(zhuǎn)發(fā)路徑的路徑信息包括:所述轉(zhuǎn)發(fā)路徑上的每一個轉(zhuǎn)發(fā)設備的設備相關信息,并且,各個轉(zhuǎn)發(fā)設備的設備相關信息按照在所述轉(zhuǎn)發(fā)路徑上的先后順序排列,其中,所述設備相關信息包括:該轉(zhuǎn)發(fā)設備的設備標識W及該轉(zhuǎn)發(fā)設備上用于轉(zhuǎn)發(fā)該報文的轉(zhuǎn)發(fā)接口的接口標識,或該轉(zhuǎn)發(fā)設備上用于轉(zhuǎn)發(fā)該報文的轉(zhuǎn)發(fā)接口的接口標識。10.-種開放流化enFlow網(wǎng)絡中的轉(zhuǎn)發(fā)設備,化enFlow網(wǎng)絡中包括;控制器和所述轉(zhuǎn)發(fā)設備,其特征在于,所述轉(zhuǎn)發(fā)設備包括:接收模塊,用于接收所述化enFlow網(wǎng)絡連接的外部網(wǎng)絡發(fā)來的報文;還用于接收控制器發(fā)來的用于指導該報文轉(zhuǎn)發(fā)的流表表項;查找模塊,用于在所述接收模塊接收到外部網(wǎng)絡發(fā)來的報文之后,根據(jù)該報文的報頭中的信息在本設備的流表中查找匹配表項;發(fā)送模塊,用于若所述查找模塊沒有查找到匹配表項,則將該報文發(fā)送給控制器;添加模塊,用于將所述接收模塊接收到的流表表項添加到所述本設備的流表中,其中,所述流表表項的指令集中包括;在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,所述轉(zhuǎn)發(fā)路徑鏈表中包含所述轉(zhuǎn)發(fā)路徑的路徑信息。11.根據(jù)權(quán)利要求10所述的轉(zhuǎn)發(fā)設備,其特征在于,所述轉(zhuǎn)發(fā)路徑鏈表中還包含鏈表長度,所述鏈表長度的值置為所述轉(zhuǎn)發(fā)路徑上的轉(zhuǎn)發(fā)設備的總數(shù);所述轉(zhuǎn)發(fā)路徑的路徑信息包括:所述轉(zhuǎn)發(fā)路徑上的每一個轉(zhuǎn)發(fā)設備的設備相關信息,并且,各個轉(zhuǎn)發(fā)設備的設備相關信息按照在所述轉(zhuǎn)發(fā)路徑上的先后順序排列,其中,所述設備相關信息包括:該轉(zhuǎn)發(fā)設備的設備標識W及該轉(zhuǎn)發(fā)設備上用于轉(zhuǎn)發(fā)該報文的轉(zhuǎn)發(fā)接口的接口標識,或該轉(zhuǎn)發(fā)設備上用于轉(zhuǎn)發(fā)該報文的轉(zhuǎn)發(fā)接口的接口標識。12.根據(jù)權(quán)利要求11所述的轉(zhuǎn)發(fā)設備,其特征在于,還包括;處理模塊和判斷模塊,其中,所述查找模塊,還用于在所述添加模塊將所述接收模塊接收到的流表表項添加到所述流表中之后,根據(jù)該報文的報頭中的信息在所述流表中查找到匹配表項;所述處理模塊,用于按照所述查找模塊查找到的匹配表項的指令集中的在報文中插入轉(zhuǎn)發(fā)路徑鏈表的執(zhí)行動作,在該報文中插入轉(zhuǎn)發(fā)路徑鏈表,得到攜帶有轉(zhuǎn)發(fā)路徑鏈表的特定報文;還用于將特定報文的轉(zhuǎn)發(fā)路徑鏈表中的第一個設備相關信息彈出,并將該轉(zhuǎn)發(fā)路徑鏈表中的鏈表長度的值減1;所述判斷模塊,用于判斷經(jīng)所述處理模塊減1后的鏈表長度的值是否為0;所述發(fā)送模塊,還用于若所述判斷模塊的判斷結(jié)果是不為0,則將該特定報文通過所述處理模塊彈出的設備相關信息中的接口標識所指示的接口轉(zhuǎn)發(fā)出去。13.根據(jù)權(quán)利要求12所述的轉(zhuǎn)發(fā)設備,其特征在于,所述接收模塊,還用于接收鄰居轉(zhuǎn)發(fā)設備發(fā)來的特定報文;所述處理模塊,還用于在所述接收模塊接收到鄰居轉(zhuǎn)發(fā)設備發(fā)來的特定報文之后,將該特定報文的轉(zhuǎn)發(fā)路徑鏈表中的第一個設備相關信息彈出,并將該轉(zhuǎn)發(fā)路徑鏈表中的鏈表長度的值減1。14.根據(jù)權(quán)利要求12或13所述的轉(zhuǎn)發(fā)設備,其特征在于,所述處理模塊,還用于若所述判斷模塊的判斷結(jié)果是為0,則將該特定報文中的轉(zhuǎn)發(fā)路徑鏈表彈出后,由所述發(fā)送模塊通過所述處理模塊彈出的設備相關信息中的接口標識所指示的接口轉(zhuǎn)發(fā)出去。【文檔編號】H04L12/741GK104348727SQ201310337052【公開日】2015年2月11日申請日期:2013年8月5日優(yōu)先權(quán)日:2013年8月5日【發(fā)明者】李晶林申請人:杭州華三通信技術有限公司