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