各網(wǎng)關(guān)的IP地址和MAC地址。
[0055]步驟302:配置了三層網(wǎng)關(guān)的混合網(wǎng)絡(luò)設(shè)備接收SDN控制器下發(fā)的流表項(xiàng),流表項(xiàng)中的目的MAC地址為自身配置的三層網(wǎng)關(guān)MAC地址,流表項(xiàng)中的動(dòng)作為Output,流表項(xiàng)中的出端口為Normal端口。
[0056]步驟303:配置了三層網(wǎng)關(guān)的混合網(wǎng)絡(luò)設(shè)備接收SDN網(wǎng)絡(luò)設(shè)備發(fā)來的數(shù)據(jù)報(bào)文,該數(shù)據(jù)報(bào)文的源IP、MAC地址為第一網(wǎng)段內(nèi)的第一主機(jī)的IP、MAC地址,目的IP地址為第一或第二網(wǎng)段內(nèi)第二主機(jī)的IP地址,目的MAC地址為第一網(wǎng)段的網(wǎng)關(guān)MAC地址,將該報(bào)文與步驟302中的流表項(xiàng)匹配上,發(fā)現(xiàn)流表項(xiàng)中的出端口為Normal端口,則對報(bào)文進(jìn)行傳統(tǒng)二
/三層轉(zhuǎn)發(fā)處理。
[0057]其中,步驟303中,對報(bào)文進(jìn)行傳統(tǒng)三層轉(zhuǎn)發(fā)處理包括:
[0058]混合網(wǎng)絡(luò)設(shè)備根據(jù)報(bào)文的目的IP地址,在自身的ARP表項(xiàng)中查找對應(yīng)的MAC地址和出端口,以查找到的MAC地址替換報(bào)文的目的MAC地址,根據(jù)報(bào)文的目的IP地址所處的第二網(wǎng)段在自身查找到第二網(wǎng)段的網(wǎng)關(guān)MAC地址,以該網(wǎng)關(guān)MAC地址替換報(bào)文的源MAC地址,從查找到的出端口將報(bào)文轉(zhuǎn)發(fā)出去。
[0059]圖4為本申請實(shí)施例提供的在SDN網(wǎng)絡(luò)中配置及學(xué)習(xí)三層網(wǎng)關(guān)的方法流程圖,其具體步驟如下:
[0060]步驟401:管理員在SDN控制器上指定一臺(tái)SDN網(wǎng)絡(luò)內(nèi)的混合網(wǎng)絡(luò)設(shè)備,以用于在該混合網(wǎng)絡(luò)設(shè)備上配置三層網(wǎng)關(guān);同時(shí),管理員針對該SDN網(wǎng)絡(luò)內(nèi)所有主機(jī)的IP地址所分布的網(wǎng)段,在SDN控制器上分別為每個(gè)網(wǎng)段配置一個(gè)三層網(wǎng)關(guān)IP地址。
[0061]步驟402:SDN控制器根據(jù)自身配置的所有三層網(wǎng)關(guān)IP地址,在該混合網(wǎng)絡(luò)設(shè)備上配置網(wǎng)關(guān)VLAN虛接口及三層網(wǎng)關(guān)IP地址。
[0062]所有的三層網(wǎng)關(guān)IP地址分布在多少個(gè)VLAN上就配置多少個(gè)網(wǎng)關(guān)VLAN虛接口。
[0063]SDN控制器通過網(wǎng)絡(luò)配置(Netconf)協(xié)議或者命令行的方式在該混合網(wǎng)絡(luò)設(shè)備上配置網(wǎng)關(guān)VLAN虛接口及三層網(wǎng)關(guān)IP地址。
[0064]步驟403:混合網(wǎng)絡(luò)設(shè)備為每個(gè)網(wǎng)關(guān)VLAN虛接口生成一個(gè)MAC地址,該MAC地址即為網(wǎng)關(guān)MAC地址,保存所有三層網(wǎng)關(guān)的IP地址和MAC地址。
[0065]步驟404:SDN控制器從混合網(wǎng)絡(luò)設(shè)備獲取到各網(wǎng)關(guān)VLAN虛接口的MAC地址(即網(wǎng)關(guān)MAC地址),并針對每個(gè)三層網(wǎng)關(guān)分別生成一個(gè)虛擬靜態(tài)主機(jī),該虛擬靜態(tài)主機(jī)的IP、MAC地址分別為對應(yīng)網(wǎng)關(guān)的IP、MAC地址,該虛擬靜態(tài)主機(jī)所在的網(wǎng)絡(luò)設(shè)備為該混合網(wǎng)絡(luò)設(shè)備,該虛擬靜態(tài)主機(jī)的端口為Normal端口。
[0066]SDN控制器可以通過netconf協(xié)議或者命令行的方式從混合網(wǎng)絡(luò)設(shè)備獲取到各網(wǎng)關(guān)VLAN虛接口的MAC地址。
[0067]步驟405:SDN控制器接收SDN網(wǎng)絡(luò)設(shè)備發(fā)來的Packet-1n消息,該消息中封裝了ARP請求報(bào)文,該報(bào)文為該SDN網(wǎng)絡(luò)設(shè)備下掛的主機(jī)發(fā)來的、且目的IP地址為該主機(jī)所在網(wǎng)段的網(wǎng)關(guān)IP地址,則根據(jù)該網(wǎng)關(guān)IP地址查找到對應(yīng)的虛擬靜態(tài)主機(jī),將該虛擬靜態(tài)主機(jī)的MAC地址作為網(wǎng)關(guān)MAC地址,將網(wǎng)關(guān)IP地址、網(wǎng)關(guān)MAC地址作為ARP應(yīng)答報(bào)文的源IP、MAC地址,將該ARP應(yīng)答報(bào)文封裝到Packet-out消息中,將該P(yáng)acket-out消息返回給該SDN網(wǎng)絡(luò)設(shè)備,由該SDN網(wǎng)絡(luò)設(shè)備將該ARP應(yīng)答報(bào)文返回給發(fā)出該ARP請求報(bào)文的主機(jī);同時(shí),SDN控制器在該混合網(wǎng)絡(luò)設(shè)備上配置靜態(tài)ARP表項(xiàng),表項(xiàng)中的IP、MAC地址為ARP請求報(bào)文的源IP、MAC地址,表項(xiàng)中的出端口為該混合網(wǎng)絡(luò)設(shè)備到發(fā)出該ARP請求報(bào)文的主機(jī)的最優(yōu)路徑出端口。
[0068]SDN控制器可以通過netconf協(xié)議或者命令行的方式在該混合網(wǎng)絡(luò)設(shè)備上配置靜態(tài)ARP表項(xiàng)。
[0069]通常,當(dāng)主機(jī)要發(fā)出跨網(wǎng)段的流量時(shí),主機(jī)會(huì)發(fā)出以網(wǎng)關(guān)IP地址為目的IP地址的ARP請求報(bào)文,以查詢網(wǎng)關(guān)MAC地址;當(dāng)主機(jī)接收到ARP應(yīng)答報(bào)文時(shí),會(huì)保存報(bào)文的源IP、MAC地址即網(wǎng)關(guān)IP、MAC地址。
[0070]網(wǎng)關(guān)IP地址需要預(yù)先配置到主機(jī)上。在實(shí)際應(yīng)用中,如果網(wǎng)關(guān)支持在SDN網(wǎng)絡(luò)中應(yīng)答ARP請求,則SDN控制器在收到封裝了 ARP請求報(bào)文的Packet-1n消息后,可不進(jìn)行ARP應(yīng)答處理,而是將ARP請求報(bào)文廣播出去,當(dāng)該ARP請求報(bào)文到達(dá)ARP應(yīng)答報(bào)文的目的IP地址對應(yīng)的網(wǎng)關(guān)(即配置了網(wǎng)關(guān)的混合網(wǎng)絡(luò)設(shè)備)后,網(wǎng)關(guān)進(jìn)行ARP應(yīng)答處理,并在本地生成靜態(tài)ARP表項(xiàng)。
[0071]圖5為本申請實(shí)施例提供的SDN網(wǎng)絡(luò)內(nèi)的三層轉(zhuǎn)發(fā)方法流程圖,其具體步驟如下:
[0072]步驟501:SDN網(wǎng)絡(luò)內(nèi)第一網(wǎng)段的第一主機(jī)要與第二網(wǎng)段的第二主機(jī)通信,第一主機(jī)發(fā)出數(shù)據(jù)報(bào)文,報(bào)文的源IP、MAC地址為第一主機(jī)的IP、MAC地址,目的IP地址為第二主機(jī)的IP地址,目的MAC地址為第一主機(jī)學(xué)習(xí)到的第一網(wǎng)段的三層網(wǎng)關(guān)MAC地址。
[0073]第一主機(jī)通過步驟405學(xué)習(xí)到所在的第一網(wǎng)段的三層網(wǎng)關(guān)MAC地址。
[0074]步驟502:第一主機(jī)的接入SDN網(wǎng)絡(luò)設(shè)備接收該數(shù)據(jù)報(bào)文,在自身未匹配到流表項(xiàng),則將該報(bào)文封裝到Packet-1n消息中發(fā)送給SDN控制器。
[0075]步驟503:SDN控制器接收該P(yáng)acket-1n消息,對該消息進(jìn)行解封裝,得到原始的數(shù)據(jù)報(bào)文,根據(jù)自身已學(xué)習(xí)到的SDN網(wǎng)絡(luò)拓?fù)浼吧傻奶摂M靜態(tài)主機(jī),計(jì)算出從數(shù)據(jù)報(bào)文的源MAC地址到目的MAC地址的最優(yōu)路徑,根據(jù)該數(shù)據(jù)報(bào)文及該最優(yōu)路徑生成下發(fā)到該最優(yōu)路徑上的各網(wǎng)絡(luò)設(shè)備的流表項(xiàng),將各流表項(xiàng)下發(fā)到對應(yīng)的網(wǎng)絡(luò)設(shè)備上,同時(shí),將該數(shù)據(jù)報(bào)文封裝到Packet-out消息中,該消息中攜帶了發(fā)來該P(yáng)acket-1n消息的SDN網(wǎng)絡(luò)設(shè)備到目的MAC地址對應(yīng)的網(wǎng)關(guān)(即第一網(wǎng)段的三層網(wǎng)關(guān))的最優(yōu)路徑出端口信息,將該P(yáng)acket-out消息發(fā)送給發(fā)來該P(yáng)acket-1n消息的SDN網(wǎng)絡(luò)設(shè)備。
[0076]其中,向位于最優(yōu)路徑上(即第一主機(jī)與第一網(wǎng)段的三層網(wǎng)關(guān)之間)的各SDN網(wǎng)絡(luò)設(shè)備下發(fā)的流表項(xiàng)的內(nèi)容如下:
[0077]匹配“源MAC地址為第一主機(jī)的MAC地址(即數(shù)據(jù)報(bào)文的源MAC地址),目的MAC地址為第一網(wǎng)段的三層網(wǎng)關(guān)的MAC地址(即數(shù)據(jù)報(bào)文的目的MAC地址)”的數(shù)據(jù)報(bào)文,動(dòng)作為:輸出(Output),出端口為:本SDN網(wǎng)絡(luò)設(shè)備到(目的MAC地址對應(yīng)的)網(wǎng)關(guān)的最優(yōu)路徑的出端口 ;
[0078]向(目的MAC地址對應(yīng)的)網(wǎng)關(guān)下發(fā)的流表項(xiàng)的內(nèi)容如下:
[0079]匹配“源MAC地址為第一主機(jī)的MAC地址(即數(shù)據(jù)報(bào)文的源MAC地址),目的MAC地址為第一網(wǎng)段的三層網(wǎng)關(guān)的MAC地址(即數(shù)據(jù)報(bào)文的目的MAC地址)”的數(shù)據(jù)報(bào)文,動(dòng)作為:0utput,出端口為:根據(jù)數(shù)據(jù)報(bào)文的目的MAC地址查找到的虛擬靜態(tài)主機(jī)的Normal端□。
[0080]可選地,向網(wǎng)關(guān)下發(fā)的流表項(xiàng)可不匹配源MAC地址,以達(dá)到節(jié)省流表的作用。
[0081]SDN控制器在啟動(dòng)后會(huì)學(xué)習(xí)SDN網(wǎng)絡(luò)拓?fù)?,具體包括:SDN網(wǎng)絡(luò)內(nèi)的網(wǎng)絡(luò)設(shè)備與其下掛主機(jī)之間的連接關(guān)系、各網(wǎng)絡(luò)設(shè)備之間(包括SDN網(wǎng)絡(luò)設(shè)備之間、混合網(wǎng)絡(luò)設(shè)備之間、SDN網(wǎng)絡(luò)設(shè)備與混合網(wǎng)絡(luò)設(shè)備之間)的連接關(guān)系,具體的學(xué)習(xí)過程屬于已有技術(shù),本申請不再贅述。
[0082]步驟504:發(fā)出該P(yáng)acket-1n消息的SDN網(wǎng)絡(luò)設(shè)備接收SDN控制器發(fā)來的封裝了數(shù)據(jù)報(bào)文的Packet-out消息,根據(jù)該消息攜帶的出端口信息,將該數(shù)據(jù)報(bào)文從對應(yīng)出端口轉(zhuǎn)發(fā)出去。
[0083]步驟505:位于發(fā)出該P(yáng)acket-1n消息的SDN網(wǎng)絡(luò)設(shè)備與第一網(wǎng)段的三層網(wǎng)關(guān)之間的SDN網(wǎng)絡(luò)設(shè)備接收到上述數(shù)據(jù)報(bào)文,在自身匹配到對應(yīng)的流表項(xiàng),根據(jù)流表項(xiàng)中的出端口信息,將報(bào)文從對應(yīng)的出端口轉(zhuǎn)發(fā)出去。
[0084]步驟506:該數(shù)據(jù)報(bào)文到達(dá)第一網(wǎng)段的網(wǎng)關(guān)(即配置了三層網(wǎng)關(guān)的混合網(wǎng)絡(luò)設(shè)備),網(wǎng)關(guān)匹配到對應(yīng)的流表項(xiàng),發(fā)現(xiàn)出端口為Normal端口,則對報(bào)文進(jìn)行傳統(tǒng)三層轉(zhuǎn)發(fā)處理:根據(jù)報(bào)文的目的IP地址查找自身的ARP表項(xiàng),以該表項(xiàng)中的MAC地址替換報(bào)文的目的MAC地址,以自身配置的目的IP地址所在的第二網(wǎng)段的三層網(wǎng)關(guān)的MAC地址替換報(bào)文的源MAC地址,根據(jù)該表項(xiàng)中的出端口將報(bào)文轉(zhuǎn)發(fā)出去。
[0085]這里,若混合網(wǎng)絡(luò)設(shè)備上未保存報(bào)文的目的IP地址對應(yīng)的ARP表項(xiàng),則混合網(wǎng)絡(luò)設(shè)備可發(fā)出以該目的IP地址為目的IP地址的ARP請求,以學(xué)習(xí)到對應(yīng)的ARP表項(xiàng)?;蛘?,在步驟503中,若SDN控制器發(fā)現(xiàn)數(shù)據(jù)報(bào)文的目的IP地址對應(yīng)的ARP表項(xiàng)還未學(xué)習(xí)到,則發(fā)出以該目的IP地址為目的IP地址的ARP請求,以學(xué)習(xí)到對應(yīng)的ARP表項(xiàng),并將該ARP表項(xiàng)下發(fā)給該混合網(wǎng)絡(luò)設(shè)備。
[0086]步驟507:網(wǎng)關(guān)(即配置了三層網(wǎng)關(guān)的混合網(wǎng)絡(luò)設(shè)備)與第二主機(jī)之間的SDN網(wǎng)絡(luò)設(shè)備接收到該數(shù)據(jù)報(bào)文,未匹配到該報(bào)文對應(yīng)的流表項(xiàng),則將該數(shù)據(jù)報(bào)文封裝到Packet-1n消息中發(fā)送給SDN控制器。
[0087]步驟508:SDN控制器接收該P(yáng)acket-1n消息,對該消息進(jìn)行解封裝,得到數(shù)據(jù)報(bào)文,根據(jù)自身已學(xué)習(xí)到的SDN網(wǎng)絡(luò)拓?fù)?,?jì)算出從數(shù)據(jù)報(bào)文的源MAC地址到目的MAC地址的最優(yōu)路徑,根據(jù)該最優(yōu)路徑生成下發(fā)到該最優(yōu)路徑上的各SDN網(wǎng)絡(luò)設(shè)備的流表項(xiàng),將各流表項(xiàng)下發(fā)到對應(yīng)的SDN網(wǎng)絡(luò)設(shè)備上,同時(shí),將該數(shù)據(jù)報(bào)文封裝到Packet-out消息中,該消息中攜帶了發(fā)來該P(yáng)acket-1n消息的SDN網(wǎng)絡(luò)設(shè)備到目的MAC地址對應(yīng)的主機(jī)的最優(yōu)路徑出端口信息,將該P(yáng)acket-out消息發(fā)送給發(fā)來該P(yáng)acket-1n消息的SDN網(wǎng)絡(luò)設(shè)備。
[0088]其中,向(源MAC地址對應(yīng)的)網(wǎng)關(guān)(即配置了該網(wǎng)關(guān)的混合網(wǎng)絡(luò)設(shè)備)下發(fā)的流表項(xiàng)的內(nèi)容如下:
[0089]匹配“源MAC地址為第二網(wǎng)段的三層網(wǎng)關(guān)的MAC地址(即數(shù)據(jù)報(bào)文的源MAC地址),目的MAC地址為第二主機(jī)的MAC地址(即數(shù)據(jù)報(bào)文的目的MAC地址)”的數(shù)據(jù)報(bào)文,動(dòng)作為:0utput,出端口為:從該網(wǎng)關(guān)到第二主機(jī)的最優(yōu)路徑的出端口 ;
[0090]向位于最優(yōu)路徑上(即第二網(wǎng)段的三層網(wǎng)關(guān)與第二主機(jī)之間的各SDN網(wǎng)絡(luò)設(shè)備)下發(fā)的流表項(xiàng)的內(nèi)容如下:
[0091]匹配“源MAC地址為第二網(wǎng)段的三層網(wǎng)關(guān)的MAC地址(即數(shù)據(jù)報(bào)文的源MAC地址),目的MAC地址為第二主機(jī)的MAC地址(即數(shù)據(jù)報(bào)文的目的MAC地址)”的數(shù)據(jù)報(bào)文,動(dòng)作為:0utput,出端口為:本SDN網(wǎng)絡(luò)設(shè)備到(目的MAC地址對應(yīng)的)第二主機(jī)的最優(yōu)路徑的出端口。
[0092]步驟509:發(fā)出該P(yáng)acket-1n消息的SDN網(wǎng)絡(luò)設(shè)備接收SDN控制器發(fā)來的封裝了數(shù)據(jù)報(bào)文的Packet-out消息,根據(jù)該消息攜帶的出端口信息,將該數(shù)據(jù)報(bào)文從對應(yīng)出端口轉(zhuǎn)發(fā)出去。
[0093]步驟510:位于發(fā)出該P(yáng)acket-1n消息的SDN網(wǎng)絡(luò)設(shè)備與第二