專利名稱:一種4over6隧道中避免報文重組的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及互聯(lián)網(wǎng)技術(shù),進(jìn)一步涉及到隧道技術(shù)領(lǐng)域,具體為一
種4over6隧道中避免報文重組的方法及系統(tǒng)。
背景技術(shù):
隧道技術(shù)已大量應(yīng)用于因特網(wǎng)中,現(xiàn)有隧道類型包括4over6(IPv4 over IPv6 )隧道、6over4 (IPv6 over IPv4 )隧道、GRE ( GeneralRouting Encapsulation,通用路由封裝)隧道和L2TP (Layer TwoTunneling Protocol,第二層隧道協(xié)議)隧道等。無論那一種隧道,都具有兩個重要特征1)包含面向原始報文和隧道報文的兩次端到端通信;2)在隧道入口具有封裝操作,在隧道出口具有相應(yīng)的解封裝操作。隧道技術(shù)的上述特征帶來一個問題在包含隧道的網(wǎng)絡(luò)傳輸路徑中如何實施MTU ( Maximum Transmission Unit,最大傳輸單元)機制的問題。
以跨協(xié)議隧道4over6為例,4over6隧道中進(jìn)行原始IPv4報文轉(zhuǎn)發(fā)的示意圖如圖l所示,源節(jié)點向目的節(jié)點發(fā)出原始IPv4報文,源地址為SRC,目的地址為DST,隧道入口地址為TE,隧道出口地址為TX。隧道入口 TE收到原始IPv4報文,判斷其需要隧道封裝后,對原始IPv4報文加上隧道頭得到隧道IPv6報文,并傳送至隧道出口 ,隧道出口收到隧道IPv6報文后進(jìn)行解封裝,去掉隧道頭,得到原始IPv4報文并發(fā)送至目的地址DST?,F(xiàn)有隧道技術(shù)易出現(xiàn)TE對封裝報文進(jìn)行分片,并導(dǎo)致TX需要對這些分片重組后再解封裝轉(zhuǎn)發(fā)。然而,TX路由器在數(shù)據(jù)轉(zhuǎn)發(fā)層面難以提供這樣的支持,對高速硬件轉(zhuǎn)發(fā)尤為困難。因此,利用當(dāng)前的路由器技術(shù)在TX實現(xiàn)重組的代價極大。隧道MTU機制的解決方案中應(yīng)盡量避免在TE處對隧道報文分片,
4從而避免在TX發(fā)生重組再轉(zhuǎn)發(fā)現(xiàn)象。而現(xiàn)有技術(shù)中的隧道MTU機
制沒有解決上述問題。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種對原始報文進(jìn)行分片使得進(jìn)入隧道封
裝時的隧道報文長度足夠小,從而避免在4over6隧道中進(jìn)行報文的分片和重組的方法和系統(tǒng)。
為達(dá)到上述目的,本發(fā)明提供了一種4over6隧道中避免報文重組的方法,包括以下步驟
Sl,當(dāng)發(fā)送主機發(fā)送原始報文至隧道入口路由器,所述隧道入口路由器通過查找路由表判斷是否需要對所述原始報文進(jìn)行隧道封裝,若是,則執(zhí)行步驟S2,否則,查找所述路由表轉(zhuǎn)發(fā)所述原始報文;
S2,所述隧道入口路由器根據(jù)所述原始報文的目的地址獲得所述原始報文的封裝隧道、與所述封裝隧道對應(yīng)的封裝類型、所述封裝隧道的源地址以及所述封裝隧道的目的地址;
S3,所述隧道入口路由器根據(jù)所述封裝隧道的目的地址查找IPv6路由表,以獲得原始報文的出接口,再根據(jù)所述封裝隧道的目的地址及所述出接口查找隧道路徑最大傳輸單元PMtunnd,同時,根據(jù)所述封裝類型獲得隧道封裝長度LtJiead;然后判斷所述原始報文的長度是否大于最大分片長度PMt,e,-Lt—head,若是,則執(zhí)行步驟S4,否則對所述原始報文進(jìn)行隧道封裝,并查找所述IPv6路由表轉(zhuǎn)發(fā)隧道封裝后的報文至隧道出口路由器;
S4,所述隧道入口路由器根據(jù)最大分片長度PMtunnel-Lt—head對所述原始報文進(jìn)行分片;
S5,所述隧道入口路由器對每個分片進(jìn)行隧道封裝,然后查找所述Ipv6路由表,轉(zhuǎn)發(fā)隧道封裝后的分片報文至隧道出口路由器;
S6,所述隧道出口路由器對每個分片報文進(jìn)行解封裝得到內(nèi)嵌報文,然后查找所述Ipv4路由表將內(nèi)嵌報文發(fā)送至接收主機。
其中,所述原始報文為HV4報文;所述隧道封裝是將所述IPv4 報文封裝為IPv6報文。
本發(fā)明還提供了 一種4over6隧道中避免報文重組的系統(tǒng),包括 發(fā)送主機,用于發(fā)送原始報文至隧道入口路由器;隧道入口路由 器,用于根據(jù)上述4over6隧道中避免報文重組中的方法處理所述原 始報文,并將處理后的報文發(fā)送給隧道出口路由器;隧道出口路由器, 用于接收所述處理后的報文,對其進(jìn)行解封裝得到內(nèi)嵌報文,然后查 找所述IPv4路由表將所述內(nèi)嵌報文發(fā)送至所述接收主機;以及接收 主機,用于接收來自隧道出口路由器的報文。
上述技術(shù)方案具有如下優(yōu)點通過對原始報文進(jìn)行分片使得進(jìn)入 隧道封裝時的隧道報文長度足夠小,從而避免在4over6隧道中進(jìn)行 報文的分片和重組,實驗表明本發(fā)明的技術(shù)方案使得隧道通信的性能 有了較大的提高。
圖l是現(xiàn)有技術(shù)在4over6隧道中進(jìn)行原始IPv4報文轉(zhuǎn)發(fā)的示意圖; 圖2是本發(fā)明實施例的4over6隧道中避免報文重組的方法流程
圖3是本發(fā)明實施例的4over6隧道中避免報文重組的系統(tǒng)結(jié)構(gòu)
圖4是本發(fā)明實施例與現(xiàn)有技術(shù)的對比實驗示意圖。
具體實施例方式
下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式
作進(jìn)一步詳細(xì) 描述。以下實施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。
本發(fā)明實施例的4over6隧道中避免報文重組的方法流程圖,如圖 2所示
步驟S301,當(dāng)發(fā)送主機發(fā)送原始報文至隧道入口路由器,隧道入口路由器接收IPv4報文,并通過查找IPv4路由表判斷是否需要對 IPv4報文進(jìn)行隧道封裝,若是,則執(zhí)行步驟S302,否則,查找所述 IPv4路由表轉(zhuǎn)發(fā)IPv4報文;
步驟S302,所述隧道入口路由器根據(jù)IPv4報文的目的地址獲得 IPv4報文的封裝隧道、與所述封裝隧道對應(yīng)的封裝類型、所述封裝隧 道的源地址以及所述封裝隧道的目的地址;
步驟S303,所述隧道入口路由器根據(jù)所述封裝隧道的目的地址 查找IPv6路由表,以獲得IPv4報文的出接口,再根據(jù)所述封裝隧道 的目的地址及所述出接口査找隧道路徑最大傳輸單元PMtunnd,同時, 根據(jù)所述封裝類型獲得隧道封裝長度Lt—head=40;然后判斷所述報文 的長度是否大于最大分片長度PMtunnel-Lt—head=PMtmmel-40,若是,則 執(zhí)行步驟S304,否則對IPv4報文進(jìn)行隧道封裝,并查找所述IPv6 路由表轉(zhuǎn)發(fā)隧道封裝后的報文至隧道出口路由器;
步驟S304 ,所述隧道入口路由器根據(jù)最大分片長度
head
對所述IPv4報文進(jìn)行分片;
步驟S305,所述隧道入口路由器對每個分片進(jìn)行隧道封裝,將 所述IPv4報文封裝為IPv6報文,然后査找所述IPv6路由表,轉(zhuǎn)發(fā)隧 道封裝后的分片報文至隧道出口路由器;
在上述步驟305之后,所述隧道出口路由器對每個分片報文進(jìn)行 解封裝得到內(nèi)嵌IPv4報文,然后查找所述IPv4路由表將內(nèi)嵌IPv4 報文發(fā)送至接收主機。其中內(nèi)嵌IPv4報文可以為原始IPv4報文,也 可以是原始IPv4報文的分片。
上述實施例中, 一個隧道入口路由器可以配置多個封裝隧道。
本發(fā)明實施例的4over6隧道中避免報文重組的系統(tǒng)結(jié)構(gòu)圖如圖3 所示,A為發(fā)送主機,B為隧道入口路由器,D為隧道出口路由器, E為接收主機。本發(fā)明利用圖3所示的系統(tǒng)為模型進(jìn)行了模擬實驗, A、 E、 F均為運行WindowsXP系統(tǒng)的PC機,B、 C、 D均為具有雙以太網(wǎng)卡的Linux系統(tǒng),實現(xiàn)IPv4/IPv6協(xié)議棧、ICMPv4/v6、以及隧
道轉(zhuǎn)發(fā)功能,模擬具有雙協(xié)議棧及隧道轉(zhuǎn)發(fā)功能的路由器。
本實驗通過pcap工具實現(xiàn)報文的收發(fā),對跨協(xié)議隧道4over6進(jìn)
行了測試。實驗中所有鏈路的隧道路徑最大傳輸單元PMtun^均為
1500。實驗1利用了本發(fā)明實施例中4over6隧道中避免報文重組的 方法;實驗2中利用了現(xiàn)有技術(shù)中的4over6隧道MTU機制,即允許 隧道入口路由器對進(jìn)入隧道的報文進(jìn)行分片。兩個實驗都測試4over6 隧道端到端的通信。4over6隧道測試中,路由器B、 C、 D之間鏈路 運行IPv6協(xié)議,其它鏈路為IPv4協(xié)議。主機A通過Sniffer軟件發(fā) 送目的地址為主機E的IPv4報文,在主機E上分析收包情況。測試 結(jié)果如圖4所示。從圖4中可以看出,在處理長度超過PM咖erLt—head 的報文時(其中4over6隧道的封裝開銷為Lt—head=40比特),本發(fā)明實 施例的隧道報文分片方案使得可利用帶寬有了很大的提高,從而提高 了通信性能。圖3中,F(xiàn)為監(jiān)視主機,它通過Sniffer軟件觀察從路由 器C發(fā)往路由器D的隧道報文。發(fā)現(xiàn)實驗l中隧道傳輸中,在該鏈 路上沒有出現(xiàn)任何分片的隧道報文,而在實驗2中處理大報文時會在 該鏈路發(fā)現(xiàn)大量分片。
由以上實施例可以看出,本發(fā)明的實施例通過對原始報文進(jìn)行分 片使得進(jìn)入隧道封裝時的隧道報文長度足夠小,從而避免在4over6隧 道中進(jìn)行報文的分片和重組,實驗表明本發(fā)明的方法使得隧道通信的 性能有了較大的提高。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng) 域的普通技術(shù)人員來說,在不脫離本發(fā)明技術(shù)原理的前提下,還可以 做出若千改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
8
權(quán)利要求
1、一種4over6隧道中避免報文重組的方法,其特征在于,包括以下步驟S1,當(dāng)發(fā)送主機發(fā)送原始報文至隧道入口路由器時,所述隧道入口路由器通過查找路由表判斷是否需要對所述原始報文進(jìn)行隧道封裝,若是,則執(zhí)行步驟S2,否則,查找所述路由表轉(zhuǎn)發(fā)所述原始報文;S2,所述隧道入口路由器根據(jù)所述原始報文的目的地址獲得所述原始報文的封裝隧道、與所述封裝隧道對應(yīng)的封裝類型、所述封裝隧道的源地址以及所述封裝隧道的目的地址;S3,所述隧道入口路由器根據(jù)所述封裝隧道的目的地址查找IPv6路由表,以獲得所述原始報文的出接口,再根據(jù)所述封裝隧道的目的地址及所述出接口查找隧道路徑最大傳輸單元PMtunnel,同時,根據(jù)所述封裝類型獲得隧道封裝長度Lt_head;然后判斷所述原始報文的長度是否大于最大分片長度PMtunnel-Lt_head,若是,則執(zhí)行步驟S4,否則對所述原始報文進(jìn)行隧道封裝,并查找所述IPv6路由表轉(zhuǎn)發(fā)隧道封裝后的報文至隧道出口路由器;S4,所述隧道入口路由器根據(jù)最大分片長度PMtunnel-Lt_head對所述原始報文進(jìn)行分片;S5,所述隧道入口路由器對每個分片進(jìn)行隧道封裝,然后查找所述IPv6路由表,轉(zhuǎn)發(fā)隧道封裝后的分片報文至隧道出口路由器;
2、 如權(quán)利要求l所述的4over6隧道中避免報文重組的方法,其 特征在于,所述步驟S5之后還包括步驟S6:所述隧道出口路由器對 每個分片報文進(jìn)行解封裝得到內(nèi)嵌報文,然后查找所述IPv4路由表 將所述內(nèi)嵌報文發(fā)送至所述接收主機。
3、 如權(quán)利要求1所述的4over6隧道中避免報文重組的方法,其 特征在于,所述原始報文為IPv4報文。
4、 如權(quán)利要求3所述的4over6隧道中避免報文重組的方法,其 特征在于,所述步驟S3或步驟S5中進(jìn)行隧道封裝的步驟具體為將所 述IPv4報文封裝為IPv6報文。
5、 一種4over6隧道中避免報文重組的系統(tǒng),其特征在于,包括 發(fā)送主機,用于發(fā)送原始報文至隧道入口路由器; 隧道入口路由器,用于根據(jù)權(quán)利要求1或3或4之任一所述的4over6隧道中避免報文重組的方法處理所述原始報文,并將處理后的 報文發(fā)送給隧道出口路由器;隧道出口路由器,用于接收所述處理后的報文,并對其進(jìn)行解封 裝得到內(nèi)嵌報文,然后查找所述IPv4路由表將所述內(nèi)嵌報文發(fā)送至 所述接收主機;以及接收主機,用于接收來自隧道出口路由器的報文。
全文摘要
本發(fā)明公開了一種4over6隧道中避免報文重組的方法及系統(tǒng),所述方法包括步驟隧道入口路由器根據(jù)封裝隧道的目的地址查找路由表,以獲得報文的出接口,再根據(jù)封裝隧道的目的地址及出接口查找隧道路徑最大傳輸單元PM<sub>tunnel</sub>,同時,根據(jù)封裝類型獲得隧道封裝長度L<sub>t_head</sub>;然后判斷報文的長度是否大于最大分片長度PM<sub>tunnel</sub>-L<sub>t_head</sub>,若是,則根據(jù)最大分片長度PM<sub>tunnel</sub>-L<sub>t_head</sub>對報文進(jìn)行分片,然后對每個分片進(jìn)行隧道封裝,否則直接對所述報文進(jìn)行隧道封裝,并查找IPv6路由表轉(zhuǎn)發(fā)隧道封裝后的報文。本發(fā)明通過對原始報文進(jìn)行分片使得進(jìn)入隧道封裝時的隧道報文長度足夠小,從而避免在4over6隧道中進(jìn)行報文的分片和重組,實驗表明本發(fā)明的技術(shù)方案使得隧道通信的性能有了較大的提高。
文檔編號H04L12/56GK101640636SQ20091009019
公開日2010年2月3日 申請日期2009年7月31日 優(yōu)先權(quán)日2009年7月31日
發(fā)明者于樂軍, 珺 何, 波 孫, 融 肖, 肖永康 申請人:北京師范大學(xué)