。同樣地,當(dāng)未能在流表中找到與接收到的分組匹配的規(guī)則時,OFS 301B和302B就請求OFC 100B為所述接收到的分組生成轉(zhuǎn)發(fā)路徑,并傳輸(設(shè)置)流表(規(guī)則+動作)以實現(xiàn)所述轉(zhuǎn)發(fā)路徑。這些類型的0FS配置可以通過向相應(yīng)供應(yīng)商的交換機(jī)添加上述功能來實現(xiàn),如非專利文獻(xiàn)1和2中所述。
[0125]OFC 100A和100B對應(yīng)于上述控制裝置,并通過將流條目(規(guī)則+動作)傳輸(設(shè)置)到分別與其連接的OFS 301A、302A、301B和302B而控制這些0FS。此外,本實施例中的OFC 100A和100B相連,在下文中將描述,由一個0FC生成的轉(zhuǎn)發(fā)路徑信息可以傳輸至另一個 0FC。
[0126]圖6是示出了第一示例性實施例中0FC的配置的圖。參見圖6,0FC100包括分組轉(zhuǎn)發(fā)單元11、路徑計算單元12、路徑傳輸單元13、0FC間通信單元14、拓?fù)鋽?shù)據(jù)庫(DB) 15、0FS-0FC對應(yīng)關(guān)系管理單元16、0FS通信單元17、流生成單元18和路徑接受單元19。
[0127]當(dāng)0FS中不存在相關(guān)的流條目,且接收到處理規(guī)則(流條目)傳輸(設(shè)置)請求時,分組轉(zhuǎn)發(fā)單元11就通過0FC間通信單元14對另外一個0FC執(zhí)行傳輸分組的操作,該分組附有用于傳輸(設(shè)置)處理規(guī)則(流條目)的請求。
[0128]基于處理規(guī)則(流條目)傳輸(設(shè)置)請求的來源的交換機(jī)ID和0FS通信單元17輸出的分組,路徑計算單元12參考描述了網(wǎng)絡(luò)拓?fù)鋽?shù)據(jù)庫15中記錄的轉(zhuǎn)發(fā)節(jié)點之間的連接關(guān)系的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),并計算出連續(xù)流中的轉(zhuǎn)發(fā)路徑,該連續(xù)流包括從0FS轉(zhuǎn)發(fā)來的分組。此路徑計算可以利用例如Dijkstra最短路徑算法。此外,在路徑計算時,也可以考慮網(wǎng)絡(luò)中流量狀況。
[0129]路徑傳輸單元13將接收到的分組以及在路徑計算單元12中計算出的轉(zhuǎn)發(fā)路徑輸出到0FS-0FC對應(yīng)關(guān)系管理單元16。另外,路徑傳輸單元13參考0FS-0FC對應(yīng)關(guān)系管理單元16中記錄的OFS和與該OFS連接的OFC的對應(yīng)關(guān)系,通過OFC間通信單元14執(zhí)行將轉(zhuǎn)發(fā)路徑信息傳輸至與路徑計算單元12計算出的轉(zhuǎn)發(fā)路徑上的特定OFS連接的OFC(與該轉(zhuǎn)發(fā)路徑上的特定OFS相關(guān)聯(lián)的OFC)的操作,所述路徑轉(zhuǎn)發(fā)信息包含接收到的分組和路徑計算單元12計算出的轉(zhuǎn)發(fā)路徑。應(yīng)當(dāng)注意的是,對于這里用到的轉(zhuǎn)發(fā)路徑信息,只要另一個OFC的流生成單元18可以生成處理規(guī)則(流條目),任何格式都是可以的,并且可以是這樣的內(nèi)容,其中另一個OFC制作一個將在相應(yīng)的OFS中進(jìn)行設(shè)置的處理規(guī)則(流條目)的列表。
[0130]OFC間通信單元14與另一個0FC的0FC間通信單元14連接,并發(fā)出以及接收轉(zhuǎn)發(fā)路徑信息和分組,所述分組附有用于傳輸(設(shè)置)所關(guān)注的流條目的請求。
[0131]拓?fù)鋽?shù)據(jù)庫15記錄描述包括0FS在內(nèi)的各節(jié)點(各種類型的服務(wù)器和外部網(wǎng)絡(luò))之間的連接關(guān)系的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。圖7通過表格形式描述了圖5中包括0FC在內(nèi)的各個節(jié)點之間的連接關(guān)系。在圖7中,“OFS ;302A”等實際上包含著OFS 302A的IP地址和MAC地址。應(yīng)當(dāng)指出的是,在此示例性實施例中,OFC 100A和100B各自都具有一個拓?fù)鋽?shù)據(jù)庫15,但是OFC 100A和100B共享拓?fù)鋽?shù)據(jù)庫15的配置也是可以的。
[0132]0FS-0FC對應(yīng)關(guān)系管理單元16記錄0FS和與0FS連接的0FC之間的對應(yīng)關(guān)系,并將路徑傳輸單元13輸出的轉(zhuǎn)發(fā)路徑和接收到的分組以及與0FC連接的0FS的信息輸出至流生成單元18。圖8用表格的形式示出了圖5中的多個0FS和多個0FC之間的連接關(guān)系。應(yīng)當(dāng)注意的是,在本示例性實施例中,0FS-0FC對應(yīng)關(guān)系管理單元16獨立于拓?fù)鋽?shù)據(jù)庫15,但是把拓?fù)鋽?shù)據(jù)庫15和0FS-0FC對應(yīng)關(guān)系管理單元16合并起來也是可以的。例如,除了圖7中示出的0FS連接,也可以提供描述連接的0FC的字段。
[0133]由于沒有與接收到的分組相對應(yīng)的流條目,0FS通信單元17將流條目傳輸(設(shè)置)請求連同從0FS傳輸?shù)慕邮盏降姆纸M傳輸?shù)铰窂接嬎銌卧?2。0FS通信單元17將流生成單元18中生成的處理規(guī)則(流條目)傳輸至轉(zhuǎn)發(fā)路徑上與所述0FC連接的多個0FS中的一個特定的0FS中,并指示處理規(guī)則(流條目)的設(shè)置。
[0134]流生成單元18基于從0FS-0FC對應(yīng)關(guān)系管理單元16或路徑接受單元19輸出的接收到的分組和轉(zhuǎn)發(fā)路徑(信息),參考與0FC連接的0FS的信息以及拓?fù)鋽?shù)據(jù)庫15的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),并生成處理規(guī)則,所述處理規(guī)則將在與多個0FC連接的0FS中位于轉(zhuǎn)發(fā)路徑上的特定的0FS (與0FC相關(guān)聯(lián)的0FS)中進(jìn)行設(shè)置。
[0135]路徑接受單元19將包括從另一個0FC接收的分組的轉(zhuǎn)發(fā)路徑信息輸出至流生成單元18,并執(zhí)行生成處理規(guī)則(流條目)的操作。
[0136]應(yīng)該注意的是,上述分組轉(zhuǎn)發(fā)單元11、路徑計算單元12、路徑傳輸單元13、0FC間通信單元14、拓?fù)鋽?shù)據(jù)庫15、0FS-0FC對應(yīng)關(guān)系管理單元16、0FS通信單元17、流生成單元18和路徑接受單元19可以通過存儲裝置或者設(shè)置在構(gòu)成相應(yīng)的0FC的計算機(jī)中的裝置以及將存儲裝置用作硬件的計算機(jī)程序來實現(xiàn)。
[0137]圖9是示出了第一示例性實施例中0FS的配置。參見圖9,0FS 300包括OFC通信單元31、流設(shè)置單元32、分組處理單元33和流表34。另外,在0FS 300中,與0FS 300連接(與0FS 300相關(guān)聯(lián))的0FC是預(yù)先設(shè)置的。
[0138]0FC通信單元31從0FC的0FS通信單元17接收處理規(guī)則(流條目),除了向流設(shè)置單元32輸出外,在沒有與從分組處理單元33接收到的分組相對應(yīng)的流條目的情況下,請求OFC生成一個處理規(guī)則(流條目),用于計算所述接收到的分組的轉(zhuǎn)發(fā)路徑以及該轉(zhuǎn)發(fā)路徑的實現(xiàn)。
[0139]流設(shè)置單元32執(zhí)行一個操作以記錄或更新流表34中通過0FC通信單元31從0FC傳輸?shù)奶幚硪?guī)則(流條目)的操作。
[0140]分組處理單元33參考流表34,搜索一個包含與接收到的分組的頭部信息相匹配的處理規(guī)則(流條目),并執(zhí)行與接收到的分組相匹配的處理規(guī)則(流條目)的動作字段中描述的處理內(nèi)容。
[0141]流表34是一個表格,包含通過0FC通信單元31從0FC傳輸?shù)奶幚硪?guī)則(流條目)。圖10是示出了流表34的字段配置的圖。例如,如果一個流具有如下特性:在一個源IP地址字段(IP SA)中描述了節(jié)點A的IP地址,在目標(biāo)IP地址字段(IP DA)中描述了節(jié)點D的IP地址,通過設(shè)置從傳輸接口(端口)到臨近的0FS中沿著轉(zhuǎn)發(fā)路徑的0FS進(jìn)行轉(zhuǎn)發(fā)為動作(圖23中的“OUTPUT”),就實現(xiàn)了轉(zhuǎn)發(fā)路徑為從節(jié)點A到節(jié)點D的流的轉(zhuǎn)發(fā)。否則,通過設(shè)置圖23中所示的不同類型的動作,或?qū)⒛硞€動作字段設(shè)置為空,可以改變一個特定流的MAC地址或IP地址或丟棄某個特定流。
[0142]圖11示出了在OFS 301A、302A、301B和302B中設(shè)定處理規(guī)則(流條目)的示例。這里,設(shè)定通過OFS 301A、302A、301B和302B在節(jié)點A和節(jié)點D之間轉(zhuǎn)發(fā)分組的轉(zhuǎn)發(fā)路徑。例如,在OFS 301A中被設(shè)定從節(jié)點A到節(jié)點D,以節(jié)點D作為正向的目的地(接口 2 (連接到0FS302A ;參見圖7))轉(zhuǎn)發(fā)分組的動作,以及從節(jié)點D和節(jié)點A沿著(接口 1 (連接到接口 A ;參考圖7))以節(jié)點A為反向的目的地轉(zhuǎn)發(fā)分組的動作。同樣地,在OFS 302A、301B和302B中,通過設(shè)置正向和反向的處理規(guī)則(流條目),在上述轉(zhuǎn)發(fā)路徑上進(jìn)行節(jié)點A和節(jié)點D之間的分組轉(zhuǎn)發(fā)。
[0143](設(shè)置處理規(guī)則(流條目)的方法)
[0144]接下來,將參照附圖詳細(xì)描述此示例性實施例的操作。圖12是表示本示例性實施例的操作的順序圖。在圖12的示例中,從與OFS 301A連接的節(jié)點A傳輸以節(jié)點D為目的地的分組,節(jié)點D與OFS 301A的流表34中存儲的所有處理規(guī)則(流條目)都不匹配。
[0145]首先,一旦接收到新分組(步驟S001),OFS 301A就向與OFS 301A連接的0FC100A發(fā)出請求,請求傳輸(設(shè)置)包括所述新分組的處理規(guī)則(流條目)(步驟S002)。應(yīng)當(dāng)注意的是在步驟S001中,在接收到的分組與OFS 301A的流表34中存儲的某個處理規(guī)則(流條目)相匹配的情況下,將不執(zhí)行后續(xù)的處理,而是根據(jù)節(jié)點處理規(guī)則執(zhí)行分組轉(zhuǎn)發(fā)處理,正如圖12最下面部分所示。
[0146]被請求傳輸(設(shè)定)處理規(guī)則(流條目)的OFC 100A參考拓?fù)鋽?shù)據(jù)庫15的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),并基于路徑計算單元12中的請求源OFS 301A和新分組的目的地節(jié)點D,計算包括OFS 301A轉(zhuǎn)發(fā)的分組的順序流的轉(zhuǎn)發(fā)路徑(步驟S003)。這里,假定計算除了轉(zhuǎn)發(fā)路徑,根據(jù)該路徑對來自節(jié)點A且以節(jié)點D為目的地的分組按照OFS 301A、302A、301B和302B的順序進(jìn)行轉(zhuǎn)發(fā)。
[0147]接著,OFC 100A參考存儲在0FS-0FC對應(yīng)關(guān)系管理單元16中的0FS與0FC之間的對應(yīng)關(guān)系,并搜索和在計算出的轉(zhuǎn)發(fā)路徑上的0FS中未與OFC 100A連接的0FS相關(guān)聯(lián)的0FC(步驟S004)。這里,檢索出的是與OFS 301B和302B(它們未與圖5中的OFC 100A連接)連接的0FC ΙΟΟΒο
[0148]然后,OFC 100A將轉(zhuǎn)發(fā)路徑信息(包括在步驟S003計算出的轉(zhuǎn)發(fā)路徑和接收分組)發(fā)送到上述檢索出的0FC ΙΟΟΒο
[0149]此后,OFC 100A參考拓?fù)鋽?shù)據(jù)庫15的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)以及與自身0FC100A連接的0FS的信息,生成處理規(guī)則(流條目),所述規(guī)則將在與OFC 100A連接的0FS中位于轉(zhuǎn)發(fā)路徑上的0FS中設(shè)置,并針對0FS301A和302A執(zhí)行傳輸(設(shè)置)(步驟S006-1)。
[0150]同樣地,OFC 100B也參考拓?fù)鋽?shù)據(jù)庫15的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)以及與自身OFC 100B連接的0FS的信息,生成處理規(guī)則(流條目),所述規(guī)則將在與OFC 100A連接的0FS中位于轉(zhuǎn)發(fā)路徑上的0FS中設(shè)置,并針對0FS301B和302B執(zhí)行傳輸(設(shè)置)(步驟S006-2)。
[0151 ] 此后,在0FS 301A、302A、301B和302B的每一個中,都執(zhí)行處理以將接收到的處理規(guī)則記錄或更新到流表34中(步驟S007)。
[0152]綜上所述,在OFS 301A、302A、301B和302B的每一個中,都設(shè)置(參見圖11)與計算出的轉(zhuǎn)發(fā)路徑相對應(yīng)的處理規(guī)則。同時,節(jié)點A和節(jié)點B之間的分組轉(zhuǎn)發(fā)成為可能。
[0153]應(yīng)當(dāng)注意的是,在上述步驟S006-1和S006-2中,0FC在與自身0FC連接的0FS中位于轉(zhuǎn)發(fā)路徑上的0FS內(nèi)同時傳輸(設(shè)置)處理規(guī)則(流條目)。但是,在這些0FS中,也可以設(shè)置為只在部分0FS(例如,在轉(zhuǎn)發(fā)路徑上游側(cè)的一個或幾個0FS)中傳輸(設(shè)置)處理規(guī)則。在這種情況下,每一個0FC都在從各自的0FS接收到傳輸(設(shè)置)處理規(guī)則的請求后傳輸(設(shè)置)處理規(guī)則(流條目)。
[0154]圖13是在圖5的配置圖中記錄根據(jù)圖12的順序進(jìn)行的操作的圖。在接收到傳輸(設(shè)置)一個特定分組的處理規(guī)則的請求后,OFC 100A執(zhí)行轉(zhuǎn)發(fā)路徑的計算,并將計算結(jié)果設(shè)置為關(guān)于OFS 301A和302A的處理規(guī)則(流條目)。此外,通過OFC 100A將轉(zhuǎn)發(fā)路徑信息傳輸?shù)?FC100B,對OFS 301B和302B的處理規(guī)則(流條目)進(jìn)行設(shè)置。從圖13可以明確看出,在本發(fā)明中沒有特別限制0FS/0FC的數(shù)量,在轉(zhuǎn)發(fā)路徑上出現(xiàn)其他0FS的情況下,可以將轉(zhuǎn)發(fā)路徑信息傳輸?shù)脚c該0FS相連的相關(guān)0FC上,并設(shè)置處理規(guī)則(流條目)。
[0155]此外,圖13中的OFC 100A和100B都不需要設(shè)置路徑計算單元12和路徑接受單元19 ;例如,可以采用如下配置:在OFC 100A接收到一個新分組的情況下,路徑計算單元12設(shè)置在OFC 100A中而路徑接受單元19設(shè)置在OFC 100B中。
[01