建立vpn隧道的方法及服務(wù)器的制造方法
【專利摘要】本發(fā)明實施例公開了建立VPN隧道的方法、裝置及服務(wù)器,該方法包括:服務(wù)器獲取第一VM和第二VM之間傳輸?shù)膮f(xié)商數(shù)據(jù)包;根據(jù)協(xié)商數(shù)據(jù)包確定所述第一VM和所述第二VM為所述服務(wù)器承載的VM;為所述第一VM和所述第二VM生成VPN隧道公用參數(shù);根據(jù)VPN隧道公用參數(shù)為所述第一VM和所述第二VM生成共享隧道描述符SA,完成VPN隧道的建立。應(yīng)用本發(fā)明實施例,對于屬于同一服務(wù)器的兩個VM之間建立VPN隧道時,由服務(wù)器為兩個VM生成VPN隧道公用參數(shù),因此減少了VPN隧道建立的繁瑣性,提高了VPN隧道建立速度;并且,由于無需為兩個VM分別建立SA,而是為兩個VM建立共享SA,由此降低了服務(wù)器的內(nèi)存消耗。
【專利說明】建立VPN隧道的方法及服務(wù)器
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及網(wǎng)絡(luò)通信【技術(shù)領(lǐng)域】,特別涉及建立虛擬專用網(wǎng)絡(luò)(Virtual Private Network,簡稱VPN)隧道的方法及服務(wù)器。
【背景技術(shù)】
[0002] VPN指在公用網(wǎng)絡(luò)上建立專用網(wǎng)絡(luò)的技術(shù),VPN支持通信雙方之間建立VPN隧 道,以便對傳輸過程進(jìn)行加密,提高傳輸安全性。建立VPN隧道的通信雙方可以為虛擬機(jī) (Virtual Machine,VM),VM指通過軟件模擬的具有完整硬件系統(tǒng)功能的、運行在一個完全 隔離環(huán)境中的完整計算機(jī)系統(tǒng),通??梢栽谝慌_物理服務(wù)器上模擬出多臺VM,也可以在多 臺物理服務(wù)器上模擬出多臺VM。在應(yīng)用VPN的現(xiàn)有技術(shù)中,可以是同一物理服務(wù)器上的VM 之間建立VPN隧道,也可以是不同物理服務(wù)器上的VM之間建立VPN隧道。在建立VPN隧道 的過程中,通信雙方VM根據(jù)各自配置的參數(shù)、密鑰和證書等,經(jīng)過多次協(xié)商確定雙方的VPN 隧道公用參數(shù),其中VPN隧道公用參數(shù)包括加解密算法、認(rèn)證算法、密鑰、證書等,在確定 VPN隧道公用參數(shù)后,通信雙方VM各自生成包含VPN隧道公用參數(shù)的隧道描述符(Secur i ty Association,SA),以此完成通信雙方VM之間的隧道建立。
[0003] 發(fā)明人在對現(xiàn)有技術(shù)的研究過程中發(fā)現(xiàn),同一物理服務(wù)器上的VM之間建立VPN隧 道時,需要通信雙方VM之間進(jìn)行多次協(xié)商才能確定VPN隧道的公用參數(shù),因此協(xié)商過程比 較繁瑣,建立安全隧道的速度較慢。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明實施例中提供了建立VPN隧道的方法及服務(wù)器,以解決現(xiàn)有技術(shù)中的同一 物理服務(wù)器上的VM之間建立VPN隧道時協(xié)商過程繁瑣,建立速度較慢的問題。
[0005] 為了解決上述技術(shù)問題,本發(fā)明實施例公開了如下技術(shù)方案:
[0006] 第一方面,提供一種建立虛擬專用網(wǎng)絡(luò)VPN隧道的方法,所述方法包括:
[0007] 服務(wù)器獲取第一虛擬機(jī)VM和第二VM之間傳輸?shù)膮f(xié)商數(shù)據(jù)包,所述協(xié)商數(shù)據(jù)包用 于請求在所述第一 VM和所述第二VM之間建立VPN隧道;
[0008] 所述服務(wù)器根據(jù)所述協(xié)商數(shù)據(jù)包確定所述第一 VM和所述第二VM為所述服務(wù)器承 載的VM ;
[0009] 所述服務(wù)器為所述第一 VM和所述第二VM生成VPN隧道公用參數(shù);
[0010] 所述服務(wù)器根據(jù)所述VPN隧道公用參數(shù)為所述第一 VM和所述第二VM生成共享隧 道描述符SA,完成所述VPN隧道的建立
[0011] 結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,所述服務(wù)器根據(jù)所述協(xié) 商數(shù)據(jù)包確定所述第一 VM和所述第二VM為所述服務(wù)器承載的VM,包括:
[0012] 所述服務(wù)器獲取所述協(xié)商數(shù)據(jù)包中攜帶的所述第一 VM的標(biāo)識和所述第二VM的標(biāo) 識;
[0013] 當(dāng)所述服務(wù)器管理的VM標(biāo)識中包括所述第一 VM的標(biāo)識和所述第二VM的標(biāo)識時, 所述服務(wù)器確定所述第一 VM和所述第二VM為所述服務(wù)器承載的VM。
[0014] 結(jié)合第一方面,或第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能 的實現(xiàn)方式中,所述服務(wù)器為所述第一 VM和所述第二VM生成VPN隧道公用參數(shù),包括:
[0015] 所述服務(wù)器分別獲取所述第一 VM的第一隧道參數(shù)集合,以及所述第二VM的第二 隧道參數(shù)集合;
[0016] 所述服務(wù)器獲得由所述第一隧道參數(shù)集合與所述第二隧道參數(shù)集合的共有參數(shù) 組成的隧道參數(shù)交集;
[0017] 當(dāng)所述隧道參數(shù)交集中包含一個隧道參數(shù)時,將所述一個隧道參數(shù)確定為所述 VPN隧道公用參數(shù);
[0018] 當(dāng)所述隧道參數(shù)交集中包含至少兩個隧道參數(shù)時,從所述至少兩個隧道參數(shù)中選 擇一個優(yōu)先級最高的隧道參數(shù)作為所述VPN隧道公用參數(shù)。
[0019] 結(jié)合第一方面,或第一方面的第一種可能的實現(xiàn)方式,或第一方面的第二種可能 的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,所述服務(wù)器根據(jù)所述VPN隧道公用 參數(shù)為所述第一 VM和所述第二VM生成共享SA,包括:
[0020] 所述服務(wù)器在為所述第一 VM和所述第二VM生成的一個SA結(jié)構(gòu)體中添加所述VPN 隧道公用參數(shù),以及所述第一 VM的標(biāo)識和所述第二VM的標(biāo)識,生成同時映射到所述第一 VM 和所述第二VM的共享SA。
[0021] 結(jié)合第一方面,或第一方面的第一種可能的實現(xiàn)方式,或第一方面的第二種可能 的實現(xiàn)方式,或第一方面的第三種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式 中,所述為所述第一 VM和所述第二VM生成VPN隧道公用參數(shù)之前,還包括:
[0022] 所述服務(wù)器分別向所述第一 VM和所述第二VM發(fā)送停止協(xié)商消息,所述停止協(xié)商 消息用于通知所述第一 VM和所述第二VM停止協(xié)商所述VPN隧道公用參數(shù)。
[0023] 第二方面,提供一種服務(wù)器,所述服務(wù)器包括:
[0024] 獲取單元,用于獲取第一虛擬機(jī)VM和第二VM之間傳輸?shù)膮f(xié)商數(shù)據(jù)包,所述協(xié)商數(shù) 據(jù)包用于請求在所述第一 VM和所述第二VM之間建立VPN隧道;
[0025] 確定單元,用于根據(jù)所述獲取單元獲取的所述協(xié)商數(shù)據(jù)包確定所述第一 VM和所 述第二VM為所述服務(wù)器承載的VM ;
[0026] 生成單元,用于當(dāng)所述確定單元確定所述第一 VM和所述第二VM屬于所述服務(wù)器 時,為所述第一 VM和所述第二VM生成VPN隧道公用參數(shù);
[0027] 建立單元,用于根據(jù)所述生成單元生成的所述VPN隧道公用參數(shù)為所述第一 VM和 所述第二VM生成共享隧道描述符SA,完成所述VPN隧道的建立。
[0028] 結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,所述確定單元包括:
[0029] 標(biāo)識獲取子單元,用于獲取所述協(xié)商數(shù)據(jù)包中攜帶的所述第一 VM的標(biāo)識和所述 第二VM的標(biāo)識;
[0030] 歸屬確定子單元,用于當(dāng)服務(wù)器管理的VM標(biāo)識中包括所述標(biāo)識獲取子單元獲取 的所述第一 VM的標(biāo)識和所述第二VM的標(biāo)識時,確定所述第一 VM和所述第二VM為所述服 務(wù)器承載的VM。
[0031] 結(jié)合第二方面,或第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能 的實現(xiàn)方式中,所述生成單元包括:
[0032] 參數(shù)獲取子單元,用于分別獲取所述第一 VM的第一隧道參數(shù)集合,以及所述第二 VM的第二隧道參數(shù)集合;
[0033] 交集獲得子單元,用于獲得由所述第一隧道參數(shù)集合與所述第二隧道參數(shù)集合的 共有參數(shù)組成的隧道參數(shù)交集;
[0034] 參數(shù)確定子單元,用于當(dāng)所述隧道參數(shù)交集中包含一個隧道參數(shù)時,將所述一個 隧道參數(shù)確定為所述VPN隧道公用參數(shù),當(dāng)所述隧道參數(shù)交集中包含至少兩個隧道參數(shù) 時,從所述至少兩個隧道參數(shù)中選擇一個優(yōu)先級最高的隧道參數(shù)作為所述VPN隧道公用參 數(shù)。
[0035] 結(jié)合第二方面,或第二方面的第一種可能的實現(xiàn)方式,或第二方面的第二種可能 的實現(xiàn)方式,在第二方面的第三種可能的實現(xiàn)方式中,所述建立單元,具體用于在為所述第 一 VM和所述第二VM生成的一個SA結(jié)構(gòu)體中添加所述VPN隧道公用參數(shù),以及所述第一 VM 的標(biāo)識和所述第二VM的標(biāo)識,生成同時映射到所述第一 VM和所述第二VM的共享SA。
[0036] 結(jié)合第二方面,或第二方面的第一種可能的實現(xiàn)方式,或第二方面的第二種可能 的實現(xiàn)方式,或第二方面的第三種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式 中,還包括:
[0037] 發(fā)送單元,用于當(dāng)所述確定單元確定所述第一 VM和所述第二VM屬于所述服務(wù)器 時,分別向所述第一 VM和所述第二VM發(fā)送停止協(xié)商消息,所述停止協(xié)商消息用于通知所述 第一 VM和所述第二VM停止協(xié)商所述VPN隧道公用參數(shù)。
[0038] 第三方面,提供一種服務(wù)器,所述服務(wù)器包括:總線,以及通過所述總線連接的處 理器和存儲器,其中,
[0039] 所述存儲器,用于保存所述服務(wù)器內(nèi)VM的配置參數(shù);
[0040] 所述處理器,用于獲取第一虛擬機(jī)VM和第二VM之間傳輸?shù)膮f(xié)商數(shù)據(jù)包,所述協(xié)商 數(shù)據(jù)包用于請求在所述第一 VM和所述第二VM之間建立VPN隧道,當(dāng)根據(jù)所述協(xié)商數(shù)據(jù)包 確定所述第一 VM和所述第二VM為所述服務(wù)器承載的VM時,為所述第一 VM和所述第二VM 生成VPN隧道公用參數(shù),并根據(jù)所述VPN隧道公用參數(shù)為所述第一 VM和所述第二VM生成 共享隧道描述符SA,完成所述VPN隧道的建立;
[0041] 所述存儲器,還用于保存所述處理器為所述第一 VM和所述第二VM生成的共享SA。
[0042] 結(jié)合第三方面,在第三方面的第一種可能的實現(xiàn)方式中,所述處理器,具體用于獲 取所述協(xié)商數(shù)據(jù)包中攜帶的所述第一 VM的標(biāo)識和所述第二VM的標(biāo)識,當(dāng)所述服務(wù)器管理 的VM標(biāo)識中包括所述第一 VM的標(biāo)識和所述第二VM的標(biāo)識時,確定所述第一 VM和所述第 二VM為所述服務(wù)器承載的VM。
[0043] 結(jié)合第三方面,或第三方面的第一種可能的實現(xiàn)方式,在第三方面的第二種可能 的實現(xiàn)方式中,所述處理器,具體用于分別獲取所述第一 VM的第一隧道參數(shù)集合,以及所 述第二VM的第二隧道參數(shù)集合,獲得由所述第一隧道參數(shù)集合與所述第二隧道參數(shù)集合 的共有參數(shù)組成的隧道參數(shù)交集,當(dāng)所述隧道參數(shù)交集中包含一個隧道參數(shù)時,將所述一 個隧道參數(shù)確定為所述VPN隧道公用參數(shù),當(dāng)所述隧道參數(shù)交集中包含至少兩個隧道參數(shù) 時,從所述至少兩個隧道參數(shù)中選擇一個優(yōu)先級最高的隧道參數(shù)作為所述VPN隧道公用參 數(shù)。
[0044] 結(jié)合第三方面,或第三方面的第一種可能的實現(xiàn)方式,或第三方面的第二種可能 的實現(xiàn)方式,在第三方面的第三種可能的實現(xiàn)方式中,所述處理器,具體用于在為所述第一 VM和所述第二VM生成的一個SA結(jié)構(gòu)體中添加所述VPN隧道公用參數(shù),以及所述第一 VM的 標(biāo)識和所述第二VM的標(biāo)識,生成同時映射到所述第一 VM和所述第二VM的共享SA。
[0045] 結(jié)合第三方面,或第三方面的第一種可能的實現(xiàn)方式,或第三方面的第二種可能 的實現(xiàn)方式,或第三方面的第三種可能的實現(xiàn)方式,在第三方面的第四種可能的實現(xiàn)方式 中,所述處理器,還用于在確定所述第一 VM和所述第二VM屬于所述服務(wù)器時,分別向所述 第一 VM和所述第二VM發(fā)送停止協(xié)商消息,所述停止協(xié)商消息用于通知所述第一 VM和所述 第二VM停止協(xié)商所述VPN隧道公用參數(shù)。
[0046] 本發(fā)明實施例中,服務(wù)器獲取第一 VM和第二VM之間傳輸?shù)膮f(xié)商數(shù)據(jù)包,根據(jù)協(xié)商 數(shù)據(jù)包確定第一 VM和第二VM為服務(wù)器承載的VM時,為第一 VM和第二VM生成VPN隧道公 用參數(shù),并根據(jù)該VPN隧道公用參數(shù)為第一 VM和第二VM生成共享SA,以此完成VPN隧道的 建立。應(yīng)用本發(fā)明實施例,對于屬于同一服務(wù)器的兩個VM之間建立VPN隧道時,無需這兩 個VM之間進(jìn)行多次協(xié)商交互確定VPN隧道的公用參數(shù),而是由服務(wù)器為兩個VM生成VPN 隧道公用參數(shù),因此減少了 VPN隧道建立的繁瑣性,提高了 VPN隧道建立速度;并且,由于無 需為兩個VM分別建立SA,而是為兩個VM建立共享SA,由此降低了服務(wù)器的內(nèi)存消耗。
【專利附圖】
【附圖說明】
[0047] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,對于本領(lǐng)域普通技術(shù)人員而 言,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0048] 圖1為應(yīng)用本發(fā)明實施例的VPN架構(gòu)示意圖;
[0049] 圖2為本發(fā)明實施例提供的建立VPN隧道的方法的一個實施例流程圖;
[0050] 圖3為本發(fā)明實施例提供的建立VPN隧道的方法的另一個實施例流程圖;
[0051] 圖4為本發(fā)明實施例提供的服務(wù)器的一個實施例框圖;
[0052] 圖5為本發(fā)明實施例提供的服務(wù)器的另一個實施例框圖;
[0053] 圖6為本發(fā)明實施例提供的服務(wù)器的又一種實施例框圖。
【具體實施方式】
[0054] 本發(fā)明如下實施例提供了建立VPN隧道的方法、裝置及服務(wù)器。
[0055] 為了使本【技術(shù)領(lǐng)域】的人員更好地理解本發(fā)明實施例中的技術(shù)方案,并使本發(fā)明實 施例的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖對本發(fā)明實施例中技術(shù)方 案作進(jìn)一步詳細(xì)的說明。
[0056] 參見圖1,為應(yīng)用本發(fā)明實施例的VPN架構(gòu)示意圖:
[0057] 圖1中的服務(wù)器內(nèi)可以包括多個VM,如圖1中示例性的示出了 VM1和VM2,以及對 VM進(jìn)行統(tǒng)一管理的虛擬平臺(Hypervisor),虛擬平臺是一種虛擬環(huán)境中的元操作系統(tǒng),通 過虛擬平臺可以訪問服務(wù)器上包括磁盤和內(nèi)存在內(nèi)的所有物理設(shè)備,虛擬平臺不但可以協(xié) 調(diào)硬件資源的訪問,也可以在各個虛擬機(jī)之間施加防護(hù),當(dāng)服務(wù)器啟動并執(zhí)行虛擬平臺時, 它會加載所有VM的操作系統(tǒng),同時會分配給每一臺VM適量的內(nèi)存,中央處理器(Central Processing Unit,CPU),網(wǎng)絡(luò)和磁盤等。圖1中,虛擬平臺內(nèi)根據(jù)功能可以進(jìn)一步劃分為虛 擬控制層模塊和虛擬交換機(jī)模塊,本發(fā)明實施例中服務(wù)器可以通過虛擬平臺為由該服務(wù)器 承載的VM之間建立VPN隧道。下面結(jié)合具體實施例對本發(fā)明建立VPN隧道的過程進(jìn)行描 述。
[0058] 參見圖2,為本發(fā)明建立VPN隧道的方法的一個實施例流程圖:
[0059] 步驟201 :服務(wù)器獲取第一 VM和第二VM之間傳輸?shù)膮f(xié)商數(shù)據(jù)包,該協(xié)商數(shù)據(jù)包用 于請求在第一 VM和第二VM之間建立VPN隧道。
[0060] 其中,所述協(xié)商數(shù)據(jù)包包括第一 VM向第二VM發(fā)送的隧道協(xié)商請求數(shù)據(jù)包以及第 二VM向第一 VM本實施例中,當(dāng)?shù)谝?VM和第二VM之間需要建立VPN隧道時,第一 VM需要 向第二VM發(fā)送隧道協(xié)商請求數(shù)據(jù)包,第二VM收到該隧道協(xié)商請求數(shù)據(jù)包后,向第一 VM返 回隧道協(xié)商確認(rèn)數(shù)據(jù)包。其中,例如第一 VM為該服務(wù)器內(nèi)的VM,則第一 VM與第二VM之間 交互時,該服務(wù)器可以獲取第一 VM和第二VM之間傳輸?shù)乃淼绤f(xié)商請求數(shù)據(jù)包和隧道協(xié)商 確認(rèn)數(shù)據(jù)包。
[0061] 步驟202 :服務(wù)器根據(jù)協(xié)商數(shù)據(jù)包確定第一 VM和第二VM為該服務(wù)器承載的VM。
[0062] 由于隧道協(xié)商請求數(shù)據(jù)包和隧道協(xié)商確認(rèn)數(shù)據(jù)包中均會攜帶第一 VM的標(biāo)識和第 二VM的標(biāo)識,因此服務(wù)器獲取到隧道協(xié)商請求數(shù)據(jù)包和隧道協(xié)商確認(rèn)數(shù)據(jù)包后,可以從中 獲取第一 VM的標(biāo)識和第二VM的標(biāo)識,由于服務(wù)器內(nèi)保存了該服務(wù)器承載的所有VM的標(biāo) 識,因此當(dāng)服務(wù)器管理的VM標(biāo)識中包括第一 VM的標(biāo)識和第二VM的標(biāo)識時,服務(wù)器確定第 一 VM和第二VM為該服務(wù)器承載的VM。
[0063] 本發(fā)明實施例中,VM的標(biāo)識可以包括VM的互聯(lián)網(wǎng)協(xié)議(Internet Protocol, IP) 地址、或者VM的虛擬介質(zhì)訪問控制層(Virtual Media Access Control, VMAC)地址等等, 在此不做限制,只要能夠識別出VM即可。
[0064] 步驟203 :服務(wù)器為第一 VM和第二VM生成VPN隧道公用參數(shù)。
[0065] 由于VPN隧道公用參數(shù)包含多種類型的參數(shù),例如,可以包括加解密算法、認(rèn)證算 法、密鑰、證書等,因此服務(wù)器可以分別為每個VM生成各種類型的VPN隧道公用參數(shù),所有 類型的VPN隧道公用參數(shù)組成各個VM的VPN隧道公用參數(shù)。
[0066] 其中,服務(wù)器在生成每一種類型的VPN隧道公用參數(shù)時:該服務(wù)器分別獲取第一 VM的第一隧道參數(shù)集合,以及第二VM的第二隧道參數(shù)集合,獲得由第一隧道參數(shù)集合與 第二隧道參數(shù)集合的共有參數(shù)組成的隧道參數(shù)交集,當(dāng)隧道參數(shù)交集中包含一個隧道參數(shù) 時,將該一個隧道參數(shù)確定為第一 VM和所述第二的公用參數(shù),當(dāng)隧道參數(shù)交集中包含至少 兩個隧道參數(shù)時,從至少兩個隧道參數(shù)中選擇一個優(yōu)先級最高的隧道參數(shù)作為第一 VM和 第二VM的公用參數(shù)。
[0067] 步驟204 :服務(wù)器根據(jù)VPN隧道公用參數(shù)為第一 VM和第二VM生成共享SA,以此完 成VPN隧道的建立。
[0068] 現(xiàn)有技術(shù)中,第一 VM和第二VM之間協(xié)商完所有公用參數(shù)后,該第一 VM和第二VM 需要各自建立SA結(jié)構(gòu)體保存該公用參數(shù)。本實施例中,由于由服務(wù)器為第一 VM和第二VM 生成VPN隧道公用參數(shù),因此服務(wù)器只需要為第一 VM和第二VM生成一個SA結(jié)構(gòu)體,在該 SA結(jié)構(gòu)體中添加 VPN隧道公用參數(shù),以及第一 VM的標(biāo)識和第二VM的標(biāo)識,形成一個共享 SA,同時映射到第一 VM和第二VM。
[0069] 由上述實施例可見,對于屬于同一服務(wù)器的兩個VM之間建立VPN隧道時,無需這 兩個VM之間進(jìn)行多次協(xié)商交互確定VPN隧道的公用參數(shù),而是由服務(wù)器為兩個VM生成VPN 隧道公用參數(shù),因此減少了 VPN隧道建立的繁瑣性,提高了 VPN隧道建立速度;并且,由于無 需為兩個VM分別建立SA,而是為兩個VM建立共享SA,由此降低了服務(wù)器的內(nèi)存消耗。
[0070] 參見圖3,為本發(fā)明建立VPN隧道的方法的另一個實施例流程圖,該實施例詳細(xì)描 述了服務(wù)器為該服務(wù)器內(nèi)的VM建立VPN隧道的過程:
[0071] 步驟301 :服務(wù)器獲取第一 VM和第二VM之間傳輸?shù)膮f(xié)商數(shù)據(jù)包,該協(xié)商數(shù)據(jù)包用 于請求在第一 VM和第二VM之間建立VPN隧道。
[0072] 本實施例中,當(dāng)?shù)谝?VM和第二VM之間需要建立VPN隧道時,第一 VM需要向第二 VM發(fā)送隧道協(xié)商請求數(shù)據(jù)包,第二VM收到該隧道協(xié)商請求數(shù)據(jù)包后,向第一VM返回隧道協(xié) 商確認(rèn)數(shù)據(jù)包。其中,例如第一 VM為該服務(wù)器內(nèi)的VM,則第一 VM與第二VM之間交互時, 該服務(wù)器可以獲取第一 VM和第二VM之間傳輸?shù)乃淼绤f(xié)商請求數(shù)據(jù)包和隧道協(xié)商確認(rèn)數(shù)據(jù) 包。
[0073] 本實施例中,服務(wù)器可能獲取到由VM傳輸?shù)亩喾N類型的數(shù)據(jù)包,此時服務(wù)器可以 根據(jù)傳輸數(shù)據(jù)包的端口號來區(qū)別數(shù)據(jù)包的類型。
[0074] 步驟302 :服務(wù)器根據(jù)協(xié)商數(shù)據(jù)包判斷第一 VM和第二VM是否為該服務(wù)器承載的 VM,若是,則執(zhí)行步驟303 ;否則,執(zhí)行步驟306。
[0075] 由于隧道協(xié)商請求數(shù)據(jù)包和隧道協(xié)商確認(rèn)數(shù)據(jù)包中均會攜帶第一 VM的標(biāo)識和第 二VM的標(biāo)識,因此服務(wù)器獲取到隧道協(xié)商請求數(shù)據(jù)包和隧道協(xié)商確認(rèn)數(shù)據(jù)包后,可以從中 獲取第一 VM的標(biāo)識和第二VM的標(biāo)識,由于服務(wù)器內(nèi)保存了該服務(wù)器承載的所有VM的標(biāo) 識,因此當(dāng)服務(wù)器管理的VM標(biāo)識中包括第一 VM的標(biāo)識和第二VM的標(biāo)識時,服務(wù)器確定第 一 VM和第二VM為該服務(wù)器承載的VM。本發(fā)明實施例中,VM的標(biāo)識可以為為VM的IP地 址、或者VM的VMAC地址等等能夠識別VM的其他標(biāo)識。
[0076] 服務(wù)器上可以通過IP地址列表保存該服務(wù)器承載的所有VM的IP地址,當(dāng)VM的 標(biāo)識為VM的IP地址時,服務(wù)器獲取到第一 VM的IP地址和第二VM的IP地址后,可以在 該IP地址列表中分別查找第一 VM的IP地址和第二VM的IP地址,當(dāng)兩個IP地址都保存 在該IP地址列表中時,則可以確定第一 VM和第二VM都是該服務(wù)器承載的VM,當(dāng)只有一個 IP地址保存在該IP地址列表中時,則可以確定只有一個VM是該服務(wù)器承載的VM。服務(wù)器 上可以通過VMAC地址列表保存該服務(wù)器承載的所有VM的VMAC地址,當(dāng)VM的標(biāo)識為VM的 VMAC地址時,服務(wù)器獲取到第一 VM的VMAC地址和第二VM的VMAC地址后,可以在該IP地 址列表中分別查找第一 VM的VMAC地址和第二VM的VMAC地址,當(dāng)兩個VMAC地址都保存在 該VMAC地址列表中時,則可以確定第一 VM和第二VM都是該服務(wù)器承載的VM。
[0077] 步驟303 :服務(wù)器分別向第一 VM和第二VM發(fā)送停止協(xié)商消息。
[0078] 當(dāng)?shù)谝?VM和第二VM均屬于該服務(wù)器時,則該服務(wù)器可以分別向第一 VM和第二VM 發(fā)送停止協(xié)商消息,該停止協(xié)商消息用于通知第一 VM和第二VM停止協(xié)商VPN隧道公用參 數(shù)。
[0079] 步驟304 :服務(wù)器為第一 VM和第二VM生成VPN隧道公用參數(shù)。
[0080] 由于VPN隧道公用參數(shù)包含多種類型的參數(shù),例如,可以包括加解密算法、認(rèn)證 算法、認(rèn)證方式等,其中,加解密算法可以包括對稱的數(shù)據(jù)加密算法(Data Encryption Algorithm,DES)算法、3DES 算法、高級加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES)算 法等,認(rèn)證算法可以包括消息摘要算法第五版(Message Digest Algorithm, MD5)算法、安 全哈希算法(Secure Hash Algorithm, SHA1)算法等,認(rèn)證方式可以包括密鑰、證書等。因 此服務(wù)器可以分別為每個VM生成各種類型的VPN隧道公用參數(shù),所有類型的VPN隧道公用 參數(shù)組成各個VM的VPN隧道公用參數(shù)。
[0081] 本發(fā)明實施例中,服務(wù)器為該服務(wù)器上承載的每個VM分別分配了存儲空間,每個 VM的存儲空間內(nèi)保存了為該VM初始配置的各種隧道參數(shù),因此該服務(wù)器在生成每一種類 型的VPN隧道公用參數(shù)時:該服務(wù)器分別從第一 VM的存儲空間獲取第一 VM的第一隧道參 數(shù)集合,以及從第二VM的存儲空間獲取第二VM的第二隧道參數(shù)集合,并獲得由第一隧道參 數(shù)集合與第二隧道參數(shù)集合的共有參數(shù)組成的隧道參數(shù)交集,當(dāng)隧道參數(shù)交集中包含一個 隧道參數(shù)時,將該一個隧道參數(shù)確定為第一 VM和所述第二的公用參數(shù),當(dāng)隧道參數(shù)交集中 包含至少兩個隧道參數(shù)時,從至少兩個隧道參數(shù)中選擇一個優(yōu)先級最高的隧道參數(shù)作為第 一 VM和第二VM的公用參數(shù)。以隧道參數(shù)為加解密算法為例,當(dāng)服務(wù)器從第一 VM的存儲空 間獲取配置給第一 VM的加解密算法包括DES算法、3DES算法,從第二VM的存儲空間獲取配 置給第二VM的加解密算法包括DES算法、3DES算法、AES算法,則第一 VM和第二VM的加解 密算法交集為DES算法和3DES算法,當(dāng)3DES算法的優(yōu)先級高于DES算法時,服務(wù)器可以選 擇3DES算法作為第一 VM和第二VM的公用加解密算法。
[0082] 步驟305 :服務(wù)器根據(jù)VPN隧道公用參數(shù)為第一 VM和第二VM生成共享SA,以此完 成VPN隧道的建立,結(jié)束當(dāng)前流程。
[0083] 現(xiàn)有技術(shù)中,第一 VM和第二VM之間協(xié)商完所有公用參數(shù)后,該第一 VM和第二VM 需要各自建立一個SA結(jié)構(gòu)體,并通過該SA結(jié)構(gòu)體保存該公用參數(shù)后生成SA。本實施例中, 由于由服務(wù)器為第一 VM和第二VM生成VPN隧道公用參數(shù),因此服務(wù)器只需要為第一 VM和 第二VM生成一個SA結(jié)構(gòu)體,并在該SA結(jié)構(gòu)體中添加 VPN隧道公用參數(shù),以及第一 VM的標(biāo) 識和第二VM的標(biāo)識,以此生成共享SA,該共享SA同時映射到第一 VM和第二VM。
[0084] 步驟306 :第一 VM和第二VM按照現(xiàn)有VPN隧道協(xié)商過程協(xié)商VPN隧道公用參數(shù), 結(jié)束當(dāng)前流程。
[0085] 當(dāng)?shù)谝?VM和第二VM中僅有一個VM屬于該服務(wù)器時,則該服務(wù)器不執(zhí)行其他流 程,由第一 VM和第二VM之極按照現(xiàn)有VPN隧道協(xié)商過程協(xié)商VPN隧道公用參數(shù),在此不再 贅述。
[0086] 由上述實施例可見,對于屬于同一服務(wù)器的兩個VM之間建立VPN隧道時,無需這 兩個VM之間進(jìn)行多次協(xié)商交互確定VPN隧道的公用參數(shù),而是由服務(wù)器為兩個VM生成VPN 隧道公用參數(shù),因此減少了 VPN隧道建立的繁瑣性,提高了 VPN隧道建立速度;并且,由于無 需為兩個VM分別建立SA,而是為兩個VM建立共享SA,由此降低了服務(wù)器的內(nèi)存消耗;對于 屬于不同服務(wù)器的兩個VM,仍然可以兼容現(xiàn)有建立VPN隧道的建立過程,因此VPN隧道建立 的靈活性較大。
[0087] 下面結(jié)合圖1示出的VPN架構(gòu)示意圖,描述應(yīng)用該VPN架構(gòu)建立VPN隧道的過程:
[0088] 假設(shè)VM1和VM2之間要建立VPN隧道,則VM1通過虛擬交換機(jī)模塊向VM2發(fā)送隧 道協(xié)商請求數(shù)據(jù)包,以及VM2通過虛擬交換機(jī)模塊向VM1返回隧道協(xié)商確認(rèn)數(shù)據(jù)包;虛擬控 制層模塊可以獲取到該服務(wù)器內(nèi)所有類型的數(shù)據(jù)包,當(dāng)從這些數(shù)據(jù)包中識別出包含上述隧 道協(xié)商請求數(shù)據(jù)包和隧道協(xié)商確認(rèn)數(shù)據(jù)包后,可以根據(jù)該隧道協(xié)商請求數(shù)據(jù)包和隧道協(xié)商 確認(rèn)數(shù)據(jù)包中包含的VM1和VM2的IP地址確定VM1和VM2均屬于該服務(wù)器,則虛擬控制層 模塊可以為該VM1和VM2生成VPN隧道公用參數(shù),并為該VM1和VM2建立共享SA,生成公用 參數(shù)和建立共享SA的過程可以參見前述圖2和圖3實施例的具體描述,在此不再贅述。
[0089] 與本發(fā)明建立VPN隧道的方法的實施例相對應(yīng),本發(fā)明還提供了建立VPN隧道的 裝置和服務(wù)器的實施例。
[0090] 參見圖4,為本發(fā)明實施例提供的服務(wù)器的一個實施例框圖:
[0091] 該裝置包括:獲取單元410、確定單元420、生成單元430和建立單元440。
[0092] 其中,獲取單元410,用于獲取第一虛擬機(jī)VM和第二VM之間傳輸?shù)膮f(xié)商數(shù)據(jù)包,所 述協(xié)商數(shù)據(jù)包用于請求在所述第一 VM和所述第二VM之間建立VPN隧道;
[0093] 確定單元420,用于根據(jù)所述獲取單元410獲取的所述協(xié)商數(shù)據(jù)包確定所述第一 VM和所述第二VM為所述服務(wù)器承載的VM ;
[0094] 生成單元430,用于當(dāng)所述確定單元420確定所述第一 VM和所述第二VM屬于所述 服務(wù)器時,為所述第一 VM和所述第二VM生成VPN隧道公用參數(shù);
[0095] 建立單元440,用于根據(jù)所述生成單元430生成的所述VPN隧道公用參數(shù)為所述第 一 VM和所述第二VM生成共享隧道描述符SA,完成所述VPN隧道的建立。
[0096] 可選的,所述獲取單元410,可以具體用于獲取所述第一 VM向所述第二VM發(fā)送的 隧道協(xié)商請求數(shù)據(jù)包,以及獲取所述第二VM根據(jù)所述隧道協(xié)商請求數(shù)據(jù)包向所述第一 VM 返回的隧道協(xié)商確認(rèn)數(shù)據(jù)包。
[0097] 可選的,所述確定單元420可以包括(圖4中未示出):標(biāo)識獲取子單元,用于獲取 所述協(xié)商數(shù)據(jù)包中攜帶的所述第一 VM的標(biāo)識和所述第二VM的標(biāo)識;歸屬確定子單元,用于 當(dāng)服務(wù)器管理的VM標(biāo)識中包括所述標(biāo)識獲取子單元獲取的所述第一 VM的標(biāo)識和所述第二 VM的標(biāo)識時,確定所述第一 VM和所述第二VM為所述服務(wù)器承載的VM。
[0098] 可選的,所述生成單元430可以(圖4中未示出)包括:參數(shù)獲取子單元,用于分別 獲取所述第一 VM的第一隧道參數(shù)集合,以及所述第二VM的第二隧道參數(shù)集合;交集獲得子 單元,用于獲得由所述第一隧道參數(shù)集合與所述第二隧道參數(shù)集合的共有參數(shù)組成的隧道 參數(shù)交集;參數(shù)確定子單元,用于當(dāng)所述隧道參數(shù)交集中包含一個隧道參數(shù)時,將所述一個 隧道參數(shù)確定為所述第一 VM和所述第二VM的公用參數(shù),當(dāng)所述隧道參數(shù)交集中包含至少 兩個隧道參數(shù)時,從所述至少兩個隧道參數(shù)中選擇一個優(yōu)先級最高的隧道參數(shù)作為所述第 一 VM和所述第二VM的公用參數(shù)。
[0099] 本發(fā)明實施例提供的服務(wù)器,對于屬于同一服務(wù)器的兩個VM之間建立VPN隧道 時,無需這兩個VM之間進(jìn)行多次協(xié)商交互確定VPN隧道的公用參數(shù),而是由該服務(wù)器為兩 個VM生成VPN隧道公用參數(shù),因此減少了 VPN隧道建立的繁瑣性,提高了 VPN隧道建立速 度;并且,由于無需為兩個VM分別建立SA,而是為兩個VM建立共享SA,由此降低了服務(wù)器 的內(nèi)存消耗;對于屬于不同服務(wù)器的兩個VM,仍然可以兼容現(xiàn)有建立VPN隧道的建立過程, 因此VPN隧道建立的靈活性較大。
[0100] 可選的,所述建立單元440,可以具體用于在為所述第一 VM和所述第二VM生成的 一個SA結(jié)構(gòu)體中添加所述VPN隧道公用參數(shù),以及所述第一 VM的標(biāo)識和所述第二VM的標(biāo) 識,生成同時映射到所述第一 VM和所述第二VM的共享SA。
[0101] 參見圖5,為本發(fā)明實施例提供的服務(wù)器的另一個實施例框圖:
[0102] 該裝置包括:獲取單元510、確定單元520、發(fā)送單元530、生成單元540和建立單 元 550。
[0103] 其中,獲取單元510,用于獲取第一虛擬機(jī)VM和第二VM之間傳輸?shù)膮f(xié)商數(shù)據(jù)包,所 述協(xié)商數(shù)據(jù)包用于請求在所述第一 VM和所述第二VM之間建立VPN隧道;
[0104] 確定單元520,用于根據(jù)所述獲取單元510獲取的所述協(xié)商數(shù)據(jù)包確定所述第一 VM和所述第二VM為所述服務(wù)器承載的VM ;
[0105] 發(fā)送單元530,用于當(dāng)所述確定單元520確定所述第一 VM和所述第二VM屬于所述 服務(wù)器時,分別向所述第一 VM和所述第二VM發(fā)送停止協(xié)商消息,所述停止協(xié)商消息用于通 知所述第一 VM和所述第二VM停止協(xié)商所述VPN隧道公用參數(shù);
[0106] 生成單元540,用于當(dāng)所述確定單元520確定所述第一 VM和所述第二VM屬于所述 服務(wù)器時,為所述第一 VM和所述第二VM生成VPN隧道公用參數(shù);
[0107] 建立單元550,用于根據(jù)所述生成單元540生成的所述VPN隧道公用參數(shù)為所述第 一 VM和所述第二VM生成共享隧道描述符SA,以此完成VPN隧道的建立。
[0108] 可選的,所述獲取單元510,可以具體用于獲取所述第一 VM向所述第二VM發(fā)送的 隧道協(xié)商請求數(shù)據(jù)包,以及獲取所述第二VM根據(jù)所述隧道協(xié)商請求數(shù)據(jù)包向所述第一 VM 返回的隧道協(xié)商確認(rèn)數(shù)據(jù)包。
[0109] 可選的,所述確定單元520可以包括(圖5中未示出):標(biāo)識獲取子單元,用于獲取 所述協(xié)商數(shù)據(jù)包中攜帶的所述第一 VM的標(biāo)識和所述第二VM的標(biāo)識;歸屬確定子單元,用于 當(dāng)服務(wù)器管理的VM標(biāo)識中包括所述標(biāo)識獲取子單元獲取的所述第一 VM的標(biāo)識和所述第二 VM的標(biāo)識時,確定所述第一 VM和所述第二VM為所述服務(wù)器承載的VM。
[0110] 可選的,所述生成單元540可以(圖5中未示出)包括:參數(shù)獲取子單元,用于分別 獲取所述第一 VM的第一隧道參數(shù)集合,以及所述第二VM的第二隧道參數(shù)集合;交集獲得子 單元,用于獲得由所述第一隧道參數(shù)集合與所述第二隧道參數(shù)集合的共有參數(shù)組成的隧道 參數(shù)交集;參數(shù)確定子單元,用于當(dāng)所述隧道參數(shù)交集中包含一個隧道參數(shù)時,將所述一個 隧道參數(shù)確定為所述第一 VM和所述第二VM的公用參數(shù),當(dāng)所述隧道參數(shù)交集中包含至少 兩個隧道參數(shù)時,從所述至少兩個隧道參數(shù)中選擇一個優(yōu)先級最高的隧道參數(shù)作為所述第 一 VM和所述第二VM的公用參數(shù)。
[0111] 可選的,所述建立單元550,可以具體用于在為所述第一 VM和所述第二VM生成的 一個SA結(jié)構(gòu)體中添加所述VPN隧道公用參數(shù),以及所述第一 VM的標(biāo)識和所述第二VM的標(biāo) 識,生成同時映射到所述第一 VM和所述第二VM的共享SA。
[0112] 參見圖6,為本發(fā)明實施例提供的服務(wù)器的又一種實施例框圖:
[0113] 該服務(wù)器包括:總線610,以及通過所述總線610連接的處理器620和存儲器630。
[0114] 其中,所述存儲器630,用于保存所述服務(wù)器內(nèi)VM的配置參數(shù);
[0115] 所述處理器620,用于獲取第一虛擬機(jī)VM和第二VM之間傳輸?shù)膮f(xié)商數(shù)據(jù)包,所述 協(xié)商數(shù)據(jù)包用于請求在所述第一 VM和所述第二VM之間建立VPN隧道,當(dāng)根據(jù)所述協(xié)商數(shù) 據(jù)包確定所述第一 VM和所述第二VM為所述服務(wù)器承載的VM時,為所述第一 VM和所述第 二VM生成VPN隧道公用參數(shù),并根據(jù)所述VPN隧道公用參數(shù)為所述第一 VM和所述第二VM 生成共享隧道描述符SA,完成所述VPN隧道的建立;
[0116] 所述存儲器630,還用于保存所述處理器620為所述第一 VM和所述第二VM建立的 共享SA。
[0117] 可選的,所述處理器620,可以具體用于獲取所述第一 VM向所述第二VM發(fā)送的隧 道協(xié)商請求數(shù)據(jù)包,以及獲取所述第二VM根據(jù)所述隧道協(xié)商請求數(shù)據(jù)包向所述第一 VM返 回的隧道協(xié)商確認(rèn)數(shù)據(jù)包。
[0118] 可選的,所述處理器620,可以具體用于獲取所述協(xié)商數(shù)據(jù)包中攜帶的所述第一 VM的標(biāo)識和所述第二VM的標(biāo)識,當(dāng)所述服務(wù)器管理的VM標(biāo)識中包括所述第一 VM的標(biāo)識和 所述第二VM的標(biāo)識時,確定所述第一 VM和所述第二VM為所述服務(wù)器承載的VM。
[0119] 可選的,所述處理器620,可以具體用于分別獲取所述第一 VM的第一隧道參數(shù)集 合,以及所述第二VM的第二隧道參數(shù)集合,獲得由所述第一隧道參數(shù)集合與所述第二隧道 參數(shù)集合的共有參數(shù)組成的隧道參數(shù)交集,當(dāng)所述隧道參數(shù)交集中包含一個隧道參數(shù)時, 將所述一個隧道參數(shù)確定為所述第一 VM和所述第二VM的公用參數(shù),當(dāng)所述隧道參數(shù)交集 中包含至少兩個隧道參數(shù)時,從所述至少兩個隧道參數(shù)中選擇一個優(yōu)先級最高的隧道參數(shù) 作為所述第一 VM和所述第二VM的公用參數(shù)。
[0120] 可選的,所述處理器620,可以具體用于在為所述第一 VM和所述第二VM生成的一 個SA結(jié)構(gòu)體中添加所述VPN隧道公用參數(shù),以及所述第一 VM的標(biāo)識和所述第二VM的標(biāo)識, 生成同時映射到所述第一 VM和所述第二VM的共享SA。
[0121] 可選的,所述處理器620,還可以用于在確定所述第一 VM和所述第二VM屬于所述 服務(wù)器時,分別向所述第一 VM和所述第二VM發(fā)送停止協(xié)商消息,所述停止協(xié)商消息用于通 知所述第一 VM和所述第二VM停止協(xié)商所述VPN隧道公用參數(shù)。
[0122] 由上述實施例可見,服務(wù)器獲取第一 VM和第二VM之間傳輸?shù)腣PN隧道建立協(xié)商 數(shù)據(jù)包,當(dāng)根據(jù)VPN隧道建立協(xié)商數(shù)據(jù)包確定第一 VM和第二VM屬于該服務(wù)器時,為第一 VM 和第二VM生成VPN隧道公用參數(shù),并根據(jù)該VPN隧道公用參數(shù)為第一 VM和第二VM建立共 享SA。應(yīng)用本發(fā)明實施例,對于屬于同一服務(wù)器的兩個VM之間建立VPN隧道時,無需這兩 個VM之間進(jìn)行多次協(xié)商交互確定VPN隧道的公用參數(shù),而是由服務(wù)器為兩個VM生成VPN 隧道公用參數(shù),因此減少了 VPN隧道建立的繁瑣性,提高了 VPN隧道建立速度;并且,由于無 需為兩個VM分別建立SA,而是為兩個VM建立共享SA,由此降低了服務(wù)器的內(nèi)存消耗。
[0123] 本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明實施例中的技術(shù)可借助軟件加必需 的通用硬件平臺的方式來實現(xiàn)?;谶@樣的理解,本發(fā)明實施例中的技術(shù)方案本質(zhì)上或者 說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品可以存 儲在存儲介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以 是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所 述的方法。
[0124] 本說明書中的各個實施例均采用遞進(jìn)的方式描述,各個實施例之間相同相似的部 分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實 施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例 的部分說明即可。
[0125] 以上所述的本發(fā)明實施方式,并不構(gòu)成對本發(fā)明保護(hù)范圍的限定。任何在本發(fā)明 的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1. 一種建立虛擬專用網(wǎng)絡(luò)VPN隧道的方法,其特征在于,所述方法包括: 服務(wù)器獲取第一虛擬機(jī)VM和第二VM之間傳輸?shù)膮f(xié)商數(shù)據(jù)包,所述協(xié)商數(shù)據(jù)包用于請 求在所述第一 VM和所述第二VM之間建立VPN隧道; 所述服務(wù)器根據(jù)所述協(xié)商數(shù)據(jù)包確定所述第一 VM和所述第二VM為所述服務(wù)器承載的 VM ; 所述服務(wù)器為所述第一 VM和所述第二VM生成VPN隧道公用參數(shù); 所述服務(wù)器根據(jù)所述VPN隧道公用參數(shù)為所述第一 VM和所述第二VM生成共享隧道描 述符SA,完成所述VPN隧道的建立。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述服務(wù)器根據(jù)所述協(xié)商數(shù)據(jù)包確定所 述第一 VM和所述第二VM為所述服務(wù)器承載的VM,包括: 所述服務(wù)器獲取所述協(xié)商數(shù)據(jù)包中攜帶的所述第一 VM的標(biāo)識和所述第二VM的標(biāo)識; 當(dāng)所述服務(wù)器管理的VM標(biāo)識中包括所述第一 VM的標(biāo)識和所述第二VM的標(biāo)識時,所述 服務(wù)器確定所述第一 VM和所述第二VM為所述服務(wù)器承載的VM。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述服務(wù)器為所述第一 VM和所述第 二VM生成VPN隧道公用參數(shù),包括: 所述服務(wù)器分別獲取所述第一 VM的第一隧道參數(shù)集合,以及所述第二VM的第二隧道 參數(shù)集合; 所述服務(wù)器獲得由所述第一隧道參數(shù)集合與所述第二隧道參數(shù)集合的共有參數(shù)組成 的隧道參數(shù)交集; 當(dāng)所述隧道參數(shù)交集中包含一個隧道參數(shù)時,將所述一個隧道參數(shù)確定為所述第SA 結(jié)構(gòu)體公用參數(shù); 當(dāng)所述隧道參數(shù)交集中包含至少兩個隧道參數(shù)時,從所述至少兩個隧道參數(shù)中選擇一 個優(yōu)先級最高的隧道參數(shù)作為所述VPN隧道公用參數(shù)。
4. 根據(jù)權(quán)利要求1至3任意一項所述的方法,其特征在于,所述服務(wù)器根據(jù)所述VPN隧 道公用參數(shù)為所述第一 VM和所述第二VM生成共享SA,包括: 所述服務(wù)器在為所述第一 VM和所述第二VM生成的一個SA結(jié)構(gòu)體中添加所述VPN隧 道公用參數(shù),以及所述第一 VM的標(biāo)識和所述第二VM的標(biāo)識,生成同時映射到所述第一 VM 和所述第二VM的共享SA。
5. 根據(jù)權(quán)利要求1至4任意一項所述的方法,其特征在于,所述為所述第一 VM和所述 第二VM生成VPN隧道公用參數(shù)之前,還包括: 所述服務(wù)器分別向所述第一 VM和所述第二VM發(fā)送停止協(xié)商消息,所述停止協(xié)商消息 用于通知所述第一 VM和所述第二VM停止協(xié)商所述VPN隧道公用參數(shù)。
6. -種服務(wù)器,其特征在于,所述服務(wù)器包括: 獲取單元,用于獲取第一虛擬機(jī)VM和第二VM之間傳輸?shù)膮f(xié)商數(shù)據(jù)包,所述協(xié)商數(shù)據(jù)包 用于請求在所述第一 VM和所述第二VM之間建立VPN隧道; 確定單元,用于根據(jù)所述獲取單元獲取的所述協(xié)商數(shù)據(jù)包確定所述第一 VM和所述第 二VM為所述服務(wù)器承載的VM ; 生成單元,用于當(dāng)所述確定單元確定所述第一 VM和所述第二VM屬于所述服務(wù)器時,為 所述第一 VM和所述第二VM生成VPN隧道公用參數(shù); 建立單元,用于根據(jù)所述生成單元生成的所述VPN隧道公用參數(shù)為所述第一 VM和所述 第二VM生成共享隧道描述符SA,完成所述VPN隧道的建立。
7. 根據(jù)權(quán)利要求6所述的服務(wù)器,其特征在于,所述確定單元包括: 標(biāo)識獲取子單元,用于獲取所述協(xié)商數(shù)據(jù)包中攜帶的所述第一 VM的標(biāo)識和所述第二 VM的標(biāo)識; 歸屬確定子單元,用于當(dāng)服務(wù)器管理的VM標(biāo)識中包括所述標(biāo)識獲取子單元獲取的所 述第一 VM的標(biāo)識和所述第二VM的標(biāo)識時,確定所述第一 VM和所述第二VM為所述服務(wù)器 承載的VM。
8. 根據(jù)權(quán)利要求6或7所述的服務(wù)器,其特征在于,所述生成單元包括: 參數(shù)獲取子單元,用于分別獲取所述第一 VM的第一隧道參數(shù)集合,以及所述第二VM的 第二隧道參數(shù)集合; 交集獲得子單元,用于獲得由所述第一隧道參數(shù)集合與所述第二隧道參數(shù)集合的共有 參數(shù)組成的隧道參數(shù)交集; 參數(shù)確定子單元,用于當(dāng)所述隧道參數(shù)交集中包含一個隧道參數(shù)時,將所述一個隧道 參數(shù)確定為所述第一 VM和所述第二VM的公用參數(shù),當(dāng)所述隧道參數(shù)交集中包含至少兩個 隧道參數(shù)時,從所述至少兩個隧道參數(shù)中選擇一個優(yōu)先級最高的隧道參數(shù)作為所述第一 VM 和所述第二VM的公用參數(shù)。
9. 根據(jù)權(quán)利要求6至8任意一項所述的服務(wù)器,其特征在于, 所述建立單元,具體用于在為所述第一 VM和所述第二VM生成的一個SA結(jié)構(gòu)體中添加 所述VPN隧道公用參數(shù),以及所述第一 VM的標(biāo)識和所述第二VM的標(biāo)識,生成同時映射到所 述第一 VM和所述第二VM的共享SA。
10. 根據(jù)權(quán)利要求6至9任意一項所述的服務(wù)器,其特征在于,還包括: 發(fā)送單元,用于當(dāng)所述確定單元確定所述第一 VM和所述第二VM屬于所述服務(wù)器時,分 別向所述第一 VM和所述第二VM發(fā)送停止協(xié)商消息,所述停止協(xié)商消息用于通知所述第一 VM和所述第二VM停止協(xié)商所述VPN隧道公用參數(shù)。
【文檔編號】H04L29/06GK104104569SQ201310111430
【公開日】2014年10月15日 申請日期:2013年4月1日 優(yōu)先權(quán)日:2013年4月1日
【發(fā)明者】王超, 楊志民 申請人:華為技術(shù)有限公司