專利名稱:一種隧道包的分片發(fā)送方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)包傳送方法,尤其涉及一種在互聯(lián)網(wǎng)絡(luò)通訊的通信設(shè)備中,對隧道包進(jìn)行分片發(fā)送的方法。
背景技術(shù):
隧道技術(shù)是一種在網(wǎng)絡(luò)之間傳遞數(shù)據(jù)的方式,如圖1所示,使用隧道14傳遞的數(shù)據(jù)可以是不同協(xié)議的數(shù)據(jù)包,隧道協(xié)議將其它協(xié)議的原始數(shù)據(jù)包11在路由器隧道入口12重新封裝在新的包頭中形成隧道包13發(fā)送。新的包頭提供了路由信息,從而使封裝的數(shù)據(jù)能夠通過網(wǎng)絡(luò)傳遞。被封裝的數(shù)據(jù)包在隧道的兩個端點(diǎn)之間通過網(wǎng)絡(luò)進(jìn)行路由。被封裝的數(shù)據(jù)包在網(wǎng)絡(luò)上傳遞時所經(jīng)過的邏輯路徑稱為隧道。一旦到達(dá)網(wǎng)絡(luò)終點(diǎn),如圖1中路由器隧道出口16,數(shù)據(jù)將被解包并轉(zhuǎn)發(fā)到最終目的地(例如主機(jī)18)。
而在網(wǎng)絡(luò)中傳送IP包的MTU(Maximum Transfer Unit,最大傳輸單元)對數(shù)據(jù)鏈路層能傳送的最大幀長進(jìn)行了限制,如果IP包比傳送它的數(shù)據(jù)鏈路層的MTU要大,在傳送前就要將IP包分片,分片就是將一個大的IP包分成幾個小段——片,以便每一個小片可以裝進(jìn)數(shù)據(jù)鏈路層的MTU中,分片包將在IP包的目的地被重組。
由于隧道技術(shù)需要對原始數(shù)據(jù)包進(jìn)行重新封裝包頭形成隧道包,正常情況下,非常容易出現(xiàn)隧道IP包的長度過長,這樣隧道IP包被分片的概率就大大增加了,所以使用隧道技術(shù)必須要解決好分片問題?,F(xiàn)有技術(shù)中對隧道包的分片采用的方式是先完成隧道封裝再進(jìn)行IP分片,如圖2所示,如果有隧道包并且需要分片,那么隧道包按照MTU的大小,分片成幾個適當(dāng)大小的數(shù)據(jù)包,每個數(shù)據(jù)包都有自己的隧道頭并表示為分片屬性,分別發(fā)送。也即,對于具有原始IP包頭21和原始凈荷22的原始數(shù)據(jù)包20,先將該原始數(shù)據(jù)包20進(jìn)行隧道封裝形成隧道包26,該隧道包26具有表征路由信息的隧道頭25、原始IP包頭以及原始凈荷22。如果該隧道包26需要分片,則按照MTU大小,將原始凈荷22分成適當(dāng)大小的幾個數(shù)據(jù)包,如分成221、222、223、224四個,且每個數(shù)據(jù)包都具有自己的隧道頭25并表示為分片屬性。由于此時外層隧道包的目的地是隧道對端設(shè)備,這樣分了片的隧道包就需要在隧道的對端對IP包進(jìn)行重組,而分片包的重組往往會對性能產(chǎn)生較大地影響,因此加重了隧道對端設(shè)備的負(fù)擔(dān),降低了隧道對端設(shè)備的性能。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于提供一種隧道包的分片發(fā)送方法,減輕隧道對端通信設(shè)備的處理負(fù)荷,使隧道分片包能夠被快速、有效地處理,并將分片重組的負(fù)荷分擔(dān)到目的主機(jī)上,使得網(wǎng)絡(luò)負(fù)載更加均衡。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種隧道包的分片發(fā)送方法,應(yīng)用于通信設(shè)備中的數(shù)據(jù)包發(fā)送,對需要進(jìn)行隧道封裝及分片的原始數(shù)據(jù)包,在通信設(shè)備的隧道入口設(shè)備上先進(jìn)行原始數(shù)據(jù)包的分片處理形成多個數(shù)據(jù)分片,再對所述多個數(shù)據(jù)分片分別進(jìn)行隧道封裝形成隧道包,然后發(fā)送至通信設(shè)備的隧道出口設(shè)備上進(jìn)行隧道拆封處理,并通過查找路由發(fā)送至目的地。
上述的隧道包的分片發(fā)送方法,其中,在隧道的入口設(shè)備上的分片處理過程包括如下步驟步驟一,完成原始數(shù)據(jù)包的收包處理;步驟二,判斷是否需要對該原始數(shù)據(jù)包進(jìn)行隧道封裝;對不需要進(jìn)行隧道封裝的原始數(shù)據(jù)包直接轉(zhuǎn)發(fā),對需要進(jìn)行隧道封裝的原始數(shù)據(jù)包,則判斷該原始數(shù)據(jù)包是否需要進(jìn)行分片處理;步驟三,對不需要進(jìn)行分片處理的原始數(shù)據(jù)包直接進(jìn)行隧道封裝形成隧道包后轉(zhuǎn)發(fā),對需要進(jìn)行分片處理的原始數(shù)據(jù)包進(jìn)行分片處理形成多個數(shù)據(jù)分片,再對所述多個數(shù)據(jù)分片分別進(jìn)行隧道封裝形成隧道包后轉(zhuǎn)發(fā)。
上述的隧道包的分片發(fā)送方法,其中,在步驟一中,還包括一步驟判斷所接收到的原始數(shù)據(jù)包是否為異常包,若為異常包,則丟棄,若不是異常包,則按照一定的策略判斷該數(shù)據(jù)包是否需要隧道封裝。
上述的隧道包的分片發(fā)送方法,其中,在步驟二中,判斷該原始數(shù)據(jù)包是否需要進(jìn)行分片處理的條件是將該原始數(shù)據(jù)包長度加上需要封裝的隧道頭的長度得到一總長度,計(jì)算該總長度是否大于下一段通信鏈路的最大傳輸單元值;若該總長度大于該最大傳輸單元值,則需要進(jìn)行分片處理,反之,則不需要進(jìn)行分片處理。
上述的隧道包的分片發(fā)送方法,其中,在步驟三中,對需要進(jìn)行分片處理的原始數(shù)據(jù)包進(jìn)行分片處理形成多個數(shù)據(jù)分片的過程包括如下步驟將原始數(shù)據(jù)包的凈荷分成多個盡量大的片,使每個片都可裝入一個數(shù)據(jù)鏈路層幀;將原始數(shù)據(jù)包的報(bào)頭加到每一個由凈荷分成的片的前面,形成一個數(shù)據(jù)分片。
上述的隧道包的分片發(fā)送方法,其中,所述的多個片中,其中一個片可以是8字節(jié)的非整數(shù)倍,而其他每個片的大小必須是8字節(jié)的整數(shù)倍。
上述的隧道包的分片發(fā)送方法,其中,在步驟三中,對所述多個數(shù)據(jù)分片分別進(jìn)行隧道封裝形成隧道包的過程是在每一個數(shù)據(jù)分片的前面加上隧道頭,形成隧道包。
上述的隧道包的分片發(fā)送方法,其中,在隧道出口設(shè)備上進(jìn)行隧道拆封處理的過程包括如下步驟完成隧道包的接收;對隧道包進(jìn)行隧道拆封,還原成原始數(shù)據(jù)包或分片數(shù)據(jù)包;根據(jù)數(shù)據(jù)包的報(bào)文信息查找路由表,轉(zhuǎn)發(fā)該數(shù)據(jù)包至目的地。
上述的隧道包的分片發(fā)送方法,其中,所述分片數(shù)據(jù)包在目的地進(jìn)行重組處理后還原成原始數(shù)據(jù)包。
上述的隧道包的分片發(fā)送方法,其中,所述數(shù)據(jù)包基于TCP/IP協(xié)議進(jìn)行傳送。
與現(xiàn)有技術(shù)相比,本發(fā)明通過在通信設(shè)備中先進(jìn)行隧道包的分片處理,再進(jìn)行封裝、發(fā)送處理,使得通信設(shè)備處理分片隧道包的效率更高,并通過在目的地主機(jī)上進(jìn)行分片重組,減少了隧道對端設(shè)備在處理分片隧道包重組所花費(fèi)的時間,提高了通信設(shè)備的處理能力,使得網(wǎng)絡(luò)負(fù)載更加均衡。
以下結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述,但不作為對本發(fā)明的限定。
圖1是隧道技術(shù)示例圖;圖2是現(xiàn)有技術(shù)對隧道包分片的處理示例圖;圖3是本發(fā)明對隧道包分片的處理示例圖;圖4是本發(fā)明在隧道入口設(shè)備上對隧道包的處理流程圖;圖5是本發(fā)明在隧道出口設(shè)備上對隧道包的處理流程圖。
具體實(shí)施例方式
本發(fā)明的隧道包的分片發(fā)送方法,應(yīng)用于通信設(shè)備中的數(shù)據(jù)包發(fā)送,對需要進(jìn)行隧道封裝及分片的原始的數(shù)據(jù)包,在通信設(shè)備的隧道入口設(shè)備上先進(jìn)行原始數(shù)據(jù)包的分片處理形成多個數(shù)據(jù)分片,再對所述多個數(shù)據(jù)分片分別進(jìn)行隧道封裝形成隧道包,然后發(fā)送至通信設(shè)備的隧道出口設(shè)備上進(jìn)行隧道拆封處理,并通過查找路由發(fā)送至目的地。
本發(fā)明的方法在隧道的入口設(shè)備上的分片處理過程包括如下步驟步驟一,完成原始數(shù)據(jù)包的收包處理;步驟二,判斷是否需要對該原始數(shù)據(jù)包進(jìn)行隧道封裝;對不需要進(jìn)行隧道封裝的原始數(shù)據(jù)包直接轉(zhuǎn)發(fā),對需要進(jìn)行隧道封裝的數(shù)據(jù)包,則判斷該原始數(shù)據(jù)包是否需要進(jìn)行分片處理;步驟三,對不需要進(jìn)行分片處理的原始數(shù)據(jù)包直接進(jìn)行隧道封裝形成隧道包后轉(zhuǎn)發(fā),對需要進(jìn)行分片處理的原始數(shù)據(jù)包進(jìn)行分片處理形成多個數(shù)據(jù)分片,再對所述多個數(shù)據(jù)分片分別進(jìn)行隧道封裝形成隧道包后轉(zhuǎn)發(fā)。
在隧道出口設(shè)備上進(jìn)行隧道拆封處理的過程包括如下步驟完成隧道包的接收;對隧道包進(jìn)行隧道拆封,還原成原始數(shù)據(jù)包或分片數(shù)據(jù)包;根據(jù)數(shù)據(jù)包的報(bào)文信息查找路由表,轉(zhuǎn)發(fā)該數(shù)據(jù)包至目的地。
在本發(fā)明中,其傳送的數(shù)據(jù)可以是不同協(xié)議的數(shù)據(jù)包,隧道協(xié)議將其他協(xié)議的數(shù)據(jù)包重新封裝在新的包頭中發(fā)送。
下面以基于TCP/IP協(xié)議的IP數(shù)據(jù)包為例,結(jié)合圖3~圖5對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)闡述。
請結(jié)合參考圖1的隧道技術(shù)示例圖,當(dāng)隧道入口設(shè)備收到需要轉(zhuǎn)發(fā)的IP數(shù)據(jù)報(bào)文,首先判斷是否需要隧道封裝;如果不需要就直接轉(zhuǎn)發(fā);如果需要,隧道入口設(shè)備即將該IP數(shù)據(jù)包的長度加上需封裝的IP隧道頭的長度,計(jì)算是否大于下一段鏈路的MTU值。如果隧道包的總長度大于MTU,就需要對該原始IP數(shù)據(jù)包進(jìn)行分片處理。如圖3所示,當(dāng)需隧道封裝的IP數(shù)據(jù)包且需要分片發(fā)送時,首先,對原始IP數(shù)據(jù)包30分片,分片的原則是保證分了片的IP包經(jīng)過隧道封裝后不超過MTU;從圖中可以看出原始IP數(shù)據(jù)包先被分片,然后,再對每個分了片的IP數(shù)據(jù)包分別進(jìn)行隧道封裝形成隧道包,這樣每個隧道包可正常發(fā)送。分片處理的方法是將IP原始數(shù)據(jù)包30的凈荷32分成盡量大的片,如被分成了321、322、323、324四片,但要保證每個片(包括IP報(bào)頭31和隧道包頭35)可以裝入一個數(shù)據(jù)鏈路層幀。片的大小必須是8字節(jié)的整數(shù)倍,因?yàn)榉制驣P報(bào)頭中對包的大小就是以8字節(jié)為單位計(jì)數(shù),但最后一個片的大小不必是8字節(jié)的整數(shù)倍。然后將原始IP報(bào)頭31加到每一個由凈荷32分成的片的前面,從而形成一個IP分片,再進(jìn)行隧道封裝,即在IP分片的前面加上隧道頭35,形成隧道包,最后將分了片的隧道包依次發(fā)送出去。
圖4表示了隧道入口設(shè)備對收到IP數(shù)據(jù)包且需要隧道封裝的處理流程。
步驟401,隧道入口設(shè)備收到一個需轉(zhuǎn)發(fā)的IP數(shù)據(jù)包。
步驟402,判斷該數(shù)據(jù)包是否需要進(jìn)行隧道封裝且分片?在此步驟中,先判斷是否需要進(jìn)行隧道封裝,如果不需要,則直接轉(zhuǎn)發(fā)數(shù)據(jù);如果確實(shí)要隧道封裝,那么再判斷是否需要進(jìn)行分片處理?該隧道入口設(shè)備計(jì)算隧道封裝后是否會超過MTU,如果超過,則轉(zhuǎn)到步驟403進(jìn)行分片操作,如果不超過,則不需要進(jìn)行分片處理,直接將數(shù)據(jù)包進(jìn)行隧道封裝后轉(zhuǎn)到步驟405轉(zhuǎn)發(fā)。
步驟403,隧道入口設(shè)備先對該IP數(shù)據(jù)包進(jìn)行分片,分片方法如上所述。
步驟404,分片完成之后再封裝隧道頭,完成隧道封裝。
步驟405,最后將每個分了片并完成隧道封裝的隧道包依次發(fā)往隧道出口設(shè)備。
其中,在步驟401之后,還可包括一個步驟判斷如果該包是否為異常包,如果是異常包,則丟棄該數(shù)據(jù)包;如果不是異常包,隧道入口設(shè)備則按照一定的策略判斷該包是否需要隧道封裝,即轉(zhuǎn)到步驟402;隧道出口設(shè)備收到經(jīng)過分片的隧道包后,由于分片操作是對原始IP數(shù)據(jù)包的操作,所以該隧道包對隧道出口設(shè)備來說是個正常包,而不是分片包,隧道出口設(shè)備只需對隧道包拆封,經(jīng)過拆封得到的是原始包的分片包,該分片包的目的地并非是隧道對端設(shè)備,而不需進(jìn)行分片包的重組。在經(jīng)過正常地查路由后,分片包將會被轉(zhuǎn)發(fā)到目的地,分片包的重組將在IP包的目的地進(jìn)行。
如圖5所示,表示了隧道出口設(shè)備對收到隧道包的處理流程。
步驟501,隧道出口設(shè)備收到非異常的隧道包。
步驟502,對隧道數(shù)據(jù)包進(jìn)行拆封。在本步驟中,隧道出口設(shè)備只需按照普通隧道包的處理流程進(jìn)行拆包操作,而不用去關(guān)心該隧道包是否是分片包,以及是否需要重組。拆封后的隧道包,還原為原始IP數(shù)據(jù)包(不需進(jìn)行分片處理的原始數(shù)據(jù)包)或者分片數(shù)據(jù)包(經(jīng)過分片處理后的包含各個分片數(shù)據(jù)的原始數(shù)據(jù)包)。
步驟503,隧道出口設(shè)備按照數(shù)據(jù)包的報(bào)文信息,查找路由表。
步驟504,按照路由表提供的輸出端口,將IP數(shù)據(jù)包轉(zhuǎn)發(fā)到目的地。
當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種隧道包的分片發(fā)送方法,應(yīng)用于通信設(shè)備中的數(shù)據(jù)包發(fā)送,其特征在于,對需要進(jìn)行隧道封裝及分片的原始數(shù)據(jù)包,在通信設(shè)備的隧道入口設(shè)備上先進(jìn)行原始數(shù)據(jù)包的分片處理形成多個數(shù)據(jù)分片,再對所述多個數(shù)據(jù)分片分別進(jìn)行隧道封裝形成隧道包,然后發(fā)送至通信設(shè)備的隧道出口設(shè)備上進(jìn)行隧道拆封處理,并通過查找路由發(fā)送至目的地。
2.根據(jù)權(quán)利要求1所述的隧道包的分片發(fā)送方法,其特征在于,在隧道的入口設(shè)備上的分片處理過程包括如下步驟步驟一,完成原始數(shù)據(jù)包的收包處理;步驟二,判斷是否需要對該原始數(shù)據(jù)包進(jìn)行隧道封裝;對不需要進(jìn)行隧道封裝的原始數(shù)據(jù)包直接轉(zhuǎn)發(fā),對需要進(jìn)行隧道封裝的原始數(shù)據(jù)包,則判斷該原始數(shù)據(jù)包是否需要進(jìn)行分片處理;步驟三,對不需要進(jìn)行分片處理的原始數(shù)據(jù)包直接進(jìn)行隧道封裝形成隧道包后轉(zhuǎn)發(fā),對需要進(jìn)行分片處理的原始數(shù)據(jù)包進(jìn)行分片處理形成多個數(shù)據(jù)分片,再對所述多個數(shù)據(jù)分片分別進(jìn)行隧道封裝形成隧道包后轉(zhuǎn)發(fā)。
3.根據(jù)權(quán)利要求2所述的隧道包的分片發(fā)送方法,其特征在于,在步驟一中,還包括一步驟判斷所接收到的原始數(shù)據(jù)包是否為異常包,若為異常包,則丟棄,若不是異常包,則按照一定的策略判斷該數(shù)據(jù)包是否需要隧道封裝。
4.根據(jù)權(quán)利要求2所述的隧道包的分片發(fā)送方法,其特征在于,在步驟二中,判斷該原始數(shù)據(jù)包是否需要進(jìn)行分片處理的條件是將該原始數(shù)據(jù)包長度加上需要封裝的隧道頭的長度得到一總長度,計(jì)算該總長度是否大于下一段通信鏈路的最大傳輸單元值;若該總長度大于該最大傳輸單元值,則需要進(jìn)行分片處理,反之,則不需要進(jìn)行分片處理。
5.根據(jù)權(quán)利要求2所述的隧道包的分片發(fā)送方法,其特征在于,在步驟三中,對需要進(jìn)行分片處理的原始數(shù)據(jù)包進(jìn)行分片處理形成多個數(shù)據(jù)分片的過程包括如下步驟將原始數(shù)據(jù)包的凈荷分成多個盡量大的片,使每個片都可裝入一個數(shù)據(jù)鏈路層幀;將原始數(shù)據(jù)包的報(bào)頭加到每一個由凈荷分成的片的前面,形成一個數(shù)據(jù)分片。
6.根據(jù)權(quán)利要求5所述的隧道包的分片發(fā)送方法,其特征在于,所述的多個片中,其中一個片可以是8字節(jié)的非整數(shù)倍,而其他每個片的大小必須是8字節(jié)的整數(shù)倍。
7.根據(jù)權(quán)利要求2所述的隧道包的分片發(fā)送方法,其特征在于,在步驟三中,對所述多個數(shù)據(jù)分片分別進(jìn)行隧道封裝形成隧道包的過程是在每一個數(shù)據(jù)分片的前面加上隧道頭,形成隧道包。
8.根據(jù)權(quán)利要求2所述的隧道包的分片發(fā)送方法,其特征在于,在隧道出口設(shè)備上進(jìn)行隧道拆封處理的過程包括如下步驟完成隧道包的接收;對隧道包進(jìn)行隧道拆封,還原成原始數(shù)據(jù)包或分片數(shù)據(jù)包;根據(jù)數(shù)據(jù)包的報(bào)文信息查找路由表,轉(zhuǎn)發(fā)該數(shù)據(jù)包至目的地。
9.根據(jù)權(quán)利要求8所述的隧道包的分片發(fā)送方法,其特征在于,所述分片數(shù)據(jù)包在目的地進(jìn)行重組處理后還原成原始數(shù)據(jù)包。
10.根據(jù)權(quán)利要求1所述的隧道包的分片發(fā)送方法,其特征在于,所述數(shù)據(jù)包基于TCP/IP協(xié)議進(jìn)行傳送。
全文摘要
本發(fā)明涉及一種隧道包的分片發(fā)送方法,應(yīng)用于通信設(shè)備中的數(shù)據(jù)包發(fā)送,對需要進(jìn)行隧道封裝及分片的原始的數(shù)據(jù)包,在通信設(shè)備的隧道入口設(shè)備上先進(jìn)行數(shù)據(jù)包的分片處理形成多個數(shù)據(jù)分片,再對所述多個數(shù)據(jù)分片分別進(jìn)行隧道封裝形成隧道包,然后發(fā)送至通信設(shè)備的隧道出口設(shè)備上進(jìn)行隧道拆封處理,并通過查找路由發(fā)送至目的地。本發(fā)明的方法減輕了隧道對端通信設(shè)備的處理負(fù)荷,使隧道分片包能夠被快速、有效地處理,并將分片重組的負(fù)荷分擔(dān)到目的主機(jī)上,使得網(wǎng)絡(luò)負(fù)載更加均衡。
文檔編號H04L12/56GK1561049SQ200410008409
公開日2005年1月5日 申請日期2004年3月10日 優(yōu)先權(quán)日2004年3月10日
發(fā)明者胡英, 李一峰, 王東, 鐘衛(wèi)東, 李華, 胡 英 申請人:中興通訊股份有限公司