本申請涉及通信技術領域,特別涉及一種確定VPN數據通道的最優MTU的方法和裝置。
背景技術:
隨著VPN(Virtual Private Network,虛擬專用網絡)的應用越來越廣泛,人們在體驗了VPN豐富的接入特性后,開始對VPN的轉發性能提出了更高的要求,以期能夠滿足快速訪問業務的需求。在傳統的轉發性能優化中,各廠商大都只關注設備端的優化,而在實際的網絡傳輸中,網絡鏈路也會對報文的轉發性能造成影響。例如,網絡鏈路中不合適的MTU(Maximum Transmission Unit,最大傳輸單元)值會降低網絡傳輸的效率。
在現有的MTU選擇方案中,大多數網絡管理員一般根據經驗設置一個網絡鏈路MTU值,或者設置一個比發送端設備MTU小一定數值的MTU,由于實際組網的復雜性,網絡管理員設置的MTU值并不一定是最優的,這會導致網絡傳輸的效率受到影響。
技術實現要素:
有鑒于此,本申請提供一種確定VPN數據通道的最優MTU的方法和裝置,用于選擇VPN數據通道的最優MTU,以解決現有方案中,網絡管理員設置的MTU導致網絡傳輸的效率受到影響的問題。
具體地,本申請是通過如下技術方案實現的:
一種確定VPN數據通道的最優MTU的方法,應用于VPN客戶端所在的網絡設備,所述方法包括:
當成功接入VPN服務端后,讀取本地網卡的MTU值;
構造報文長度與讀取到的所述本地網卡的MTU值相同的探測報文;
將所述探測報文發送至所述VPN服務端,以使VPN服務端基于所述探測報文的報文長度以及所述探測報文是否被分片,確定VPN數據通道的最優MTU值。
在所述確定VPN數據通道的最優MTU的方法中,還包括:
啟動預設的重傳定時器;
在到達重傳定時器的定時時間后,重新發送所述探測報文至所述VPN服務端。
在所述確定VPN數據通道的最優MTU的方法中,還包括:
接收所述VPN服務端基于所述探測報文的報文長度以及所述探測報文是否被分片,確定出的所述最優MTU值;
將所述VPN數據通道的MTU值設置為所述最優MTU值。
一種確定VPN數據通道的最優MTU的方法,應用于VPN服務端所在的網絡設備,所述方法包括:
接收VPN客戶端發送的所述探測報文;
根據所述探測報文的長度以及所述探測報文是否被分片,確定VPN數據通道的最優MTU值;
將所述VPN數據通道的MTU值設置為所述最優MTU值。
在所述確定VPN數據通道的最優MTU的方法中,所述根據所述探測報文的長度以及所述探測報文是否被分片,確定VPN數據通道的最優MTU值,包括:
接收到報文后,判斷所述報文是否為分片報文;
如果所述報文不是分片報文,對所述報文進行解密,并判斷解密后的所述報文是否為探測報文;
如果解密后的所述報文為探測報文,獲取所述報文的報文長度,并基于所述報文長度確定所述VPN數據通道的最優MTU值。
在所述確定VPN數據通道的最優MTU的方法中,還包括:
如果所述報文是分片報文,則收集構成一個完整報文的所有分片報文;
對收集到的一個完整報文的所有分片報文進行解密,并判斷解密后的完整報文是否為探測報文;
如果所述完整報文是探測報文,獲取構成所述完整報文的分片報文中最大的報文長度,并基于所述分片報文中最大的報文長度確定所述VPN數據通道的最優MTU值。
在所述確定VPN數據通道的最優MTU的方法中,還包括:
將確定的所述VPN數據通道的最優MTU值發送至所述VPN客戶端。
一種確定VPN數據通道的最優MTU的裝置,應用于VPN客戶端所在的網絡設備,包括:
讀取單元,用于當成功接入VPN服務端后,讀取本地網卡的MTU值;
構造單元,用于構造報文長度與讀取到的所述本地網卡的MTU值相同的探測報文;
第一發送單元,用于將所述探測報文發送至所述VPN服務端,以使VPN服務端基于所述探測報文的報文長度以及所述探測報文是否被分片,確定VPN數據通道的最優MTU值。
在所述確定VPN數據通道的最優MTU的裝置中,還包括:
啟動單元,用于啟動預設的重傳定時器;
所述第一發送單元,進一步用于在到達重傳定時器的定時時間后,重新發送所述探測報文至所述VPN服務端。
在所述確定VPN數據通道的最優MTU的裝置中,還包括:
第一接收單元,用于接收所述VPN服務端基于所述探測報文的報文長度以及所述探測報文是否被分片,確定出的所述最優MTU值;
第一設置單元,用于將所述VPN數據通道的MTU值設置為所述最優MTU值。
一種確定VPN數據通道的最優MTU的裝置,應用于VPN服務端所在的網絡設備,所述裝置包括:
第二接收單元,用于接收VPN客戶端發送的所述探測報文;
確定單元,用于根據所述探測報文的長度以及所述探測報文是否被分片,確定VPN數據通道的最優MTU值;
第二設置單元,用于將所述VPN數據通道的MTU值設置為所述最優MTU值。
在所述確定VPN數據通道的最優MTU的裝置中,所述確定單元,包括:
判斷單元,用于接收到報文后,判斷所述報文是否為分片報文;
解密單元,用于如果所述報文不是分片報文,對所述報文進行解密,并判斷解密后的所述報文是否為探測報文;
獲取單元,用于如果解密后的所述報文為探測報文,獲取所述報文的報文長度,并基于所述報文長度確定所述VPN數據通道的最優MTU值。
在所述確定VPN數據通道的最優MTU的裝置中,所述確定單元,還包括:
收集單元,用于如果所述報文是分片報文,則收集構成一個完整報文的所有分片報文;
所述解密單元,進一步用于對收集到的一個完整報文的所有分片報文進行解密,并判斷解密后的完整報文是否為探測報文;
所述獲取單元,進一步用于如果所述完整報文是探測報文,獲取構成所述完整報文的分片報文中最大的報文長度,并基于所述分片報文中最大的報文長度確定所述VPN數據通道的最優MTU值。
在所述確定VPN數據通道的最優MTU的裝置中,所述裝置還包括:
第二發送單元,用于將確定的所述VPN數據通道的最優MTU值發送至所述VPN客戶端。
本發明實施例中,VPN客戶端通過以所在的網絡設備的本地網卡的MTU值構造探測報文,將該探測報文發送至VPN服務端。VPN服務端在接收到上述探測報文后,可以基于該探測報文的報文長度以及上述探測報文是否被分片,來確定VPN數據通道的最優MTU值,從而可以解決了由于管理員基于經驗設置MTU值,導致報文被分片或者沒有充分利用鏈路資源,而造成網絡傳輸的效率受到影響的問題。
附圖說明
圖1是本申請示出的一種確定VPN數據通道的最優MTU的方法的流程圖;
圖2是本申請示出的另一種確定VPN數據通道的最優MTU的方法的流程圖;
圖3是本申請示出的一種確定VPN數據通道的最優MTU的裝置的邏輯框圖;
圖4是本申請示出的一種確定VPN數據通道的最優MTU的裝置的硬件結構圖;
圖5是本申請示出的另一種確定VPN數據通道的最優MTU的裝置的邏輯框圖;
圖6是本申請示出的另一種確定VPN數據通道的最優MTU的裝置的硬件結構圖。
具體實施方式
為了使本技術領域的人員更好地理解本發明實施例中的技術方案,并使本發明實施例的上述目的、特征和優點能夠更加明顯易懂,下面結合附圖對現有技術方案和本發明實施例中的技術方案作進一步詳細的說明。
隨著VPN的應用越來越廣泛,人們在體驗了VPN豐富的接入特性后,開始對VPN的轉發性能提出了更高的要求,以期能夠滿足快速訪問業務的需要。
在傳統的轉發性能優化中,各廠商大都只關注設備端的優化,使用了芯片加解密、驅動快速轉發技術,大大的提升了設備端的吞吐量和轉發性能。但是在實際的網絡傳輸中,網絡鏈路的MTU值也會對報文的轉發性能造成一定影響。
現有的處理方案里,網絡管理員通常是根據經驗設置一個MTU值;比如,當VPN客戶端與VPN服務端之間通過TCP連接承載業務數據時,則可以通過設置TCP連接的MSS(Maximum Segment Size,最大分段大小)值來實現。
然而,由管理員基于經驗設置MTU值,一方面,可能因為設置的MTU值大于中轉設備的MTU值而導致報文在傳輸過程中被分片,到達VPN服務端后又被重組,引起報文處理的延時和重傳。
另一方面,也有可能設置的MTU值小于網絡鏈路中的MTU值,雖然避免報文被分片,但是會造成鏈路資源的浪費。
可見,網絡管理員根據經驗設置的MTU并不一定是最優的,這會導致網絡傳輸的效率受到影響。
為解決上述問題,在本申請實施例中,VPN客戶端通過以所在的網絡設備的本地網卡的MTU構造探測報文,將該探測報文發送至VPN服務端。VPN服務端在接收到上述探測報文后,可以基于該探測報文的報文長度以及上述探測報文是否被分片,來確定VPN數據通道的最優MTU值,從而可以解決由于管理員基于經驗設置MTU值,導致報文被分片或者沒有充分利用鏈路資源,而造成網絡傳輸的效率受到影響的問題。
參見圖1,為本申請示出的一種確定VPN數據通道的最優MTU的方法的流程圖,該流程圖從VPN客戶端側進行描述;所述方法包括以下步驟:
步驟101:當成功接入VPN服務端后,讀取本地網卡的MTU值。
步驟102:構造報文長度與讀取到的所述本地網卡的MTU值相同的探測報文。
步驟103:將所述探測報文發送至所述VPN服務端,以使VPN服務端基于所述探測報文的報文長度以及所述探測報文是否被分片,確定VPN數據通道的最優MTU值。
與上述從VPN客戶端側描述的確定VPN數據通道的最優MTU的方法的流程圖對應,參見圖2,為本申請示出的另一種確定VPN數據通道的最優MTU的方法的流程圖,該流程圖從VPN服務端側進行描述;所述方法包括以下步驟:
步驟201:接收VPN客戶端發送的所述探測報文。
步驟202:根據所述探測報文的長度以及所述探測報文是否被分片,確定VPN數據通道的最優MTU值。
步驟203:將所述VPN數據通道的MTU值設置為所述最優MTU值。
如前所述,在現有的處理方案中,管理員根據經驗選擇的VPN客戶端所在網絡設備的發送報文的MTU值,可能因與網絡鏈路的中轉設備的MTU值有差異,而對網絡鏈路的傳輸效率產生影響。
在本實施例中,VPN客戶端以所在的網絡設備的本地網卡的MTU值構造探測報文,將探測報文發送至VPN服務端。VPN服務端接收到上述探測報文后,基于該探測報文的報文長度以及該探測報文是否被分片,確定出網絡鏈路的最優MTU值,并設置VPN數據通道的MTU值為上述最優MTU值。
具體而言,VPN客戶端首先可以在成功接入VPN服務端后,讀取本地網卡的MTU值。其中,本地網卡是該VPN客戶端所在的網絡設備的網卡。
上述VPN客戶端讀取到本地網卡的MTU值后,構造報文長度與上述本地網卡的MTU值相同的探測報文。
在本實施例中,上述VPN客戶端可以將上述探測報文發送至上述VPN服務端。VPN服務端接收到上述探測報文后,基于上述探測報文的長度以及上述探測報文是否被分片,來確定網絡鏈路的最優MTU值。
在示出的一種實施方式中,上述VPN服務端在接收到上述VPN客戶端發送的報文時,接收到的報文可能是探測報文,也可能是普通的數據報文;并且,該報文可能是完整報文,也可能是分片報文。首先可以判斷該數據報文是否為分片報文。
一方面,如果該報文不是分片報文,則可以將該報文直接按照普通解密流程進行解密。解密完成后,可以先判斷該報文是否為探測報文。
當該報文是上述探測報文時,此時上述VPN服務端能接收到未經分片的探測報文,則說明上述VPN服務端與上述VPN客戶端之間的網絡鏈路上的中轉設備的MTU值大于上述VPN客戶端所在的網絡設備的網卡的MTU值。在這種情況下,可以獲取接收到的該報文的報文長度(即上述VPN客戶端所在的網絡設備的網卡的MTU值),并將報文的報文長度確定為上述網絡鏈路的最優MTU。
通過這種方式,后續上述VPN客戶端在以上述VPN客戶端所在的網絡設備的網卡的MTU值發送數據報文時,可以使上述網絡鏈路的效率達到現有硬件支持下的最大值。
當然,當該報文是普通的數據報文時,此時可以直接轉發該報文即可。
另一方面,如果該報文是分片報文,則可以收集構成一個完整報文的所有分片報文,在收集完成后,可以將構成一個完整報文的所有分片報文按鏈表形式組織后,再按照分片解密流程進行解密。解密完成后,可以先判斷上述完整報文是否為探測報文。
當上述完整報文是上述探測報文時,則說明網絡鏈路中存在任一中轉設備的MTU值小于上述VPN客戶端所在的網絡設備的網卡的MTU值。因此,上述完整報文對應的鏈表中,報文長度最大的分片報文的報文長度即為網絡鏈路的中轉設備中的最小MTU值。上述VPN客戶端以超出上述最小MTU值發送數據報文,數據報文一定會被分片。獲取上述最小MTU值,此即為VPN數據通道的最優MTU值。
當上述完整報文是普通的數據報文時,可以轉發上述完整報文。
在本實施例中,上述VPN服務端確定出VPN數據通道的最優MTU值后,可以將VPN數據通道的MTU值設置為上述最優MTU值。
下面以TCP連接為例進行說明。當然,也可以是其它類型的網絡連接,比如:UDP連接,在此不再贅述。
當上述VPN數據通道是TCP連接時,可以基于該最優MTU值,為上述VPN服務端與VPN客戶端之間的TCP連接設置最優MSS值。
其中,上述最優MSS值可以由上述最優MTU值減去TCP報文頭長度得到。當將上述TCP連接的MSS值設置為最優MSS值后,后續上述VPN客戶端將基于TCP連接采用最優MSS值向上述VPN服務端發送數據報文:
一方面,采用最優MSS值發送數據報文,將不再會因為MSS值設置的過大被無效分片,從而可以避免報文處理中的延時和重傳;
另一方面,采用最優MSS值發送數據報文,將不再會因為MSS值設置的過小而浪費網絡鏈路的資源,從而可以充分利用了網絡鏈路的資源,提升網絡傳輸的效率。
在本實施例中,除了以上描述的由上述VPN服務端直接設置VPN數據通道的最優MTU值以外,還可以由上述VPN客戶端來設置VPN數據通道的最優MTU值。
在示出的另一種實施方式中,上述VPN服務端在確定出上述最優MTU值后,也可以將上述最優MTU值發送至上述VPN客戶端。
上述VPN客戶端在接收到上述最優MTU值后,可以替代上述VPN服務端,將與上述VPN服務端之間的VPN數據通道的MTU值設置為最優MTU值。如果上述VPN客戶端完成這步動作,則上述VPN服務端不再重復操作。
VPN客戶端與VPN服務端之間的實際網絡鏈路通過的中轉設備,可能隨時會有變化,所以限制網絡鏈路的MTU值的中轉設備可能會有變化,網絡鏈路的實際MTU值因此會改變。
在本實施例中,在上述VPN客戶端,可以啟動一個預先設置的重傳定時器,該重傳定時器設定了探測報文的重傳時間,并對該重傳時間進行計時,該重傳時間即為定時時間,在上述重傳定時器完成計時后,重新開始計時。在到達該重傳定時器的定時時間后,重新發送上述探測報文至上述VPN服務端。
可見,上述VPN客戶端可以周期性地發送探測報文至上述VPN服務端,因此VPN數據通道的MTU總是針對網絡鏈路的實際中轉設備而設置的最優值,保證了網絡傳輸的效率最高。
綜上所述,VPN客戶端以所在的網絡設備的網卡支持的MTU值,向VPN服務端發送探測報文。VPN服務端接收到VPN客戶端發送的上述探測報文后,根據該探測報文的長度以及上述探測報文是否被分片,確定與VPN客戶端之間的VPN數據通道的最優MTU值。
如果該探測報文不是分片報文,則說明VPN客戶端能夠發出的MTU值小于網絡鏈路的MTU值,因此客戶端支持的MTU值為最優MTU值;
如果該探測報文是分片報文,則說明VPN客戶端能夠發出的MTU值大于網絡鏈路的MTU值,分片報文中報文長度的最大值是網絡鏈路所能通過的最大報文長度。因此,分片報文中的報文長度的最大值為VPN數據通道的最優MTU值。
獲得上述最優MTU值后,將VPN客戶端與VPN服務端之間的VPN數據通道的MTU值設置為上述最優MTU值。
通過上述措施,可以確保選擇的VPN數據通道的MTU值是最優值,使網絡鏈路的傳輸效率最高。解決了現有方案中,網絡管理員設置的MTU值導致網絡傳輸的效率受到影響的問題。
與本申請確定VPN數據通道的最優MTU的方法的實施例相對應,本申請還提供了用于執行上述方法實施例的裝置的實施例。
參見圖3,為本申請示出的一種確定VPN數據通道的最優MTU的裝置的邏輯框圖,該裝置應用于VPN客戶端所在的網絡設備。
如圖3所示,該確定VPN數據通道的最優MTU的裝置30包括:
讀取單元310,用于當成功接入VPN服務端后,讀取本地網卡的MTU值。
構造單元320,用于構造報文長度與讀取到的所述本地網卡的MTU值相同的探測報文。
第一發送單元330,用于將所述探測報文發送至所述VPN服務端,以使VPN服務端基于所述探測報文的報文長度以及所述探測報文是否被分片,確定VPN數據通道的最優MTU值。
在本例中,所述裝置30還包括:
啟動單元340,用于啟動預設的重傳定時器。
所述第一發送單元330,進一步用于在到達重傳定時器的定時時間后,重新發送所述探測報文至所述VPN服務端。
在本例中,所述裝置30還包括:
第一接收單元350,用于接收所述VPN服務端基于所述探測報文的報文長度以及所述探測報文是否被分片,確定出的所述最優MTU值。
第一設置單元360,用于將所述VPN數據通道的MTU值設置為所述最優MTU值。
本申請確定VPN數據通道的最優MTU的裝置的實施例可以應用在VPN客戶端所在的網絡設備上。裝置實施例可以通過軟件實現,也可以通過硬件或者軟硬件結合的方式實現。以軟件實現為例,作為一個邏輯意義上的裝置,是通過其所在VPN客戶端所在的網絡設備的處理器將非易失性存儲器中對應的計算機程序指令讀取到內存中運行形成的。從硬件層面而言,如圖4所示,為本申請確定VPN數據通道的最優MTU的裝置所在VPN客戶端所在的網絡設備的一種硬件結構圖,除了圖4所示的處理器、內存、網絡接口、以及非易失性存儲器之外,實施例中裝置所在的VPN客戶端所在的網絡設備通常根據該確定VPN數據通道的最優MTU的裝置的實際功能,還可以包括其他硬件,對此不再贅述。
參見圖5,為本申請示出的一種確定VPN數據通道的最優MTU的裝置的邏輯框圖,該裝置應用于VPN服務端所在的網絡設備。
如圖5所示,該確定VPN數據通道的最優MTU的裝置50包括:
第二接收單元510,用于接收VPN客戶端發送的所述探測報文。
確定單元520,用于根據所述探測報文的長度以及所述探測報文是否被分片,確定VPN數據通道的最優MTU值。
第二設置單元530,用于將所述VPN數據通道的MTU值設置為所述最優MTU值。
在本例中,所述確定單元520,包括:
判斷單元521,用于接收到報文后,判斷所述報文是否為分片報文。
解密單元522,用于如果所述報文不是分片報文,對所述報文進行解密,并判斷解密后的所述報文是否為探測報文。
獲取單元523,用于如果解密后的所述報文為探測報文,獲取所述報文的報文長度,并基于所述報文長度確定所述VPN數據通道的最優MTU值。
在本例中,所述確定單元520,還包括:
收集單元524,用于如果所述報文是分片報文,則收集構成一個完整報文的所有分片報文。
所述解密單元522,進一步用于對收集到的一個完整報文的所有分片報文進行解密,并判斷解密后的完整報文是否為探測報文。
所述獲取單元523,進一步用于如果所述完整報文是探測報文,獲取構成所述完整報文的分片報文中最大的報文長度,并基于所述分片報文中最大的報文長度確定所述VPN數據通道的最優MTU值。
在本例中,所述裝置50,還包括:
第二發送單元540,用于將確定的所述VPN數據通道的最優MTU值發送至所述VPN客戶端。
本申請確定VPN數據通道的最優MTU的裝置的實施例可以應用在VPN服務端所在的網絡設備上。裝置實施例可以通過軟件實現,也可以通過硬件或者軟硬件結合的方式實現。以軟件實現為例,作為一個邏輯意義上的裝置,是通過其所在VPN服務端所在的網絡設備的處理器將非易失性存儲器中對應的計算機程序指令讀取到內存中運行形成的。從硬件層面而言,如圖6所示,為本申請確定VPN數據通道的最優MTU的裝置所在VPN服務端所在的網絡設備的一種硬件結構圖,除了圖6所示的處理器、內存、網絡接口、以及非易失性存儲器之外,實施例中裝置所在的VPN服務端所在的網絡設備通常根據該確定VPN數據通道的最優MTU的裝置的實際功能,還可以包括其他硬件,對此不再贅述。
上述裝置中各個單元的功能和作用的實現過程具體詳見上述方法中對應步驟的實現過程,在此不再贅述。
對于裝置實施例而言,由于其基本對應于方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本申請方案的目的。本領域普通技術人員在不付出創造性勞動的情況下,即可以理解并實施。
以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請保護的范圍之內。