一種sdn流表更新方法及裝置的制造方法
【專利摘要】本發(fā)明實(shí)施例提供了一種SDN流表更新方法及裝置,根據(jù)新數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則,確定每個交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表;判斷交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,對應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路,將不會產(chǎn)生環(huán)路的交換機(jī)節(jié)點(diǎn)確定為待更新交換機(jī)節(jié)點(diǎn);同時(shí)向待更新交換機(jī)節(jié)點(diǎn)下發(fā)與待更新交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表;判斷由當(dāng)前所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑是否與新數(shù)據(jù)轉(zhuǎn)發(fā)路徑一致,如果否,返回繼續(xù)對未更新的交換機(jī)節(jié)點(diǎn)進(jìn)行更新。應(yīng)用本發(fā)明實(shí)施例,通過同時(shí)向不會產(chǎn)生環(huán)路的多個交換機(jī)節(jié)點(diǎn)下發(fā)對應(yīng)新流表進(jìn)行更新,縮短了流表的更新時(shí)間,提高了流表更新的效率。
【專利說明】
一種SDN流表更新方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,特別涉及一種SDN流表更新方法及裝置。
【背景技術(shù)】
[0002]軟件定義網(wǎng)絡(luò)(Software Defined Network,簡稱SDN)是一種新型網(wǎng)絡(luò)創(chuàng)新架構(gòu),是網(wǎng)絡(luò)虛擬化的一種實(shí)現(xiàn)方式,SDN通過將控制平面集中到遠(yuǎn)端的一個邏輯控制器上,實(shí)現(xiàn)了數(shù)據(jù)平面和控制平面的解耦。其核心技術(shù)OpenFlow通過將網(wǎng)絡(luò)設(shè)備控制面與數(shù)據(jù)面分離開來,從而實(shí)現(xiàn)了網(wǎng)絡(luò)流量的靈活控制,使網(wǎng)絡(luò)作為管道變得更加智能。但是,在SDN的運(yùn)行過程中,網(wǎng)絡(luò)狀態(tài)時(shí)常發(fā)生變化,例如路由切換、流量均衡、網(wǎng)絡(luò)設(shè)備維護(hù)等等;在網(wǎng)絡(luò)狀態(tài)發(fā)生變化時(shí),網(wǎng)絡(luò)控制器需要對網(wǎng)絡(luò)中的交換機(jī)節(jié)點(diǎn)進(jìn)行流表更新,并且,在進(jìn)行流表更新時(shí),需要保證在對應(yīng)流表更新前與流表更新后的數(shù)據(jù)轉(zhuǎn)發(fā)路徑不產(chǎn)生環(huán)路。
[0003]目前,常用的SDN流表更新方法有雙向更新,如圖1所示,為雙向更新的過程示意圖,灰色表示對應(yīng)的交換機(jī)節(jié)點(diǎn)已經(jīng)更新為新流表;整個更新過程為,分別從舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑的前端以及新數(shù)據(jù)轉(zhuǎn)發(fā)路徑的后端向中間逐漸更新,每一次僅能更新兩個節(jié)點(diǎn),需要經(jīng)過6次才能更新完圖1所示的交換機(jī)節(jié)點(diǎn),雖然也能夠保證更新前與更新后的數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不產(chǎn)生環(huán)路,但可知的是,在SDN網(wǎng)絡(luò)中,有大量的交換機(jī)節(jié)點(diǎn),若按照雙向更新的方式對網(wǎng)絡(luò)中的交換機(jī)節(jié)點(diǎn)進(jìn)行流表更新,更新完網(wǎng)絡(luò)中的交換機(jī)節(jié)點(diǎn)對應(yīng)流表需要耗費(fèi)較長的時(shí)間,流表更新效率較低。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例的目的在于提供一種SDN流表更新方法及裝置,以縮短流表的更新時(shí)間,提高流表更新效率。
[0005]為達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種SDN流表更新方法,應(yīng)用于網(wǎng)絡(luò)控制器,所述方法包括步驟:
[0006]根據(jù)起始交換機(jī)節(jié)點(diǎn)與終止交換機(jī)節(jié)點(diǎn)間的新數(shù)據(jù)轉(zhuǎn)發(fā)路徑,確定所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑中每個交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表,其中,所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn),分別為舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn);
[0007]針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路;
[0008]如果否,將所述交換機(jī)節(jié)點(diǎn)確定為待更新交換機(jī)節(jié)點(diǎn);
[0009]針對每個待更新交換機(jī)節(jié)點(diǎn),同時(shí)向所述待更新交換機(jī)節(jié)點(diǎn)下發(fā)與所述待更新交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表,以使得每個待更新交換機(jī)節(jié)點(diǎn)接收到各自對應(yīng)新流表后,采用各自對應(yīng)的新流表進(jìn)行更新;
[0010]判斷由當(dāng)前所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑是否與所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑一致,如果否,返回所述針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路步驟繼續(xù)執(zhí)行。
[0011]可選的,所述針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路,包括:
[0012]針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中是否有部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑指向所述交換機(jī)節(jié)點(diǎn);如果沒有,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路;
[0013]或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所述交換機(jī)節(jié)點(diǎn)對應(yīng)新流表記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑所指向的交換機(jī)節(jié)點(diǎn),是否在所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中所述交換機(jī)節(jié)點(diǎn)之前;如果不在,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路;
[0014]或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中所有指向所述交換機(jī)節(jié)點(diǎn)的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑對應(yīng)的交換機(jī)節(jié)點(diǎn)的流表是否為新流表;如果是,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路;
[0015]或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所述交換機(jī)節(jié)點(diǎn)對應(yīng)新流表記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑所指向的交換機(jī)節(jié)點(diǎn)的流表是否為新流表;如果是,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。
[0016]可選的,所述方法還包括:
[0017]判斷預(yù)設(shè)時(shí)間段內(nèi)是否接收到所述待更新交換機(jī)節(jié)點(diǎn)反饋的針對所述新流表的更新完成指令;
[0018]如果沒有接收到,將所述待更新交換機(jī)節(jié)點(diǎn)確定為未更新的交換機(jī)節(jié)點(diǎn)。
[0019]為達(dá)到上述目的,本發(fā)明實(shí)施例提供一種SDN流表更新裝置,應(yīng)用于網(wǎng)絡(luò)控制器,所述裝置包括:
[0020]第一確定模塊,用于根據(jù)起始交換機(jī)節(jié)點(diǎn)與終止交換機(jī)節(jié)點(diǎn)間的新數(shù)據(jù)轉(zhuǎn)發(fā)路徑,確定所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑中每個交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表,其中,所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn),分別為舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn);
[0021 ]第一判斷模塊,用于針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路,如果否,觸發(fā)第二確定模塊;
[0022]第二確定模塊,用于將不會產(chǎn)生環(huán)路的交換機(jī)節(jié)點(diǎn)確定為待更新交換機(jī)節(jié)點(diǎn);
[0023]發(fā)送模塊,用于針對每個待更新交換機(jī)節(jié)點(diǎn),同時(shí)向所述待更新交換機(jī)節(jié)點(diǎn)下發(fā)與所述待更新交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表,以使得每個待更新交換機(jī)節(jié)點(diǎn)接收到各自對應(yīng)新流表后,采用各自對應(yīng)的新流表進(jìn)行更新;
[0024]第二判斷模塊,用于判斷由當(dāng)前所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑是否與所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑一致,如果否,調(diào)用所述第一判斷模塊。
[0025]可選的,所述第一判斷模塊,具體用于:
[0026]針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中是否有部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑指向所述交換機(jī)節(jié)點(diǎn);如果沒有,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路;
[0027]或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所述交換機(jī)節(jié)點(diǎn)對應(yīng)新流表記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑所指向的交換機(jī)節(jié)點(diǎn),是否在所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中所述交換機(jī)節(jié)點(diǎn)之前;如果不在,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路;
[0028]或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中所有指向所述交換機(jī)節(jié)點(diǎn)的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑對應(yīng)的交換機(jī)節(jié)點(diǎn)的流表是否為新流表;如果是,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路;
[0029]或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所述交換機(jī)節(jié)點(diǎn)對應(yīng)新流表記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑所指向的交換機(jī)節(jié)點(diǎn)的流表是否為新流表;如果是,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。
[0030]可選的,所述裝置還包括:
[0031]第三判斷模塊,用于判斷預(yù)設(shè)時(shí)間段內(nèi)是否接收到所述待更新交換機(jī)節(jié)點(diǎn)反饋的針對所述新流表的更新完成指令,如果沒有接收到,觸發(fā)第三確定模塊;
[0032]第三確定模塊,用于將所述待更新交換機(jī)節(jié)點(diǎn)確定為未更新的交換機(jī)節(jié)點(diǎn)。
[0033]本發(fā)明實(shí)施例提供了一種SDN流表更新方法及裝置,根據(jù)新數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則,確定每個交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表;判斷交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,對應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路,將不會產(chǎn)生環(huán)路的交換機(jī)節(jié)點(diǎn)確定為待更新交換機(jī)節(jié)點(diǎn);同時(shí)向待更新交換機(jī)節(jié)點(diǎn)下發(fā)與待更新交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表;判斷由當(dāng)前所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑是否與新數(shù)據(jù)轉(zhuǎn)發(fā)路徑一致,如果否,返回繼續(xù)對未更新的交換機(jī)節(jié)點(diǎn)進(jìn)行更新。應(yīng)用本發(fā)明實(shí)施例,通過同時(shí)向不會產(chǎn)生環(huán)路的多個交換機(jī)節(jié)點(diǎn)下發(fā)對應(yīng)新流表進(jìn)行更新,縮短了流表的更新時(shí)間,提高了流表更新的效率。
【附圖說明】
[0034]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0035]圖1為采用雙向更新方法對網(wǎng)絡(luò)中交換機(jī)節(jié)點(diǎn)流表的更新過程示意圖;
[0036]圖2為本發(fā)明實(shí)施例提供的一種SDN流表更新方法的流程示意圖;
[0037]圖3為本發(fā)明實(shí)施例提供的一種具體的流表更新過程示意圖;
[0038]圖4為本發(fā)明實(shí)施例提供的另一種SDN流表更新方法的流程示意圖;
[0039]圖5為本發(fā)明實(shí)施例提供的另一種具體的流表更新過程示意圖;
[0040]圖6為本發(fā)明實(shí)施例提供的一種SDN流表更新裝置的結(jié)構(gòu)示意圖;
[0041]圖7為本發(fā)明實(shí)施例提供的另一種SDN流表更新裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0042]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0043]下面結(jié)合具體實(shí)施例,對本發(fā)明做詳細(xì)的說明。
[0044]需要說明是,本發(fā)明實(shí)施例所提供的一種SDN流表更新方法及裝置,優(yōu)選適用于網(wǎng)絡(luò)控制器。
[0045]圖2為本發(fā)明實(shí)施例提供的一種SDN流表更新方法的流程示意圖,可以包括:
[0046]SlOl:根據(jù)起始交換機(jī)節(jié)點(diǎn)與終止交換機(jī)節(jié)點(diǎn)間的新數(shù)據(jù)轉(zhuǎn)發(fā)路徑,確定所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑中每個交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表,其中,所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn),分別為舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn);
[0047]本領(lǐng)域技術(shù)人員可以理解的是,軟件定義網(wǎng)絡(luò)(Software Defined Network,簡稱SDN)是一種新型網(wǎng)絡(luò)創(chuàng)新架構(gòu),是網(wǎng)絡(luò)虛擬化的一種實(shí)現(xiàn)方式,SDN通過將控制平面集中到遠(yuǎn)端的一個邏輯控制器上,實(shí)現(xiàn)了數(shù)據(jù)平面和控制平面的解耦。其核心技術(shù)OpenFlow通過將網(wǎng)絡(luò)設(shè)備控制面與數(shù)據(jù)面分離開來,從而實(shí)現(xiàn)了網(wǎng)絡(luò)流量的靈活控制,使網(wǎng)絡(luò)作為管道變得更加智能。
[0048]流表,其實(shí)可被視作是OpenFlow對網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)轉(zhuǎn)發(fā)功能的一種抽象。流表是由很多個流表項(xiàng)組成,每一個流表項(xiàng)都對應(yīng)一個數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則,也就是數(shù)據(jù)的轉(zhuǎn)發(fā)路徑;因此,通常所說的對流表進(jìn)行更新其實(shí)是對流表中的流表項(xiàng)進(jìn)行更新。
[0049]不難理解的是,在SDN中包含有多個交換機(jī)節(jié)點(diǎn),而每一個交換機(jī)節(jié)點(diǎn)都有對應(yīng)自己的流表,通過這些流表所記錄的數(shù)據(jù)轉(zhuǎn)發(fā)路徑可以明確的對數(shù)據(jù)進(jìn)行傳輸。由于各個交換機(jī)節(jié)點(diǎn)的資源需求以及網(wǎng)絡(luò)狀態(tài)的實(shí)時(shí)變化,例如路由切換、流量均衡、網(wǎng)絡(luò)設(shè)備維護(hù)等等;在網(wǎng)絡(luò)狀態(tài)發(fā)生變化時(shí),網(wǎng)絡(luò)控制器需要對網(wǎng)絡(luò)中的交換機(jī)節(jié)點(diǎn)進(jìn)行流表更新;網(wǎng)絡(luò)控制器將通過對這些變化的信息進(jìn)行采集、處理,將獲得一個針對該變化信息的新數(shù)據(jù)轉(zhuǎn)發(fā)路徑。再根據(jù)這一新數(shù)據(jù)轉(zhuǎn)發(fā)路徑,確定出新數(shù)據(jù)轉(zhuǎn)發(fā)路徑中每一個交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表,以使得交換機(jī)節(jié)點(diǎn)接收到對應(yīng)的新流表后,根據(jù)新流表中的數(shù)據(jù)轉(zhuǎn)發(fā)路徑,將數(shù)據(jù)發(fā)送給指向的交換機(jī)節(jié)點(diǎn)。該新數(shù)據(jù)轉(zhuǎn)發(fā)路徑的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn),分別為舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn)。不難理解,起始交換機(jī)節(jié)點(diǎn)也就是開始發(fā)送數(shù)據(jù)的交換機(jī)節(jié)點(diǎn),可以理解為它包含數(shù)據(jù)源;終止交換機(jī)節(jié)點(diǎn)也就是最后接收數(shù)據(jù)的交換機(jī)節(jié)點(diǎn)。舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑就是控制器在沒有獲得針對該變化信息的新數(shù)據(jù)轉(zhuǎn)發(fā)路徑之前,網(wǎng)絡(luò)中現(xiàn)有的數(shù)據(jù)轉(zhuǎn)發(fā)路徑。
[0050]示例性的,以圖3中的新、舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑為例進(jìn)行說明,其中,舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑為:0?402403404405406407408409—104? I ;新數(shù)據(jù)轉(zhuǎn)發(fā)路徑為:01—03—02—04—07406405409408410—11;數(shù)據(jù)在新、舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑中都是由交換機(jī)節(jié)點(diǎn)01開始發(fā)送,傳至交換機(jī)節(jié)點(diǎn)11終止。新數(shù)據(jù)轉(zhuǎn)發(fā)路徑中的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn)分別為舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑中的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn)。但需要說明的是,由于交換機(jī)節(jié)點(diǎn)11為終止交換機(jī)節(jié)點(diǎn),因此,交換機(jī)節(jié)點(diǎn)11對應(yīng)的流表不需要更新;或者認(rèn)為交換機(jī)節(jié)點(diǎn)11沒有對應(yīng)的流表。
[0051 ]根據(jù)新數(shù)據(jù)轉(zhuǎn)發(fā)路徑01~>03~>02~>04~>07~>06~>05~>09~>08~>10~>11可以確定交換機(jī)節(jié)點(diǎn)01-10分別對應(yīng)的新流表01-10;可以知道的是,新流表01記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑為:01—03、新流表02記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑為:02—04、新流表03記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑為:03—02、新流表04記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑為:04—07、新流表05記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑為:05—09、新流表06記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑為:06—05、新流表07記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑為:07—06、新流表08記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑為:08—10、新流表09記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑為:09—08、新流表10記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑為:10—11。
[0052 ] S102:針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路,如果否,執(zhí)行S103;
[0053]這里所說的轉(zhuǎn)發(fā)路徑中產(chǎn)生環(huán)路是指,如果采用交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表所記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑進(jìn)行數(shù)據(jù)傳輸?shù)脑?,?shù)據(jù)會在交換機(jī)節(jié)點(diǎn)間反復(fù)不停地進(jìn)行轉(zhuǎn)發(fā)。部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑是指對應(yīng)交換機(jī)節(jié)點(diǎn)傳輸數(shù)據(jù)流向。
[0054]具體的,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路,可以:
[0055]針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中是否有部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑指向所述交換機(jī)節(jié)點(diǎn);如果沒有,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路;
[0056]或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所述交換機(jī)節(jié)點(diǎn)對應(yīng)新流表記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑所指向的交換機(jī)節(jié)點(diǎn),是否在所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中所述交換機(jī)節(jié)點(diǎn)之前;如果不在,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路;
[0057]或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中所有指向所述交換機(jī)節(jié)點(diǎn)的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑對應(yīng)的交換機(jī)節(jié)點(diǎn)的流表是否為新流表;如果是,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路;
[0058]或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所述交換機(jī)節(jié)點(diǎn)對應(yīng)新流表記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑所指向的交換機(jī)節(jié)點(diǎn)的流表是否為新流表;如果是,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。
[0059]示例性的,以圖3中的新數(shù)據(jù)轉(zhuǎn)發(fā)路徑和舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑為例進(jìn)行說明,根據(jù)上述的判定規(guī)則可以確定:
[0060]交換機(jī)節(jié)點(diǎn)01在未進(jìn)行流表更新前,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中沒有部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑指向交換機(jī)節(jié)點(diǎn)01,其實(shí)就是舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑中沒有部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑指向交換機(jī)節(jié)點(diǎn)01;因此,可以確定交換機(jī)節(jié)點(diǎn)01采用對應(yīng)新流表進(jìn)行更新后,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。
[0061 ]交換機(jī)節(jié)點(diǎn)02、04、05、08和10對應(yīng)新流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑分別為:02404、04—07、05409、08410和10—11,分別指向交換機(jī)節(jié)點(diǎn)04、07、09、10和11,并且在舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑中,交換機(jī)節(jié)點(diǎn)04在交換機(jī)節(jié)點(diǎn)02之后,交換機(jī)節(jié)點(diǎn)07在交換機(jī)節(jié)點(diǎn)04之后,交換機(jī)節(jié)點(diǎn)09在交換機(jī)節(jié)點(diǎn)05之后,交換機(jī)節(jié)點(diǎn)10在交換機(jī)節(jié)點(diǎn)08之后,交換機(jī)節(jié)點(diǎn)11在交換機(jī)節(jié)點(diǎn)10之后;因此,可以確定交換機(jī)節(jié)點(diǎn)02、04、05、08和10分別采用各自對應(yīng)的新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。
[0062]而交換機(jī)節(jié)點(diǎn)03、06、07和09對應(yīng)的新流表所記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑分別為:03402、06405、07—06和09—08,分別指向交換機(jī)節(jié)點(diǎn)02、05、06、和08,但在舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑中,交換機(jī)節(jié)點(diǎn)02在交換機(jī)節(jié)點(diǎn)03之前,交換機(jī)節(jié)點(diǎn)05在交換機(jī)節(jié)點(diǎn)06之前,交換機(jī)節(jié)點(diǎn)06在交換機(jī)節(jié)點(diǎn)07之前,交換機(jī)節(jié)點(diǎn)08在交換機(jī)節(jié)點(diǎn)09之前;因此,可以確定交換機(jī)節(jié)點(diǎn)03、
06、07和09分別采用各自對應(yīng)的新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中將會產(chǎn)生環(huán)路。
[0063]綜上可知,交換機(jī)節(jié)點(diǎn)01、02、04、05、08和10分別采用各自對應(yīng)的新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。而交換機(jī)節(jié)點(diǎn)03、06、07和09分別采用各自對應(yīng)的新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中將會產(chǎn)生環(huán)路。
[0064]值得一提的是,實(shí)際應(yīng)用時(shí),在第I次判斷交換機(jī)節(jié)點(diǎn)采用各自對應(yīng)的新流表進(jìn)行更新后的數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路時(shí),通常采用深度優(yōu)先搜索算法(Depth-First-Search,簡稱DFS)來檢測交換機(jī)節(jié)點(diǎn)采用各自對應(yīng)的新流表進(jìn)行更新后的數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路。
[0065]采用上述深度優(yōu)先搜索算法來檢測交換機(jī)節(jié)點(diǎn)采用各自對應(yīng)的新流表進(jìn)行更新后的數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路,首先將交換機(jī)節(jié)點(diǎn)定義為三種狀態(tài):unknown(未更新),seen(已更新),visited(待更新),其中,visited表示該交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表和舊流表同時(shí)存在。對網(wǎng)絡(luò)中狀態(tài)為unknown的交換機(jī)節(jié)點(diǎn),測試該交換機(jī)節(jié)點(diǎn)采用各自對應(yīng)的新流表進(jìn)行更新后的數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路,如果不會產(chǎn)生環(huán)路,將該交換機(jī)節(jié)點(diǎn)的狀態(tài)更新為visited,如果該交換機(jī)節(jié)點(diǎn)會產(chǎn)生環(huán)路,那么,該交換機(jī)節(jié)點(diǎn)的狀態(tài)不變。按照此規(guī)則,測試完網(wǎng)絡(luò)中所有交換機(jī)節(jié)點(diǎn),確定出所有的狀態(tài)為visited的交換機(jī)節(jié)點(diǎn)。
[0066]示例性的,第I次更新前,假設(shè)所有交換機(jī)節(jié)點(diǎn)的狀態(tài)均為unknown,此時(shí),測試交換機(jī)節(jié)點(diǎn)01,交換機(jī)節(jié)點(diǎn)01采用新流表01:01—03進(jìn)行更新后形成的數(shù)據(jù)轉(zhuǎn)發(fā)路徑(局部)為:01—03,交換機(jī)節(jié)點(diǎn)01對應(yīng)的舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑(局部)為:01402403—04,可知,交換機(jī)節(jié)點(diǎn)01采用新流表01進(jìn)行更新后,數(shù)據(jù)轉(zhuǎn)發(fā)路徑不會產(chǎn)生環(huán)路,那么,將交換機(jī)節(jié)點(diǎn)01的狀態(tài)更新為visi ted。測試交換機(jī)節(jié)點(diǎn)02,交換機(jī)節(jié)點(diǎn)02采用新流表02:02—04進(jìn)行更新后形成的數(shù)據(jù)轉(zhuǎn)發(fā)路徑(局部)為:02—04,交換機(jī)節(jié)點(diǎn)02對應(yīng)的舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑(局部)為:01 —
02—03—04,可知,交換機(jī)節(jié)點(diǎn)02采用新流表02進(jìn)行更新后,數(shù)據(jù)轉(zhuǎn)發(fā)路徑不會產(chǎn)生環(huán)路,那么,將交換機(jī)節(jié)點(diǎn)02的狀態(tài)更新為vi si ted。測試交換機(jī)節(jié)點(diǎn)03,交換機(jī)節(jié)點(diǎn)03采用新流表03:03—02進(jìn)行更新后形成的數(shù)據(jù)轉(zhuǎn)發(fā)路徑(局部)為:03—02,交換機(jī)節(jié)點(diǎn)03對應(yīng)的舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑(局部)為:01402403—04,可知,交換機(jī)節(jié)點(diǎn)03采用新流表03進(jìn)行更新后,數(shù)據(jù)轉(zhuǎn)發(fā)路徑將會產(chǎn)生環(huán)路,那么,該交換機(jī)節(jié)點(diǎn)03的狀態(tài)不變?nèi)詾閡nknown。按照此規(guī)則,測試完網(wǎng)絡(luò)中所有交換機(jī)節(jié)點(diǎn),不難確定出狀態(tài)為visited的交換機(jī)節(jié)點(diǎn)有01、02、04、05、08和10。
[0067]交換機(jī)節(jié)點(diǎn)01、02、04、05、08和10的狀態(tài)均為“8丨七6(1,那么,交換機(jī)節(jié)點(diǎn)01、02、
04、05、08和10分別采用各自對應(yīng)的新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。而交換機(jī)節(jié)點(diǎn)03、06、07和09的狀態(tài)不變?nèi)詾閡nknown,因此,交換機(jī)節(jié)點(diǎn)03、06、07和09分別采用各自對應(yīng)的新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中將會產(chǎn)生環(huán)路。
[0068]需要說明的是,上述采用DFS對網(wǎng)絡(luò)中的交換機(jī)節(jié)點(diǎn)進(jìn)行測試僅為本發(fā)明實(shí)施例提供的一種具體的技術(shù)實(shí)現(xiàn),并不構(gòu)成對本申請的限定。
[0069]S103:將所述交換機(jī)節(jié)點(diǎn)確定為待更新交換機(jī)節(jié)點(diǎn);
[0070]示例性的,交換機(jī)節(jié)點(diǎn)01、02、04、05、08和10分別采用各自對應(yīng)的新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。因此,將交換機(jī)節(jié)點(diǎn)01、02、04、05、08和10分別確定為待更新交換機(jī)節(jié)點(diǎn)01、02、04、05、08和10。
[0071]S104:針對每個待更新交換機(jī)節(jié)點(diǎn),同時(shí)向所述待更新交換機(jī)節(jié)點(diǎn)下發(fā)與所述待更新交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表,以使得每個待更新交換機(jī)節(jié)點(diǎn)接收到各自對應(yīng)新流表后,采用各自對應(yīng)的新流表進(jìn)行更新;
[0072]控制器將待更新交換機(jī)節(jié)點(diǎn)01對應(yīng)的新流表01、待更新交換機(jī)節(jié)點(diǎn)02對應(yīng)的新流表02以及更新交換機(jī)節(jié)點(diǎn)04、05、08和10分別對應(yīng)的新流表04、05、08和10同時(shí)發(fā)送給待更新交換機(jī)節(jié)點(diǎn)01、02、04、05、08和10。下面將以待更新交換機(jī)節(jié)點(diǎn)01為例對交換機(jī)節(jié)點(diǎn)的流表更新過程進(jìn)行說明,如圖3中所示的新數(shù)據(jù)轉(zhuǎn)發(fā)路徑以及舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑可以確定的是,待更新交換機(jī)節(jié)點(diǎn)01在舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑中對應(yīng)的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑是指向交換機(jī)節(jié)點(diǎn)02的,而在新數(shù)據(jù)轉(zhuǎn)發(fā)路徑中對應(yīng)的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑是指向交換機(jī)節(jié)點(diǎn)03的,待更新交換機(jī)節(jié)點(diǎn)01接收到對應(yīng)的新流表01后,將待交換機(jī)節(jié)點(diǎn)01對應(yīng)在舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑中的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑01—02刪除,替換為新流表01對應(yīng)的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑01—03,完成對待更新交換機(jī)節(jié)點(diǎn)OI的流表更新。待更新交換機(jī)節(jié)點(diǎn)02、04、05、08和1均按照此規(guī)則完成各自對應(yīng)的流表更新,并且待更新交換機(jī)節(jié)點(diǎn)01、02、04、05、08和10是同時(shí)進(jìn)行各自對應(yīng)的流表更新。
[0073]待更新交換機(jī)節(jié)點(diǎn)01、02、04、05、08和10對應(yīng)的流表進(jìn)行更新后形成的數(shù)據(jù)轉(zhuǎn)發(fā)路徑如圖3中的第I次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑所示。圖3所示的第I次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑中灰色對應(yīng)的交換機(jī)節(jié)點(diǎn)表示已經(jīng)更新為新流表,直觀的可以得知,圖3中第I次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑中,交換機(jī)節(jié)點(diǎn)O1、02、04、05、08和1已經(jīng)更新為對應(yīng)的新流表。
[0074]S105:判斷由當(dāng)前所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑是否與所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑一致,如果否,執(zhí)行S102。
[0075]交換機(jī)節(jié)點(diǎn)01-10中經(jīng)過第I次更新后,交換機(jī)節(jié)點(diǎn)01、02、04、05、08和10已經(jīng)更新為對應(yīng)的新流表,交換機(jī)節(jié)點(diǎn)一旦更新為對應(yīng)的新流表后,該節(jié)點(diǎn)將不再作為未更新交換機(jī)節(jié)點(diǎn)。如圖3所示,顯然圖3中第I次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑與新數(shù)據(jù)轉(zhuǎn)發(fā)路徑不一致,因此,需要返回步驟S102繼續(xù)執(zhí)行。此時(shí),已知的是交換機(jī)節(jié)點(diǎn)01-10中還有交換機(jī)節(jié)點(diǎn)03、06、07和09的流表未進(jìn)行更新。
[0076]按照上述的判定規(guī)則,可以確定交換機(jī)節(jié)點(diǎn)03和06在未進(jìn)行流表更新前,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中均沒有部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑指向交換機(jī)節(jié)點(diǎn)03和06;因此;可以確定交換機(jī)節(jié)點(diǎn)03和06分別采用各自對應(yīng)新流表進(jìn)行更新后,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。
[0077]還可以確定交換節(jié)點(diǎn)09在未進(jìn)行流表更新前,圖3中第I次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑中指向交換機(jī)節(jié)點(diǎn)09的交換機(jī)節(jié)點(diǎn)05的流表為新流表;因此,交換機(jī)節(jié)點(diǎn)09采用新流表09進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。
[0078]而交換機(jī)節(jié)點(diǎn)07對應(yīng)新流表07記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑為:07—06,而在舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑中,交換機(jī)節(jié)點(diǎn)06在交換機(jī)節(jié)點(diǎn)02之前,因此,交換機(jī)節(jié)點(diǎn)07采用對應(yīng)的新流表07進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中將會產(chǎn)生環(huán)路。
[0079]綜上可知,可將交換機(jī)節(jié)點(diǎn)03、06和09確定為待更新交換機(jī)節(jié)點(diǎn),之后,同時(shí)向待更新交換機(jī)節(jié)點(diǎn)03、06和09下發(fā)對應(yīng)的新流表03、06和09,以使得待更新交換機(jī)節(jié)點(diǎn)03、06和09分別接收到新流表03、06和09后,采用各自對應(yīng)的新流表03、06和09進(jìn)行更新。待更新交換機(jī)節(jié)點(diǎn)O1、02、04、05、08和10對應(yīng)的流表進(jìn)行更新后的形成的數(shù)據(jù)轉(zhuǎn)發(fā)路徑如圖3中的第2次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑所示。直觀的可以得知,圖3中第2次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑中,交換機(jī)節(jié)點(diǎn)01、02、03、04、05、06、08、09和10已經(jīng)更新為對應(yīng)的新流表。圖3所示的第2次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑中灰色對應(yīng)的交換機(jī)節(jié)點(diǎn)表示已經(jīng)更新為新流表,直觀的可以得知,圖3中第2次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑中與圖3中第I次更新對應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)路徑相比較,交換機(jī)節(jié)點(diǎn)
03、06和09已經(jīng)更新為新流表。
[0080]不難發(fā)現(xiàn),圖3中第2次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑與新數(shù)據(jù)轉(zhuǎn)發(fā)路徑不一致,圖3中第2次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑中交換機(jī)節(jié)點(diǎn)07流表未進(jìn)行更新,需要再次返回步驟S102繼續(xù)執(zhí)行。按照上述的判定規(guī)則,不難確定交換機(jī)節(jié)點(diǎn)07在未進(jìn)行流表更新前,交換機(jī)節(jié)點(diǎn)07對應(yīng)新流表07記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑所指向的交換機(jī)節(jié)點(diǎn)06的流表為新流表;因此,可以確定交換機(jī)節(jié)點(diǎn)07采用所述新流表07進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。將交換機(jī)節(jié)點(diǎn)07確定為待更新交換機(jī)節(jié)點(diǎn),之后,向待更新交換機(jī)節(jié)點(diǎn)07下發(fā)對應(yīng)的新流表07,待更新交換機(jī)節(jié)點(diǎn)07接收到新流表07后,采用新流表07進(jìn)行更新。
[0081]待更新交換機(jī)節(jié)點(diǎn)07對應(yīng)的流表進(jìn)行更新后的形成的數(shù)據(jù)轉(zhuǎn)發(fā)路徑如圖4中的第3次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑所示。圖3所示的第3次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑中灰色對應(yīng)的交換機(jī)節(jié)點(diǎn)表示已經(jīng)更新為新流表,直觀的可以得知,圖3中第3次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑中,交換機(jī)節(jié)點(diǎn)01-10都已經(jīng)更新為對應(yīng)的新流表。
[0082]比較可知,圖3中第3次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑與新數(shù)據(jù)轉(zhuǎn)發(fā)路徑一致。此時(shí),已完成對交換機(jī)節(jié)點(diǎn)1-1 O對應(yīng)流表的更新。
[0083]通過圖3所示的對交換機(jī)節(jié)點(diǎn)流表的更新過程不難得知,在交換機(jī)節(jié)點(diǎn)數(shù)量以及新、舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑相同的情況下,與現(xiàn)有技術(shù)中的雙向更新需要經(jīng)過6次才能完成更新相比較,本發(fā)明實(shí)施例提供的流表更新方法僅需要3次就可完成流表更新,每次更新的時(shí)間相同的情況下,有效的縮短了流表的更新時(shí)間,提高流表更新的效率。
[0084]值得強(qiáng)調(diào)的是,圖3僅為本發(fā)明實(shí)施例提供的具體示例,圖3所示內(nèi)容并不對本申請構(gòu)成限定。
[0085]應(yīng)用圖2提供的實(shí)施例,有效的縮短了流表的更新時(shí)間,提高流表更新的效率。
[0086]在圖2提供的實(shí)施例基礎(chǔ)上,本發(fā)明實(shí)施例還提供了一種SDN流表更新方法,如圖4所示,應(yīng)用于網(wǎng)絡(luò)控制器,所述方法還可以包括步驟:S106和S107;
[0087]S106:判斷預(yù)設(shè)時(shí)間段內(nèi)是否接收到所述待更新交換機(jī)節(jié)點(diǎn)反饋的針對所述新流表的更新完成指令;
[0088]可以理解的是,在網(wǎng)絡(luò)中發(fā)送或接收數(shù)據(jù)時(shí),由于網(wǎng)絡(luò)處于一個動態(tài)的環(huán)境中,例如路由切換、流量均衡、網(wǎng)絡(luò)設(shè)備維護(hù)等等,往往會造成數(shù)據(jù)在發(fā)送或接收的時(shí)候發(fā)生故障;同樣的,網(wǎng)絡(luò)控制器下發(fā)交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表或交換機(jī)流表接收對應(yīng)新流表進(jìn)行更新時(shí)也可能會出現(xiàn)故障。
[0089]為了準(zhǔn)確的判斷交換機(jī)節(jié)點(diǎn)是否完成流表的更新,在實(shí)際的應(yīng)用中,網(wǎng)絡(luò)控制器可以向網(wǎng)絡(luò)中的交換機(jī)節(jié)點(diǎn)下發(fā)對應(yīng)的新流表,而交換機(jī)節(jié)點(diǎn)更新為新流表后,交換機(jī)節(jié)點(diǎn)會向網(wǎng)絡(luò)控制器反饋一個針對新流表更新完成的指令,用來提醒網(wǎng)絡(luò)控制器已經(jīng)采用接收到的對應(yīng)新流表完成了更新。因此,可以通過判斷網(wǎng)絡(luò)控制器是否接收到所述待更新交換機(jī)節(jié)點(diǎn)反饋的針對新流表的更新完成指令來確定該交換機(jī)節(jié)點(diǎn)的更新狀態(tài)。
[0090]考慮到網(wǎng)絡(luò)中的指令下發(fā)以及指令接受都有一定時(shí)延,本發(fā)明實(shí)施例通過判斷預(yù)設(shè)時(shí)間段內(nèi)網(wǎng)絡(luò)控制器是否接收到待更新交換機(jī)節(jié)點(diǎn)反饋的針對新流表的更新完成指令,來確定對應(yīng)交換機(jī)節(jié)點(diǎn)的流表更新狀態(tài)。例如,取預(yù)設(shè)時(shí)間為0.1秒,網(wǎng)絡(luò)控制器下發(fā)待更新交換機(jī)節(jié)點(diǎn)04對應(yīng)的新流表04時(shí)開始計(jì)時(shí),判斷在0.1秒內(nèi)是否接收到待更新交換機(jī)節(jié)點(diǎn)04反饋的針對新流表04的更新完成指令,如果接受到,表明待更新交換機(jī)節(jié)點(diǎn)04已經(jīng)完成對應(yīng)流表的更新,如果沒有接收到,那么表明待更新交換機(jī)節(jié)點(diǎn)04沒有完成對應(yīng)流表的更新,即本次對待更新交換機(jī)節(jié)點(diǎn)04流表更新失敗。
[0091]需要說明的是,預(yù)設(shè)時(shí)間段取0.1秒僅為本發(fā)明實(shí)施例提供的一種具體示例,本申請不對預(yù)設(shè)時(shí)間段的大小做明確的限定。
[0092]S107:在沒有接收到所述更新完成指令的情況下,將所述待更新交換機(jī)節(jié)點(diǎn)確定為未更新的交換機(jī)節(jié)點(diǎn)。
[0093]示例性的,若網(wǎng)絡(luò)控制器在0.1秒內(nèi)沒有接收到待更新交換機(jī)節(jié)點(diǎn)04反饋的針對新流表04的更新完成指令,表明本次對待更新交換機(jī)節(jié)點(diǎn)04流表更新失敗,因此,圖5中第I次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑中,待交換機(jī)節(jié)點(diǎn)04沒有采用對應(yīng)的新流表04進(jìn)行更新,待交換機(jī)節(jié)點(diǎn)04依然為舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑中對應(yīng)的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑,指向交換機(jī)節(jié)點(diǎn)05,因此,待更新交換機(jī)節(jié)點(diǎn)04重新作為未更新的交換機(jī)節(jié)點(diǎn)04,繼續(xù)上述操作步驟;按照上述的判定規(guī)貝1J,可以確定交換機(jī)節(jié)點(diǎn)04將在第3次更新的時(shí)候完成對應(yīng)的流表更新,如圖5中的第2次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑所示,第2次更新后數(shù)據(jù)轉(zhuǎn)發(fā)路徑中部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中所有指向所述交換機(jī)節(jié)點(diǎn)的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑對應(yīng)的交換機(jī)節(jié)點(diǎn)02的流表已經(jīng)更新為新流表02,因此,交換機(jī)節(jié)點(diǎn)04采用所述新流表04進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。按照上述步驟,經(jīng)過3次更新,可以對流表更新時(shí)發(fā)生故障的交換機(jī)節(jié)點(diǎn)對應(yīng)流表再次進(jìn)行更新,降低了因一個待更新交換機(jī)進(jìn)行流表更新發(fā)生故障而導(dǎo)致更新中斷的概率。
[0094]同樣需要說明的是,圖5僅為本發(fā)明實(shí)施例提供的具體示例,圖5所示內(nèi)容并不對本申請構(gòu)成限定。
[0095]應(yīng)用圖4提供的實(shí)施例,通過判斷在預(yù)設(shè)時(shí)間段內(nèi)是否接收到待更新交換機(jī)節(jié)點(diǎn)反饋的針對新流表的更新完成指令,來確定該待更新交換機(jī)節(jié)點(diǎn)的流表更新狀態(tài),可以對未完成流表更新的待更新交換機(jī)節(jié)點(diǎn)繼續(xù)進(jìn)行更新的步驟,有效的降低了因一個待更新交換機(jī)進(jìn)行流表更新發(fā)生故障而導(dǎo)致更新中斷的概率。
[0096]與圖2方法實(shí)施例對應(yīng)的,本發(fā)明實(shí)施例提供了一種SDN流表更新裝置,如圖6所示,所述裝置可以包括:
[0097]第一確定模塊201,用于根據(jù)起始交換機(jī)節(jié)點(diǎn)與終止交換機(jī)節(jié)點(diǎn)間的新數(shù)據(jù)轉(zhuǎn)發(fā)路徑,確定所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑中每個交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表,其中,所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn),分別為舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn);
[0098]第一判斷模塊202,用于針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路,如果否,觸發(fā)第二確定模塊203;
[0099]實(shí)際應(yīng)用中,所述第一判斷模塊202,具體用于:
[0100]針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中是否有部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑指向所述交換機(jī)節(jié)點(diǎn);如果沒有,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路;
[0101]或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所述交換機(jī)節(jié)點(diǎn)對應(yīng)新流表記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑所指向的交換機(jī)節(jié)點(diǎn),是否在所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中所述交換機(jī)節(jié)點(diǎn)之前;如果不在,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路;
[0102]或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中所有指向所述交換機(jī)節(jié)點(diǎn)的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑對應(yīng)的交換機(jī)節(jié)點(diǎn)的流表是否為新流表;如果是,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路;
[0103]或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所述交換機(jī)節(jié)點(diǎn)對應(yīng)新流表記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑所指向的交換機(jī)節(jié)點(diǎn)的流表是否為新流表;如果是,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。
[0104]第二確定模塊203,用于將不會產(chǎn)生環(huán)路的交換機(jī)節(jié)點(diǎn)確定為待更新交換機(jī)節(jié)點(diǎn);
[0105]發(fā)送模塊204,用于針對每個待更新交換機(jī)節(jié)點(diǎn),同時(shí)向所述待更新交換機(jī)節(jié)點(diǎn)下發(fā)與所述待更新交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表,以使得每個待更新交換機(jī)節(jié)點(diǎn)接收到各自對應(yīng)新流表后,采用各自對應(yīng)的新流表進(jìn)行更新;
[0106]第二判斷模塊205,用于判斷由當(dāng)前所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑是否與所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑一致,如果否,調(diào)用第一判斷模塊202。
[0107]應(yīng)用圖6提供的實(shí)施例,縮短了流表的更新時(shí)間,提高流表更新的效率。
[0108]在圖6提供的實(shí)施例基礎(chǔ)上,與圖4方法實(shí)施例對應(yīng)的,本發(fā)明實(shí)施例還提供了一種SDN流表更新裝置,應(yīng)用于網(wǎng)絡(luò)控制器,如圖7所示,所述裝置還可以包括:
[0109]第三判斷模塊206,用于判斷預(yù)設(shè)時(shí)間段內(nèi)是否接收到所述待更新交換機(jī)節(jié)點(diǎn)反饋的針對所述新流表的更新完成指令,如果沒有接收到,觸發(fā)第三確定模塊207;
[0110]第三確定模塊207,用于將所述待更新交換機(jī)節(jié)點(diǎn)確定為未更新的交換機(jī)節(jié)點(diǎn)。
[0111]應(yīng)用圖7提供的實(shí)施例,通過判斷在預(yù)設(shè)時(shí)間段內(nèi)是否接收到待更新交換機(jī)節(jié)點(diǎn)反饋的針對新流表的更新完成指令,來確定該待更新交換機(jī)節(jié)點(diǎn)的流表更新狀態(tài),可以對未完成流表更新的待更新交換機(jī)節(jié)點(diǎn)繼續(xù)進(jìn)行更新的步驟,有效的降低了因一個待更新交換機(jī)進(jìn)行流表更新發(fā)生故障而導(dǎo)致更新中斷的概率。
[0112]需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實(shí)體或者操作與另一個實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0113]本說明書中的各個實(shí)施例均采用相關(guān)的方式描述,各個實(shí)施例之間相同相似的部分互相參見即可,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對于裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
[0114]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施方式中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計(jì)算機(jī)可讀取存儲介質(zhì)中,這里所稱得的存儲介質(zhì),如:ROM/RAM、磁碟、光盤等。
[0115]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種SDN流表更新方法,應(yīng)用于網(wǎng)絡(luò)控制器,其特征在于,所述方法包括步驟: 根據(jù)起始交換機(jī)節(jié)點(diǎn)與終止交換機(jī)節(jié)點(diǎn)間的新數(shù)據(jù)轉(zhuǎn)發(fā)路徑,確定所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑中每個交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表,其中,所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn),分別為舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn); 針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路; 如果否,將所述交換機(jī)節(jié)點(diǎn)確定為待更新交換機(jī)節(jié)點(diǎn); 針對每個待更新交換機(jī)節(jié)點(diǎn),同時(shí)向所述待更新交換機(jī)節(jié)點(diǎn)下發(fā)與所述待更新交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表,以使得每個待更新交換機(jī)節(jié)點(diǎn)接收到各自對應(yīng)新流表后,采用各自對應(yīng)的新流表進(jìn)行更新; 判斷由當(dāng)前所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑是否與所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑一致,如果否,返回所述針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路步驟繼續(xù)執(zhí)行。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路,包括: 針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中是否有部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑指向所述交換機(jī)節(jié)點(diǎn);如果沒有,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路; 或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所述交換機(jī)節(jié)點(diǎn)對應(yīng)新流表記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑所指向的交換機(jī)節(jié)點(diǎn),是否在所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中所述交換機(jī)節(jié)點(diǎn)之前;如果不在,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路; 或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中所有指向所述交換機(jī)節(jié)點(diǎn)的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑對應(yīng)的交換機(jī)節(jié)點(diǎn)的流表是否為新流表;如果是,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路; 或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所述交換機(jī)節(jié)點(diǎn)對應(yīng)新流表記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑所指向的交換機(jī)節(jié)點(diǎn)的流表是否為新流表;如果是,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 判斷預(yù)設(shè)時(shí)間段內(nèi)是否接收到所述待更新交換機(jī)節(jié)點(diǎn)反饋的針對所述新流表的更新完成指令; 如果沒有接收到,將所述待更新交換機(jī)節(jié)點(diǎn)確定為未更新的交換機(jī)節(jié)點(diǎn)。4.一種SDN流表更新裝置,應(yīng)用于網(wǎng)絡(luò)控制器,其特征在于,所述裝置包括: 第一確定模塊,用于根據(jù)起始交換機(jī)節(jié)點(diǎn)與終止交換機(jī)節(jié)點(diǎn)間的新數(shù)據(jù)轉(zhuǎn)發(fā)路徑,確定所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑中每個交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表,其中,所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn),分別為舊數(shù)據(jù)轉(zhuǎn)發(fā)路徑的起始交換機(jī)節(jié)點(diǎn)和終止交換機(jī)節(jié)點(diǎn); 第一判斷模塊,用于針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中是否會產(chǎn)生環(huán)路,如果否,觸發(fā)第二確定模塊; 第二確定模塊,用于將不會產(chǎn)生環(huán)路的交換機(jī)節(jié)點(diǎn)確定為待更新交換機(jī)節(jié)點(diǎn); 發(fā)送模塊,用于針對每個待更新交換機(jī)節(jié)點(diǎn),同時(shí)向所述待更新交換機(jī)節(jié)點(diǎn)下發(fā)與所述待更新交換機(jī)節(jié)點(diǎn)對應(yīng)的新流表,以使得每個待更新交換機(jī)節(jié)點(diǎn)接收到各自對應(yīng)新流表后,采用各自對應(yīng)的新流表進(jìn)行更新; 第二判斷模塊,用于判斷由當(dāng)前所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑是否與所述新數(shù)據(jù)轉(zhuǎn)發(fā)路徑一致,如果否,調(diào)用所述第一判斷模塊。5.根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述第一判斷模塊,具體用于: 針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中是否有部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑指向所述交換機(jī)節(jié)點(diǎn);如果沒有,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路; 或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所述交換機(jī)節(jié)點(diǎn)對應(yīng)新流表記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑所指向的交換機(jī)節(jié)點(diǎn),是否在所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中所述交換機(jī)節(jié)點(diǎn)之前;如果不在,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路; 或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑中所有指向所述交換機(jī)節(jié)點(diǎn)的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑對應(yīng)的交換機(jī)節(jié)點(diǎn)的流表是否為新流表;如果是,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路; 或,針對每個未更新的交換機(jī)節(jié)點(diǎn),判斷所述交換機(jī)節(jié)點(diǎn)在未進(jìn)行流表更新前,所述交換機(jī)節(jié)點(diǎn)對應(yīng)新流表記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑所指向的交換機(jī)節(jié)點(diǎn)的流表是否為新流表;如果是,表示所述交換機(jī)節(jié)點(diǎn)采用所述新流表進(jìn)行更新后,由所有交換機(jī)節(jié)點(diǎn)的流表分別記錄的部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)路徑組成的整體數(shù)據(jù)轉(zhuǎn)發(fā)路徑中不會產(chǎn)生環(huán)路。6.根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述裝置還包括: 第三判斷模塊,用于判斷預(yù)設(shè)時(shí)間段內(nèi)是否接收到所述待更新交換機(jī)節(jié)點(diǎn)反饋的針對所述新流表的更新完成指令,如果沒有接收到,觸發(fā)第三確定模塊; 第三確定模塊,用于將所述待更新交換機(jī)節(jié)點(diǎn)確定為未更新的交換機(jī)節(jié)點(diǎn)。
【文檔編號】H04L12/751GK105933236SQ201610531621
【公開日】2016年9月7日
【申請日】2016年7月7日
【發(fā)明人】劉江, 楊帆, 謝人超, 黃韜, 胡曉露, 張嬌, 潘恬
【申請人】北京郵電大學(xué)