一種數(shù)據(jù)通信的方法、控制設(shè)備以及節(jié)點的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信領(lǐng)域,尤其涉及一種數(shù)據(jù)通信的方法、控制設(shè)備W及節(jié)點。
【背景技術(shù)】
[0002] 目前,軟件定義網(wǎng)絡(luò)(SoftwareDefinedNetwork,SDN)技術(shù)受到廣泛關(guān)注,Open Flow(開放流)是其中的一個開放式協(xié)議標準。該技術(shù)主要包括化enFlow交換機、控制設(shè) 備兩部分?;痚nFlow交換機根據(jù)流表(FlowTable)來轉(zhuǎn)發(fā)數(shù)據(jù),控制設(shè)備管控流表的生 成、維護和配置?;痚nFlow交換機負責(zé)數(shù)據(jù)轉(zhuǎn)發(fā),主要由H部分組成;流表(FlowT油le)、 安全信道(Se州reQiannel)和OpenFlow協(xié)議(OpenFlowProtocol)。安全通道是連 接化enFlow交換機和控制設(shè)備的接口,控制設(shè)備通過該個接口,按照化enFlow協(xié)議規(guī) 定的格式來配置和管理化enFlow交換機。每個化enFlow交換機的處理單元由流表構(gòu) 成,每個流表由許多流表項組成,流表項代表轉(zhuǎn)發(fā)規(guī)則,進入交換機的數(shù)據(jù)包通過查詢流表 來取得對應(yīng)的操作。流表項主要由匹配字段(MatchFields)、計數(shù)器(Counters)和操作 (Actions)等H部分組成,匹配字段(MatchFields)的結(jié)構(gòu)包含很多匹配項,涵蓋了鏈路 層、網(wǎng)絡(luò)層和傳輸層大部分標識,用來匹配網(wǎng)絡(luò)報文。計數(shù)器(Counters)用來記錄匹配到 的報文數(shù)。操作(Actions)規(guī)定了對匹配上的報文所做的操作。
[0003] 在化enFlow技術(shù)中,主機之間的通信是報文經(jīng)過報文傳輸路徑上的各個化en Flow交換機進行轉(zhuǎn)發(fā)來實現(xiàn)的,在沒有可用的報文傳輸路徑時,根據(jù)需要首先計算出一條 報文傳輸路徑,控制設(shè)備向該報文傳輸路徑上的各個化enFlow交換機下發(fā)流表項,當所有 流表項成功下發(fā)后,主機之間的報文經(jīng)過報文傳輸路徑上的各個化enFlow交換機轉(zhuǎn)發(fā)后 完成數(shù)據(jù)通信。
[0004] 現(xiàn)有技術(shù)會存在W下問題;由于網(wǎng)絡(luò)狀態(tài)不是理想情況,控制設(shè)備對報文傳輸路 徑上的各個化enFlow交換機下發(fā)流表項所到達的時間也不盡相同,如果報文經(jīng)過報文傳 輸路徑到達某個化enFlow交換機而該交換機暫時未收到流表項或因為網(wǎng)絡(luò)異常無法向該 交換機下發(fā)流表項,那么報文到達該交換機后無法繼續(xù)進行轉(zhuǎn)發(fā),從而造成報文丟包。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的實施例提供一種數(shù)據(jù)通信的方法、控制設(shè)備W及節(jié)點,在完成報文傳輸 的同時,降低了報文丟包的可能性,提高了報文傳輸?shù)某晒β省?br>[0006] 為達到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
[0007] 第一方面,提供一種數(shù)據(jù)通信的方法,所述方法包括:
[0008] 獲取報文傳輸路徑;
[0009] 執(zhí)行同時向所述報文傳輸路徑上的各個節(jié)點下發(fā)對應(yīng)的流表項的操作;并指示所 述報文傳輸路徑上的首節(jié)點不執(zhí)行接收到的流表項,指示所述報文傳輸路徑上除首節(jié)點外 的其他節(jié)點執(zhí)行接收到的流表項;
[0010] 判斷所述同時向所述報文傳輸路徑上的各個節(jié)點下發(fā)對應(yīng)的流表項的操作是否 成功;
[0011] 若所述各個節(jié)點中任一節(jié)點未能成功接收所述對應(yīng)流表項,則確定所述操作失 敗,指示所述各個節(jié)點中已成功接收所述對應(yīng)流表項的節(jié)點刪除接收到的流表項,并再次 執(zhí)行獲取報文傳輸路徑的步驟、同時向各個節(jié)點下發(fā)流表項的步驟W及判斷下發(fā)是否成功 的步驟,,直至所述各個節(jié)點全部成功接收到所述對應(yīng)的流表項;
[0012] 若所述各個節(jié)點全部成功接收到所述對應(yīng)的流表項,則確定所述操作成功,向所 述首節(jié)點下發(fā)激活流表項消息,指示所述首節(jié)點執(zhí)行接收到的流表項,W便所述各個節(jié)點 按照接收到的所述對應(yīng)的流表項傳輸報文。
[0013] 結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,所述指示所述報文傳輸路徑上的首 節(jié)點不執(zhí)行流表項包括:
[0014] 在向所述首節(jié)點下發(fā)的流表項中攜帶標識字段,所述標識字段為未激活,用于指 示所述首節(jié)點不執(zhí)行接收到的流表項并將匹配到所述流表項的報文緩存在所述首節(jié)點的 緩存隊列中;或
[0015] 在向所述首節(jié)點下發(fā)的流表項中攜帶指示信息,所述指示信息用于指示所述首節(jié) 點將接收到的流表項插入去激活流表并將匹配到所述流表項的報文緩存在所述首節(jié)點的 緩存隊列中,其中所述緩存隊列為所述去激活流表對應(yīng)的緩存隊列。
[0016] 結(jié)合第一方面,在第二種可能的實現(xiàn)方式中,所述判斷所述同時向所述報文傳輸 路徑上的各個節(jié)點下發(fā)對應(yīng)的流表項的操作是否成功包括:
[0017] 判斷在預(yù)設(shè)時間內(nèi)是否收到所述各個節(jié)點反饋的響應(yīng)消息;
[001引若在所述預(yù)設(shè)時間內(nèi)收到所述各個節(jié)點反饋的響應(yīng)消息,則所述各個節(jié)點成功接 收所述對應(yīng)的流表項并確定所述操作成功;
[0019] 若在所述預(yù)設(shè)時間內(nèi)未收到所述各個節(jié)點中任一節(jié)點反饋的響應(yīng)消息,則確定所 述各個節(jié)點未成功接收所述對應(yīng)的流表項并確定所述操作失敗。
[0020] 結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第H種可能的實現(xiàn)方式中,若所述操 作是通過控制設(shè)備中的至少一個控制節(jié)點執(zhí)行的,則為所述操作分配有對應(yīng)的操作信息, 所述操作信息包括:操作標識符、操作失敗標識、所述至少一個控制節(jié)點的控制節(jié)點總數(shù)W 及操作成功的節(jié)點數(shù);
[0021] 其中,所述操作信息是由所述控制設(shè)備中的應(yīng)用程序生成后分配給所述至少一個 控制節(jié)點的,或者由所述至少一個控制節(jié)點生成的;所述至少一個控制節(jié)點中的任意一個 控制節(jié)點具有對所述操作信息進行修改、讀取、訂閱的權(quán)限。
[0022] 結(jié)合第一方面的第H種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,若所述各 個節(jié)點是通過多個控制節(jié)點控制的,所述判斷在預(yù)設(shè)時間內(nèi)是否收到所述各個節(jié)點反饋的 響應(yīng)消息包括:
[0023] 若一個控制節(jié)點在預(yù)設(shè)時間內(nèi)收到所述一個控制節(jié)點所控制的所有節(jié)點反饋的 響應(yīng)消息,則將所述操作成功的節(jié)點數(shù)加1 ;
[0024] 將所述操作成功的節(jié)點數(shù)的增量與控制所述各個節(jié)點的控制節(jié)點總數(shù)比較,若所 述操作成功的節(jié)點數(shù)的增量與所述控制節(jié)點總數(shù)相等,則確定在預(yù)設(shè)時間內(nèi)收到所述各個 節(jié)點反饋的響應(yīng)消息;否則,確定在預(yù)設(shè)時間內(nèi)未收到所述各個節(jié)點反饋的響應(yīng)消息。
[0025] 結(jié)合第一方面,在第五種可能的實現(xiàn)方式中,所述若所述各個節(jié)點中任一節(jié)點未 能成功接收所述對應(yīng)流表項,則確定所述操作失敗,指示所述各個節(jié)點中已成功接收所述 對應(yīng)流表項的節(jié)點刪除接收到的流表項包括:
[0026] 若所述各個節(jié)點中任一節(jié)點未能成功接收所述對應(yīng)流表項,則向所述各個節(jié)點中 已成功接收所述對應(yīng)流表項的節(jié)點發(fā)送刪除消息,指示所述各個節(jié)點中已成功接收所述對 應(yīng)流表項的節(jié)點刪除收到的流表項。
[0027] 結(jié)合第一方面,在第六種可能的實現(xiàn)方式中,若所述各個節(jié)點是通過多個控制節(jié) 點控制的,所述若所述各個節(jié)點中任一節(jié)點未能成功接收所述對應(yīng)流表項,則確定所述操 作失敗,指示所述各個節(jié)點中已成功接收所述對應(yīng)流表項的節(jié)點刪除接收到的流表項包 括:
[0028] 若第一節(jié)點未能成功接收所述對應(yīng)流表項,所述第一節(jié)點為所述各個節(jié)點中的任 一節(jié)點,則接受所述第一節(jié)點的控制節(jié)點對所述操作失敗標識的修改,所述操作失敗標識 用于標記本次流表項下發(fā)流程是否失?。?br>[0029] 向所述多個控制節(jié)點中除所述第一節(jié)點的控制節(jié)點的其他控制節(jié)點發(fā)送通知消 息,所述通知消息包括修改后的操作失敗標識,用于通知所述其他控制節(jié)點本次流表項下 發(fā)流程失敗,使所述多個控制節(jié)點分別向所述各個節(jié)點中已經(jīng)接收到流表項的節(jié)點發(fā)送刪 除消息,指示所述各個節(jié)點中已成功接收流表項的節(jié)點刪除收到的流表項。
[0030] 第二方面,提供一種數(shù)據(jù)通信的方法,所述方法包括:
[0031] 從控制設(shè)備獲取流表項;
[0032] 確定是否執(zhí)行所述流表項,若不執(zhí)行所述流表項,則等待所述控制設(shè)備下發(fā)激活 流表項消息;
[0033] 接收所述控制設(shè)備發(fā)送的所述激活流表項消息,執(zhí)行所述流表項,使報文按照所 述流表項對應(yīng)的操作進行傳輸。
[0034] 結(jié)合第二方面,在第一種可能的實現(xiàn)方式中,所述確定是否執(zhí)行所述流表項包 括:
[0035] 若從控制設(shè)備獲取的流表項中攜帶的標識字段為激活,則執(zhí)行所述流表項;
[0036] 若從控制設(shè)備獲取的流表項中攜帶的標識字段為未激活,則不執(zhí)行所述流表項并 將匹配到所述流表項的報文緩存在緩存隊列中;或者
[0037] 若從控制設(shè)備獲取的流表項中攜帶的指示信息指示所述首節(jié)點將接收到的流表 項插入去激活流表,則將接收到的流表項插入去激活流表,不執(zhí)行所述流表項并將匹配到 所述流表項的報文緩存在緩存隊列中,其中所述緩存隊列為所述去激活流表對應(yīng)的緩存隊 列。
[0038] 結(jié)合第二