本發(fā)明涉及通信技術(shù)領(lǐng)域,具體涉及一種報文處理方法、相關(guān)裝置及nvo3網(wǎng)絡(luò)系統(tǒng)。
背景技術(shù):
目前,通過基于三層網(wǎng)絡(luò)的網(wǎng)絡(luò)虛擬化(英文:networkvirtualizationoverlayer3,縮寫:nvo3)可以將一個物理網(wǎng)絡(luò)進(jìn)行虛擬化,從而實現(xiàn)同一個物理網(wǎng)絡(luò)可以被不同租戶共同使用,并且租戶之間的流量能夠隔離,網(wǎng)絡(luò)協(xié)議(英文:internetprotocol,縮寫:ip)地址能夠重疊。每個租戶一般可以使用一個或多個虛擬網(wǎng)絡(luò),每個虛擬網(wǎng)絡(luò)內(nèi)的用戶邊緣(英文:customeredge,縮寫:ce)通過二層網(wǎng)絡(luò)互通,不同虛擬子網(wǎng)的ce之間通過三層網(wǎng)絡(luò)互通。
在nvo3網(wǎng)絡(luò)中,遠(yuǎn)端網(wǎng)絡(luò)虛擬邊緣(英文:networkvirtualizationedge,縮寫:nve)一般通過控制層面學(xué)習(xí)本端nve連接的ce的介質(zhì)訪問控制(英文:mediaaccesscontrol,縮寫:mac)地址,nve之間運行以太網(wǎng)虛擬專用網(wǎng)(英文:ethernetvirtualprivatenetwork,縮寫:evpn)協(xié)議,每個nve通過數(shù)據(jù)層面學(xué)習(xí)本地連接的ce的mac地址。本端nve可以通過邊界網(wǎng)關(guān)協(xié)議(英文:bordergatewayprotocol,縮寫:bgp)將本地學(xué)習(xí)到的ce的mac地址通告給遠(yuǎn)端nve,遠(yuǎn)端nve從nvo3網(wǎng)絡(luò)側(cè)學(xué)習(xí)到所述本端nve發(fā)送的ce的mac地址之后,在mac轉(zhuǎn)發(fā)表中建立mac地址與接口的對應(yīng)關(guān)系。而對于多歸接入,即同時接入多個本端nve,的ce,遠(yuǎn)端nve需要將所述ce的mac地址分別對應(yīng)多個接口。然而,在遠(yuǎn)端nve是虛擬交換機(jī)(英文:vswitch)時,很多情況下不支持這種負(fù)載分擔(dān)方式。此外,在所述ce接入的本端nve發(fā)生變化時,例如所述ce與一個本端nve的接入鏈路出現(xiàn)故障,則遠(yuǎn)端nve需要修改mac轉(zhuǎn)發(fā)表中所述ce的mac地址與接口的對應(yīng)關(guān)系,在遠(yuǎn)端nve的數(shù)量較多時,會導(dǎo)致mac轉(zhuǎn)發(fā)表的修改負(fù)擔(dān)很重,嚴(yán)重影響網(wǎng)絡(luò)的可擴(kuò)展性。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種報文處理方法、相關(guān)裝置及nvo3網(wǎng)絡(luò)系統(tǒng),可以降低遠(yuǎn)端nve維護(hù)mac轉(zhuǎn)發(fā)表的負(fù)擔(dān),增強(qiáng)網(wǎng)絡(luò)的可擴(kuò)展性。
本發(fā)明實施例第一方面提供了一種報文處理方法,應(yīng)用在nvo3網(wǎng)絡(luò)系統(tǒng),該nvo3網(wǎng)絡(luò)系統(tǒng)包括第一nve、第二nve、遠(yuǎn)端nve和第一ce,該第一ce通過多歸接入的方式接入該第一nve和該第二nve,該第一nve和該第二nve設(shè)有各自整網(wǎng)唯一的vtepip地址以及共用的第一共享vtepip地址,該方法包括:
該第一ce向該第一nve發(fā)送第一報文,該第一報文攜帶有該第一ce的mac地址和vlanid,該第一nve根據(jù)該第一報文的入接口和該vlanid確定出該第一ce的vni,并對該第一報文進(jìn)行nvo3封裝得到nvo3封裝的第一報文,該nvo3封裝的第一報文包括該vni,并且源ip地址為該第一共享vtepip地址。
該第一nve向該遠(yuǎn)端nve轉(zhuǎn)發(fā)該nvo3封裝的第一報文,該遠(yuǎn)端nve對該nvo3封裝的第一報文解封裝后在mac轉(zhuǎn)發(fā)表中建立該第一ce的mac地址、vni和該第一共享vtepip地址之間的映射關(guān)系,由于遠(yuǎn)端nve只能接收到與該ce對應(yīng)的一個ip地址,可以實現(xiàn)該遠(yuǎn)端nve不感知該ce的多歸接入,從而降低遠(yuǎn)端nve維護(hù)mac轉(zhuǎn)發(fā)表的負(fù)擔(dān),增強(qiáng)網(wǎng)絡(luò)的可擴(kuò)展性。
可選的,該nvo3網(wǎng)絡(luò)系統(tǒng)還包括第三nve,該第二nve和該第三nve共用第二共享vtepip地址,該方法還包括:
該第一ce向該第一nve發(fā)送第二報文,該第二報文為bum報文。
該第一nve復(fù)制該第二報文,對所述第二報文進(jìn)行nvo3封裝得到nvo3封裝的第二報文,并向該第二nve和該第三nve轉(zhuǎn)發(fā)該nvo3封裝的第二報文,其nvo3頭中的源ip地址為該第一共享vtepip地址,接收該nvo3封裝的第二報文的nve根據(jù)存儲的接口表項對比該第一共享vtepip地址和該nve連接ce的接口對應(yīng)的vtepip地址,并向第一接口轉(zhuǎn)發(fā)解封裝得到的該第二報文,以及不向第二接口轉(zhuǎn)發(fā)解封裝得到的該第二報文,其中,該第一接口對應(yīng)的vtepip地址與該第一共享vtepip地址不同,并且該第一接口為指定轉(zhuǎn)發(fā)者df狀態(tài),該第二接口對應(yīng)的vtepip地址與該第一共享vtepip地址相同,其中,每個接口表項包括連接ce的接口、該接口對應(yīng)的vtepip地址、以及該 接口的狀態(tài),該狀態(tài)包括df狀態(tài)或者非df狀態(tài);其中,連接多歸接入nve的ce的接口對應(yīng)的vtepip地址為該ce多歸接入的多個nve的共享vtepip地址,連接單歸接入nve的ce的接口對應(yīng)的vtepip地址為該ce單歸接入的nve的整網(wǎng)唯一的vtepip地址,從而可以防止本端nve之間轉(zhuǎn)發(fā)bum報文時產(chǎn)生環(huán)路。
可選的,如果該第一nve還連接第二ce,并且連接該第二ce的接口對應(yīng)的vtepip地址為該第一共享vtepip地址,則該第一nve向該第二ce直接轉(zhuǎn)發(fā)該第二報文。
本發(fā)明實施例第二方面提供了一種報文處理裝置,應(yīng)用在nvo3網(wǎng)絡(luò)系統(tǒng),該nvo3網(wǎng)絡(luò)系統(tǒng)包括該報文處理裝置、第二nve、遠(yuǎn)端nve和第一ce,該第一ce多歸接入該報文處理裝置和該第二nve,該報文處理裝置和該第二nve設(shè)有各自整網(wǎng)唯一的vtepip地址以及共用的第一共享vtepip地址,該裝置包括:
接收模塊,用于接收該第一ce發(fā)送的第一報文,該第一報文包括該第一ce的mac地址和vlanid。
確定模塊,用于根據(jù)該第一報文的入接口和該vlanid確定該第一ce的vni。
封裝模塊,用于對該第一報文進(jìn)行nvo3封裝得到nvo3封裝的第一報文,該nvo3封裝的第一報文包括該第一ce的vni,并且源ip地址為該第一共享vtepip地址。
轉(zhuǎn)發(fā)模塊,用于向該遠(yuǎn)端nve轉(zhuǎn)發(fā)該nvo3封裝的第一報文,該nvo3封裝的第一報文用于指示該遠(yuǎn)端nve在mac轉(zhuǎn)發(fā)表中建立該第一ce的mac地址、vni和該第一共享vtepip地址之間的映射關(guān)系,可以降低遠(yuǎn)端nve維護(hù)mac轉(zhuǎn)發(fā)表的負(fù)擔(dān),增強(qiáng)網(wǎng)絡(luò)的可擴(kuò)展性。
可選的,該接收模塊,還用于接收該第一ce發(fā)送的第二報文,該第二報文為bum報文。
該封裝模塊,還用于復(fù)制該第二報文,對該第二報文進(jìn)行nvo3封裝得到nvo3封裝的第二報文;
所述轉(zhuǎn)發(fā)模塊,還用于向該第二nve和所述第三nve轉(zhuǎn)發(fā)該nvo3封裝的第二報文,該nvo3封裝的第二報文的nvo3頭中的源ip地址為該第一共享 vtepip地址,該nvo3封裝的第二報文用于指示接收該nvo3封裝的第二報文的nve根據(jù)存儲的接口表項對比該第一共享vtepip地址和該nve連接ce的接口對應(yīng)的vtepip地址,并向?qū)?yīng)的vtepip地址與該第一共享vtepip地址不同,并且為df狀態(tài)的接口轉(zhuǎn)發(fā)解封裝得到的該第二報文,以及不向?qū)?yīng)的vtepip地址與該第一共享vtepip地址相同的接口轉(zhuǎn)發(fā)解封裝得到的該第二報文,從而可以防止本端nve之間轉(zhuǎn)發(fā)bum報文時產(chǎn)生環(huán)路。
可選的,該轉(zhuǎn)發(fā)模塊,還用于在該報文處理裝置還連接第二ce,并且連接該第二ce的接口對應(yīng)的vtepip地址為該第一共享vtepip地址時,向該第二ce轉(zhuǎn)發(fā)該第二報文。
本發(fā)明實施例第三方面提供了一種報文處理方法,應(yīng)用在nvo3網(wǎng)絡(luò)系統(tǒng),該nvo3網(wǎng)絡(luò)系統(tǒng)包括第一nve、第二nve、遠(yuǎn)端nve和第一ce,該第一ce通過多歸接入的方式接入該第一nve和該第二nve,該第一nve和該第二nve設(shè)有各自整網(wǎng)唯一的vtepip地址以及共用的第一共享vtepip地址,該方法包括:
該遠(yuǎn)端nve接收該第一nve轉(zhuǎn)發(fā)的nvo3封裝的第一報文,該nvo3封裝的第一報文包括該第一ce的vni,該nvo3封裝的第一報文的nvo3頭中的源ip地址為該第一共享vtepip地址,該第一報文由該第一ce向該第一nve發(fā)送,該第一報文包括該第一ce的mac地址和vlanid,該第一ce的vni由該第一nve根據(jù)該第一報文的入接口和該vlanid確定。
該遠(yuǎn)端nve對該nvo3封裝的第一報文進(jìn)行解封裝,并在mac轉(zhuǎn)發(fā)表中建立該第一ce的mac地址、vni和該第一共享vtepip地址之間的映射關(guān)系,由于遠(yuǎn)端nve只能接收到與該ce對應(yīng)的一個ip地址,可以實現(xiàn)該遠(yuǎn)端nve不感知該ce的多歸接入,從而降低遠(yuǎn)端nve維護(hù)mac轉(zhuǎn)發(fā)表的負(fù)擔(dān),增強(qiáng)網(wǎng)絡(luò)的可擴(kuò)展性。
可選的,該遠(yuǎn)端nve和該第二nve共用第二共享vtepip地址,該方法還包括:
該遠(yuǎn)端nve接收本地側(cè)連接的ce發(fā)送的bum報文,并對該bum報文進(jìn)行nvo3封裝,得到nvo3封裝的bum報文,該nvo3封裝的bum報文的nvo3頭中的源ip地址為該第二共享vtepip地址。
該遠(yuǎn)端nve向該第一nve和該第二nve轉(zhuǎn)發(fā)該nvo3封裝的bum報文, 該nvo3封裝的bum報文用于指示接收該nvo3封裝的bum報文的nve根據(jù)存儲的接口表項對比該第一共享vtepip地址和該nve連接ce的接口對應(yīng)的vtepip地址,并向?qū)?yīng)的vtepip地址與該第一共享vtepip地址不同,并且為df狀態(tài)的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文,以及不向?qū)?yīng)的vtepip地址與該第一共享vtepip地址相同的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文,從而可以防止本端nve連接的ce重復(fù)接收到遠(yuǎn)端nve轉(zhuǎn)發(fā)的bum報文。
本發(fā)明實施例第四方面提供了一種報文處理裝置,應(yīng)用在nvo3網(wǎng)絡(luò)系統(tǒng),該nvo3網(wǎng)絡(luò)系統(tǒng)包括第一nve、第二nve、該報文處理裝置和第一ce,該第一ce多歸接入該第一nve和該第二nve,該第一nve和該第二nve共用第一共享vtepip地址,該裝置包括:
接收模塊,用于接收該第一nve轉(zhuǎn)發(fā)的nvo3封裝的第一報文,該nvo3封裝的第一報文包括該第一ce的vni,該nvo3封裝的第一報文的nvo3頭中的源ip地址為該第一共享vtepip地址,該第一報文由該第一ce向該第一nve發(fā)送,該第一報文包括該第一ce的mac地址和vlanid,該第一ce的vni由該第一nve根據(jù)該第一報文的入接口和該vlanid確定。
處理模塊,用于對該nvo3封裝的第一報文進(jìn)行解封裝。
建立模塊,用于在mac轉(zhuǎn)發(fā)表中建立該第一ce的mac地址、vni和該第一共享vtepip地址之間的映射關(guān)系,從而該遠(yuǎn)端nve可以不感知該ce的多歸接入,在該ce多歸接入的鏈路發(fā)生故障時該遠(yuǎn)端nve不需要修改mac轉(zhuǎn)發(fā)表,大大降低了遠(yuǎn)端nve在維護(hù)mac轉(zhuǎn)發(fā)表時的負(fù)擔(dān),增強(qiáng)了網(wǎng)絡(luò)的可擴(kuò)展性。
可選的,該報文處理裝置和該第二nve共用第二共享vtepip地址,
該接收模塊,還用于接收與該報文處理裝置連接的ce發(fā)送的bum報文。
該處理模塊,還用于對該bum報文進(jìn)行nvo3封裝,得到nvo3封裝的bum報文,該nvo3封裝的bum報文的nvo3頭中的源ip地址為該第二共享vtepip地址。
其中,該報文處理裝置還包括:
轉(zhuǎn)發(fā)模塊,用于向該第一nve和該第二nve轉(zhuǎn)發(fā)該nvo3封裝的bum報文,該nvo3封裝的bum報文用于指示接收該nvo3封裝的bum報文的nve根據(jù)存儲的接口表項對比該第一共享vtepip地址和該nve連接ce的接 口對應(yīng)的vtepip地址,并向?qū)?yīng)的vtepip地址與該第一共享vtepip地址不同,并且為df狀態(tài)的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文,以及不向?qū)?yīng)的vtepip地址與該第一共享vtepip地址相同的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文,從而可以防止本端nve連接的ce重復(fù)接收到遠(yuǎn)端nve轉(zhuǎn)發(fā)的bum報文。
本發(fā)明實施例第五方面提供了一種nvo3網(wǎng)絡(luò)系統(tǒng),包括第一nve、第二nve、遠(yuǎn)端nve和第一ce,該第一ce多歸接入該第一nve和該第二nve,該第一nve和該第二nve共用第一共享vtepip地址,其中:
該第一nve,用于接收該第一ce發(fā)送的第一報文,該第一報文包括該第一ce的mac地址和vlanid。
該第一nve,還用于根據(jù)該第一報文的入接口和該vlanid確定該第一ce的vni,并對該第一報文進(jìn)行nvo3封裝得到nvo3封裝的第一報文,該nvo3封裝的第一報文包括該第一ce的vni,該nvo3封裝的第一報文的nvo3頭中的源ip地址為該第一共享vtepip地址。
該第一nve,還用于向該遠(yuǎn)端nve轉(zhuǎn)發(fā)該nvo3封裝的第一報文。
該遠(yuǎn)端nve,用于對接收到的該nvo3封裝的第一報文進(jìn)行解封裝,并在mac轉(zhuǎn)發(fā)表中建立該第一ce的mac地址、vni和該第一共享vtepip地址之間的映射關(guān)系,從而ce的mac地址在遠(yuǎn)端nve上不會發(fā)生跳變,在ce多歸接入的鏈路發(fā)生故障時遠(yuǎn)端nve也不需要修改mac轉(zhuǎn)發(fā)表,大大降低了遠(yuǎn)端nve在維護(hù)mac轉(zhuǎn)發(fā)表時的負(fù)擔(dān),增強(qiáng)了網(wǎng)絡(luò)的可擴(kuò)展性。。
可選的,該第一報文為bum報文,該系統(tǒng)還包括第三nve,該第二nve和該第三nve共用第二共享vtepip地址,其中:
該第一nve,還用于接收該第一ce發(fā)送的第二報文,該第二報文為bum報文。
該第一nve,還用于復(fù)制該第二報文,對該第二報文進(jìn)行nvo3封裝得到nvo3封裝的第二報文,并向該第二nve和該第三nve轉(zhuǎn)發(fā)該nvo3封裝的第二報文,該nvo3封裝的第二報文的nvo3頭中源ip地址為該第一共享vtepip地址。
其中,該nvo3封裝的第二報文用于指示接收該nvo3封裝的第二報文的nve根據(jù)存儲的接口表項對比該第一共享vtepip地址和該nve連接ce的接 口對應(yīng)的vtepip地址,并向?qū)?yīng)的vtepip地址與該第一共享vtepip地址不同,并且為df狀態(tài)的接口轉(zhuǎn)發(fā)解封裝得到的該第二報文,以及不向?qū)?yīng)的vtepip地址與該第一共享vtepip地址相同的接口轉(zhuǎn)發(fā)解封裝得到的該第二報文,從而可以防止本端nve之間轉(zhuǎn)發(fā)bum報文時產(chǎn)生環(huán)路。
可選的,該第一nve,還用于在該第一nve還連接第二ce,并且連接該第二ce的接口對應(yīng)的vtepip地址為該第一共享vtepip地址時,向該第二ce轉(zhuǎn)發(fā)該第二報文。
本發(fā)明實施例中,ce通過多歸接入的多個本端nve中的任意一個向遠(yuǎn)端nve發(fā)送報文,該任意一個本端nve對該報文進(jìn)行nvo3封裝時,均使用該多個本端nve之間共用的共享vtepip地址作為nvo3頭中的源ip地址,從而使遠(yuǎn)端nve在mac轉(zhuǎn)發(fā)表中建立該ce的mac地址、vni與該共用的共享vtepip地址之間的映射關(guān)系。由于遠(yuǎn)端nve只能接收到與所述ce對應(yīng)的一個ip地址,因此,該遠(yuǎn)端nve不感知該ce的多歸接入,該ce的mac地址在該遠(yuǎn)端nve上不會發(fā)生跳變,在該ce多歸接入的鏈路發(fā)生故障時該遠(yuǎn)端nve也不需要修改mac轉(zhuǎn)發(fā)表,從而大大降低了遠(yuǎn)端nve在維護(hù)mac轉(zhuǎn)發(fā)表時的負(fù)擔(dān),增強(qiáng)了網(wǎng)絡(luò)的可擴(kuò)展性。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹。
圖1是本發(fā)明實施例提供的一種nvo3網(wǎng)絡(luò)架構(gòu)示意圖;
圖2是本發(fā)明實施例提供的一種報文處理方法的流程示意圖;
圖3是本發(fā)明實施例提供的另一種報文處理方法的流程示意圖;
圖4是本發(fā)明實施例提供的另一種nvo3網(wǎng)絡(luò)架構(gòu)示意圖;
圖5是本發(fā)明實施例提供的一種報文處理裝置的結(jié)構(gòu)示意圖;
圖6是本發(fā)明實施例提供的又一種報文處理方法的流程示意圖;
圖7是本發(fā)明實施例提供的又一種報文處理方法的流程示意圖;
圖8是本發(fā)明實施例提供的另一種報文處理裝置的結(jié)構(gòu)示意圖;
圖9是本發(fā)明實施例提供的一種nvo3網(wǎng)絡(luò)系統(tǒng)的結(jié)構(gòu)示意圖;
圖10是本發(fā)明實施例提供的一種報文處理設(shè)備的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行描述。
請參閱圖1,為本發(fā)明實施例提供的一種nvo3網(wǎng)絡(luò)架構(gòu)示意圖,本實施例中所描述的nvo3網(wǎng)絡(luò),包括:第一ce、第一nve、第二nve和遠(yuǎn)端nve,第一nve和第二nve作為本端nve,第一ce多歸接入第一nve和第二nve,第一ce與第一nve、第二nve之間的兩條鏈路捆綁為一個鏈路聚合組(英文:linkaggregationgroup,縮寫:lag),第一ce發(fā)送報文時通過lag選擇其中一條鏈路將報文發(fā)送至第一nve或第二nve,第一nve、第二nve和遠(yuǎn)端nve兩兩之間通過三層網(wǎng)絡(luò)連接,第一ce與第一nve、第一ce與第二nve之間通過二層網(wǎng)絡(luò)連接。其中,圖1中的ce具體可以是虛擬機(jī)(英文:virtualmachine,縮寫:vm),租戶終端系統(tǒng)(英文:tenantendsystem,縮寫:tes),還可以是物理服務(wù)器、交換機(jī)、防火墻等,nve可以位于服務(wù)器或物理網(wǎng)絡(luò)設(shè)備上,負(fù)責(zé)報文轉(zhuǎn)發(fā),包括報文的封裝和解封裝。
需要說明的是,實際的nvo3網(wǎng)絡(luò)中nve和ce的數(shù)量并不以圖1所示的數(shù)量為限。
其中,針對每個nve可以設(shè)置多個vtepip地址,包括整網(wǎng)唯一的vtepip地址,以及與其它nve共用的vtepip地址,本文稱為共享(英文:shared)vtepip地址。每個nve可以通過路由協(xié)議將自身整網(wǎng)唯一的vtepip地址以及共享vtepip地址通告給其它nve,其它nve便可以訪問這些vtepip地址。如果其它nve到達(dá)第一nve和第二nve具有相同的鏈路開銷(英文:linkcost),則從其它nve到達(dá)第一nve和第二nve的報文便可以進(jìn)行負(fù)載分擔(dān)。針對圖1中的第一nve和第二nve可以設(shè)置為:第一nve和第二nve共用第一共享vtepip地址。
其中,每個nve連接ce的接口分別對應(yīng)有接口表項,每個接口表項包括連接ce的接口、接口對應(yīng)的vtepip地址、以及接口的狀態(tài),該狀態(tài)包括指定轉(zhuǎn)發(fā)者(英文:designatedforwarder,縮寫:df)狀態(tài)或者非df狀態(tài);其中,連接多歸接入nve的ce的接口對應(yīng)的vtepip地址為該ce多歸接入的多個 nve的共享vtepip地址,連接單歸接入nve的ce的接口對應(yīng)的vtepip地址為該ce單歸接入的nve的整網(wǎng)唯一的vtepip地址,且該接口為df狀態(tài)。對于df狀態(tài)的接口,nve轉(zhuǎn)發(fā)通過該接口接收的報文,對于非df狀態(tài)的接口,nve則丟棄通過該接口接收的報文。
需要說明的是,對于單歸接入的ce,在連接該ce的接口的接口表項中也可以不設(shè)置其對應(yīng)的vtepip地址,默認(rèn)使用接入的nve整網(wǎng)唯一的vtepip地址作為其對應(yīng)的vtepip地址。
請參閱圖2,為本發(fā)明實施例提供的一種報文處理方法的流程示意圖。本實施例中所描述的報文處理方法應(yīng)用于圖1所示的nvo3網(wǎng)絡(luò)架構(gòu),其中,第一nve和第二nve作為本端nve,第一ce多歸接入第一nve和第二nve,第一nve和第二nve共用第一共享vtepip地址,該報文處理方法包括以下步驟:
s201、第一nve接收第一ce發(fā)送的第一報文,所述第一報文包括所述第一ce的介質(zhì)訪問控制mac地址和虛擬局域網(wǎng)標(biāo)識vlanid。
其中,該第一報文具體可以是已知單播報文,或者廣播、未知單播和組播(英文:broadcast、unknownunicastandmulticast,縮寫:bum)報文,該第一nve可以根據(jù)該第一報文的目的mac判斷該第一報文是已知單播報文還是bum報文。
具體的,該第一ce在發(fā)送該第一報文時,通過等價多路徑(英文:equalcostmultipath,縮寫:ecmp)算法從lag中選擇發(fā)送鏈路,假設(shè)該第一ce選擇與該第一nve之間的鏈路作為發(fā)送鏈路,則該第一nve接收到該第一報文。
其中,ce的ecmp算法一般會基于報文的五元組實現(xiàn)負(fù)載分擔(dān),即根據(jù)報文的源mac地址、目的mac地址、源ip地址、目的ip地址和udp/tcp協(xié)議端口號進(jìn)行散列(英文:hash)運算,進(jìn)而選擇其中一個物理鏈路發(fā)送報文。
s202、所述第一nve根據(jù)所述第一報文的入接口和所述vlanid確定所述第一ce的虛擬網(wǎng)絡(luò)標(biāo)識vni。
具體的,該第一nve可以根據(jù)接口、vlanid和vni之間的對應(yīng)關(guān)系確定該第一ce的vni,或者根據(jù)mac地址和vni的對應(yīng)關(guān)系確定該第一ce的vni,或者根據(jù)vlanid和vni的對應(yīng)關(guān)系確定該第一ce的vni,或者接口 和vni之間的對應(yīng)關(guān)系確定該第一ce的vni。
s203、所述第一nve對所述第一報文進(jìn)行nvo3封裝得到nvo3封裝的第一報文,所述nvo3封裝的第一報文包括所述第一ce的vni,所述nvo3封裝的第一報文的nvo3頭中的源ip地址為所述第一共享vtepip地址。
其中,nvo3封裝具體可以包括vxlan封裝、基于通用路由封裝的網(wǎng)絡(luò)虛擬化(英文:networkvirtualizationovergenericroutingencapsulation,縮寫:nvgre)封裝等。
具體的,在該第一nve確定該第一報文為已知單播報文時,該第一nve通過查找mac轉(zhuǎn)發(fā)表獲取該第一報文的出接口,如果出接口是本地接口,則該第一nve直接從本地接口轉(zhuǎn)發(fā)該第一報文。如果出接口不是本地接口,或者,該第一nve確定該第一報文為bum報文時,對該第一報文進(jìn)行nvo3封裝得到nvo3報文,該nvo3報文包括該第一ce的vni,且該nvo3報文的nvo3頭中的源ip地址為該第一nve和第二nve共用的該第一共享vtepip地址。
其中,對該第一報文進(jìn)行nvo3封裝時,該第一報文中的vlanid可以選擇保留或者剝?nèi)ァ?/p>
s204、所述第一nve向所述遠(yuǎn)端nve轉(zhuǎn)發(fā)所述nvo3封裝的第一報文,所述nvo3封裝的第一報文用于指示所述遠(yuǎn)端nve在mac轉(zhuǎn)發(fā)表中建立所述第一ce的mac地址、所述第一ce的vni和所述第一共享vtepip地址之間的映射關(guān)系。
具體的,該第一nve向該遠(yuǎn)端nve轉(zhuǎn)發(fā)該nvo3報文。該遠(yuǎn)端nve對該nvo3報文進(jìn)行解封裝,獲取該第一ce的mac地址、vni和該第一共享vtepip地址,并在mac轉(zhuǎn)發(fā)表中建立該第一ce的mac地址、vni和該第一共享vtepip地址之間的映射關(guān)系,從而該遠(yuǎn)端nve完成從數(shù)據(jù)層面上對該第一ce的mac地址的學(xué)習(xí)。
進(jìn)一步的,如果該第一ce選擇與該第二nve之間的鏈路作為發(fā)送鏈路,則該第二nve接收到該第一報文,同樣的,該第二nve在出接口不是本地接口,或者,該第二nve確定該第一報文為bum報文時,對該第一報文進(jìn)行nvo3封裝得到nvo3報文,其nvo3頭中的源ip地址也為該第一nve和該第二nve共用的該第一共享vtepip地址,在該第一ce通過該第二nve發(fā)送報文時,該遠(yuǎn)端nve也是在mac轉(zhuǎn)發(fā)表中建立該第一ce的mac地址、vni和該第一 共享vtepip地址之間的映射關(guān)系,從而可以實現(xiàn)該遠(yuǎn)端nve不感知該第一ce多歸接入到不同的nve上。因此,該第一ce多歸接入的鏈路發(fā)生故障時該遠(yuǎn)端nve不需要修改mac轉(zhuǎn)發(fā)表,同時該第一ce的mac地址在該遠(yuǎn)端nve上也不會發(fā)生跳變。
本發(fā)明實施例中,ce通過多歸接入的多個本端nve中的任意一個向遠(yuǎn)端nve發(fā)送報文,該任意一個本端nve對該報文進(jìn)行nvo3封裝時,使用該多個本端nve之間共用的共享vtepip地址作為nvo3頭中的源ip地址,從而使遠(yuǎn)端nve在mac轉(zhuǎn)發(fā)表中建立該ce的mac地址、vni與該共用的共享vtepip地址之間的映射關(guān)系。由于遠(yuǎn)端nve只能接收到與該ce對應(yīng)的一個ip地址,因此,該遠(yuǎn)端nve不感知該ce的多歸接入,該ce的mac地址在該遠(yuǎn)端nve上不會發(fā)生跳變,并且在該ce多歸接入的鏈路發(fā)生故障時該遠(yuǎn)端nve也不需要修改mac轉(zhuǎn)發(fā)表,從而大大降低了遠(yuǎn)端nve在維護(hù)mac轉(zhuǎn)發(fā)表時的負(fù)擔(dān),增強(qiáng)了網(wǎng)絡(luò)的可擴(kuò)展性。
請參閱圖3,為本發(fā)明實施例提供的另一種報文處理方法的流程示意圖。本實施例中所描述的報文處理方法應(yīng)用于圖4所示的nvo3網(wǎng)絡(luò)架構(gòu),其中,第一nve、第二nve和第三nve作為本端nve,第一ce和第二ce均多歸接入第一nve和第二nve,第三ce單歸接入第二nve,第四ce多歸接入第二nve和第三nve,第一nve和第二nve共用第一共享vtepip地址,第二nve和第三nve共用第二共享vtepip地址,該報文處理方法包括以下步驟:
其中,步驟s301~步驟s304與前面實施例中的步驟s201~步驟s204相同,本發(fā)明實施例此處不再贅述。
s305、所述第一nve接收所述第一ce發(fā)送的第二報文,在所述第二報文為bum報文時,若所述第一nve還連接第二ce,并且連接所述第二ce的接口對應(yīng)的vtepip地址為所述第一共享vtepip地址,則所述第一nve復(fù)制所述第二報文,并向所述第二ce轉(zhuǎn)發(fā)所述第二報文。
具體的,該第一nve根據(jù)該第二報文的目的mac地址判斷出該第二報文為bum報文時,根據(jù)存儲的接口表項判斷本地是否還連接有與該第一ce對應(yīng)同一個共享vtepip地址(即該第一共享vtepip地址)的ce,在確定存在對應(yīng)該第一共享vtepip地址的第二ce時,該第一nve直接向該第二ce復(fù)制 并轉(zhuǎn)發(fā)該第二報文。
s306、在所述第二報文為bum報文時,所述第一nve復(fù)制所述第二報文,對所述第二報文進(jìn)行nvo3封裝得到nvo3封裝的第二報文,并向所述第二nve和所述第三nve轉(zhuǎn)發(fā)所述nvo3封裝的第二報文。
所述nvo3封裝的第二報文的nvo3頭中的源ip地址為所述第一共享vtepip地址,所述nvo3封裝的第二報文用于指示接收所述nvo3封裝的第二報文的nve根據(jù)存儲的接口表項對比所述第一共享vtepip地址和所述nve連接ce的接口對應(yīng)的vtepip地址,并向第一接口轉(zhuǎn)發(fā)解封裝得到的所述第二報文,以及不向第二接口轉(zhuǎn)發(fā)解封裝得到的所述第二報文,其中,所述第一接口對應(yīng)的vtepip地址與所述第一共享vtepip地址不同,并且所述第一接口為指定轉(zhuǎn)發(fā)者df狀態(tài),所述第二接口對應(yīng)的vtepip地址與所述第一共享vtepip地址相同。
其中,該第一nve、該第二nve和該第三nve的vni相同。
具體的,該第一nve根據(jù)該第二報文的目的mac地址判斷出該第二報文為bum報文時,對該第二報文進(jìn)行nvo3封裝得到nvo3報文,向該第二nve和該第三nve轉(zhuǎn)發(fā)的nvo3報文的nvo3頭中的源ip地址均為該第一共享vtepip地址,目的ip地址分別為該第二nve和該第三nve整網(wǎng)唯一的vtepip地址,該第二nve對接收到的nvo3報文進(jìn)行解封裝得到該第二報文,并從各個連接ce的接口對應(yīng)的接口表項獲取對應(yīng)的vtepip地址,其中,連接該第二ce的接口對應(yīng)該第一共享vtepip地址,連接該第三ce的接口對應(yīng)該第二nve整網(wǎng)唯一的vtepip地址,連接該第四ce的接口對應(yīng)該第二共享vtepip地址。該第二nve將連接該第二ce的接口、連接該第三ce的接口和連接該第四ce的接口對應(yīng)的vtepip地址分別與該第一共享vtepip地址進(jìn)行對比,確定連接該第二ce的接口對應(yīng)的vtepip地址與該第一共享vtepip地址相同,則不向該第二ce轉(zhuǎn)發(fā)該第二報文。對于單歸接入的該第三ce,該第二nve確定連接該第三ce的接口對應(yīng)的vtepip地址與該第一共享vtepip地址不相同,則向該第三ce轉(zhuǎn)發(fā)該第二報文。
進(jìn)一步的,該第二nve確定連接該第四ce的接口對應(yīng)的vtepip地址與該第一共享vtepip地址不相同,則可以通過邊界網(wǎng)關(guān)協(xié)議(英文:bordergatewayprotocol,縮寫:bgp)與該第三nve根據(jù)存儲的接口表項確定出為df 狀態(tài)的接口,假設(shè)該第二nve與該第三nve確定出該第三nve上的接口為df狀態(tài),則該第三nve向該第四ce轉(zhuǎn)發(fā)該第二報文,而該第二nve不向該第四ce轉(zhuǎn)發(fā)該第二報文。
需要說明的是,對于單歸接入的ce對應(yīng)的接口,nve也可以不設(shè)置接口表項,從而不進(jìn)行vtepip地址的對比而直接向單歸接入的ce轉(zhuǎn)發(fā)報文。
本發(fā)明實施例中,ce通過多歸接入的多個本端nve中的任意一個向遠(yuǎn)端nve發(fā)送報文,該任意一個本端nve對該報文進(jìn)行nvo3封裝時,使用該多個本端nve之間共用的共享vtepip地址作為nvo3頭中的源ip地址,從而使遠(yuǎn)端nve在mac轉(zhuǎn)發(fā)表中建立該ce的mac地址、vni與該共用的共享vtepip地址之間的映射關(guān)系。由于遠(yuǎn)端nve只能接收到與該ce對應(yīng)的一個ip地址,因此,該遠(yuǎn)端nve不感知該ce的多歸接入,該ce的mac地址在該遠(yuǎn)端nve上不會發(fā)生跳變,并且在該ce多歸接入的鏈路發(fā)生故障時該遠(yuǎn)端nve也不需要修改mac轉(zhuǎn)發(fā)表,從而大大降低了遠(yuǎn)端nve在維護(hù)mac轉(zhuǎn)發(fā)表時的負(fù)擔(dān),增強(qiáng)了網(wǎng)絡(luò)的可擴(kuò)展性。
進(jìn)一步的,本端nve對于接收到的本地ce發(fā)送的bum報文,在該本端nve還連接與該本地ce對應(yīng)同一個共享vtepip地址的ce時,該本端nve直接向該ce轉(zhuǎn)發(fā)該bum報文,對該bum報文進(jìn)行nvo3封裝得到nvo3報文,并向其它本端nve轉(zhuǎn)發(fā)該nvo3報文,其nvo3頭中的源ip地址為該共用的共享vtepip地址,使接收該nvo3報文的nve根據(jù)存儲的接口表項對比該共用的共享vtepip地址和該nve連接ce的接口對應(yīng)的vtepip地址,并向?qū)?yīng)的vtepip地址與該共用的共享vtepip地址不同,并且為df狀態(tài)的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文,以及不向?qū)?yīng)的vtepip地址與該共用的共享vtepip地址相同的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文,從而可以防止本端nve之間轉(zhuǎn)發(fā)bum報文時產(chǎn)生環(huán)路。
請參閱圖5,本發(fā)明實施例提供的一種報文處理裝置的結(jié)構(gòu)示意圖。本實施例中所描述的報文處理裝置應(yīng)用于圖4所示的nvo3網(wǎng)絡(luò)架構(gòu),其中,報文處理裝置作為第一nve,第一nve、第二nve和第三nve作為本端nve,第一ce和第二ce均多歸接入第一nve和第二nve,第三ce單歸接入第二nve,第四ce多歸接入第二nve和第三nve,第一nve和第二nve共用第一共享 vtepip地址,第二nve和第三nve共用第二共享vtepip地址,該報文處理裝置包括:
接收模塊501,用于接收第一ce發(fā)送的第一報文,所述第一報文包括所述第一ce的mac地址和vlanid。
確定模塊502,用于根據(jù)所述第一報文的入接口和所述vlanid確定所述第一ce的vni。
具體的,確定模塊502可以根據(jù)接口、vlanid和vni之間的對應(yīng)關(guān)系確定該第一ce的vni,或者根據(jù)mac地址和vni的對應(yīng)關(guān)系確定該第一ce的vni,或者根據(jù)vlanid和vni的對應(yīng)關(guān)系確定該第一ce的vni,或者接口和vni之間的對應(yīng)關(guān)系確定該第一ce的vni。
封裝模塊503,用于對所述第一報文進(jìn)行nvo3封裝得到nvo3封裝的第一報文,所述nvo3封裝的第一報文包括所述第一ce的vni,所述nvo3封裝的第一報文的nvo3頭中的源ip地址為所述第一共享vtepip地址。
轉(zhuǎn)發(fā)模塊504,用于向所述遠(yuǎn)端nve轉(zhuǎn)發(fā)所述nvo3封裝的第一報文,所述nvo3封裝的第一報文用于指示所述遠(yuǎn)端nve在mac轉(zhuǎn)發(fā)表中建立所述第一ce的mac地址、所述第一ce的vni和所述第一共享vtepip地址之間的映射關(guān)系。
具體的,封裝模塊503在確定該第一報文為已知單播報文時,通過查找mac轉(zhuǎn)發(fā)表獲取該第一報文的出接口,如果出接口是本地接口,則通知轉(zhuǎn)發(fā)模塊504直接從本地接口轉(zhuǎn)發(fā)該第一報文。如果出接口不是本地接口,或者,確定該第一報文為bum報文時,封裝模塊503對該第一報文進(jìn)行nvo3封裝得到nvo3報文,該nvo3報文包括該第一ce的vni,且該nvo3報文的nvo3頭中的源ip地址為該第一nve和第二nve共用的該第一共享vtepip地址。
其中,封裝模塊503對該第一報文進(jìn)行nvo3封裝時,該第一報文中的vlanid可以選擇保留或者剝?nèi)ァ?/p>
進(jìn)一步的,轉(zhuǎn)發(fā)模塊504向該遠(yuǎn)端nve轉(zhuǎn)發(fā)該nvo3報文。該遠(yuǎn)端nve對該nvo3報文進(jìn)行解封裝,獲取該第一ce的mac地址、vni和該第一共享vtepip地址,并在mac轉(zhuǎn)發(fā)表中建立該第一ce的mac地址、vni和該第一共享vtepip地址之間的映射關(guān)系,從而該遠(yuǎn)端nve完成從數(shù)據(jù)層面上對該第一ce的mac地址的學(xué)習(xí)。
進(jìn)一步的,如果該第一ce選擇與該第二nve之間的鏈路作為發(fā)送鏈路,則該第二nve接收到該第一報文,同樣的,該第二nve在出接口不是本地接口,或者,該第二nve確定該第一報文為bum報文時,對該第一報文進(jìn)行nvo3封裝得到nvo3報文,其nvo3頭中的源ip地址也為該第一nve和該第二nve共用的該第一共享vtepip地址,從而在該第一ce通過該第二nve發(fā)送報文時,該遠(yuǎn)端nve也是在mac轉(zhuǎn)發(fā)表中建立該第一ce的mac地址、vni和該第一共享vtepip地址之間的映射關(guān)系,從而可以實現(xiàn)該遠(yuǎn)端nve不感知該第一ce多歸接入到不同的nve上。因此,該第一ce多歸接入的鏈路發(fā)生故障時該遠(yuǎn)端nve不需要修改mac轉(zhuǎn)發(fā)表,同時該第一ce的mac地址在該遠(yuǎn)端nve上也不會發(fā)生跳變。
本發(fā)明實施例中,ce通過多歸接入的多個本端nve中的任意一個向遠(yuǎn)端nve發(fā)送報文,該任意一個本端nve對該報文進(jìn)行nvo3封裝時,使用該多個本端nve之間共用的共享vtepip地址作為nvo3頭中的源ip地址,從而使遠(yuǎn)端nve在mac轉(zhuǎn)發(fā)表中建立該ce的mac地址、vni與該共用的共享vtepip地址之間的映射關(guān)系。由于遠(yuǎn)端nve只能接收到與該ce對應(yīng)的一個ip地址,因此,該遠(yuǎn)端nve不感知該ce的多歸接入,該ce的mac地址在該遠(yuǎn)端nve上不會發(fā)生跳變,并且在該ce多歸接入的鏈路發(fā)生故障時該遠(yuǎn)端nve也不需要修改mac轉(zhuǎn)發(fā)表,從而大大降低了遠(yuǎn)端nve在維護(hù)mac轉(zhuǎn)發(fā)表時的負(fù)擔(dān),增強(qiáng)了網(wǎng)絡(luò)的可擴(kuò)展性。
在一些可行的實施方式中,
所述接收模塊501,還用于接收所述第一ce發(fā)送的第二報文,所述第二報文為bum報文。
若所述報文處理裝置還連接第二ce,并且連接所述第二ce的接口對應(yīng)的vtepip地址為所述第一共享vtepip地址,則:
所述轉(zhuǎn)發(fā)模塊504,還用于向所述第二ce復(fù)制并轉(zhuǎn)發(fā)所述第二報文。
具體的,封裝模塊503根據(jù)該第二報文的目的mac地址判斷出該第二報文為bum報文時,轉(zhuǎn)發(fā)模塊504根據(jù)存儲的接口表項判斷該報文處理裝置本地是否還連接有與該第一ce對應(yīng)同一個共享vtepip地址(即該第一共享vtepip地址)的ce,在確定存在對應(yīng)該第一共享vtepip地址的第二ce時,該第一nve直接向該第二ce復(fù)制并轉(zhuǎn)發(fā)該第二報文。
所述封裝模塊503,還用于復(fù)制所述第二報文,對所述第二報文進(jìn)行nvo3封裝得到nvo3封裝的第二報文;
所述轉(zhuǎn)發(fā)模塊504,還用于向所述第二nve和所述第三nve轉(zhuǎn)發(fā)所述nvo3封裝的第二報文,所述nvo3封裝的第二報文的nvo3頭中的源ip地址為所述第一共享vtepip地址。
其中,所述nvo3封裝的第二報文用于指示接收所述nvo3封裝的第二報文的nve根據(jù)存儲的接口表項對比所述第一共享vtepip地址和所述nve連接ce的接口對應(yīng)的vtepip地址,并向第一接口轉(zhuǎn)發(fā)解封裝得到的所述第二報文,以及不向第二接口轉(zhuǎn)發(fā)解封裝得到的所述第二報文,其中,所述第一接口對應(yīng)的vtepip地址與所述第一共享vtepip地址不同,并且所述第一接口為df狀態(tài),所述第二接口對應(yīng)的vtepip地址與所述第一共享vtepip地址相同。
本發(fā)明實施例中,本端nve對于接收到的本地ce發(fā)送的bum報文,在該本端nve還連接與該本地ce對應(yīng)同一個共享vtepip地址的ce時,該本端nve直接向該ce轉(zhuǎn)發(fā)該bum報文,對該bum報文進(jìn)行nvo3封裝得到nvo3報文,并向其它本端nve轉(zhuǎn)發(fā)該nvo3報文,其nvo3頭中的源ip地址為該共用的共享vtepip地址,使接收該nvo3報文的nve根據(jù)存儲的接口表項對比該共用的共享vtepip地址和該nve連接ce的接口對應(yīng)的vtepip地址,并向?qū)?yīng)的vtepip地址與該共用的共享vtepip地址不同,并且為df狀態(tài)的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文,以及不向?qū)?yīng)的vtepip地址與該共用的共享vtepip地址相同的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文,從而可以防止本端nve之間轉(zhuǎn)發(fā)bum報文時產(chǎn)生環(huán)路。
請參閱圖6,為本發(fā)明實施例提供的又一種報文處理方法的流程示意圖。本實施例中所描述的報文處理方法應(yīng)用于圖1所示的nvo3網(wǎng)絡(luò)架構(gòu),其中,第一nve和第二nve作為本端nve,第一ce多歸接入第一nve和第二nve,第一nve和第二nve共用第一共享vtepip地址,該報文處理方法包括以下步驟:
s601、遠(yuǎn)端nve接收第一nve轉(zhuǎn)發(fā)的nvo3封裝的第一報文,所述nvo3封裝的第一報文包括第一ce的vni,所述nvo3封裝的第一報文的nvo3頭中的源ip地址為所述第一共享vtepip地址,所述第一報文由所述第一ce向 所述第一nve發(fā)送,所述第一報文包括所述第一ce的mac地址和vlanid,所述第一ce的vni由所述第一nve根據(jù)所述第一報文的入接口和所述vlanid確定。
s602、所述遠(yuǎn)端nve對所述nvo3封裝的第一報文進(jìn)行解封裝,并在mac轉(zhuǎn)發(fā)表中建立所述第一ce的mac地址、所述第一ce的vni和所述第一共享vtepip地址之間的映射關(guān)系。
具體的,該第一ce選擇與該第一nve之間的鏈路作為發(fā)送鏈路,則在該第一報文為已知單播報文,并且該第一報文對應(yīng)的出接口不是本地接口時,或者,在該第一報文為bum報文時,該第一nve對該第一報文進(jìn)行nvo3封裝得到nvo3報文,其nvo3頭中的源ip地址為該第一共享vtepip地址,并向該遠(yuǎn)端nve轉(zhuǎn)發(fā)該nvo3報文。該遠(yuǎn)端nve對該nvo3報文進(jìn)行解封裝,獲取該第一ce的mac地址、vni和該第一共享vtepip地址,并在mac轉(zhuǎn)發(fā)表中建立該第一ce的mac地址、vni和該第一共享vtepip地址之間的映射關(guān)系,從而該遠(yuǎn)端nve完成從數(shù)據(jù)層面上對該第一ce的mac地址的學(xué)習(xí)。
進(jìn)一步的,如果該第一ce選擇與該第二nve之間的鏈路作為發(fā)送鏈路,則該第二nve接收到該第一報文,同樣的,該第二nve在出接口不是本地接口,或者,該第二nve確定該第一報文為bum報文時,對該第一報文進(jìn)行nvo3封裝得到的nvo3報文,其nvo3頭中的源ip地址也為該第一nve和該第二nve共用的該第一共享vtepip地址,在該第一ce通過該第二nve發(fā)送報文時,該遠(yuǎn)端nve也是在mac轉(zhuǎn)發(fā)表中建立該第一ce的mac地址、vni和該第一共享vtepip地址之間的映射關(guān)系,從而可以實現(xiàn)該遠(yuǎn)端nve不感知該第一ce的多歸接入到不同的nve上。因此,在該第一ce多歸接入的鏈路發(fā)生故障時該遠(yuǎn)端nve不需要修改mac轉(zhuǎn)發(fā)表,同時該第一ce的mac地址在該遠(yuǎn)端nve上也不會發(fā)生跳變。
在一些可行的實施方式中,遠(yuǎn)端nve接收到連接該遠(yuǎn)端nve的ce發(fā)往該第一ce的單播報文時,查詢mac轉(zhuǎn)發(fā)表后確定該第一ce的mac地址與該第一共享vtepip地址對應(yīng),則對該單播報文進(jìn)行nvo3封裝,將得到的nvo3封裝的單播報文的nvo3頭中的目的ip地址設(shè)為該第一共享vtepip地址,進(jìn)而經(jīng)過ecmp算法之后,共用該第一共享vtepip地址的該第一nve和該第二nve中的其中一個接收到該nvo3封裝的單播報文,并在解封裝后將該單播報 文轉(zhuǎn)發(fā)給該第一ce。
本發(fā)明實施例中,遠(yuǎn)端nve接收ce通過多歸接入的多個本端nve中的任意一個本端nve發(fā)送的報文,該任意一個本端nve對該報文進(jìn)行nvo3封裝時,使用該多個本端nve之間共用的共享vtepip地址作為nvo3頭中的源ip地址,從而遠(yuǎn)端nve在mac轉(zhuǎn)發(fā)表中建立該ce的mac地址、vni與該共用的共享vtepip地址之間的映射關(guān)系。由于遠(yuǎn)端nve只能接收到與該ce對應(yīng)的一個ip地址,因此,該遠(yuǎn)端nve不感知該ce的多歸接入,該ce的mac地址在該遠(yuǎn)端nve上不會發(fā)生跳變,并且在該ce多歸接入的鏈路發(fā)生故障時該遠(yuǎn)端nve也不需要修改mac轉(zhuǎn)發(fā)表,從而大大降低了遠(yuǎn)端nve在維護(hù)mac轉(zhuǎn)發(fā)表時的負(fù)擔(dān),增強(qiáng)了網(wǎng)絡(luò)的可擴(kuò)展性。
請參閱圖7,為本發(fā)明實施例提供的又一種報文處理方法的流程示意圖。本實施例中所描述的報文處理方法應(yīng)用于圖1所示的nvo3網(wǎng)絡(luò)架構(gòu),其中,第一nve和第二nve作為本端nve,第一ce多歸接入第一nve和第二nve,第一nve和第二nve共用第一共享vtepip地址,所述遠(yuǎn)端nve和所述第二nve共用第二共享vtepip地址,該報文處理方法包括以下步驟:
其中,步驟s701和步驟s702與前面實施例中的步驟s601和步驟s602相同,本發(fā)明實施例此處不再贅述。
s703、所述遠(yuǎn)端nve接收與所述遠(yuǎn)端nve連接的ce發(fā)送的bum報文,并對所述bum報文進(jìn)行nvo3封裝,得到nvo3封裝的bum報文,所述nvo3封裝的bum報文的nvo3頭中的源ip地址為所述第二共享vtepip地址。
s704、所述遠(yuǎn)端nve向所述第一nve和第二nve轉(zhuǎn)發(fā)所述nvo3封裝的bum報文,所述nvo3封裝的bum報文用于指示接收所述nvo3封裝的bum報文的nve根據(jù)存儲的接口表項對比所述第二共享vtepip地址和所述nve連接ce的接口對應(yīng)的vtepip地址,并向第一接口轉(zhuǎn)發(fā)解封裝得到的所述bum報文,以及不向第二接口轉(zhuǎn)發(fā)解封裝得到的所述bum報文,其中,所述第一接口對應(yīng)的vtepip地址與所述第二共享vtepip地址不同,并且所述第一接口為df狀態(tài),所述第二接口對應(yīng)的vtepip地址與所述第二共享vtepip地址相同。
具體的,該遠(yuǎn)端nve接收到該遠(yuǎn)端nve本地側(cè)發(fā)送的bum報文時,對該 bum報文進(jìn)行nvo3封裝得到nvo3封裝的bum報文,分別向該第一nve和該第二nve轉(zhuǎn)發(fā)該nvo3封裝的bum報文,其nvo3頭中的源ip地址為該第二共享vtepip地址,其nvo3頭中目的ip地址分別為該第一nve和該第二nve整網(wǎng)唯一的vtepip地址。該第一nve和該第二nve接收到該nvo3封裝的bum報文之后,分別根據(jù)存儲的接口表項對比該第二共享vtepip地址和各自連接ce的接口對應(yīng)的vtepip地址,并向?qū)?yīng)的vtepip地址與該第二共享vtepip地址不同,并且為df狀態(tài)的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文,以及不向?qū)?yīng)的vtepip地址與該第二共享vtepip地址相同的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文。
本發(fā)明實施例中,遠(yuǎn)端nve接收ce通過多歸接入的多個本端nve中的任意一個本端nve發(fā)送的報文,該任意一個本端nve對該報文進(jìn)行nvo3封裝時,使用該多個本端nve之間共用的共享vtepip地址作為nvo3頭中的源ip地址,從而遠(yuǎn)端nve在mac轉(zhuǎn)發(fā)表中建立該ce的mac地址、vni與該共用的共享vtepip地址之間的映射關(guān)系。由于遠(yuǎn)端nve只能接收到與該ce對應(yīng)的一個ip地址,因此,該遠(yuǎn)端nve不感知該ce的多歸接入,該ce的mac地址在該遠(yuǎn)端nve上不會發(fā)生跳變,并且在該ce多歸接入的鏈路發(fā)生故障時該遠(yuǎn)端nve也不需要修改mac轉(zhuǎn)發(fā)表,從而大大降低了遠(yuǎn)端nve在維護(hù)mac轉(zhuǎn)發(fā)表時的負(fù)擔(dān),增強(qiáng)了網(wǎng)絡(luò)的可擴(kuò)展性。
進(jìn)一步的,該遠(yuǎn)端nve向該多個本端nve轉(zhuǎn)發(fā)nvo3封裝的bum報文,使得接收該nvo3封裝的bum報文的本端nve,根據(jù)存儲的接口表項對比該遠(yuǎn)端nve的共享vtepip地址和該本端nve連接ce的接口對應(yīng)的vtepip地址,并向?qū)?yīng)的vtepip地址與該遠(yuǎn)端nve的共享vtepip地址不同,并且為df狀態(tài)的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文,以及不向?qū)?yīng)的vtepip地址與該遠(yuǎn)端nve的共享vtepip地址相同的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文。對于該遠(yuǎn)端nve轉(zhuǎn)發(fā)的bum報文,只由該多個本端nve中的一個向本地ce轉(zhuǎn)發(fā),從而可以防止本端nve連接的ce重復(fù)接收到遠(yuǎn)端nve轉(zhuǎn)發(fā)的bum報文。
請參閱圖8,為本發(fā)明實施例提供的另一種報文處理裝置的結(jié)構(gòu)示意圖。本實施例中所描述的報文處理裝置應(yīng)用于圖1所示的nvo3網(wǎng)絡(luò)架構(gòu),其中,報 文處理裝置作為遠(yuǎn)端nve,第一nve和第二nve作為本端nve,第一ce多歸接入第一nve和第二nve,第一nve和第二nve共用第一共享vtepip地址,該報文處理裝置包括:
接收模塊801,用于接收第一nve轉(zhuǎn)發(fā)的nvo3封裝的第一報文,所述nvo3封裝的第一報文包括第一ce的vni,所述nvo3封裝的第一報文的nvo3頭中的源ip地址為所述第一共享vtepip地址,所述第一報文由所述第一ce向所述第一nve發(fā)送,所述第一報文包括所述第一ce的mac地址和vlanid,所述第一ce的vni由所述第一nve根據(jù)所述第一報文的入接口和所述vlanid確定。
處理模塊802,用于對所述nvo3封裝的第一報文進(jìn)行解封裝。
建立模塊803,用于在mac轉(zhuǎn)發(fā)表中建立所述第一ce的mac地址、所述第一ce的vni和所述第一共享vtepip地址之間的映射關(guān)系。
具體的,處理模塊802對接收模塊801接收到的該nvo3封裝的第一報文進(jìn)行解封裝,獲取該第一ce的mac地址、vni和該第一共享vtepip地址,建立模塊803在mac轉(zhuǎn)發(fā)表中建立該第一ce的mac地址、vni和該第一共享vtepip地址之間的映射關(guān)系,從而該報文處理裝置(即遠(yuǎn)端nve)完成從數(shù)據(jù)層面上對該第一ce的mac地址的學(xué)習(xí)。
本發(fā)明實施例中,遠(yuǎn)端nve接收ce通過多歸接入的多個本端nve中的任意一個本端nve發(fā)送的報文,該任意一個本端nve對該報文進(jìn)行nvo3封裝時,使用該多個本端nve之間共用的共享vtepip地址作為nvo3頭中的源ip地址,從而遠(yuǎn)端nve在mac轉(zhuǎn)發(fā)表中建立該ce的mac地址、vni與該共用的共享vtepip地址之間的映射關(guān)系。由于遠(yuǎn)端nve只能接收到與該ce對應(yīng)的一個ip地址,因此,該遠(yuǎn)端nve不感知該ce的多歸接入,該ce的mac地址在該遠(yuǎn)端nve上不會發(fā)生跳變,并且在該ce多歸接入的鏈路發(fā)生故障時該遠(yuǎn)端nve也不需要修改mac轉(zhuǎn)發(fā)表,從而大大降低了遠(yuǎn)端nve在維護(hù)mac轉(zhuǎn)發(fā)表時的負(fù)擔(dān),增強(qiáng)了網(wǎng)絡(luò)的可擴(kuò)展性。
在一些可行的實施方式中,所述報文處理裝置和所述第二nve共用第二共享vtepip地址,
所述接收模塊801,還用于接收與所述報文處理裝置連接的ce發(fā)送的bum報文。
所述處理模塊802,還用于對所述bum報文進(jìn)行nvo3封裝,得到nvo3封裝的bum報文,所述nvo3封裝的bum報文的nvo3頭中的源ip地址為所述第二共享vtepip地址。
其中,所述報文處理裝置還包括:
轉(zhuǎn)發(fā)模塊804,用于向所述第一nve和所述第二nve轉(zhuǎn)發(fā)所述nvo3封裝的bum報文,所述nvo3封裝的bum報文用于指示接收所述nvo3封裝的bum報文的nve根據(jù)存儲的接口表項對比所述第二共享vtepip地址和所述nve連接ce的接口對應(yīng)的vtepip地址,并向第一接口轉(zhuǎn)發(fā)解封裝得到的所述bum報文,以及不向第二接口轉(zhuǎn)發(fā)解封裝得到的所述bum報文,其中,所述第一接口對應(yīng)的vtepip地址與所述第二共享vtepip地址不同,并且所述第一接口為df狀態(tài),所述第二接口對應(yīng)的vtepip地址與所述第二共享vtepip地址相同。
具體的,接收模塊801接收到該報文處理裝置本地側(cè)發(fā)送的bum報文時,處理模塊802對該bum報文進(jìn)行nvo3封裝得到nvo3封裝的bum報文,轉(zhuǎn)發(fā)模塊804分別向該第一nve和該第二nve轉(zhuǎn)發(fā)該nvo3封裝的bum報文,其nvo3頭中的源ip地址為該第二共享vtepip地址,其nvo3頭中目的ip地址分別為該第一nve和該第二nve整網(wǎng)唯一的vtepip地址。該第一nve和該第二nve接收到該nvo3封裝的bum報文之后,分別根據(jù)存儲的接口表項對比該第二共享vtepip地址和各自連接ce的接口對應(yīng)的vtepip地址,并向?qū)?yīng)的vtepip地址與該第二共享vtepip地址不同,并且為df狀態(tài)的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文,以及不向?qū)?yīng)的vtepip地址與該第二共享vtepip地址相同的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文。
本發(fā)明實施例中,該遠(yuǎn)端nve向該多個本端nve轉(zhuǎn)發(fā)nvo3封裝的bum報文,使得接收該nvo3封裝的bum報文的本端nve,根據(jù)存儲的接口表項對比該遠(yuǎn)端nve的共享vtepip地址和該本端nve連接ce的接口對應(yīng)的vtepip地址,并向?qū)?yīng)的vtepip地址與該遠(yuǎn)端nve的共享vtepip地址不同,并且為df狀態(tài)的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文,以及不向?qū)?yīng)的vtepip地址與該遠(yuǎn)端nve的共享vtepip地址相同的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文。對于該遠(yuǎn)端nve轉(zhuǎn)發(fā)的bum報文,只由該多個本端nve中的一個向本地ce轉(zhuǎn)發(fā),從而可以防止本端nve連接的ce重復(fù)接收到遠(yuǎn)端nve 轉(zhuǎn)發(fā)的bum報文。
請參閱圖9,為本發(fā)明實施例提供的一種nvo3網(wǎng)絡(luò)系統(tǒng)的結(jié)構(gòu)示意圖。本實施例中所描述的nvo3網(wǎng)絡(luò)系統(tǒng),包括第一ce、第二ce、第一nve、第二nve、第三nve和遠(yuǎn)端nve,第一nve、第二nve和第三nve作為本端nve,第一ce和第二ce均多歸接入第一nve和第二nve,第一nve和第二nve共用第一共享vtepip地址,第二nve和第三nve共用第二共享vtepip地址,其中:
所述第一nve,用于接收所述第一ce發(fā)送的第一報文,所述第一報文包括所述第一ce的mac地址和vlanid。
所述第一nve,還用于根據(jù)所述第一報文的入接口和所述vlanid確定所述第一ce的vni,并對所述第一報文進(jìn)行nvo3封裝得到nvo3封裝的第一報文,所述nvo3封裝的第一報文包括所述第一ce的vni,所述nvo3封裝的第一報文的nvo3頭中源ip地址為所述第一共享vtepip地址。
所述第一nve,還用于向所述遠(yuǎn)端nve轉(zhuǎn)發(fā)所述nvo3封裝的第一報文。
所述遠(yuǎn)端nve,用于對接收到的所述nvo3封裝的第一報文進(jìn)行解封裝,并在mac轉(zhuǎn)發(fā)表中建立所述第一ce的mac地址、所述第一ce的vni和所述第一共享vtepip地址之間的映射關(guān)系。
進(jìn)一步的,所述第一nve,還用于接收所述第一ce發(fā)送的第二報文,所述第二報文為bum報文。
所述第一nve,還用于復(fù)制所述第二報文,對所述第二報文進(jìn)行nvo3封裝得到nvo3封裝的第二報文,并向所述第二nve和所述第三nve轉(zhuǎn)發(fā)所述nvo3封裝的第二報文,所述nvo3封裝的第二報文的nvo3頭中源ip地址為所述第一共享vtepip地址。
所述第二nve,用于在接收到所述nvo3封裝的第二報文之后,根據(jù)存儲的接口表項對比所述第一共享vtepip地址和所述第二nve連接ce的接口對應(yīng)的vtepip地址,并向第一接口轉(zhuǎn)發(fā)解封裝得到的所述第二報文,以及不向第二接口轉(zhuǎn)發(fā)解封裝得到的所述第二報文,其中,所述第一接口對應(yīng)的vtepip地址與所述第一共享vtepip地址不同,并且所述第一接口為df狀態(tài),所述第二接口對應(yīng)的vtepip地址與所述第一共享vtepip地址相同。
所述第三nve,用于在接收到所述nvo3封裝的第二報文之后,根據(jù)存儲的接口表項對比所述第一共享vtepip地址和所述第三nve連接ce的接口對應(yīng)的vtepip地址,并向第三接口轉(zhuǎn)發(fā)解封裝得到的所述第二報文,以及不向第四接口轉(zhuǎn)發(fā)解封裝得到的所述第二報文,其中,所述第三接口對應(yīng)的vtepip地址與所述第一共享vtepip地址不同,并且所述第三接口為df狀態(tài),所述第四接口對應(yīng)的vtepip地址與所述第一共享vtepip地址相同。
其中,每個接口表項包括連接ce的接口、所述接口對應(yīng)的vtepip地址、以及所述接口的狀態(tài),所述狀態(tài)包括df狀態(tài)或者非df狀態(tài);其中,連接多歸接入nve的ce的接口對應(yīng)的vtepip地址為所述ce多歸接入的多個nve的共享vtepip地址,連接單歸接入nve的ce的接口對應(yīng)的vtepip地址為所述ce單歸接入的nve的整網(wǎng)唯一的vtepip地址。
進(jìn)一步的,若所述第一nve還連接第二ce,并且連接所述第二ce的接口對應(yīng)的vtepip地址為所述第一共享vtepip地址,則:
所述第一nve,還用于向所述第二ce復(fù)制并轉(zhuǎn)發(fā)所述第二報文。
本發(fā)明實施例中,ce通過多歸接入的多個本端nve中的任意一個向遠(yuǎn)端nve發(fā)送報文,該任意一個本端nve對該報文進(jìn)行nvo3封裝時,使用該多個本端nve之間共用的共享vtepip地址作為nvo3頭中的源ip地址,從而使遠(yuǎn)端nve在mac轉(zhuǎn)發(fā)表中建立該ce的mac地址、vni與該共用的共享vtepip地址之間的映射關(guān)系。由于遠(yuǎn)端nve只能接收到與該ce對應(yīng)的一個ip地址,因此,該遠(yuǎn)端nve不感知該ce的多歸接入,該ce的mac地址在該遠(yuǎn)端nve上不會發(fā)生跳變,并且在該ce多歸接入的鏈路發(fā)生故障時該遠(yuǎn)端nve也不需要修改mac轉(zhuǎn)發(fā)表,從而大大降低了遠(yuǎn)端nve在維護(hù)mac轉(zhuǎn)發(fā)表時的負(fù)擔(dān),增強(qiáng)了網(wǎng)絡(luò)的可擴(kuò)展性。
進(jìn)一步的,本端nve對于接收到的本地ce發(fā)送的bum報文,在該本端nve還連接與該本地ce對應(yīng)同一個共享vtepip地址的ce時,該本端nve直接向該ce轉(zhuǎn)發(fā)該bum報文,對該bum報文進(jìn)行nvo3封裝得到nvo3報文,并向其它本端nve轉(zhuǎn)發(fā)該nvo3報文,其nvo3頭中的源ip地址為該共用的共享vtepip地址,使接收該nvo3報文的nve根據(jù)存儲的接口表項對比該共用的共享vtepip地址和該nve連接ce的接口對應(yīng)的vtepip地址,并向?qū)?yīng)的vtepip地址與該共用的共享vtepip地址不同,并且為df狀態(tài)的 接口轉(zhuǎn)發(fā)解封裝得到的該bum報文,以及不向?qū)?yīng)的vtepip地址與該共用的共享vtepip地址相同的接口轉(zhuǎn)發(fā)解封裝得到的該bum報文,從而可以防止本端nve之間轉(zhuǎn)發(fā)bum報文時產(chǎn)生環(huán)路。
請參閱圖10,為本發(fā)明實施例提供的一種報文處理設(shè)備的結(jié)構(gòu)示意圖。本實施例中所描述的報文處理設(shè)備,包括:發(fā)射器1000、接收器2000、處理器3000和存儲器4000,上述發(fā)射器1000、接收器2000、處理器3000和存儲器4000可以通過總線5000連接,也可以以其它方式連接,上述存儲器4000可以存儲程序代碼,上述處理器3000可以調(diào)用存儲器4000中的程序代碼執(zhí)行相應(yīng)的操作,該報文處理設(shè)備可以應(yīng)用于圖1所示的nvo3網(wǎng)絡(luò)架構(gòu),其中,該報文處理設(shè)備作為第一nve,第一nve和第二nve作為本端nve,第一ce多歸接入第一nve和第二nve,第一nve和第二nve共用第一共享vtepip地址,其中:
上述接收器2000,用于接收所述第一ce發(fā)送的第一報文,所述第一報文包括所述第一ce的mac地址和vlanid。
上述處理器3000,用于根據(jù)所述第一報文的入接口和所述vlanid確定所述第一ce的vni。
上述處理器3000,還用于對所述第一報文進(jìn)行nvo3封裝得到nvo3封裝的第一報文,所述nvo3封裝的第一報文包括所述第一ce的vni,所述nvo3封裝的第一報文的nvo3頭中的源ip地址為所述第一共享vtepip地址。
上述發(fā)射器1000,用于向所述遠(yuǎn)端nve轉(zhuǎn)發(fā)所述nvo3封裝的第一報文,所述nvo3封裝的第一報文用于指示所述遠(yuǎn)端nve在mac轉(zhuǎn)發(fā)表中建立所述第一ce的mac地址、所述第一ce的vni和所述第一共享vtepip地址之間的映射關(guān)系。
在一些可行的實施方式中,所述nvo3網(wǎng)絡(luò)系統(tǒng)還包括第三nve,所述第二nve和所述第三nve共用第二共享vtepip地址,
上述接收器2000,還用于接收所述第一ce發(fā)送的第二報文。
上述處理器3000,還用于在所述第二報文為bum報文時,復(fù)制所述第二報文,對所述第二報文進(jìn)行nvo3封裝得到nvo3封裝的第二報文。
上述發(fā)射器1000,還用于向所述第二nve和所述第三nve轉(zhuǎn)發(fā)所述nvo3 封裝的第二報文。
其中,所述nvo3封裝的第二報文的nvo3頭中的源ip地址為所述第一共享vtepip地址,所述nvo3封裝的第二報文用于指示接收所述nvo3封裝的第二報文的nve根據(jù)存儲的接口表項對比所述第一共享vtepip地址和所述nve連接ce的接口對應(yīng)的vtepip地址,并向第一接口轉(zhuǎn)發(fā)解封裝得到的所述第二報文,以及不向第二接口轉(zhuǎn)發(fā)解封裝得到的所述第二報文,其中,所述第一接口對應(yīng)的vtepip地址與所述第一共享vtepip地址不同,并且所述第一接口為指定轉(zhuǎn)發(fā)者df狀態(tài),所述第二接口對應(yīng)的vtepip地址與所述第一共享vtepip地址相同。
在一些可行的實施方式中,上述發(fā)射器1000,還用于在所述第二報文為bum報文,所述報文處理設(shè)備還連接第二ce,并且連接所述第二ce的接口對應(yīng)的vtepip地址為所述第一共享vtepip地址時,向所述第二ce轉(zhuǎn)發(fā)所述復(fù)制的第二報文。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(read-onlymemory,rom)或隨機(jī)存取存儲器(randomaccessmemory,簡稱ram)等。
以上對本發(fā)明實施例所提供的一種報文處理方法、相關(guān)裝置及nvo3網(wǎng)絡(luò)系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。