本申請涉及計(jì)算機(jī)通信領(lǐng)域,尤其涉及斷開IPSec VPN連接方法及裝置。
背景技術(shù):
IPSec(IP Security,因特網(wǎng)協(xié)議安全性)VPN(Virtual Private Network,虛擬專用網(wǎng)絡(luò))連接是基于IPSec協(xié)議而建立起來的虛擬連接通信通道,用于保障雙方IPSec節(jié)點(diǎn)設(shè)備之間的通信安全。
在斷開IPSec連接時,一方IPSec節(jié)點(diǎn)設(shè)備可以向?qū)Χ税l(fā)送刪除通知消息并刪除本地的當(dāng)前連接狀態(tài)信息。當(dāng)對端節(jié)點(diǎn)設(shè)備接收到該刪除通知消息后,可以刪除該對端節(jié)點(diǎn)設(shè)備上的當(dāng)前連接狀態(tài)信息,從而斷開雙方IPSec節(jié)點(diǎn)設(shè)備之間IPSec VPN連接。
然而,在實(shí)際應(yīng)用中,由于網(wǎng)絡(luò)故障、設(shè)備重啟等因素,使得上述對端節(jié)點(diǎn)設(shè)備無法接收到本端節(jié)點(diǎn)設(shè)備發(fā)送的刪除通知消息,使得本端節(jié)點(diǎn)設(shè)備在本地刪除了當(dāng)前連接狀態(tài)信息,而對端節(jié)點(diǎn)設(shè)備未刪除該對端節(jié)點(diǎn)設(shè)備上的當(dāng)前連接狀態(tài)信息,使得IPSec VPN連接處于“半連接”狀態(tài),從而降低了斷開IPSecVPN連接的可靠性,影響了雙方IPSec節(jié)點(diǎn)設(shè)備之間的通信。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請?zhí)峁嚅_IPSec VPN連接方法及裝置,用以提高斷開IPSecVPN連接的可靠性。
具體地,本申請是通過如下技術(shù)方案實(shí)現(xiàn)的:
根據(jù)本申請實(shí)施例的第一方面,提供一種斷開IPSec VPN連接方法,所述方法應(yīng)用于IPSec節(jié)點(diǎn)設(shè)備,所述方法包括:
向?qū)Χ薎PSec節(jié)點(diǎn)設(shè)備發(fā)送攜帶有第一SPI的刪除通知消息;其中,所述第一SPI為本端用于加密發(fā)送數(shù)據(jù)的SPI和對端IPSec節(jié)點(diǎn)設(shè)備用于解密接收到的數(shù)據(jù)的SPI;
接收對端IPSec節(jié)點(diǎn)設(shè)備在查找到與所述第一SPI對應(yīng)的IPSec VPN連接時發(fā)送的刪除確認(rèn)消息;
判斷所述刪除確認(rèn)消息攜帶的SPI的類型;
如果所述刪除確認(rèn)消息攜帶第二SPI,斷開與所述對端IPSec節(jié)點(diǎn)設(shè)備的IPSec VPN連接;其中,所述第二SPI為本端用于解密接收到的數(shù)據(jù)的SPI和對端IPSec節(jié)點(diǎn)設(shè)備用于加密發(fā)送的數(shù)據(jù)的SPI。
根據(jù)本申請實(shí)施例的第二方面,提供一種斷開IPSec VPN連接裝置,所述裝置應(yīng)用于IPSec節(jié)點(diǎn)設(shè)備,所述裝置包括:
發(fā)送單元,用于向?qū)Χ薎PSec節(jié)點(diǎn)設(shè)備發(fā)送攜帶有第一SPI的刪除通知消息;其中,所述第一SPI為本端用于加密發(fā)送數(shù)據(jù)的SPI和對端IPSec節(jié)點(diǎn)設(shè)備用于解密接收到的數(shù)據(jù)的SPI;
接收單元,用于接收對端IPSec節(jié)點(diǎn)設(shè)備在查找到與所述第一SPI對應(yīng)的IPSec VPN連接時發(fā)送的刪除確認(rèn)消息;
判斷單元,用于判斷所述刪除確認(rèn)消息攜帶的SPI的類型;
斷開單元,用于如果所述刪除確認(rèn)消息攜帶第二SPI,斷開與所述對端IPSec節(jié)點(diǎn)設(shè)備的IPSec VPN連接;其中,所述第二SPI為本端用于解密接收到的數(shù)據(jù)的SPI和對端IPSec節(jié)點(diǎn)設(shè)備用于加密發(fā)送的數(shù)據(jù)的SPI。
本申請實(shí)施例提供一種斷開IPSec VPN連接的方法,一方面,IPSec節(jié)點(diǎn)設(shè)備向?qū)Χ斯?jié)點(diǎn)設(shè)備發(fā)送刪除通知消息后,可以接收到對端節(jié)點(diǎn)設(shè)備返回的刪除確認(rèn)消息,使得本端IPSec節(jié)點(diǎn)設(shè)備可以確定刪除通知消息是否成功發(fā)送至對端,從而可以有效地防止因兩端IPSec VPN連接狀態(tài)信息不一致而造成的通信中斷。另一方面,IPSec節(jié)點(diǎn)設(shè)備可以通過對端IPSec節(jié)點(diǎn)設(shè)備返回刪除確認(rèn)消息中攜帶的SPI類型,確定是否要進(jìn)行斷開IPSec連接的操作,當(dāng)攜帶的SPI為第二SPI時,斷開與對端的IPSec VPN連接,當(dāng)攜帶的SPI為第一SPI時,本端可以刪除與該第一SPI對應(yīng)的SA,而不斷開該IPSec VPN連接,以保證對端發(fā)送的數(shù)據(jù)流量的正常傳輸,從而可以有效地防止斷開IPSec VPN連接過程中的丟包現(xiàn)象,因此可以有效地提高斷開IPSec VPN連接的可靠性。
附圖說明
圖1是本申請一示例性實(shí)施例示出的一種斷開IPSec VPN連接方法的網(wǎng)絡(luò)架構(gòu)圖;
圖2是本申請一示例性實(shí)施例示出的一種斷開IPSec VPN連接方法的流程圖;
圖3是本申請一示例性實(shí)施例示出的一種斷開IPSec VPN連接裝置所在設(shè)備的硬件結(jié)構(gòu)圖;
圖4是本申請一示例性實(shí)施例示出的一種斷開IPSec VPN連接裝置的框圖。
具體實(shí)施方式
這里將詳細(xì)地對示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本申請相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
在本申請使用的術(shù)語是僅僅出于描述特定實(shí)施例的目的,而非旨在限制本申請。在本申請和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指并包含一個或多個相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。
應(yīng)當(dāng)理解,盡管在本申請可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當(dāng)……時”或“響應(yīng)于確定”。
參見圖1,圖1是本申請一示例性實(shí)施例示出的一種斷開IPSec VPN連接方法的網(wǎng)絡(luò)架構(gòu)圖,在該網(wǎng)絡(luò)架構(gòu)中,包括IPSec VPN連接以及IPSec連接兩端的節(jié)點(diǎn)設(shè)備。
其中,上述IPSec VPN連接,通常是指采用IPSec協(xié)議來實(shí)現(xiàn)遠(yuǎn)程接入的一種VPN技術(shù),用以提供公用網(wǎng)絡(luò)和專用網(wǎng)絡(luò)的端對端加密和驗(yàn)證的服務(wù)。
上述IPSec節(jié)點(diǎn)設(shè)備,通常指建立起IPSec VPN連接的兩端的設(shè)備。
在上述IPSec VPN連接建立的過程中,通常情況下,兩端IPSec節(jié)點(diǎn)設(shè)備可以基于IKE協(xié)議進(jìn)行協(xié)商,建立IPSec節(jié)點(diǎn)設(shè)備上的SA,并建立IPSec VPN連接。
通常情況下,IKE(Internet Key Exchange,因特網(wǎng)密鑰交換)規(guī)定了兩個協(xié)商階段為IPSec進(jìn)行密鑰協(xié)商。第一協(xié)商階段,主要是通過協(xié)商,使得通信雙方彼此間建立一個已通過身份認(rèn)證和安全保護(hù)的通道,用以進(jìn)行控制報(bào)文的傳輸,如用以傳輸刪除消息等,通常情況下,會建立ISAKMP(Internet SecurityAssociation and Key Management Protocol,互聯(lián)網(wǎng)安全聯(lián)盟和密鑰管理協(xié)議)SA(Security Association,安全聯(lián)盟)。ISAKMP SA主要是用于保護(hù)IPSec后續(xù)的控制報(bào)文。第二階段主要是在第一階段建立的安全連接的基礎(chǔ)上建立針對最終的IP數(shù)據(jù)安全傳輸?shù)腎PSec SA。
其中,SA是IPSec的基礎(chǔ),也是IPSec的本質(zhì)。SA是通信雙方(即IPSec節(jié)點(diǎn)設(shè)備)對某些要素的約定,例如,使用哪種協(xié)議(AH、ESP還是兩者結(jié)合使用)、協(xié)議的封裝模式(傳輸模式和隧道模式)、加密算法(DES、3DES和AES)、特定流中保護(hù)數(shù)據(jù)的共享密鑰以及密鑰的生存周期等。
通常情況下,SA由一個三元組來唯一標(biāo)識,這個三元組包括SPI(SecurityParameter Index,安全參數(shù)索引)、目的IP地址、安全協(xié)議號(AH或ESP)。例如,每個SA都可以有一個SPI唯一標(biāo)識。
為了實(shí)現(xiàn)數(shù)據(jù)在IPSec VPN連接中的安全傳輸,通常情況下,兩端IPSec SA是成對出現(xiàn)的,例如本端用于加密發(fā)送數(shù)據(jù)的IPSec SA與對端節(jié)點(diǎn)設(shè)備上的用于解密接收到的數(shù)據(jù)的IPSec SA是一對IPSec SA。
此外,為了實(shí)現(xiàn)雙向通信,每個IPSec節(jié)點(diǎn)設(shè)備至少有兩個IPSec SA,一個為本端用于加密的IPSec SA,主要是將本端的需要發(fā)送的數(shù)據(jù)通過IPSec SA加密,發(fā)送給對端節(jié)點(diǎn)設(shè)備;另一個為本端用于解密接收到的數(shù)據(jù)的IPSec SA,一般使用該用于解密的IPSec SA對接收到的由對端節(jié)點(diǎn)設(shè)備發(fā)送的數(shù)據(jù)進(jìn)行解密。
例如,假設(shè)A設(shè)備和B設(shè)備建立IPSec VPN連接,此時為了滿足雙方之間的雙向通信,A設(shè)備上存在用于本端加密發(fā)送數(shù)據(jù)的IPSec SA1,以SPI1作為標(biāo)識,則B設(shè)備上存在與A設(shè)備對應(yīng)的用于本端解密接收到的數(shù)據(jù)的IPSec SA1。為了實(shí)現(xiàn)雙向通信,A設(shè)備上還存在用于本端解密接收到的數(shù)據(jù)的IPSec SA2,以SPI2作為標(biāo)識,則B設(shè)備上存在與A設(shè)備對應(yīng)的用于本端節(jié)點(diǎn)設(shè)備加密發(fā)送數(shù)據(jù)的IPSec SA2。
在兩端IPSec節(jié)點(diǎn)設(shè)備結(jié)束通信時,可以斷開兩端IPSec節(jié)點(diǎn)設(shè)備之間的IPSec VPN連接。
在相關(guān)的斷開IPSec VPN連接的方法中,當(dāng)一端IPSec節(jié)點(diǎn)設(shè)備需要斷開IPSec VPN連接時,該IPSec節(jié)點(diǎn)設(shè)備可以向該IPSec VPN連接的另一端的節(jié)點(diǎn)設(shè)備發(fā)送封裝有刪除載荷刪除通知消息,同時,將本端的IPSec VPN連接的相關(guān)信息釋放,例如,本端節(jié)點(diǎn)設(shè)備可以將對應(yīng)的ISAKMP SA和IPSec SA刪除、密鑰信息銷毀、占用的資源釋放等。
在上述IPSec VPN連接的對端節(jié)點(diǎn)設(shè)備接收到上述刪除通知消息后,可以釋放本地與IPSec VPN連接有關(guān)的信息,以此斷開雙方之間的IPSec VPN連接。
然而,如果由于網(wǎng)絡(luò)故障,設(shè)備重啟等原因,一端IPSec節(jié)點(diǎn)設(shè)備向?qū)Χ斯?jié)點(diǎn)設(shè)備發(fā)送的刪除消息沒有成功到達(dá)對端,此時,該IPSec節(jié)點(diǎn)設(shè)備已經(jīng)釋放了所有與該IPSec VPN連接相關(guān)的所有信息,而對端節(jié)點(diǎn)設(shè)備仍然認(rèn)為IPSec VPN連接正常連接,保留著與該IPSec VPN連接的相關(guān)信息。在這種情況下,對端節(jié)點(diǎn)設(shè)備仍然向本端發(fā)送數(shù)據(jù),然而本端節(jié)點(diǎn)設(shè)備已經(jīng)刪除了所有與該IPSecVPN連接的相關(guān)信息,所以無法對對端發(fā)送的數(shù)據(jù)進(jìn)行解密,導(dǎo)致兩端通信的失敗。因此,使用相關(guān)技術(shù)中的斷開IPSec VPN連接的方法,大大降低了斷開IPSec VPN連接的可靠性。
為了解決上述問題,本申請實(shí)施例提供一種斷開IPSec VPN連接的方法,IPSec節(jié)點(diǎn)設(shè)備可以向?qū)Χ斯?jié)點(diǎn)設(shè)備發(fā)送攜帶有第一SPI的刪除通知消息,并可以在對端節(jié)點(diǎn)設(shè)備查找到與所述第一SPI對應(yīng)的IPSec連接時,接收對端發(fā)送的刪除確認(rèn)消息。其中,該第一SPI為本端用于加密發(fā)送數(shù)據(jù)的SPI和對端節(jié)點(diǎn)設(shè)備用于解密接收到的數(shù)據(jù)的SPI。IPSec節(jié)點(diǎn)設(shè)備可以判斷刪除確認(rèn)消息攜帶的SPI的類型。如果該刪除確認(rèn)消息攜帶第二SPI,斷開與該對端節(jié)點(diǎn)設(shè)備的IPSec連接;其中,上述第二SPI為本端用于解密接收到的數(shù)據(jù)的SPI和對端節(jié)點(diǎn)設(shè)備用于加密發(fā)送的數(shù)據(jù)的SPI。
由于在本端IPSec節(jié)點(diǎn)設(shè)備向?qū)Χ斯?jié)點(diǎn)設(shè)備發(fā)送刪除通知消息后,不再立即刪除與該IPSec連接有關(guān)的信息,而是可以通過對端節(jié)點(diǎn)設(shè)備返回的刪除確認(rèn)消息中攜帶SPI類型,來判斷是否需要斷開與對端節(jié)點(diǎn)設(shè)備的IPSec連接,從而使本端節(jié)點(diǎn)設(shè)備可以通過對端節(jié)點(diǎn)設(shè)備返回的刪除確認(rèn)消息,來確定對端的狀態(tài),并確定本端相應(yīng)的刪除操作。因此,使用本申請實(shí)施例提供的斷開IPSec VPN連接的方法,可以有效地提高斷開IPSec VPN連接的可靠性。
參見圖2,圖2是本申請一示例性實(shí)施例示出的一種斷開IPSec VPN連接方法的流程圖,所述方法應(yīng)用于IPSec節(jié)點(diǎn)設(shè)備,所述方法具體包括:
步驟201:向?qū)Χ斯?jié)點(diǎn)設(shè)備發(fā)送攜帶有第一SPI的刪除通知消息;其中,所述第一SPI為本端用于加密發(fā)送數(shù)據(jù)的SPI和對端節(jié)點(diǎn)設(shè)備用于解密接收到的數(shù)據(jù)的SPI;
上述第一SPI,是指本端IPSec節(jié)點(diǎn)設(shè)備用于加密發(fā)送數(shù)據(jù)的SPI和對端IPSec節(jié)點(diǎn)設(shè)備用于解密接收到的數(shù)據(jù)的SPI。例如,本端節(jié)點(diǎn)設(shè)備可以通過第一SPI對所要發(fā)送的數(shù)據(jù)加密,然后將加密后的數(shù)據(jù)發(fā)送給對端IPSec節(jié)點(diǎn)設(shè)備,由對端IPSec節(jié)點(diǎn)設(shè)備基于其本地的第一SPI,對從本端接收到的數(shù)據(jù)進(jìn)行解密。
上述第二SPI,是指本端IPSec節(jié)點(diǎn)設(shè)備用于解密接收到的數(shù)據(jù)的SPI和對端IPSec節(jié)點(diǎn)設(shè)備用于發(fā)送加密數(shù)據(jù)的SPI。例如,在對端IPSec節(jié)點(diǎn)設(shè)備向本端IPSec節(jié)點(diǎn)設(shè)備發(fā)送數(shù)據(jù)時,對端IPSec節(jié)點(diǎn)設(shè)備可以通過該第二SPI對所要發(fā)送的數(shù)據(jù)進(jìn)行加密,然后將加密后的數(shù)據(jù)發(fā)送給本端IPSec節(jié)點(diǎn)設(shè)備,由本端IPSec節(jié)點(diǎn)設(shè)備通過該第二SPI,對從對端接收到的數(shù)據(jù)進(jìn)行解密。
與現(xiàn)有技術(shù)不同的是,在本申請實(shí)施例提出的斷開IPSec VPN連接方法中,一方面,IPSec節(jié)點(diǎn)設(shè)備向?qū)Χ斯?jié)點(diǎn)設(shè)備發(fā)送刪除通知消息后,可以接收到對端節(jié)點(diǎn)設(shè)備返回的刪除確認(rèn)消息,使得本端IPSec節(jié)點(diǎn)設(shè)備可以確定刪除通知消息是否成功發(fā)送至對端,從而可以有效地防止因兩端IPSec VPN連接狀態(tài)信息不一致而造成的通信中斷。
另一方面,IPSec節(jié)點(diǎn)設(shè)備可以通過對端IPSec節(jié)點(diǎn)設(shè)備返回刪除確認(rèn)消息中攜帶的SPI類型,確定是否要進(jìn)行斷開IPSec連接的操作,當(dāng)攜帶的SPI為第二SPI時,斷開與對端的IPSec VPN連接,當(dāng)攜帶的SPI為第一SPI時,本端可以刪除與該第一SPI對應(yīng)的SA,而不斷開該IPSec VPN連接,以保證對端發(fā)送的數(shù)據(jù)流量的正常傳輸,從而可以有效地防止斷開IPSec VPN連接過程中的丟包現(xiàn)象,因此可以有效地提高斷開IPSec VPN連接的可靠性。
下面以本端IPSec節(jié)點(diǎn)設(shè)備作為斷開IPSec VPN連接的主動斷開方,對本申請?zhí)岢龅臄嚅_IPSec VPN連接方法進(jìn)行詳細(xì)地描述。
在實(shí)現(xiàn)時,IPSec節(jié)點(diǎn)設(shè)備可以將上述第一SPI封裝至刪除載荷,并將該刪除載荷組裝至刪除通知消息中。
參見表1,表1為刪除載荷的消息格式,上述節(jié)點(diǎn)設(shè)備可以將第一SPI寫入“安全參數(shù)索引(SPI)”一欄,以完成第一SPI的封裝。
然后IPSec節(jié)點(diǎn)設(shè)備可以將ISAKMP消息頭、雜湊載荷和刪除載荷等組裝成該刪除通知消息。
表1
在組裝該刪除通知消息時,如表2所示,IPSec節(jié)點(diǎn)設(shè)備可以在ISAKMP消息頭的下一個載荷字段寫入表征雜湊數(shù)據(jù)的字段,該表征雜湊數(shù)據(jù)的字段可以參見ISAKMP協(xié)議。
表2
然后,IPSec節(jié)點(diǎn)設(shè)備可以在表3所示的雜湊數(shù)據(jù)格式中的“下一個載荷”字段寫入表征刪除載荷的字段,以此來完成刪除通知消息的組裝。
表3
在完成上述刪除通知消息的組裝,并將上述第一SPI封裝至該刪除通知消息后,IPSec節(jié)點(diǎn)設(shè)備可以將該刪除通知消息發(fā)送至對端IPSec節(jié)點(diǎn)設(shè)備。
步驟202:接收對端節(jié)點(diǎn)設(shè)備在查找到與所述第一SPI對應(yīng)的IPSec連接時發(fā)送的刪除確認(rèn)消息;
在相關(guān)的斷開IPSec VPN連接方法中,當(dāng)對端IPSec節(jié)點(diǎn)設(shè)備接收到本端IPSec節(jié)點(diǎn)設(shè)備發(fā)送的刪除通知消息時,不論本地是否有向本端IPSec節(jié)點(diǎn)設(shè)備發(fā)送的數(shù)據(jù)流量,都要立即在本地刪除與該IPSec VPN連接有關(guān)的信息,與本端IPSec節(jié)點(diǎn)設(shè)備斷開IPSec VPN連接。
然而,當(dāng)對端IPSec節(jié)點(diǎn)設(shè)備有需要向本端IPSec節(jié)點(diǎn)設(shè)備發(fā)送的數(shù)據(jù)流量時,使用上述相關(guān)技術(shù)中的斷開IPSec VPN連接方法,就可能會造成丟包的發(fā)生,影響雙方之間的正常通信。
而在本申請實(shí)施例中,當(dāng)對端IPSec節(jié)點(diǎn)設(shè)備接收到本端IPSec節(jié)點(diǎn)設(shè)備發(fā)送的刪除通知消息時,對端IPSec節(jié)點(diǎn)設(shè)備可以判斷該IPSec VPN連接是否空閑,當(dāng)該IPSec VPN連接空閑時,才斷開與本端IPSec節(jié)點(diǎn)設(shè)備的IPSec VPN連接,否則,對端IPSec節(jié)點(diǎn)設(shè)備可以先在本地刪除第一SPI對應(yīng)的SA,并將本地所要發(fā)送的數(shù)據(jù)流量都發(fā)送至本端時,再斷開與本端IPSec節(jié)點(diǎn)設(shè)備的IPSec VPN連接,從而可以有效地防止斷開IPSec VPN連接過程中的丟包現(xiàn)象,保證了雙方之間在斷開IPSec VPN連接時,雙方通信的可靠性。
在實(shí)現(xiàn)時,對端IPSec節(jié)點(diǎn)設(shè)備可以接收本端IPSec節(jié)點(diǎn)設(shè)備發(fā)送的刪除通知消息,并可以對該刪除通知消息進(jìn)行解析,獲取該刪除通知消息中攜帶的第一SPI。
對端IPSec節(jié)點(diǎn)設(shè)備可以基于該第一SPI,查找與該第一SPI對應(yīng)的IPSecVPN連接。在查找到與該第一SPI對應(yīng)的IPSec VPN連接之后,對端IPSec節(jié)點(diǎn)設(shè)備可以檢查該IPSec VPN連接是否處于空閑狀態(tài)。
在檢查該IPSec VPN連接是否處于空閑狀態(tài)時,對端IPSec節(jié)點(diǎn)設(shè)備可以檢查該IPSec VPN連接上是否有向上述本端節(jié)點(diǎn)設(shè)備發(fā)送的數(shù)據(jù)流量,如果該IPSec VPN連接上沒有向上述本端節(jié)點(diǎn)設(shè)備發(fā)送的數(shù)據(jù)流量,則確定該IPSecVPN連接處于空閑狀態(tài)。如果該IPSec VPN連接上有向上述本端節(jié)點(diǎn)設(shè)備發(fā)送的數(shù)據(jù)流量,則確定該IPSec VPN連接處于非空閑狀態(tài)。
當(dāng)該IPSec VPN連接處于空閑狀態(tài)時,對端IPSec節(jié)點(diǎn)設(shè)備可以將第二SPI封裝至刪除確認(rèn)消息中,并將該刪除確認(rèn)消息發(fā)送至上述本端IPSec節(jié)點(diǎn)設(shè)備。同時,對端IPSec節(jié)點(diǎn)設(shè)備可以將與該IPSec VPN連接的相關(guān)信息刪除,例如可以在本地刪除與上述第一SPI、第二SPI分別對應(yīng)的SA、刪除密鑰信息以及釋放占用的資源等。
當(dāng)該IPSec VPN連接處于非空閑狀態(tài)時,對端IPSec節(jié)點(diǎn)設(shè)備可以將第一SPI封裝至刪除確認(rèn)消息中,并將該刪除確認(rèn)消息發(fā)送至本端IPSec節(jié)點(diǎn)設(shè)備。同時,對端IPSec節(jié)點(diǎn)設(shè)備可以將與該第一SPI對應(yīng)的SA刪除。
當(dāng)對端IPSec節(jié)點(diǎn)設(shè)備不再有向本端IPSec節(jié)點(diǎn)設(shè)備發(fā)送的數(shù)據(jù)流量時,即該IPSec VPN連接空閑時,對端IPSec節(jié)點(diǎn)設(shè)備可以向本端發(fā)送斷開該IPSecVPN連接的消息,以斷開雙方之間的IPSec VPN連接。同時,對端IPSec節(jié)點(diǎn)設(shè)備可以在本地刪除與該IPSec VPN連接相關(guān)的信息。
需要說明的是,對端IPSec節(jié)點(diǎn)設(shè)備將SPI封裝至刪除確認(rèn)消息與組裝刪除確認(rèn)消息的方法與上述本端IPSec節(jié)點(diǎn)設(shè)備封裝第一SPI和組裝刪除通知消息的方法相同,并且,刪除確認(rèn)消息的消息格式也與刪除通知消息的消息格式相同,在這里,不再贅述。
步驟203:判斷所述刪除確認(rèn)消息攜帶的SPI的類型;
步驟204:如果所述刪除確認(rèn)消息攜帶第二SPI,斷開與所述對端IPSec節(jié)點(diǎn)設(shè)備的IPSec VPN連接;其中,所述第二SPI為本端用于解密接收到的數(shù)據(jù)的SPI和對端IPSec節(jié)點(diǎn)設(shè)備用于加密發(fā)送的數(shù)據(jù)的SPI。
在本申請實(shí)施例中,在本端IPSec節(jié)點(diǎn)設(shè)備接收到對端IPSec節(jié)點(diǎn)設(shè)備發(fā)送的刪除確認(rèn)消息后,可以對該刪除確認(rèn)消息進(jìn)行解析,獲取該刪除確認(rèn)消息中攜帶的SPI。
本端IPSec節(jié)點(diǎn)設(shè)備可以判斷該SPI的類型,如果該SPI為第二SPI,則確定與對端IPSec節(jié)點(diǎn)設(shè)備之間的IPSec VPN連接空閑,本端IPSec節(jié)點(diǎn)設(shè)備可以將該IPSec VPN連接斷開,此時,本端IPSec節(jié)點(diǎn)設(shè)備可以在本地刪除該IPSecVPN連接的相關(guān)信息,從而斷開該IPSec VPN連接。
如果本端IPSec節(jié)點(diǎn)設(shè)備獲取到的SPI為第一SPI時,則可以確定對端IPSec節(jié)點(diǎn)設(shè)備需要向本端IPSec節(jié)點(diǎn)設(shè)備發(fā)送數(shù)據(jù)流量,同時,本端IPSec節(jié)點(diǎn)設(shè)備可以只在本地刪除與該第一SPI對應(yīng)的SA,而不斷開與對端IPSec節(jié)點(diǎn)設(shè)備之間的IPSec VPN連接。此時,該IPSec VPN連接的數(shù)據(jù)傳輸是單向數(shù)據(jù)傳輸,進(jìn)一步來說,只是對端IPSec節(jié)點(diǎn)設(shè)備將數(shù)據(jù)流量發(fā)送至本端IPSec節(jié)點(diǎn)設(shè)備這一個方向的傳輸。
當(dāng)接收到對端IPSec節(jié)點(diǎn)設(shè)備在沒有向本端發(fā)送的數(shù)據(jù)流量時發(fā)送的斷開連接的消息后,本端IPSec節(jié)點(diǎn)設(shè)備可以在本地刪除與該IPSec VPN連接相關(guān)的信息,以斷開該IPSec VPN連接。
此外,如果在預(yù)設(shè)的時間范圍內(nèi),本端IPSec節(jié)點(diǎn)設(shè)備未接收到對端IPSec節(jié)點(diǎn)設(shè)備發(fā)送的刪除確認(rèn)消息,本端IPSec節(jié)點(diǎn)設(shè)備可以開啟重傳機(jī)制。
在實(shí)現(xiàn)時,本端IPSec節(jié)點(diǎn)設(shè)備可以基于預(yù)設(shè)的周期,周期性地重新發(fā)送該刪除通知消息。例如,本端IPSec節(jié)點(diǎn)設(shè)備可以開啟定時器,并可以將定時器的超時時長設(shè)置為重新發(fā)送刪除通知消息的周期,比如可以為5s,在本端向?qū)Χ薎PSec節(jié)點(diǎn)設(shè)備發(fā)送刪除通知消息后的5秒未收到刪除確認(rèn)消息時,則可以向?qū)Χ薎PSec節(jié)點(diǎn)設(shè)備重新發(fā)送該刪除通知消息。
當(dāng)然,上述本端IPSec節(jié)點(diǎn)設(shè)備除了可以作為斷開IPSec VPN連接的主動斷開方,向?qū)Χ薎PSec節(jié)點(diǎn)設(shè)備發(fā)送刪除通知消息;還可以作為斷開IPSec VPN連接的被動斷開方,接收對端斷開IPSec VPN連接時發(fā)送的刪除通知消息。
下面以本端IPSec節(jié)點(diǎn)設(shè)備作為該斷開IPSec VPN連接的被動斷開方,對上述斷開IPSec VPN連接方法進(jìn)行詳細(xì)描述。
在實(shí)現(xiàn)時,在斷開IPSec VPN連接時,對端IPSec節(jié)點(diǎn)設(shè)備可以將第二SPI封裝至刪除通知消息中,并可以將該刪除通知消息發(fā)送至本端IPSec節(jié)點(diǎn)設(shè)備。
本端IPSec節(jié)點(diǎn)設(shè)備在接收到對端IPSec節(jié)點(diǎn)設(shè)備發(fā)送的刪除通知消息后,可以對該刪除通知消息進(jìn)行解析,獲取該刪除通知消息中攜帶的第二SPI。然后,本端IPSec節(jié)點(diǎn)設(shè)備可以基于獲取到的第二SPI查找與該第二SPI對應(yīng)的IPSecVPN連接。
在查找到與該第二SPI對應(yīng)的IPSec VPN連接之后,端IPSec節(jié)點(diǎn)設(shè)備可以檢查該IPSec VPN連接是否處于空閑狀態(tài)。
在檢查該IPSec VPN連接是否處于空閑狀態(tài)時,本端IPSec節(jié)點(diǎn)設(shè)備可以檢查該IPSec VPN連接上是否有向?qū)Χ薎PSec節(jié)點(diǎn)設(shè)備發(fā)送的數(shù)據(jù)流量,如果該IPSec VPN連接上沒有向?qū)Χ薎PSec節(jié)點(diǎn)設(shè)備發(fā)送的數(shù)據(jù)流量,則確定該IPSecVPN連接處于空閑狀態(tài)。如果該IPSec VPN連接上有向?qū)Χ斯?jié)點(diǎn)設(shè)備發(fā)送的數(shù)據(jù)流量,則確定該IPSec VPN連接處于非空閑狀態(tài)。
當(dāng)該IPSec VPN連接處于空閑狀態(tài)時,本端IPSec節(jié)點(diǎn)設(shè)備可以將第一SPI封裝至刪除確認(rèn)消息中,并將該刪除確認(rèn)消息發(fā)送至對端IPSec節(jié)點(diǎn)設(shè)備。同時,本端IPSec節(jié)點(diǎn)設(shè)備可以將與該IPSec VPN連接的相關(guān)信息刪除,例如可以在本地刪除與上述第一SPI、第二SPI分別對應(yīng)的SA、刪除密鑰信息以及釋放占用的資源等。
當(dāng)該IPSec VPN連接處于非空閑狀態(tài)時,本端IPSec節(jié)點(diǎn)設(shè)備可以將第二SPI封裝至刪除確認(rèn)消息中,并將該刪除確認(rèn)消息發(fā)送至對端IPSec節(jié)點(diǎn)設(shè)備。同時,本端IPSec節(jié)點(diǎn)設(shè)備可以將與該第二SPI對應(yīng)的SA刪除。
當(dāng)本端IPSec節(jié)點(diǎn)設(shè)備不再有向?qū)Χ薎PSec節(jié)點(diǎn)設(shè)備發(fā)送的數(shù)據(jù)流量時,即該IPSec VPN連接空閑時,本端IPSec節(jié)點(diǎn)設(shè)備可以向?qū)Χ税l(fā)送斷開該IPSecVPN連接的消息,以斷開雙方之間的IPSec VPN連接。同時,本端IPSec節(jié)點(diǎn)設(shè)備可以在本地刪除與該IPSec VPN連接相關(guān)的信息。
當(dāng)對端IPSec節(jié)點(diǎn)設(shè)備接收到本端IPSec節(jié)點(diǎn)設(shè)備發(fā)送的刪除確認(rèn)消息后,可以判斷該刪除確認(rèn)消息中攜帶的SPI的類型,如果攜帶的SPI為第一SPI,對端IPSec節(jié)點(diǎn)設(shè)備可以斷開與該本端IPSec節(jié)點(diǎn)設(shè)備之間的IPSec VPN連接;如果攜帶的SPI為第二SPI時,對端IPSec節(jié)點(diǎn)設(shè)備可以刪除與該第二SPI對應(yīng)的SA,直至接收到上述本端IPSec節(jié)點(diǎn)設(shè)備在沒有向?qū)Χ税l(fā)送的數(shù)據(jù)流量時發(fā)送的斷開連接的消息后,對端IPSec節(jié)點(diǎn)設(shè)備可以在本地刪除與該IPSec VPN連接相關(guān)的信息,以斷開該IPSec VPN連接。
本申請實(shí)施例提供一種斷開IPSec VPN連接的方法,IPSec節(jié)點(diǎn)設(shè)備可以向?qū)Χ斯?jié)點(diǎn)設(shè)備發(fā)送攜帶有第一SPI的刪除通知消息,并可以在對端節(jié)點(diǎn)設(shè)備查找到與所述第一SPI對應(yīng)的IPSec連接時,接收對端發(fā)送的刪除確認(rèn)消息。其中,該第一SPI為本端用于加密發(fā)送數(shù)據(jù)的SPI和對端節(jié)點(diǎn)設(shè)備用于解密接收到的數(shù)據(jù)的SPI。IPSec節(jié)點(diǎn)設(shè)備可以判斷刪除確認(rèn)消息攜帶的SPI的類型。如果該刪除確認(rèn)消息攜帶第二SPI,斷開與該對端節(jié)點(diǎn)設(shè)備的IPSec連接;其中,上述第二SPI為本端用于解密接收到的數(shù)據(jù)的SPI和對端節(jié)點(diǎn)設(shè)備用于加密發(fā)送的數(shù)據(jù)的SPI。
一方面,IPSec節(jié)點(diǎn)設(shè)備向?qū)Χ斯?jié)點(diǎn)設(shè)備發(fā)送刪除通知消息后,可以接收到對端節(jié)點(diǎn)設(shè)備返回的刪除確認(rèn)消息,使得本端IPSec節(jié)點(diǎn)設(shè)備可以確定刪除通知消息是否成功發(fā)送至對端;
另一方面,IPSec節(jié)點(diǎn)設(shè)備可以通過對端IPSec節(jié)點(diǎn)設(shè)備返回刪除確認(rèn)消息中攜帶的SPI類型,確定是否要進(jìn)行斷開IPSec連接的操作,當(dāng)攜帶的SPI為第二SPI時,斷開與對端的IPSec VPN連接,當(dāng)攜帶的SPI為第一SPI時,本端可以刪除與該第一SPI對應(yīng)的SA,而不斷開該IPSec VPN連接,保證對端發(fā)送的數(shù)據(jù)流量的正常傳輸,從而可以有效地防止斷開IPSec VPN連接過程中的丟包現(xiàn)象,因此可以有效地提高斷開IPSec VPN連接的可靠性。
與前述斷開IPSec VPN連接方法的實(shí)施例相對應(yīng),本申請還提供了斷開IPSec VPN連接裝置的實(shí)施例。
本申請斷開IPSec VPN連接裝置的實(shí)施例可以應(yīng)用在IPSec節(jié)點(diǎn)設(shè)備上。裝置實(shí)施例可以通過軟件實(shí)現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在IPSec節(jié)點(diǎn)設(shè)備的處理器將非易失性存儲器中對應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。從硬件層面而言,如圖3所示,為本申請斷開IPSec VPN連接裝置所在IPSec節(jié)點(diǎn)設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖3所示的處理器、內(nèi)存、網(wǎng)絡(luò)出接口、以及非易失性存儲器之外,實(shí)施例中裝置所在的IPSec節(jié)點(diǎn)設(shè)備通常根據(jù)該斷開IPSecVPN連接的實(shí)際功能,還可以包括其他硬件,對此不再贅述。
請參考圖4,圖4是本申請一示例性實(shí)施例示出的一種斷開IPSec VPN連接裝置的框圖。所述裝置應(yīng)用于IPSec節(jié)點(diǎn)設(shè)備,所述裝置包括:
發(fā)送單元410,用于向?qū)Χ薎PSec節(jié)點(diǎn)設(shè)備發(fā)送攜帶有第一SPI的刪除通知消息;其中,所述第一SPI為本端用于加密發(fā)送數(shù)據(jù)的SPI和對端IPSec節(jié)點(diǎn)設(shè)備用于解密接收到的數(shù)據(jù)的SPI;
接收單元420,用于接收對端IPSec節(jié)點(diǎn)設(shè)備在查找到與所述第一SPI對應(yīng)的IPSec VPN連接時發(fā)送的刪除確認(rèn)消息;
判斷單元430,用于判斷所述刪除確認(rèn)消息攜帶的SPI的類型;
斷開單元440,用于如果所述刪除確認(rèn)消息攜帶第二SPI,斷開與所述對端IPSec節(jié)點(diǎn)設(shè)備的IPSec VPN連接;其中,所述第二SPI為本端用于解密接收到的數(shù)據(jù)的SPI和對端IPSec節(jié)點(diǎn)設(shè)備用于加密發(fā)送的數(shù)據(jù)的SPI。
在一種可選的實(shí)現(xiàn)方式中,所述裝置還包括:
刪除單元450,用于如果所述刪除確認(rèn)消息攜帶第一SPI,則刪除本端與第一SPI對應(yīng)的SA。
在另一種可選的實(shí)現(xiàn)方式中,所述接收單元420,還用于接收對端IPSec節(jié)點(diǎn)設(shè)備發(fā)送的攜帶有所述第二SPI的刪除通知消息;
所述裝置還包括:
查找單元460,用于查找與所述第二SPI對應(yīng)的IPSec VPN連接;
所述判斷單元430,還用于判斷與所述第二SPI對應(yīng)的IPSec VPN連接是否空閑,如果是,向?qū)Χ薎PSec節(jié)點(diǎn)設(shè)備發(fā)送攜帶有所述第一SPI的刪除確認(rèn)消息,以使對端IPSec節(jié)點(diǎn)設(shè)備基于所述刪除確認(rèn)消息中攜帶的第一SPI,斷開與本端的IPSec VPN連接。
在另一種可選的實(shí)現(xiàn)方式中,所述刪除單元450,還用于如果否,向?qū)Χ薎PSec節(jié)點(diǎn)設(shè)備發(fā)送攜帶所述第二SPI的刪除確認(rèn)消息,并刪除本端IPSec節(jié)點(diǎn)設(shè)備上的與該第二SPI對應(yīng)的SA,以使對端IPSec節(jié)點(diǎn)設(shè)備基于該刪除確認(rèn)消息中攜帶的所述第二SPI,刪除對端IPSec節(jié)點(diǎn)設(shè)備上的與該第二SPI對應(yīng)的SA。
在另一種可選的實(shí)現(xiàn)方式中,所述發(fā)送單元410,還用于如果未接收到對端IPSec節(jié)點(diǎn)設(shè)備發(fā)送的所述刪除確認(rèn)消息,基于預(yù)設(shè)的周期,周期性地向?qū)Χ薎PSec節(jié)點(diǎn)設(shè)備重新發(fā)送所述刪除通知消息。
上述裝置中各個單元的功能和作用的實(shí)現(xiàn)過程具體詳見上述方法中對應(yīng)步驟的實(shí)現(xiàn)過程,在此不再贅述。
對于裝置實(shí)施例而言,由于其基本對應(yīng)于方法實(shí)施例,所以相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本申請方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實(shí)施。
以上所述僅為本申請的較佳實(shí)施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請保護(hù)的范圍之內(nèi)。