數(shù)據(jù)中心的路由器地址配置的。
[0029]本實(shí)施例中,用戶可以統(tǒng)籌安排LISP網(wǎng)絡(luò)中各個(gè)虛擬機(jī)的位置。當(dāng)確定將一個(gè)虛擬機(jī)從第一數(shù)據(jù)中心迀移到第二數(shù)據(jù)中心時(shí),為了保證虛擬機(jī)迀移過(guò)程中,遠(yuǎn)端服務(wù)器和迀移后的虛擬機(jī)之間的流量不會(huì)出現(xiàn)短暫中斷,用戶會(huì)為該虛擬機(jī)配置一條轉(zhuǎn)發(fā)路由,用于當(dāng)虛擬機(jī)從第一數(shù)據(jù)中心迀移到第二數(shù)據(jù)中心之后,遠(yuǎn)端服務(wù)器學(xué)習(xí)到迀入第二數(shù)據(jù)中心的虛擬機(jī)的新路由之前,遠(yuǎn)端服務(wù)器仍然按照本地保存的路由器地址,將對(duì)發(fā)生迀移的虛擬機(jī)的數(shù)據(jù)報(bào)文發(fā)送至第一數(shù)據(jù)中心的路由器,而第一數(shù)據(jù)中心的路由器接收到針對(duì)已經(jīng)發(fā)生迀移的虛擬機(jī)的數(shù)據(jù)報(bào)文后,會(huì)根據(jù)用戶配置的轉(zhuǎn)發(fā)路由將該數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)至已迀入第二數(shù)據(jù)中心的虛擬機(jī)。
[0030]步驟220:根據(jù)第一數(shù)據(jù)中心的路由器接口地址和需要迀移的虛擬機(jī)的主機(jī)地址設(shè)置該需要迀移的虛擬機(jī)對(duì)應(yīng)的轉(zhuǎn)發(fā)路由的掩碼長(zhǎng)度,并將設(shè)置掩碼長(zhǎng)度后的轉(zhuǎn)發(fā)路由下發(fā)至本地路由表中。
[0031]本實(shí)施例中,用戶配置對(duì)應(yīng)的轉(zhuǎn)發(fā)路由后,可以根據(jù)第一數(shù)據(jù)中心的路由器接口地址和需要迀移的虛擬機(jī)的主機(jī)地址是否處于同一網(wǎng)段來(lái)設(shè)置該轉(zhuǎn)發(fā)路由的掩碼長(zhǎng)度,并將設(shè)置掩碼長(zhǎng)度的轉(zhuǎn)發(fā)路由下發(fā)至本地路由表中,若此時(shí)需要迀移的虛擬機(jī)還沒(méi)有從第一數(shù)據(jù)中心迀出,則本地路由表中不僅包括需要迀移的虛擬機(jī)對(duì)應(yīng)的轉(zhuǎn)發(fā)路由,還包括該需要迀移的虛擬機(jī)對(duì)應(yīng)的地址解析協(xié)議(Address Resolut1n Protocol,ARP)主機(jī)路由。該ARP主機(jī)路由用于當(dāng)需要迀移的虛擬機(jī)從第一數(shù)據(jù)中心迀出之前,接收到遠(yuǎn)端服務(wù)器發(fā)送的針對(duì)需要迀移的虛擬機(jī)的數(shù)據(jù)報(bào)文時(shí),根據(jù)ARP主機(jī)路由將數(shù)據(jù)報(bào)文發(fā)送至該需要迀移的虛擬機(jī)。
[0032]步驟230:當(dāng)接收到遠(yuǎn)端服務(wù)器發(fā)送的針對(duì)需要迀移的虛擬機(jī)的數(shù)據(jù)報(bào)文,且該需要迀移的虛擬機(jī)已從第一數(shù)據(jù)中心迀移到第二數(shù)據(jù)中心時(shí),則根據(jù)本地路由表中該需要迀移的虛擬機(jī)對(duì)應(yīng)的轉(zhuǎn)發(fā)路由將接收到的數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)至迀入第二數(shù)據(jù)中心的虛擬機(jī)。
[0033]本實(shí)施例中,第一數(shù)據(jù)中心的路由器接收到的迀移后的虛擬機(jī)的數(shù)據(jù)報(bào)文時(shí),可以根據(jù)本地路由表中該虛擬機(jī)的轉(zhuǎn)發(fā)路由將接收到的數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)至第二數(shù)據(jù)中心的路由器,再由第二數(shù)據(jù)中心的路由器將數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)至迀移后的虛擬機(jī),以使遠(yuǎn)端服務(wù)器和迀移后的虛擬機(jī)之間的流量不會(huì)出現(xiàn)中斷。
[0034]上述步驟210至步驟230中涉及到的轉(zhuǎn)發(fā)路由可以包括:前綴地址和下一跳地址。前綴地址依據(jù)需要迀移的虛擬機(jī)的主機(jī)地址對(duì)應(yīng)的網(wǎng)段地址,下一跳地址為第二數(shù)據(jù)中心的路由器地址即目的地址。
[0035]另外,上述步驟220中根據(jù)第一數(shù)據(jù)中心的路由器接口地址和虛擬機(jī)的主機(jī)地址設(shè)置該需要迀移的虛擬機(jī)對(duì)應(yīng)的轉(zhuǎn)發(fā)路由的掩碼長(zhǎng)度時(shí),可以根據(jù)第一數(shù)據(jù)中心的路由器接口地址和需要迀移的虛擬機(jī)的主機(jī)地址是否處于同一網(wǎng)段來(lái)進(jìn)行不同的設(shè)置,具體如下:
[0036]當(dāng)?shù)谝粩?shù)據(jù)中心的路由器接口地址和虛擬機(jī)的主機(jī)地址處于同一網(wǎng)段時(shí),則將該需要迀移的虛擬機(jī)對(duì)應(yīng)的轉(zhuǎn)發(fā)路由的掩碼長(zhǎng)度設(shè)置在第一數(shù)據(jù)中心的路由器接口地址所屬網(wǎng)段和虛擬機(jī)的主機(jī)地址之間。
[0037]或者,當(dāng)?shù)谝粩?shù)據(jù)中心的路由器接口地址和虛擬機(jī)的主機(jī)地址不處于同一網(wǎng)段時(shí),則將該需要迀移的虛擬機(jī)對(duì)應(yīng)的轉(zhuǎn)發(fā)路由的掩碼長(zhǎng)度設(shè)置在第一數(shù)據(jù)中心的路由器接口配置的可迀移虛擬機(jī)網(wǎng)段和虛擬機(jī)的主機(jī)地址之間。
[0038]比如:第一數(shù)據(jù)中心中需要迀移的虛擬機(jī)的主機(jī)地址為10.17.1.65/32即ARP主機(jī)路由,其掩碼長(zhǎng)度為32。
[0039]并且,當(dāng)?shù)谝粩?shù)據(jù)中心的路由器接口地址和需要迀移的虛擬機(jī)的主機(jī)地址處于同一網(wǎng)段時(shí),該網(wǎng)段為10.17.1.0/24,其掩碼長(zhǎng)度為24;或者,當(dāng)?shù)谝粩?shù)據(jù)中心的路由器接口地址和需要迀移的虛擬機(jī)的主機(jī)地址不處于同一網(wǎng)段時(shí),第一數(shù)據(jù)中心的路由器接口配置了可迀移虛擬機(jī)網(wǎng)段,該網(wǎng)段為10.17.1.0/24,其掩碼長(zhǎng)度為24。
[0040]并且,第二數(shù)據(jù)中心的路由器地址為192.168.2.1,則用戶配置的需要迀移的虛擬機(jī)的轉(zhuǎn)發(fā)路由的前綴可以為10.17.1.0/25,下一跳地址為192.168.2.1。
[0041]其中,10.17.1.0/25中的25為掩碼長(zhǎng)度,該前綴掩碼長(zhǎng)度可以在24至32之間任意取值。
[0042]若選擇掩碼長(zhǎng)度為24,則會(huì)和該路由器接口地址重合,導(dǎo)致出現(xiàn)配置不生效,24位的直連路由優(yōu)先級(jí)別高。
[0043]若選擇掩碼長(zhǎng)度為32,由于轉(zhuǎn)發(fā)路由的優(yōu)先級(jí)高于ARP主機(jī)路由,則會(huì)覆蓋ARP主機(jī)路由,導(dǎo)致當(dāng)需要迀移的虛擬機(jī)沒(méi)有迀移時(shí),接收到的數(shù)據(jù)報(bào)文也會(huì)根據(jù)轉(zhuǎn)發(fā)路由發(fā)送至第二數(shù)據(jù)中心,導(dǎo)致流量不通
[0044]故此,當(dāng)接收到遠(yuǎn)端服務(wù)器發(fā)送的針對(duì)需要迀移的虛擬機(jī)的數(shù)據(jù)報(bào)文,且該需要迀移的虛擬機(jī)還沒(méi)有從第一數(shù)據(jù)中心迀出時(shí),則可以在本地路由表中最長(zhǎng)匹配到ARP主機(jī)路由10.17.1.65/32,并將數(shù)據(jù)報(bào)文發(fā)送至未迀出的虛擬機(jī),能夠正常通信;當(dāng)接收到遠(yuǎn)端服務(wù)器發(fā)送的針對(duì)需要迀移的虛擬機(jī)的數(shù)據(jù)報(bào)文,且該需要迀移的虛擬機(jī)已從第一數(shù)據(jù)中心迀移到第二數(shù)據(jù)中心時(shí),本地路由表中沒(méi)有了 ARP主機(jī)路由即10.17.1.65/32,則可以在本地路由表中最長(zhǎng)匹配到轉(zhuǎn)發(fā)路由即10.17.1.0/25,從而將數(shù)據(jù)報(bào)文發(fā)送至轉(zhuǎn)發(fā)路由中的下一跳地址即192.168.2.1,從而使得迀移后的虛擬機(jī)也能接收到數(shù)據(jù)報(bào)文,實(shí)現(xiàn)了在虛擬機(jī)迀移過(guò)程中,遠(yuǎn)端服務(wù)器和迀移的虛擬機(jī)之間的流量不會(huì)出現(xiàn)中斷,進(jìn)而提高了用戶體驗(yàn)。
[0045]由上述實(shí)施例可見(jiàn),當(dāng)虛擬機(jī)需要從第一數(shù)據(jù)中心迀移到LISP網(wǎng)絡(luò)中的第二數(shù)據(jù)中心時(shí),接受對(duì)虛擬機(jī)配置的轉(zhuǎn)發(fā)路由,該轉(zhuǎn)發(fā)路由是依據(jù)需要迀移的虛擬機(jī)的主機(jī)地址和第二數(shù)據(jù)中心的路由器地址配置的;設(shè)置該轉(zhuǎn)發(fā)路由的掩碼長(zhǎng)度,并將所述設(shè)置后的轉(zhuǎn)發(fā)路由下發(fā)至本地路由表中;當(dāng)接收到遠(yuǎn)端服務(wù)器發(fā)送的針對(duì)需要迀移的虛擬機(jī)的數(shù)據(jù)報(bào)文,且該需要迀移的虛擬機(jī)已從第一數(shù)據(jù)中心迀移到第二數(shù)據(jù)中心時(shí),則根據(jù)本地路由表中該需要迀移的虛擬機(jī)對(duì)應(yīng)的轉(zhuǎn)發(fā)路由將接收到的數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)至迀入第二數(shù)據(jù)中心的虛擬機(jī),從而實(shí)現(xiàn)了通過(guò)用戶配置的轉(zhuǎn)發(fā)路由將接收到的數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)至迀出的虛擬機(jī),能夠保證在虛擬機(jī)迀移過(guò)程中,服務(wù)器和迀移后的虛擬機(jī)之間的流量不會(huì)出現(xiàn)短暫中斷,進(jìn)而提高了用戶體驗(yàn)。
[0046]在一個(gè)實(shí)施例中,參見(jiàn)圖3,為本發(fā)明虛擬機(jī)迀移方法的另一個(gè)實(shí)施例流程圖,該實(shí)施例應(yīng)用于LISP網(wǎng)絡(luò)中的第一數(shù)據(jù)中心的路由器上,該第一數(shù)據(jù)中心可以為圖1中的第一數(shù)據(jù)中心,包括以下步驟:
[0047]步驟310:當(dāng)虛擬機(jī)從第一數(shù)據(jù)中心迀移到第二數(shù)據(jù)中心后,接收映射服務(wù)器發(fā)送的該發(fā)生迀移的虛擬機(jī)對(duì)應(yīng)的映射通知報(bào)文,并根據(jù)該映射通知報(bào)文生成該發(fā)送迀移的虛擬機(jī)對(duì)應(yīng)的報(bào)文丟棄路由。
[0048]步驟320:將報(bào)文丟棄路由下發(fā)至LISP線程中。
[0049]步驟330:當(dāng)接收到遠(yuǎn)端服務(wù)器發(fā)送的針對(duì)該發(fā)生迀移的虛擬機(jī)的數(shù)據(jù)報(bào)文時(shí),根據(jù)LISP線程中的報(bào)文丟棄路由生成該發(fā)生迀移的虛擬機(jī)對(duì)應(yīng)的請(qǐng)求發(fā)送映射請(qǐng)求(Solicit Map-Request, SMR)報(bào)文。
[0050]步驟340:將SMR報(bào)文發(fā)送至遠(yuǎn)端服務(wù)器,以使遠(yuǎn)端服務(wù)器接收到SMR報(bào)文后,向映射服務(wù)器發(fā)送映射請(qǐng)求報(bào)文,用于重新學(xué)習(xí)迀移后的虛擬機(jī)的路由。