Sdn網(wǎng)絡(luò)中的數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種SDN網(wǎng)絡(luò)中的數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)方法和系統(tǒng)。
【背景技術(shù)】
[0002]傳統(tǒng)的計(jì)算機(jī)網(wǎng)絡(luò)由一個(gè)個(gè)的自治域組成,缺乏集中控制機(jī)制,每一個(gè)網(wǎng)絡(luò)協(xié)議都需要考慮網(wǎng)絡(luò)狀態(tài)協(xié)同,網(wǎng)元發(fā)現(xiàn)、故障恢復(fù)等機(jī)制,網(wǎng)絡(luò)部署新的功能非常困難。軟件定義網(wǎng)絡(luò)(Software Defined Network, SDN)提出了網(wǎng)絡(luò)集中控制,網(wǎng)絡(luò)控制和數(shù)據(jù)轉(zhuǎn)發(fā)分離的思想,大大方便了網(wǎng)絡(luò)的維護(hù)和新功能的部署。
[0003]在網(wǎng)絡(luò)規(guī)模較大時(shí),SDN控制器(簡稱控制器)需要拆分成多個(gè)以解決單個(gè)節(jié)點(diǎn)的性能不足和可靠性不夠的問題,分層就是一種常見的拆分方法。圖1為現(xiàn)有技術(shù)的網(wǎng)絡(luò)分層示意圖。圖1中,分層架構(gòu)將一個(gè)大的網(wǎng)絡(luò)拆分多個(gè)小的子網(wǎng)(稱為域),每一個(gè)域由一個(gè)底層控制器控制,若干個(gè)底層控制器由一個(gè)上層控制器控制,底層控制器和上層控制器上分別部署控制邏輯,上層控制邏輯(由上層控制器上部署的控制邏輯(Applicat1n,App)實(shí)現(xiàn))和底層控制邏輯(由底層控制器上部署的App實(shí)現(xiàn))是不同的。上層控制邏輯負(fù)責(zé)域間通信(Network to Network Communicat1n),控制的邏輯對象是網(wǎng)間接口(NetworkNode Interface, NNI),控制的物理實(shí)體是底層控制器。底層控制邏輯控制終端間的通信(Machine to Machine Communicat1n),控制的邏輯對象是與終端連接的交換機(jī)端口,控制的物理實(shí)體是虛擬或者物理的交換機(jī)。通常將上層控制邏輯稱為Root App,底層控制邏輯稱為Local App。
[0004]現(xiàn)有技術(shù)中,需要將控制邏輯進(jìn)行拆分,分成上層控制邏輯和底層控制邏輯,并且這種拆分是和SDN對網(wǎng)絡(luò)的拆分緊密關(guān)聯(lián)的,從而增加了 App開發(fā)的難度。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供了一種SDN網(wǎng)絡(luò)中的數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)方法和系統(tǒng),可以保證各層控制器上部署的控制邏輯保持相同。
[0006]第一方面,提供了一種SDN網(wǎng)絡(luò)中的數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)方法,該方法包括:
[0007]第一下級控制器接收第一虛擬交換機(jī)發(fā)送的報(bào)頭信息,其中,所述報(bào)頭信息包括:向所述第一虛擬交換機(jī)發(fā)送數(shù)據(jù)報(bào)文的源虛擬機(jī)的源虛擬機(jī)信息和目標(biāo)虛擬機(jī)信息;
[0008]當(dāng)所述第一下級控制器在本地保存的第一下級拓?fù)湫畔⒅形床檎业剿瞿繕?biāo)虛擬機(jī)信息所對應(yīng)的目標(biāo)虛擬機(jī)時(shí),根據(jù)所述源虛擬機(jī)信息從所述第一下級拓?fù)湫畔⒅胁樵兯鲈刺摂M機(jī)與所述第一虛擬交換機(jī)連接的第一關(guān)聯(lián)端口信息,并生成第一消息,所述第一消息包括:源虛擬機(jī)信息、目標(biāo)虛擬機(jī)信息和第一關(guān)聯(lián)端口信息;
[0009]所述第一下級控制器向上級控制器發(fā)送所述第一消息,用于所述上級控制器根據(jù)所述源虛擬機(jī)信息和所述第一關(guān)聯(lián)端口信息查詢本地保存的上級拓?fù)湫畔?,獲取所述第一下級控制器對應(yīng)的第一域虛擬交換機(jī)上與所述第一關(guān)聯(lián)端口對應(yīng)的第一端口信息;根據(jù)所述第一端口信息和所述目標(biāo)虛擬機(jī)信息查詢所述上級拓?fù)湫畔?,獲取所述目標(biāo)虛擬機(jī)與所述目標(biāo)虛擬機(jī)所歸屬的第二下級控制器對應(yīng)的第二域虛擬交換機(jī)連接的第二端口信息,獲取所述第一域虛擬交換機(jī)與所述第二域虛擬交換機(jī)相互通信的第一上行接口信息和第二上行接口信息,生成第一流表信息和第二流表信息,其中,所述第一流表信息包括所述第一端口信息和所述第一上行接口信息,所述第二流表信息包括所述第二端口信息和所述第二上行接口信息,并且向所述第一域虛擬交換機(jī)發(fā)送所述第一流表信息,所述第一流表信息用于指示所述數(shù)據(jù)報(bào)文從所述第一端口收到后通過所述第一上行接口發(fā)出,并向所述第二域虛擬交換機(jī)發(fā)送所述第二流表信息,所述第二流表信息用于指示所述數(shù)據(jù)報(bào)文從所述第二上行接口收到后通過所述第二端口發(fā)出。
[0010]根據(jù)第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0011]當(dāng)云管理服務(wù)器向所述上級控制器發(fā)送配置信息,所述配置信息包括所有虛擬機(jī)的信息,向每個(gè)下級控制器下屬的虛擬交換機(jī)下發(fā)該虛擬交換機(jī)與該虛擬交換機(jī)控制的虛擬機(jī)的關(guān)聯(lián)端口信息,且所述虛擬機(jī)與所述虛擬交換機(jī)連接的所述關(guān)聯(lián)端口狀態(tài)為活躍時(shí),所述下級控制器接收所述虛擬交換機(jī)發(fā)送的關(guān)聯(lián)端口狀態(tài)信息,并向所述虛擬交換機(jī)發(fā)送所述關(guān)聯(lián)端口對應(yīng)的虛擬機(jī)的查詢信息,接收所述虛擬交換機(jī)返回的所述關(guān)聯(lián)端口下的虛擬機(jī)ID和該關(guān)聯(lián)端口的端口 ID,從而生成所述第一下級拓?fù)湫畔⒒虻诙录壨負(fù)湫畔ⅲ?br>[0012]所述下級控制器向所述上級控制器發(fā)送上報(bào)信息,所述上報(bào)信息包括該下級控制器ID、所述虛擬機(jī)ID以及所述關(guān)聯(lián)端口的端口 ID,從而由所述上級控制器得到每一個(gè)下級控制器下屬的虛擬機(jī)信息,并且將所述關(guān)聯(lián)端口映射為所述第一域虛擬交換機(jī)上的第一端口或者所述第二域虛擬交換機(jī)上的第二端口,從而生成上級拓?fù)湫畔ⅰ?br>[0013]根據(jù)第一方面的一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述所有虛擬機(jī)的信息包括虛擬機(jī)ID、虛擬機(jī)與對應(yīng)的虛擬交換機(jī)連接的關(guān)聯(lián)端口的端口ID和虛擬機(jī)地址信息,所述方法包括:
[0014]當(dāng)所述上級控制器對所述上報(bào)信息中的虛擬機(jī)ID和端口 ID與所述云管理服務(wù)器下發(fā)給所述上級控制器的所有虛擬機(jī)的信息中虛擬機(jī)ID和端口 ID —一進(jìn)行比較,且所述上報(bào)信息中的虛擬機(jī)ID和端口 ID與任一虛擬機(jī)的信息中的虛擬機(jī)ID和端口 ID相同時(shí),所述下級控制器接收所述上級控制器下發(fā)的所述任一虛擬機(jī)的信息中的虛擬機(jī)地址信息。
[0015]根據(jù)第一方面,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述在向第一域虛擬機(jī)交換機(jī)發(fā)送所述第一流表信息之后,所述方法還包括:
[0016]當(dāng)所述第一域虛擬交換機(jī)根據(jù)所述第一上行接口信息從所述上級拓?fù)湫畔⒅胁樵兊玫剿龅谝幌录壙刂破骺刂频牡谝蛔泳W(wǎng)內(nèi)交換機(jī)上的第一物理端口信息,根據(jù)所述第一端口信息從所述上級拓?fù)湫畔⒅胁樵兊玫剿龅谝魂P(guān)聯(lián)端口信息,并向所述第一下級控制器發(fā)送所述第一物理端口信息和第一關(guān)聯(lián)端口信息時(shí),所述第一下級控制器計(jì)算所述第一關(guān)聯(lián)端口與所述第一物理端口之間的第一路由信息,并將所述第一路由信息發(fā)送給所述第一虛擬交換機(jī),用于所述第一虛擬交換機(jī)根據(jù)所述第一路由信息,向所述目標(biāo)虛擬機(jī)發(fā)送第二數(shù)據(jù)報(bào)文。
[0017]根據(jù)第一方面,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述在向所述第二域虛擬交換機(jī)發(fā)送所述第二流表信息之后,所述方法還包括:
[0018]當(dāng)所述第二域虛擬交換機(jī)根據(jù)所述第二上行接口的信息從所述上級拓?fù)湫畔⒅胁樵兊玫剿龅诙录壙刂破骺刂频牡诙泳W(wǎng)內(nèi)交換機(jī)上的第二物理端口信息,根據(jù)所述第二端口信息從所述上級拓?fù)湫畔⒅胁樵兊玫剿瞿繕?biāo)虛擬機(jī)與對應(yīng)的第二虛擬交換機(jī)連接的第二關(guān)聯(lián)端口信息,并向所述第二下級控制器發(fā)送所述第二物理端口信息和所述第二關(guān)聯(lián)端口信息時(shí),所述第二下級控制器計(jì)算所述第二關(guān)聯(lián)端口與所述第二物理端口之間的第二路由信息,并將所述第二路由信息發(fā)送給所述第二虛擬交換機(jī),用于所述第二虛擬交換機(jī)根據(jù)所述第二路由信息,接收所述源虛擬機(jī)發(fā)送的第三數(shù)據(jù)報(bào)文。
[0019]第二方面,提供了一種SDN網(wǎng)絡(luò)中的通信系統(tǒng),該系統(tǒng)包括:上級控制器和第一下級控制器;
[0020]所述第一下級控制器,用于接收第一虛擬交換機(jī)發(fā)送的報(bào)頭信息,其中,所述報(bào)頭信息包括:向所述第一虛擬交換機(jī)發(fā)送數(shù)據(jù)報(bào)文的源虛擬機(jī)的源虛擬機(jī)信息和目標(biāo)虛擬機(jī)信息;
[0021]當(dāng)所述第一下級控制器在本地保存的第一下級拓?fù)湫畔⒅形床檎业剿瞿繕?biāo)虛擬機(jī)信息所對應(yīng)的目標(biāo)虛擬機(jī)時(shí),根據(jù)所述源虛擬機(jī)信息從所述第一下級拓?fù)湫畔⒅胁樵兯鲈刺摂M機(jī)與所述第一虛擬交換機(jī)連接的第一關(guān)聯(lián)端口信息,并生成第一消息,向上級控制器發(fā)送所述第一信息,所述第一消息包括:源虛擬機(jī)信息、目標(biāo)虛擬機(jī)信息和第一關(guān)聯(lián)端口信息;
[0022]所述上級控制器,用于接收所述第一消息,根據(jù)所述源虛擬機(jī)信息和所述第一關(guān)聯(lián)端口信息查詢本地保存的上級拓?fù)湫畔ⅲ@取所述第一下級控制器對應(yīng)的第一域虛擬交換機(jī)上與所述第一關(guān)聯(lián)端口對應(yīng)的第一端口信息;根據(jù)所述第一端口信息和所述目標(biāo)虛擬機(jī)信息查詢所述上級拓?fù)湫畔?,獲取所述目標(biāo)虛擬機(jī)與所歸屬的第二下級控制器對應(yīng)的第二域虛擬交換機(jī)連接的第二端口信息,獲取所述第一域虛擬交換機(jī)與所述第二域虛擬交換機(jī)相互通信的第一上行接口信息和第二上行接口信息,生成第一流表信息和第二流表信息,其中,所述第一流表信息包括所述第一端口信息和所述第一上行接口信息,所述第二流表信息包括所述第二端口信息和所述第二上行接口信息,并且向所述第一域虛擬交換機(jī)發(fā)送所述第一流表信息,所述第一流表信息用于指示所述數(shù)據(jù)報(bào)文從所述第一端口收到后通過所述第一上行接口發(fā)出,并向所述第二域虛擬交換機(jī)發(fā)送所述第二流表信息,所述第二流表信息用于指示所述數(shù)據(jù)報(bào)文從所述第二上行接口收到后通過所述第二端口發(fā)出。
[0023]根據(jù)第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述下級控制器,用于當(dāng)云管理服務(wù)器向每個(gè)下級控制器下屬的虛擬交換機(jī)下發(fā)該虛擬交換機(jī)與該虛擬機(jī)控制的虛擬機(jī)的關(guān)聯(lián)端口信息,且所述虛擬機(jī)與所述虛擬交換機(jī)連接的所述關(guān)聯(lián)端口狀態(tài)為活躍時(shí),接收所述虛擬交換機(jī)發(fā)送的關(guān)聯(lián)端口狀態(tài)信息,并向所述虛擬交換機(jī)發(fā)送所述關(guān)聯(lián)端口對應(yīng)的虛擬機(jī)的查詢信息,接收所述虛擬交換機(jī)返回的所述關(guān)聯(lián)端口下的虛擬機(jī)ID和該關(guān)聯(lián)端口的端口 ID,從而生成所述第一下級拓?fù)湫畔⒒虻诙录壨負(fù)湫畔ⅲ?br>[0024]向所述上級控制器發(fā)送上報(bào)信息,所述上報(bào)信息包括該下級控制器ID、所述虛擬機(jī)ID