本申請涉及域名技術(shù)領(lǐng)域,尤其涉及域名管理方法及裝置。
背景技術(shù):
OpenStack是一個自由軟件和開放源代碼項目,是一個云平臺管理的項目,它不是一個軟件。這個項目由幾個主要的組件組合起來完成一些具體的工作,是目前云計算IaaS(Infrastructure-as-a-Service,基礎(chǔ)設(shè)施服務(wù))應(yīng)用最主流的云管理平臺。目前Openstack管理云計算網(wǎng)絡(luò)的主流軟件項目是Neutron。目前Neutron定義IaaS的網(wǎng)絡(luò)架構(gòu)如圖1所示。
從圖1中可以看到,Neutron將網(wǎng)絡(luò)架構(gòu)分成3個層次,分別如下:
1)租戶:擁有獨立的IP地址空間、獨立的vRouter(虛擬路由器),可以建立多個vDC(Virtual Data Center,虛擬數(shù)據(jù)中心)。
2)vNet(虛擬網(wǎng)絡(luò)):獨立的二層網(wǎng)絡(luò),可以對應(yīng)一個或多個subnet(子網(wǎng))。
3)VM(Virtual Machine,虛擬機):對應(yīng)一個IP地址。
SDN(Software Defined Network,軟件定義網(wǎng)絡(luò))是Emulex網(wǎng)絡(luò)的一種新型網(wǎng)絡(luò)創(chuàng)新架構(gòu),其核心技術(shù)OpenFlow(開放流)通過將網(wǎng)絡(luò)設(shè)備控制面與數(shù)據(jù)面分離開來,從而實現(xiàn)了網(wǎng)絡(luò)流量的靈活控制。
目前業(yè)界的主流架構(gòu)是用SDN作為網(wǎng)絡(luò)控制器,北向連接Openstack Neutron,接收管理員的指令;南向通過Openflow、Netconf(網(wǎng)絡(luò)配置)等協(xié)議直接控制網(wǎng)絡(luò)設(shè)備的轉(zhuǎn)發(fā)行為。其中,接收SDN控制器轉(zhuǎn)發(fā)表的設(shè)備可以是傳統(tǒng)的硬件設(shè)備,也可以是軟件設(shè)備如:OVS(Open vSwitch,開放虛擬交換機)。
Overlay(堆疊)網(wǎng)絡(luò)就是應(yīng)用層網(wǎng)絡(luò),它是直接面向應(yīng)用層的(顯示應(yīng)用之間的點到點直連),不用考慮具體物理網(wǎng)絡(luò)的問題。詳細(xì)說來,Overlay網(wǎng)絡(luò)是指建立在現(xiàn)有物理網(wǎng)絡(luò)上的另一個邏輯網(wǎng)絡(luò)。該網(wǎng)絡(luò)中的結(jié)點可以看作通過虛擬或邏輯鏈路而連接起來的。雖然在底層有很多條物理鏈路,但是這些虛擬或邏輯鏈路都與路徑一一對應(yīng)。
目前Overlay的主流實現(xiàn)技術(shù)有兩種:VxLAN(Virtual eXtensible Local Area Network,虛擬擴展局域網(wǎng))和NVGRE(Network Virtualization using Generic Routing Encapsulation,使用通用路由封裝的網(wǎng)絡(luò)虛擬化),VxLAN在Overlay網(wǎng)絡(luò)領(lǐng)域應(yīng)用更加廣泛。
如圖1所示,Openstack Neutron的網(wǎng)絡(luò)架構(gòu)中的二層網(wǎng)絡(luò)定義為vNet,與VxLAN定義的二層網(wǎng)絡(luò)相對應(yīng),也就是說同一個二層網(wǎng)絡(luò)(VxLAN)中可以有一個subnet,也可以有多個subnet。另外,Neutron定義的vRouter可以是物理實體,也可以是邏輯實體。在SDN+VxLAN方案中,vRouter沒有物理實體,其功能基本都由SDN控制器完成,也就是說vRouter的邏輯實體就是SDN控制器。
技術(shù)實現(xiàn)要素:
本申請實施例提供域名管理方法及裝置。
本申請的技術(shù)方案是這樣實現(xiàn)的:
一種域名管理方法,該方法包括:
基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的SDN控制器將每個網(wǎng)絡(luò)組件的域名與該網(wǎng)絡(luò)組件的IP地址的對應(yīng)關(guān)系保存在自身的DNS(域名系統(tǒng))配置列表中,其中,網(wǎng)絡(luò)組件之間具有層級關(guān)系,網(wǎng)絡(luò)組件的域名由該網(wǎng)絡(luò)組件的標(biāo)識及該網(wǎng)絡(luò)組件在網(wǎng)絡(luò)中的層位置信息組成;
SDN控制器接收VTEP(VxLAN隧道端點)發(fā)來的DNS請求報文,根據(jù)自身的DNS配置列表,將該報文中的網(wǎng)絡(luò)組件的域名解析成網(wǎng)絡(luò)組件的IP地址,將該網(wǎng)絡(luò)組件的IP地址攜帶在DNS應(yīng)答報文中返回給所述VTEP, 其中,所述DNS請求報文為所述VTEP下掛的主機要訪問一網(wǎng)絡(luò)組件時發(fā)給所述VTEP的。
一種域名管理裝置,位于基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的SDN控制器上,該裝置包括:
域名配置模塊:將每個網(wǎng)絡(luò)組件的域名與該網(wǎng)絡(luò)組件的IP地址的對應(yīng)關(guān)系保存在DNS配置列表中,其中,網(wǎng)絡(luò)組件之間具有層級關(guān)系,網(wǎng)絡(luò)組件的域名由該網(wǎng)絡(luò)組件的標(biāo)識及該網(wǎng)絡(luò)組件在網(wǎng)絡(luò)中的層位置信息組成;
域名解析模塊:接收VTEP發(fā)來的DNS請求報文,根據(jù)DNS配置列表,將該報文中的網(wǎng)絡(luò)組件的域名解析成網(wǎng)絡(luò)組件的IP地址,將該網(wǎng)絡(luò)組件的IP地址攜帶在DNS應(yīng)答報文中返回給所述VTEP,其中,所述DNS請求報文為所述VTEP下掛的主機要訪問一網(wǎng)絡(luò)組件時發(fā)給所述VTEP的。
可見,本申請實施例通過為基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的網(wǎng)絡(luò)組件配置域名,域名由該網(wǎng)絡(luò)組件的標(biāo)識及該網(wǎng)絡(luò)組件在網(wǎng)絡(luò)中的層位置信息組成,并由SDN Controller負(fù)責(zé)域名解析,由VTEP代理DNS請求/應(yīng)答,從而有效降低了網(wǎng)絡(luò)部署成本,并提高了轉(zhuǎn)發(fā)效率。
附圖說明
圖1為現(xiàn)有的Openstack Neutron定義IaaS的網(wǎng)絡(luò)架構(gòu)示意圖;
圖2為本申請一實施例提供的域名管理方法流程圖;
圖3為本申請實施例提供的基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的域名配置方法流程圖;
圖4為本申請實施例提供的基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)架構(gòu)示例圖;
圖5為本申請實施例提供的基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的VM訪問同一vDC內(nèi)的不同subnet下的VM時的域名管理方法流程圖;
圖6為本申請實施例提供的基于SDN+VxLAN的Openstack Neutron網(wǎng) 絡(luò)內(nèi)的VM訪問同一vDC內(nèi)的指定subnet時的域名管理方法流程圖;
圖7為本申請實施例提供的基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的VM訪問不同vDC內(nèi)的VM時的域名管理方法流程圖;
圖8為本申請實施例提供的域名管理裝置的組成示意圖;
圖9為本申請實施例提供的包含域名管理裝置的SDN控制器的硬件架構(gòu)示意圖。
具體實施方式
Openstack Neutron網(wǎng)絡(luò)中目前有幾個明確的需求,包括:
1)負(fù)載分擔(dān)。多個VM之間要對業(yè)務(wù)進行負(fù)載分擔(dān);
2)在Subnet內(nèi)實現(xiàn)組播轉(zhuǎn)發(fā);
3)同一租戶內(nèi),不同的vRouter(vDC)下的應(yīng)用需要互通。
其中,對于多個VM之間要對業(yè)務(wù)進行負(fù)載分擔(dān),目前采用部署SLB(Server Load Balancer,服務(wù)器負(fù)載均衡器)的方案,該方案主要包括兩種方式:
a、不對稱流量,即三角流量部署方式。這種部署方式只有請求流量經(jīng)過SLB,而應(yīng)答流量不經(jīng)過SLB;
b、對稱流量,即對報文的源地址和目的地址都進行轉(zhuǎn)換,雙向流量都經(jīng)過SLB。
該方案存在如下問題:
1)需要額外部署SLB,增加了成本。
2)不對稱流量方式可以保證應(yīng)答流量不經(jīng)過SLB,減輕了SLB的流量壓力,但是要求SLB與進行負(fù)載分擔(dān)的服務(wù)器位于同一二層網(wǎng)絡(luò)內(nèi),需要規(guī)劃所有的流量路徑,對部署要求更高;
對稱流量方式中,雙向流量都要經(jīng)過SLB,因此對SLB本身的流量壓力太大,會影響SLB的性能;同時,由于該方式對請求報文的源地址進行轉(zhuǎn)換,所以一些基于源地址的安全監(jiān)控?zé)o法使用,降低了系統(tǒng)的安全系數(shù)。
對于在subnet內(nèi)實現(xiàn)組播存在如下問題:
由于一個VxLAN(vNet)可以有多個subnet,所以針對指定subnet的組播轉(zhuǎn)發(fā)需要部署組播相關(guān)協(xié)議,將指定subnet內(nèi)的VM對應(yīng)的端口加入組播轉(zhuǎn)發(fā)表項。這樣的組播轉(zhuǎn)發(fā)需要非常復(fù)雜的部署方案。
對于同租戶內(nèi)不同vRouter下的應(yīng)用互通存在如下問題:
由于不同vDC的vRouter建立了不同的轉(zhuǎn)發(fā)表,當(dāng)在本vRouter的轉(zhuǎn)發(fā)表中無法查找到目的地址時,通常會根據(jù)缺省路由將報文發(fā)到vDC外部,由外部的轉(zhuǎn)發(fā)表指導(dǎo)轉(zhuǎn)發(fā),報文需要在vDC外部繞一圈,然后轉(zhuǎn)發(fā)到目的vDC內(nèi)的vRouter上進行路由查找、轉(zhuǎn)發(fā);返程報文也一樣。這樣報文雖然可達(dá),但是轉(zhuǎn)發(fā)路徑要繞行到vDC外部,流量路徑過長,做了多次不必要的轉(zhuǎn)發(fā),嚴(yán)重影響系統(tǒng)整體轉(zhuǎn)發(fā)性能。同時,也給流量帶來較大的時延,降低應(yīng)用的性能,影響客戶體驗。
圖2為本申請一實施例提供的域名管理方法流程圖,其具體步驟如下:
步驟201:基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的SDN Controller將每個網(wǎng)絡(luò)組件的域名與該網(wǎng)絡(luò)組件的IP地址的對應(yīng)關(guān)系保存在自身的DNS(Domain Name System,域名系統(tǒng))配置列表中,其中,網(wǎng)絡(luò)組件之間具有層級關(guān)系,網(wǎng)絡(luò)組件的域名由該網(wǎng)絡(luò)組件的標(biāo)識及該網(wǎng)絡(luò)組件在網(wǎng)絡(luò)中的層位置信息組成。
步驟202:SDN Controller接收VTEP(VxLAN Tunnel EndPoint,虛擬擴展局域網(wǎng)隧道端點)發(fā)來的DNS請求報文,根據(jù)自身的DNS配置列表,將該報文中的網(wǎng)絡(luò)組件的域名解析成網(wǎng)絡(luò)組件的IP地址,將該網(wǎng)絡(luò)組件的IP地址攜帶在DNS應(yīng)答報文中返回給所述VTEP,其中,所述DNS請求報文為所述VTEP下掛的主機要訪問一網(wǎng)絡(luò)組件時發(fā)給所述VTEP的。
本申請一實施例中,網(wǎng)絡(luò)組件的域名由網(wǎng)絡(luò)組件的標(biāo)識以及該組件的各上級組件的標(biāo)識組成。
本申請一實施例中,網(wǎng)絡(luò)組件包括:主機或者進行負(fù)載分擔(dān)的主機集合、 子網(wǎng)Subnet、虛擬數(shù)據(jù)中心vDC三層,且主機和進行負(fù)載分擔(dān)的主機集合的層級相同且層級最低,subnet的層級次低,vDC的層級最高;
且網(wǎng)絡(luò)組件的標(biāo)識滿足:同一網(wǎng)絡(luò)層內(nèi)的任意兩個網(wǎng)絡(luò)組件的標(biāo)識不同。
本申請一實施例中,網(wǎng)絡(luò)組件的標(biāo)識為字符串。
本申請一實施例中,步驟202中,將該報文中的網(wǎng)絡(luò)組件的域名解析成網(wǎng)絡(luò)組件的IP地址之后進一步包括:
SDN Controller發(fā)現(xiàn)解析出的網(wǎng)絡(luò)組件的IP地址為能夠進行負(fù)載分擔(dān)的多個主機的IP地址,則根據(jù)預(yù)設(shè)的負(fù)載分擔(dān)算法,在該多個IP地址中選擇一個,確定將所選擇的IP地址攜帶在所述DNS應(yīng)答報文中。
本申請一實施例中,步驟202中,將該報文中的網(wǎng)絡(luò)組件的域名解析成網(wǎng)絡(luò)組件的IP地址之后進一步包括:
SDN Controller發(fā)現(xiàn)該網(wǎng)絡(luò)組件的IP地址為subnet的組播IP地址,則根據(jù)自身維護的整網(wǎng)拓?fù)湫畔?,計算出該組播IP地址對應(yīng)的組播轉(zhuǎn)發(fā)表項,將該組播轉(zhuǎn)發(fā)表項發(fā)送給所述VTEP,該組播轉(zhuǎn)發(fā)表項的內(nèi)容包括:
目的IP地址、下一跳和VxLAN ID,其中,目的IP地址為該組播IP地址,下一跳為該組播IP地址對應(yīng)的subnet內(nèi)的所有VTEP,VxLAN ID為該組播IP地址對應(yīng)的subnet的VxLAN ID。
本申請一實施例中,步驟202中,將該報文中的網(wǎng)絡(luò)組件的域名解析成網(wǎng)絡(luò)組件的IP地址之后進一步包括:
SDN Controller根據(jù)自身維護的整網(wǎng)拓?fù)湫畔?,發(fā)現(xiàn)解析出的網(wǎng)絡(luò)組件的IP地址與所述VTEP位于不同vDC內(nèi),則向所述VTEP和該網(wǎng)絡(luò)組件接入的VTEP下發(fā)轉(zhuǎn)發(fā)表項,其中,
向所述VTEP下發(fā)的轉(zhuǎn)發(fā)表項的內(nèi)容包括:
目的IP地址、下一跳和VxLAN ID,其中,目的IP地址為該網(wǎng)絡(luò)組件的IP地址,下一跳為該網(wǎng)絡(luò)組件接入的VTEP,VxLAN ID為該網(wǎng)絡(luò)組件所在的subnet的VxLAN ID;
向該網(wǎng)絡(luò)組件接入的VTEP下發(fā)的轉(zhuǎn)發(fā)表項的內(nèi)容包括:
目的IP地址、下一跳和VxLAN ID,其中,目的IP地址為發(fā)出所述DNS請求報文的VM的IP地址,下一跳為所述VTEP,VxLAN ID為所述VTEP所在的subnet的VxLAN ID。
圖3為本申請實施例提供的基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的域名配置方法流程圖,其具體步驟如下:
步驟301:預(yù)先為基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的每個網(wǎng)絡(luò)組件(包括:主機、進行負(fù)載分擔(dān)的主機集合、Subnet、vDC)分配標(biāo)識;根據(jù)每個網(wǎng)絡(luò)組件的標(biāo)識以及該組件的各上級組件的標(biāo)識為每個網(wǎng)絡(luò)組件配置唯一的域名。
主機包括:VM和物理服務(wù)器。
在為網(wǎng)絡(luò)組件分配標(biāo)識時,可由管理員等手工分配。
進行負(fù)載分擔(dān)的主機集合指的是,若多個主機能夠進行負(fù)載分擔(dān),則該多個主機組成進行負(fù)載分擔(dān)的主機集合,為該主機集合分配一個集合標(biāo)識。
在為網(wǎng)絡(luò)組件分配標(biāo)識時,基本原則如下:
一)為基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的所有vDC分配互不相同的標(biāo)識,即任意兩個vDC的標(biāo)識都不能相同;
二)為每個vDC內(nèi)的所有subnet分配互不相同的標(biāo)識,即位于同一vDC內(nèi)的任意兩個subnet的標(biāo)識都不能相同;
三)為每個subnet內(nèi)的所有VM分配互不相同的標(biāo)識,即位于同一subnet內(nèi)的任意兩個VM的標(biāo)識都不能相同。
標(biāo)識可以是字符串等。以圖4所示的基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)為例,其中,VM1位于subnet1內(nèi),VM2、VM3位于subnet2內(nèi),VM4位于subnet3內(nèi),subnet1、subnet2位于vDC1內(nèi),subnet3位于vDC2內(nèi)。則為各VM、各subnet、各vDC分配的標(biāo)識如下:
1)VM1的標(biāo)識為a1,VM2的標(biāo)識為a2,VM3的標(biāo)識為a3,VM4的標(biāo)識為a4;且,VM2和VM3可以進行負(fù)載分擔(dān),則為VM2和VM3分配一個 用于負(fù)載分擔(dān)的集合標(biāo)識:a23;
2)subet1的標(biāo)識為b1,subnet2的標(biāo)識為b2;
3)vDC1的標(biāo)識為c1,vDC2的標(biāo)識為c2。
對于網(wǎng)絡(luò)組件:主機、進行負(fù)載分擔(dān)的主機集合、Subnet、vDC來說,主機和進行負(fù)載分擔(dān)的主機集合的級別相同且最低,subnet的級別次低,vDC的級別最高。
主機的域名由該主機的標(biāo)識、該主機接入的subnet的標(biāo)識、該主機所在的vDC的標(biāo)識組成;subnet的域名由該subnet的標(biāo)識、該subnet所在的vDC的標(biāo)識組成;vDC的域名由該vDC的標(biāo)識組成。
需要說明的是,為了使域名的表示形式標(biāo)準(zhǔn)化,在實際應(yīng)用中,subnet的域名中也可包含主機標(biāo)識,只不過該主機標(biāo)識是一個無效主機標(biāo)識,這樣,SDN Controller在識別該域名時,就可以忽略該無效主機標(biāo)識;同樣地,vDC的域名也可包括subnet標(biāo)識和主機標(biāo)識,只不過subnet標(biāo)識和主機標(biāo)識都是無效標(biāo)識,以便SDN Controller在識別該域名時,可以忽略該無效subnet標(biāo)識和無效主機標(biāo)識。
仍以圖4為例,VM1的域名為:a1.b1.c1,subnet1的域名為:**.b1.c1,其中,“**”屬于無效主機標(biāo)識;VM2和VM3的用于負(fù)載分擔(dān)的集合域名為a23.b2.c1。
步驟302:SDN Controller將基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的每個網(wǎng)絡(luò)組件的域名與該網(wǎng)絡(luò)組件的IP地址的對應(yīng)關(guān)系保存在自身的DNS配置列表中。
仍以圖4為例,VM1的域名為:a1.b1.c1,VM1的IP地址為100.1.1.1,則SDN Controller保存a1.b1.c1與100.1.1.1的對應(yīng)關(guān)系;
subnet1的域名為:**.b1.c1,subnet1的組播IP地址為100.1.1.255,則SDN Controller保存**.b1.c1與100.1.1.255的對應(yīng)關(guān)系;
VM2和VM3的用于負(fù)載分擔(dān)的集合域名為a23.b2.c1,VM2的IP地址為200.1.1.1,VM3的IP地址為200.1.1.2,則SDN Controller保存a23.b2.c1 與200.1.1.1和200.1.1.2的對應(yīng)關(guān)系。
需要說明的是,本申請實施例中的域名獨立于Internet上的域名體系,只在基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)使用。
圖5為本申請實施例提供的基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的VM訪問同一vDC內(nèi)的不同subnet下的VM時的域名管理方法流程圖,其具體步驟如下:
步驟501:VM1要訪問能夠進行負(fù)載分擔(dān)的VM2和VM3,發(fā)現(xiàn)自身未保存VM2和VM3的集合域名和IP地址的對應(yīng)關(guān)系,則發(fā)出DNS請求報文,該報文攜帶VM2和VM3的用于負(fù)載分擔(dān)的集合域名。
以圖4為例,VM2和VM3的用于負(fù)載分擔(dān)的集合域名為a23.b2.c1。
當(dāng)VM2和VM3都能提供一業(yè)務(wù)功能時,會將VM2和VM3配置為能夠進行負(fù)載分擔(dān),此時,可為VM2和VM3分配用于負(fù)載分擔(dān)的集合標(biāo)識(以圖4為例,如a23),并為該集合配置域名(以圖4為例,如a23.b2.c1);對于VM1來說,它只需知道該域名(以圖4為例,如a23.b2.c1)對應(yīng)主機(或主機集合)可以提供該業(yè)務(wù)功能即可,并不需要知道該域名是對應(yīng)一臺主機還是多臺主機。
步驟502:VM1連接的VTEP1偵聽到該DNS請求報文,將該報文截獲并轉(zhuǎn)發(fā)給SDN Controller。
步驟503:SDN Controller接收該DNS請求報文,根據(jù)自身的DNS配置列表,將該報文中的域名(以圖4為例,如a23.b2.c1)解析成對應(yīng)的VM2、VM3的IP地址(以圖4為例,如200.1.1.1、200.1.1.2),根據(jù)預(yù)設(shè)的負(fù)載分擔(dān)算法在該兩個IP地址中選擇一個(以圖4為例,如選擇200.1.1.1),將所選擇的IP地址攜帶在DNS應(yīng)答報文中發(fā)送給VTEP1。
步驟504:VTEP1接收該DNS應(yīng)答報文,將該DNS應(yīng)答報文轉(zhuǎn)發(fā)給VM1。
步驟505:VM1接收該DNS應(yīng)答報文,將該報文中的IP地址(以圖4為例,如200.1.1.1)作為訪問的目的地址,發(fā)出請求報文,報文的目的地址 為網(wǎng)關(guān)MAC地址。
這里,設(shè)VM1與VM2不位于同一網(wǎng)段,因此,VM1發(fā)出的請求報文的目的MAC地址是網(wǎng)關(guān)MAC地址。以圖4為例,VM1的網(wǎng)關(guān)就是VTEP1。
步驟506:VTEP1(即網(wǎng)關(guān))接收該請求報文,根據(jù)報文的目的IP地址查找本地轉(zhuǎn)發(fā)表,查找到對應(yīng)的轉(zhuǎn)發(fā)表項,該轉(zhuǎn)發(fā)表項包括:目的IP地址,下一跳:即目的網(wǎng)關(guān)(以圖4為例,為VTEP2),VxLAN ID:目的subnet的VxLAN ID(以圖4為例,為2000),按照該轉(zhuǎn)發(fā)表項封裝該請求報文,將該請求報文轉(zhuǎn)發(fā)到VTEP2。
若VTEP1根據(jù)請求報文的目的IP地址在本地轉(zhuǎn)發(fā)表中未查找到對應(yīng)的轉(zhuǎn)發(fā)表項,則VTEP1將請求報文通過openflow協(xié)議上送到SDN Controller;SDN controller根據(jù)自身維護的整網(wǎng)拓?fù)湫畔ⅲ_定對應(yīng)的轉(zhuǎn)發(fā)表項,將該轉(zhuǎn)發(fā)表項下發(fā)到VTEP1,VTEP1保存該轉(zhuǎn)發(fā)表項并根據(jù)該轉(zhuǎn)發(fā)表項封裝并轉(zhuǎn)發(fā)該請求報文。
步驟507:VTEP2接收該請求報文,對該報文進行解封裝,得到原始請求報文,根據(jù)原始請求報文的目的IP地址查找本地轉(zhuǎn)發(fā)表,根據(jù)查找到的轉(zhuǎn)發(fā)表項將報文轉(zhuǎn)發(fā)給VM2。
由于VM2已經(jīng)知道了VM1的IP地址,因此,VM2向VM1發(fā)送應(yīng)答報文時,直接在應(yīng)答報文的目的IP地址字段填入VM1的IP地址即可,VM2向VM1發(fā)送應(yīng)答報文的過程與VM1向VM2發(fā)送請求報文的過程類似,不再贅述。
圖6為本申請實施例提供的基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的VM訪問同一vDC內(nèi)的指定subnet時的域名管理方法流程圖,其具體步驟如下:
步驟601:VM1要訪問本vDC內(nèi)的另一subnet內(nèi)的所有VM,發(fā)現(xiàn)自身未保存該subnet的域名與IP地址的對應(yīng)關(guān)系,則發(fā)出DNS請求報文,報文中攜帶該subnet的域名。
以圖4為例,設(shè)VM1要訪問vDC1內(nèi)的subnet2內(nèi)的所有VM,則發(fā)出的DNS請求報文攜帶域名**.b2.c1。
步驟602:VM1接入的VTEP1偵聽到該DNS請求報文,將該報文截獲并轉(zhuǎn)發(fā)給SDN Controller。
步驟603:SDN Controller接收該DNS請求報文,根據(jù)自身的DNS配置列表,將報文中的域名(以圖4為例,如**.b2.c1)解析成對應(yīng)的IP地址(以圖4為例,如200.1.1.255),將該IP地址攜帶在DNS應(yīng)答報文中返回給VTEP1,并同時向VTEP1下發(fā)該IP地址對應(yīng)的組播轉(zhuǎn)發(fā)表項。
該IP地址對應(yīng)的組播轉(zhuǎn)發(fā)表項的內(nèi)容包括:目的IP地址:該IP地址,下一跳:該IP地址對應(yīng)的subnet內(nèi)的所有VTEP,VxLAN ID:該IP地址對應(yīng)的subnet的VxLAN ID。以圖4為例,SDN Controller向VTEP1下發(fā)的組播轉(zhuǎn)發(fā)表項:目的IP地址200.1.1.255,下一跳是VTEP2和VTEP3,VxLAN ID是2000。
需要說明的是,SDN Controller在解析域名時,是按照從右向左的順序分級解析的,即先解析域名中的vDC的標(biāo)識部分,再解析subnet的標(biāo)識部分,最后解析主機(或主機集合)的標(biāo)識部分,若有一部分為無效標(biāo)識,則忽略該部分。例如:對于域名**.b2.c1,SDN Controller先解析c1,再解析b2,最后解析**,發(fā)現(xiàn)**為無效標(biāo)識,則確認(rèn)**.b2.c1對應(yīng)vDC1內(nèi)的subnet2,則將該域名解析成vDC1內(nèi)的subnet2的組播IP地址200.1.1.255。
步驟604:VTEP1接收該DNS應(yīng)答報文,將該報文轉(zhuǎn)發(fā)給VM1;同時接收并保存SDN Controller下發(fā)的組播轉(zhuǎn)發(fā)表項。
步驟605:VM1接收該DNS應(yīng)答報文,發(fā)出請求報文,報文的目的IP地址為DNS應(yīng)答報文中的IP地址(以圖4為例,如200.1.1.255)。
步驟606:VTEP1接收VM1發(fā)出的請求報文,在本地轉(zhuǎn)發(fā)表中查找報文的目的IP地址對應(yīng)的轉(zhuǎn)發(fā)表項,得知下一跳為VTEP2和VTEP3,則復(fù)制該報文,對該兩報文進行封裝后分別發(fā)送給VTEP2、VTEP3。
步驟607:VTEP2接收請求報文,對報文進行解封裝后發(fā)送給VM2; VTEP3接收該請求報文,對報文進行解封裝后發(fā)送給VM3。
圖7為本申請實施例提供的基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的VM訪問不同vDC內(nèi)的VM時的域名管理方法流程圖,其具體步驟如下:
步驟701:VM1要訪問VM4,發(fā)現(xiàn)自身未保存VM4的域名與IP地址的對應(yīng)關(guān)系,則發(fā)出DNS請求報文,報文攜帶VM4的域名(以圖4為例,如a4.b3.c2)。
步驟702:VM1接入的VTEP1偵聽到該DNS請求報文,將該報文截獲并轉(zhuǎn)發(fā)給SDN Controller。
步驟703:SDN Controller接收該DNS請求報文,根據(jù)自身的DNS配置列表,將報文中的域名(以圖4為例,如a4.b3.c2)解析成對應(yīng)的IP地址(以圖4為例,如300.1.1.1),將該IP地址攜帶在DNS應(yīng)答報文中返回給VTEP1;同時,SDN Controller根據(jù)自身維護的整網(wǎng)拓?fù)湫畔?,發(fā)現(xiàn)VM1和VM4位于不同的vDC內(nèi),則向VM1接入的VTEP1下發(fā)VM4的IP地址對應(yīng)的轉(zhuǎn)發(fā)表項,向VM4接入的VTEP4下發(fā)VM1的IP地址對應(yīng)的轉(zhuǎn)發(fā)表項。
以圖4為例,SDN Controller向VTEP1下發(fā)的轉(zhuǎn)發(fā)表項:目的IP地址300.1.1.1,下一跳是VTEP4,VxLAN ID是3000;向VTEP4下發(fā)的轉(zhuǎn)發(fā)表項:目的IP地址100.1.1.1,下一跳是VTEP1,VxLAN ID是1000。
步驟704:VTEP1接收該DNS應(yīng)答報文,將該報文轉(zhuǎn)發(fā)給VM1;同時,接收并保存SDN Controller下發(fā)的轉(zhuǎn)發(fā)表項;VTEP4接收并保存SDN Controller下發(fā)的轉(zhuǎn)發(fā)表項。
步驟705:VM1接收該DNS應(yīng)答報文,發(fā)出請求報文,請求報文的目的IP地址為DNS應(yīng)答報文中的VM4的IP地址(以圖4為例,如300.1.1.1)。
VM1還可以保存DNS應(yīng)答報文中的VM4的域名和IP地址的對應(yīng)關(guān)系,此后再接收到用戶輸入的VM4的域名時,就可以直接將該域名轉(zhuǎn)換為IP地址攜帶在請求報文中。
步驟706:VTEP1接收VM1發(fā)出的請求報文,在本地轉(zhuǎn)發(fā)表中查找報文的目的IP地址對應(yīng)的轉(zhuǎn)發(fā)表項(即步驟703中SDN Controller下發(fā)的轉(zhuǎn)發(fā)表項),根據(jù)查找到的轉(zhuǎn)發(fā)表項,對報文進行封裝后發(fā)送給VTEP4。
步驟707:VTEP4接收該報文,對報文解封裝后轉(zhuǎn)發(fā)給VM4。
由于VM4已經(jīng)知道了VM1的IP地址,因此,VM4向VM1發(fā)送應(yīng)答報文時,直接在應(yīng)答報文的目的IP地址字段填入VM1的IP地址即可,VM4向VM1發(fā)送應(yīng)答報文的過程與VM1向VM4發(fā)送請求報文的過程類似,不再贅述。
本申請實施例通過為基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的網(wǎng)絡(luò)組件配置域名,并由SDN Controller負(fù)責(zé)域名解析,由VTEP代理DNS請求/應(yīng)答,從而有效降低了網(wǎng)絡(luò)部署成本,并提高了轉(zhuǎn)發(fā)效率,具體地:
一)無需部署SLB,就可以實現(xiàn)應(yīng)用的負(fù)載分擔(dān),有效降低了成本,同時簡化了部署難度;
二)支持任意指定subnet內(nèi)的組播轉(zhuǎn)發(fā);
三)實現(xiàn)了不同vDC之間的應(yīng)用的直接轉(zhuǎn)發(fā),不需要繞行到vDC外轉(zhuǎn)發(fā),提高了轉(zhuǎn)發(fā)效率。
圖8為本申請實施例提供的域名管理裝置的組成示意圖,該裝置位于基于SDN+VxLAN的Openstack Neutron網(wǎng)絡(luò)內(nèi)的SDN控制器上,該裝置主要包括:
域名配置模塊:將每個網(wǎng)絡(luò)組件的域名與該網(wǎng)絡(luò)組件的IP地址的對應(yīng)關(guān)系保存在域名系統(tǒng)DNS配置列表中,其中,網(wǎng)絡(luò)組件之間具有層級關(guān)系,網(wǎng)絡(luò)組件的域名由該網(wǎng)絡(luò)組件的標(biāo)識及該網(wǎng)絡(luò)組件在網(wǎng)絡(luò)中的層位置信息組成;
域名解析模塊:接收VxLAN隧道端點VTEP發(fā)來的DNS請求報文,根據(jù)域名配置模塊保存的DNS配置列表,將該報文中的網(wǎng)絡(luò)組件的域名解析成網(wǎng)絡(luò)組件的IP地址,將該網(wǎng)絡(luò)組件的IP地址攜帶在DNS應(yīng)答報文中返回給所述 VTEP,其中,所述DNS請求報文為所述VTEP下掛的主機要訪問一網(wǎng)絡(luò)組件時發(fā)給所述VTEP的。
一種實施例中,域名配置模塊保存的網(wǎng)絡(luò)組件的標(biāo)識滿足:同一網(wǎng)絡(luò)層內(nèi)的任意兩個網(wǎng)絡(luò)組件的標(biāo)識不同;網(wǎng)絡(luò)組件包括:主機或者進行負(fù)載分擔(dān)的主機集合、子網(wǎng)Subnet、虛擬數(shù)據(jù)中心vDC三層,且主機和進行負(fù)載分擔(dān)的主機集合的層級相同且層級最低,subnet的層級次低,vDC的層級最高。
一種實施例中,域名解析模塊將該報文中的網(wǎng)絡(luò)組件的域名解析成網(wǎng)絡(luò)組件的IP地址之后進一步用于,發(fā)現(xiàn)解析出的網(wǎng)絡(luò)組件的IP地址為能夠進行負(fù)載分擔(dān)的多個主機的IP地址,則根據(jù)預(yù)設(shè)的負(fù)載分擔(dān)算法,在該多個IP地址中選擇一個,確定將所選擇的IP地址攜帶在所述DNS應(yīng)答報文中。
一種實施例中,域名解析模塊將該報文中的網(wǎng)絡(luò)組件的域名解析成網(wǎng)絡(luò)組件的IP地址之后進一步用于,發(fā)現(xiàn)該網(wǎng)絡(luò)組件的IP地址為subnet的組播IP地址,則根據(jù)自身維護的整網(wǎng)拓?fù)湫畔?,計算出該組播IP地址對應(yīng)的組播轉(zhuǎn)發(fā)表項,將該組播轉(zhuǎn)發(fā)表項發(fā)送給所述VTEP,該組播轉(zhuǎn)發(fā)表項的內(nèi)容包括:
目的IP地址、下一跳和VxLAN ID,其中,目的IP地址為該組播IP地址,下一跳為該組播IP地址對應(yīng)的subnet內(nèi)的所有VTEP,VxLAN ID為該組播IP地址對應(yīng)的subnet的VxLAN ID。
一種實施例中,域名解析模塊將該報文中的網(wǎng)絡(luò)組件的域名解析成網(wǎng)絡(luò)組件的IP地址之后進一步用于,根據(jù)自身維護的整網(wǎng)拓?fù)湫畔?,發(fā)現(xiàn)解析出的網(wǎng)絡(luò)組件的IP地址與所述VTEP位于不同vDC內(nèi),則向所述VTEP和該網(wǎng)絡(luò)組件接入的VTEP下發(fā)轉(zhuǎn)發(fā)表項,其中,
向所述VTEP下發(fā)的轉(zhuǎn)發(fā)表項的內(nèi)容包括:
目的IP地址、下一跳和VxLAN ID,其中,目的IP地址為該網(wǎng)絡(luò)組件的IP地址,下一跳為該網(wǎng)絡(luò)組件接入的VTEP,VxLAN ID為該網(wǎng)絡(luò)組件所在的subnet的VxLAN ID;
向該網(wǎng)絡(luò)組件接入的VTEP下發(fā)的轉(zhuǎn)發(fā)表項的內(nèi)容包括:
目的IP地址、下一跳和VxLAN ID,其中,目的IP地址為發(fā)出所述DNS 請求報文的VM的IP地址,下一跳為所述VTEP,VxLAN ID為所述VTEP所在的subnet的VxLAN ID。
本申請實施例還提供包含域名管理裝置的SDN控制器,該SDN控制器可以是軟硬件結(jié)合的可編程設(shè)備,從硬件層面而言,該設(shè)備的硬件架構(gòu)示意圖具體可以參見圖9。該SDN控制器中包括:機器可讀存儲介質(zhì)、CPU和其它硬件,其中:
機器可讀存儲介質(zhì):存儲指令代碼;所述指令代碼被CPU執(zhí)行時完成的操作主要為上述域名管理裝置完成的功能。
CPU:與機器可讀存儲介質(zhì)通信,讀取和執(zhí)行機器可讀存儲介質(zhì)中存儲的所述指令代碼,完成上述域名管理裝置完成的功能。
當(dāng)上述域名管理裝置作為一個邏輯意義上的裝置時,其是通過CPU運行機器可讀存儲介質(zhì)中對應(yīng)的計算機程序指令形成的。當(dāng)對應(yīng)的計算機程序指令被執(zhí)行時,形成的域名管理裝置用于按照上述實施例中的域名管理方法執(zhí)行相應(yīng)操作。
機器可讀存儲介質(zhì)可以是任何電子、磁性、光學(xué)或其它物理存儲裝置,可以包含或存儲信息,如可執(zhí)行指令、數(shù)據(jù),等等。例如,機器可讀存儲介質(zhì)可以是:RAM(Radom Access Memory,隨機存取存儲器)、易失存儲器、非易失性存儲器、閃存、存儲驅(qū)動器(如硬盤驅(qū)動器)、固態(tài)硬盤、任何類型的存儲盤(如光盤、dvd等),或者類似的存儲介質(zhì),或者它們的組合。
本申請所描述的任一機器可讀存儲介質(zhì)都可以被認(rèn)為是非暫時性的。
以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本申請保護的范圍之內(nèi)。