專利名稱:一種用戶數(shù)據(jù)包協(xié)議udp隧道中傳輸報(bào)文的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及隧道技術(shù)領(lǐng)域,特別涉及一種用戶數(shù)據(jù)包協(xié)議隧道傳輸報(bào)文的方法及
裝置O
背景技術(shù):
隧道技術(shù)(Tunneling)是一種通過使用互聯(lián)網(wǎng)絡(luò)的基礎(chǔ)設(shè)施在網(wǎng)絡(luò)之間傳遞數(shù) 據(jù)的方式。使用隧道傳遞的數(shù)據(jù)或負(fù)載可以是不同協(xié)議的數(shù)據(jù)幀或包。隧道協(xié)議將其它協(xié) 議的數(shù)據(jù)幀或包重新封裝然后通過隧道發(fā)送。新的幀頭,即隧道頭提供路由信息,以便通過 互聯(lián)網(wǎng)傳遞被封裝的負(fù)載數(shù)據(jù)。隧道技術(shù)允許授權(quán)移動(dòng)用戶或已授權(quán)的用戶在任何時(shí)間、 任何地點(diǎn)訪問局域網(wǎng),例如企業(yè)網(wǎng)絡(luò),很大程度上提高了安全性,減低了網(wǎng)絡(luò)上竊聽,篡改 風(fēng)險(xiǎn)。因?yàn)樗淼兰夹g(shù)的這些優(yōu)點(diǎn),所以被許多企業(yè)推崇并應(yīng)用。一個(gè)典型的隧道組網(wǎng)架構(gòu)如圖1所示,包括設(shè)備(Station,STA)、接入點(diǎn)(Access Point, AP)、交換器(SWITCH)、接入控制器(Access Controler, AC)、以及遠(yuǎn)程寬帶接入服務(wù) 器(Broadband Remote Access Server,BRAS),其中,AP 與 AC 是隧道的兩端。參見圖 2,該 隧道中報(bào)文傳輸?shù)倪^程包括步驟201 設(shè)備STA將原始的數(shù)據(jù)報(bào)文發(fā)送到AP。步驟202 =AP將接收的數(shù)據(jù)報(bào)文作為乘客報(bào)文進(jìn)行隧道封裝,獲得隧道報(bào)文。步驟203 =AP將隧道報(bào)文通過交換機(jī)Switch發(fā)送給AC。步驟204 :AC對(duì)接收到的隧道報(bào)文進(jìn)行解封裝,還原為原始的數(shù)據(jù)報(bào)文。這里,AC對(duì)隧道報(bào)文進(jìn)行校驗(yàn),校驗(yàn)通過后剝掉該隧道報(bào)文的隧道頭,獲得原始的 數(shù)據(jù)報(bào)文。步驟205 AC發(fā)送還原后的數(shù)據(jù)報(bào)文。這是數(shù)據(jù)報(bào)文的傳輸,而響應(yīng)報(bào)文正好相反,包括步驟206 :AC將響應(yīng)報(bào)文封裝為隧道報(bào)文。步驟207 =AC將隧道報(bào)文通過交換機(jī)Switch發(fā)送給AP。步驟208 =AP對(duì)接收到的隧道報(bào)文進(jìn)行解封裝,獲得響應(yīng)報(bào)文。當(dāng)然,這里仍需要進(jìn)行校驗(yàn),校驗(yàn)通過后才能進(jìn)行接封裝。步驟209 =AP將響應(yīng)報(bào)文發(fā)送給設(shè)備。報(bào)文經(jīng)過隧道封裝后,隧道報(bào)文就會(huì)變大,可能會(huì)超過隧道中網(wǎng)絡(luò)設(shè)備的最大傳 輸單元(Maximum Transmission Unit,MTU)的值。此時(shí),需要對(duì)隧道報(bào)文該進(jìn)行合理分片, 才能通過該隧道進(jìn)行傳輸。目前,一般是直接將封裝后隧道報(bào)文進(jìn)行分片,在隧道中傳輸分片后的隧道報(bào)文。 其中,分片后的隧道報(bào)文的隧道頭中攜帶有該片隧道報(bào)文的分片標(biāo)識(shí)。到達(dá)隧道對(duì)端后,剝 除隧道頭,還原數(shù)據(jù)報(bào)文,由最終的目的設(shè)備進(jìn)行報(bào)文的重組。由于在隧道傳輸報(bào)文的過程中,中間設(shè)備會(huì)根據(jù)隧道頭中的路由信息進(jìn)行報(bào)文的 轉(zhuǎn)發(fā),因此,中間設(shè)備也會(huì)獲得隧道頭中攜帶的分片標(biāo)識(shí)。這樣,有些中間設(shè)備可能需要整個(gè)報(bào)文信息,那么該中間設(shè)備就需要根據(jù)分片標(biāo)識(shí)重組報(bào)文,進(jìn)行相應(yīng)的處理后,再進(jìn)行分 片后在隧道中傳輸。例如在穿越防火墻時(shí),防火墻需要判斷整個(gè)報(bào)文是否合法,因此,當(dāng)接 收的隧道報(bào)文的隧道頭中攜帶有分片標(biāo)識(shí)時(shí),則還需接收與該片隧道報(bào)文屬于同一報(bào)文的 其他隧道報(bào)文,然后將所有隧道報(bào)文重組起來,判斷重組起來的報(bào)文是否合法,如合法,再 將重組起來的報(bào)文進(jìn)行分片后傳輸。可見,現(xiàn)有的隧道傳輸報(bào)文中的分片方式,會(huì)在隧道的中間設(shè)備中,即網(wǎng)絡(luò)層中, 進(jìn)行報(bào)文的重組,這樣,必然會(huì)浪費(fèi)大量?jī)?nèi)存和占用CPU的處理時(shí)間,并增大了數(shù)據(jù)延遲和 丟包的可能性。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種用戶數(shù)據(jù)包協(xié)議UDP隧道中傳輸報(bào)文的方法及裝置,用以 減少隧道傳輸過程中報(bào)文重組的概率,提高隧道傳輸?shù)乃俣?。本發(fā)明實(shí)施例提供一種用戶數(shù)據(jù)包協(xié)議UDP隧道中傳輸報(bào)文的方法,包括將接收的數(shù)據(jù)報(bào)文作為第一乘客報(bào)文進(jìn)行UDP隧道封裝,獲得第一 UDP隧道報(bào) 文;當(dāng)所述第一 UDP隧道報(bào)文的長(zhǎng)度大于所述UDP隧道的最大傳輸單元MTU值時(shí),判 斷所述第一 UDP隧道報(bào)文中的第一乘客報(bào)文的幀頭中是否攜帶了允許分片標(biāo)志;若是,根據(jù)所述MTU值,將所述第一乘客報(bào)文進(jìn)行分片,將分片后的每片第二乘客 報(bào)文進(jìn)行UDP封裝,獲得對(duì)應(yīng)的第二 UDP隧道報(bào)文,發(fā)送每個(gè)第二 UDP隧道報(bào)文,其中,所述 第二 UDP隧道報(bào)文中的第二乘客報(bào)文的幀頭中攜帶與該片第二乘客報(bào)文對(duì)應(yīng)的分片標(biāo)識(shí);否則,丟棄所述數(shù)據(jù)報(bào)文。本發(fā)明實(shí)施例提供一種用戶數(shù)據(jù)包協(xié)議UDP隧道中傳輸報(bào)文的裝置,包括封裝單元,用于將接收的數(shù)據(jù)報(bào)文作為第一乘客報(bào)文進(jìn)行UDP隧道封裝,獲得第 一 UDP隧道報(bào)文;檢測(cè)單元,用于當(dāng)所述第一 UDP隧道報(bào)文的長(zhǎng)度大于所述UDP隧道的最大傳輸單 元MTU值時(shí),判斷所述第一 UDP隧道報(bào)文中的第一乘客報(bào)文的幀頭中是否攜帶了允許分片 標(biāo)志;分片單元,用于當(dāng)所述第一乘客報(bào)文的幀頭中攜帶了允許分片標(biāo)志時(shí),根據(jù)所述 MTU值,將所述第一乘客報(bào)文進(jìn)行分片,將分片后的每片第二乘客報(bào)文進(jìn)行UDP封裝,獲得 對(duì)應(yīng)的第二 UDP隧道報(bào)文,發(fā)送每個(gè)第二 UDP隧道報(bào)文,其中,所述第二 UDP隧道報(bào)文中的 第二乘客報(bào)文的幀頭中攜帶與該片第二乘客報(bào)文對(duì)應(yīng)的分片標(biāo)識(shí);丟棄單元,用于當(dāng)所述第一乘客報(bào)文的幀頭中沒有攜帶允許分片標(biāo)志時(shí),丟棄所 述數(shù)據(jù)報(bào)文。本發(fā)明實(shí)施例中,將接收的數(shù)據(jù)報(bào)文作為第一乘客報(bào)文進(jìn)行UDP隧道封裝,獲得 第一 UDP隧道報(bào)文,當(dāng)所述第一 UDP隧道報(bào)文的長(zhǎng)度大于所述UDP隧道的MTU值時(shí),判斷所 述第一 UDP隧道報(bào)文中的第一乘客報(bào)文的幀頭中是否攜帶了允許分片標(biāo)志,若是,根據(jù)所 述MTU值,將所述第一乘客報(bào)文進(jìn)行分片,將分片后的每片第二乘客報(bào)文進(jìn)行UDP封裝,獲 得對(duì)應(yīng)的第二 UDP隧道報(bào)文,發(fā)送每個(gè)第二 UDP隧道報(bào)文,其中,所述第二 UDP隧道報(bào)文中 的第二乘客報(bào)文的幀頭中攜帶與該片第二乘客報(bào)文對(duì)應(yīng)的分片標(biāo)識(shí),這樣,只是在第二層的乘客報(bào)文的幀頭中攜帶有分片標(biāo)識(shí),從而,在隧道傳輸?shù)倪^程中,中間設(shè)備只能讀取UDP 隧道報(bào)文的隧道幀頭中的信息,即不能獲取到分片標(biāo)識(shí),從而確定該UDP隧道報(bào)文為完整 的報(bào)文,不會(huì)進(jìn)行重組。這樣,減少了資源的浪費(fèi),也提高了 UDP隧道傳輸報(bào)文的速度。
圖1為本發(fā)明實(shí)施例中訪問網(wǎng)絡(luò)設(shè)備的流程圖;圖2為本發(fā)明實(shí)施例一中訪問網(wǎng)絡(luò)設(shè)備的流程圖;
圖3為本發(fā)明實(shí)施例中訪問網(wǎng)絡(luò)設(shè)備系統(tǒng)的架構(gòu)圖;圖4為本發(fā)明實(shí)施例中訪問端的結(jié)構(gòu)圖;圖5為本發(fā)明實(shí)施例中網(wǎng)絡(luò)設(shè)備的結(jié)構(gòu)圖。
具體實(shí)施例方式本發(fā)明實(shí)施例隧道傳輸報(bào)文的過程中,采用用戶數(shù)據(jù)包協(xié)議(UserDatagram Protocol, UDP)封裝格式,該UDP封裝格式為二層封裝格式,UDP封裝后的隧道報(bào)文的格式 如表1所示
隧道幀頭乘客報(bào)文表 1而第二層的乘客報(bào)文的格式如表2所示
數(shù)據(jù)負(fù)載表2這樣,UDP封裝后的隧道報(bào)文包括隧道幀頭和乘客報(bào)文,其中,隧道幀頭包括了 以太頭,VLAN,IP,UDP頭和隧道的ID部分,具體可以包括源地址信息、目的地址信息、隧道 信息等信息,當(dāng)然,可能還有效驗(yàn)信息、報(bào)文長(zhǎng)度信息,具體就不再列舉了。乘客報(bào)文又分為 幀頭以及數(shù)據(jù)負(fù)載。采用了 UDP封裝后的,在已架構(gòu)的UDP隧道中,傳輸報(bào)文的過程如圖3所示,包括步驟301 接收數(shù)據(jù)報(bào)文。當(dāng)在如圖1所示的典型的隧道組網(wǎng)架構(gòu)中,AP從設(shè)備中接收數(shù)據(jù)報(bào)文。步驟302 將接收的數(shù)據(jù)報(bào)文作為第一乘客報(bào)文進(jìn)行UDP封裝,獲得第一 UDP隧道 報(bào)文。采用如表1所示的格式對(duì)該數(shù)據(jù)報(bào)文進(jìn)行封裝,封裝后的第一 UDP隧道報(bào)文中的 第一乘客報(bào)文即為該接收到的數(shù)據(jù)報(bào)文。步驟303 將第一UDP隧道報(bào)文的長(zhǎng)度與該UDP隧道的MTU值進(jìn)行比較,當(dāng)?shù)谝籙DP 隧道報(bào)文的長(zhǎng)度大于MTU值,執(zhí)行步驟304,否則,執(zhí)行步驟309。當(dāng)?shù)谝?UDP隧道報(bào)文的長(zhǎng)度大于MTU值,表明第一 UDP隧道報(bào)文太大了,不能直接 在UDP隧道中傳輸了,必須進(jìn)行分片處理,因此,執(zhí)行步驟304。當(dāng)?shù)谝?UDP隧道報(bào)文的長(zhǎng)度 小于或者等于MTU值,表明第一 UDP隧道報(bào)文可以直接在UDP隧道中傳輸了,執(zhí)行步驟309。
UDP隧道中每個(gè)網(wǎng)絡(luò)設(shè)備都有一個(gè)對(duì)應(yīng)的MTU值,一般,UDP隧道的MTU值為其中 的最小值。步驟304 判斷第一 UDP隧道報(bào)文中的第一乘客報(bào)文的幀頭中是否攜帶了允許分 片標(biāo)志,若有,執(zhí)行步驟305,否則,執(zhí)行步驟308。一般,網(wǎng)絡(luò)終端在發(fā)送數(shù)據(jù)報(bào)文時(shí)會(huì)在該數(shù)據(jù)報(bào)文的幀頭中設(shè)置一個(gè)是否允許該 數(shù)據(jù)報(bào)文分片的標(biāo)志,即允許分片標(biāo)志。因此,當(dāng)該數(shù)據(jù)報(bào)文被封裝為第一 UDP隧道報(bào)文 后,就檢查該第一 UDP隧道報(bào)文中的第一乘客報(bào)文中的幀頭中是否攜帶了允許分片標(biāo)志。例如,可以用數(shù)據(jù)報(bào)文的IP頭中DF來標(biāo)識(shí)是否允許分片。當(dāng)DF為0時(shí),表明允許 該數(shù)據(jù)報(bào)文分片,當(dāng)DF為1時(shí),則表明不允許該數(shù)據(jù)報(bào)文分片。因此,檢查第一乘客報(bào)文的 IP頭中的DF的值,當(dāng)DF為0時(shí),允許該乘客報(bào)文分 片,執(zhí)行步驟305,否則,執(zhí)行步驟308。步驟305 根據(jù)UDP隧道的MTU值,對(duì)第一乘客報(bào)文進(jìn)行分片,獲得至少兩片第二 乘客報(bào)文。其中,第二乘客報(bào)文的幀頭中攜帶與該片第二乘客報(bào)文對(duì)應(yīng)的分片標(biāo)識(shí)。將第一乘客報(bào)文分成兩片或多片第二乘客報(bào)文,每片第二乘客報(bào)文的長(zhǎng)度都小于 或等于UDP隧道的MTU值。并且,在第二乘客報(bào)文的幀頭中設(shè)置一個(gè)分片標(biāo)識(shí),用來標(biāo)識(shí)該 片第二乘客報(bào)文的分片信息,包括是否是分片報(bào)文,以及是第幾片分片報(bào)文等等。為節(jié)省傳輸資源,一般第二乘客報(bào)文的長(zhǎng)度都接近于MTU值。步驟306 將每個(gè)第二乘客報(bào)文進(jìn)行UDP封裝,獲得對(duì)應(yīng)的第二 UDP隧道報(bào)文。仍采用如表1的格式對(duì)每個(gè)第二乘客報(bào)文進(jìn)行UDP封裝,獲得對(duì)應(yīng)的UDP第二隧 道報(bào)文。這樣,每個(gè)第二 UDP隧道報(bào)文的隧道幀頭與第一 UDP隧道報(bào)文的隧道幀頭一致。步驟307 發(fā)送每個(gè)第二 UDP隧道報(bào)文,本次報(bào)文傳輸流程結(jié)束。根據(jù)每個(gè)第二 UDP隧道報(bào)文的隧道幀頭中的目的地址信息,在UDP隧道中傳輸對(duì) 應(yīng)的第二 UDP隧道報(bào)文。步驟308 丟棄接收的數(shù)據(jù)報(bào)文,本次報(bào)文傳輸流程結(jié)束。這里,第一 UDP隧道報(bào)文的長(zhǎng)度大于UDP隧道的MTU值,并且,第一乘客報(bào)文的幀 頭中沒有攜帶允許分片標(biāo)志,因此,不能在隧道中傳輸該第一 UDP隧道報(bào)文了,此時(shí),丟棄 接收的數(shù)據(jù)報(bào)文。步驟309 發(fā)送第一 UDP隧道報(bào)文,本次報(bào)文傳輸流程結(jié)束。第一 UDP隧道報(bào)文的長(zhǎng)度小于或等于UDP隧道的MTU值,因此,不需要分片處理, 直接發(fā)送該第一 UDP隧道報(bào)文??梢?,在上述實(shí)施例中,當(dāng)UDP隧道報(bào)文的長(zhǎng)度大于UDP隧道的MTU值,需進(jìn)行分 片處理時(shí),不是直接對(duì)該UDP隧道報(bào)文進(jìn)行分片,而是對(duì)該UDP隧道報(bào)文中的乘客報(bào)文進(jìn)行 分片,這樣,在UDP隧道報(bào)文的隧道幀頭中不攜帶分片標(biāo)識(shí),只是在第二層的乘客報(bào)文的幀 頭中攜帶有分片標(biāo)識(shí),從而,在隧道傳輸?shù)倪^程中,中間設(shè)備只能讀取UDP隧道報(bào)文的隧道 幀頭中的信息,即不能獲取到分片標(biāo)識(shí),從而確定該UDP隧道報(bào)文為完整的報(bào)文,不會(huì)進(jìn)行 重組。這樣,減少了資源的浪費(fèi),也提高了 UDP隧道傳輸報(bào)文的速度。利用上述的UDP隧道傳輸報(bào)文的方法,雖然可以減少傳輸過程中的重組次數(shù),但 是,在發(fā)送UDP隧道報(bào)文的初始端可能還是進(jìn)行了分片處理,這樣,在最終的目的設(shè)備中還 是要進(jìn)行報(bào)文的重組。因此,還會(huì)在一定程度上影響UDP隧道傳輸?shù)乃俣龋虼?,本發(fā)明實(shí) 施例中,當(dāng)上述步驟308丟棄了接收的數(shù)據(jù)報(bào)文后,還有一個(gè)與發(fā)送數(shù)據(jù)報(bào)文的終端進(jìn)行MTU值協(xié)商的過程,即與第一 UDP隧道報(bào)文的隧道幀頭中攜帶的源地址信息對(duì)應(yīng)的終端進(jìn) 行MTU值協(xié)商,調(diào)整該終端發(fā)送下一次數(shù)據(jù)報(bào)文的長(zhǎng)度。這樣,在下一次UDP隧道報(bào)文傳輸 時(shí),封裝得到的UDP隧道報(bào)文可能會(huì)小于UDP隧道的MTU值,從而,不需要對(duì)UDP隧道報(bào)文 進(jìn)行分片,直接發(fā)送UDP隧道報(bào)文。其中,丟棄數(shù)據(jù)報(bào)文后,與第一 UDP隧道報(bào)文的隧道幀頭中攜帶的源地址信息對(duì) 應(yīng)的終端進(jìn)行MTU值協(xié)商的具體過程可以參見圖4,包括步驟401 獲取第一 UDP隧道報(bào)文中隧道幀頭的長(zhǎng)度。步驟402 根據(jù)第一 UDP隧道的MTU值,以及獲得的隧道幀頭的長(zhǎng)度之間的差值, 確定協(xié)商的MTU值。例如第一 UDP隧道的MTU值為1500個(gè)字節(jié),且該隧道幀頭的長(zhǎng)度為52個(gè)字節(jié), 那么,協(xié)商的MTU值為1500-52 = 1448個(gè)字節(jié)。當(dāng)然,協(xié)商的MTU值也可以其他小于1448 個(gè)字節(jié)的值。即協(xié)商的MTU值小于或等于UDP隧道的MTU值與隧道幀頭的長(zhǎng)度的差值。步驟403 根據(jù)第一 UDP隧道報(bào)文的隧道幀頭中攜帶的源地址信息,發(fā)送協(xié)商的 MTU 值。數(shù)據(jù)報(bào)文中攜帶有源地址信息,進(jìn)行UDP隧道封裝后,其對(duì)應(yīng)的第一 UDP隧道報(bào)文 的隧道幀頭中也攜帶有源地址信息,因此,將協(xié)商的MTU值發(fā)送給第一 UDP隧道報(bào)文的隧道 幀頭中攜帶的源地址信息對(duì)應(yīng)的終端,這樣,終端可以根據(jù)該協(xié)商的MTU值調(diào)整下一次發(fā) 送的數(shù)據(jù)報(bào)文的長(zhǎng)度。采用上述方式在UDP隧道中傳輸報(bào)文時(shí),有些中間網(wǎng)絡(luò)設(shè)備并不完全遵循上述 MTU協(xié)商標(biāo)準(zhǔn),無論乘客報(bào)文是否攜帶了允許分片標(biāo)志,對(duì)凡是超過MTU值的UDP隧道報(bào)文 中的乘客報(bào)文都直接進(jìn)行了分片,并且不會(huì)回應(yīng)發(fā)送端MTU值,即不進(jìn)行MTU值的協(xié)商。此 時(shí),分片過程可能會(huì)錯(cuò),因此,必須檢測(cè)出這種情況,進(jìn)行相應(yīng)的處理。此時(shí),參見圖5,UDP 隧道中傳輸報(bào)文的過程包括步驟501 從中間網(wǎng)絡(luò)設(shè)備,接收第三UDP隧道報(bào)文。步驟502 對(duì)第三UDP隧道報(bào)文進(jìn)行解封裝,獲得對(duì)應(yīng)的第三乘客報(bào)文。第三UDP隧道報(bào)文的格式也如表1所示,對(duì)其進(jìn)行解封裝后,可得到對(duì)應(yīng)的第三乘 客報(bào)文。步驟503:判斷第三乘客報(bào)文的報(bào)頭中是否有分片標(biāo)識(shí),若有,執(zhí)行步驟504,否 貝IJ,執(zhí)行步驟505。這里,中間網(wǎng)絡(luò)設(shè)備可能對(duì)凡是超過MTU值的UDP隧道報(bào)文中的乘客報(bào)文都直接 進(jìn)行了分片,因此,當(dāng)?shù)谌丝蛨?bào)文的幀頭中有分片標(biāo)識(shí)時(shí),執(zhí)行步驟504。否則,執(zhí)行步驟 505。例如,檢查到第三乘客報(bào)文的幀頭中的frag_off不為0時(shí),或者M(jìn)F標(biāo)志被置位 時(shí),確定該第三乘客報(bào)文為分片報(bào)文,執(zhí)行步驟504,否則,執(zhí)行505。步驟504 判斷第三乘客報(bào)文的幀頭中是否攜帶了允許分片標(biāo)志,若有,執(zhí)行步驟 505,若無,執(zhí)行步驟506可如上述步驟304所述方法進(jìn)行檢查,確定第三乘客報(bào)文的幀頭中是否攜帶了允許分片標(biāo)志,具體過程不在累述了。步驟505 發(fā)送第三乘客報(bào)文,本次傳輸過程結(jié)束。
由于此時(shí)第三乘客報(bào)文沒有被分片,或者已分片的第三乘客報(bào)文的幀頭中攜帶了允許分片標(biāo)志,因此,傳輸過程正常,則可以直接將第三乘客報(bào)文發(fā)送給對(duì)應(yīng)的終端。步驟506 發(fā)送第三乘客報(bào)文,并與第三UDP隧道報(bào)文的隧道幀頭中攜帶的源地址 信息對(duì)應(yīng)的終端進(jìn)行MTU值協(xié)商,調(diào)整所述終端發(fā)送下一次數(shù)據(jù)報(bào)文的長(zhǎng)度。本次傳輸過 程結(jié)束。第三乘客報(bào)文的幀頭中沒有允許分片標(biāo)志,但該第三乘客報(bào)文是分片報(bào)文,可見, 傳送的也一直是分片報(bào)文,這樣,影響隧道報(bào)文傳輸?shù)男阅?,因此,?dāng)檢測(cè)出這種情況時(shí),會(huì) 主動(dòng)去和該第三乘客報(bào)文的源端進(jìn)行MTU值的協(xié)商,即與與第三UDP隧道報(bào)文的隧道幀頭 中攜帶的源地址信息對(duì)應(yīng)的終端進(jìn)行MTU值協(xié)商,從而減少分片的發(fā)生,極大地提高了下 行數(shù)據(jù)轉(zhuǎn)發(fā)性能。在主動(dòng)與乘客報(bào)文的源端進(jìn)行MTU值的協(xié)商后,減少了下一次傳輸過程中,中間 網(wǎng)絡(luò)設(shè)備對(duì)乘客報(bào)文的分片的概率,提高了隧道傳輸?shù)男剩约罢_率。其中,與第三UDP隧道報(bào)文的隧道幀頭中攜帶的源地址信息對(duì)應(yīng)的終端進(jìn)行MTU 值的協(xié)商的過程與上述的與第一 UDP隧道報(bào)文的隧道幀頭中攜帶的源地址信息對(duì)應(yīng)的終 端進(jìn)行MTU值協(xié)商的過程一致,具體過程就不再累述了。根據(jù)上述UDP隧道中傳輸報(bào)文的方法,可以構(gòu)建一種UDP隧道中傳輸報(bào)文的裝置, 參見圖6,包括封裝單元100、檢測(cè)單元200、分片單元300和丟棄單元400。其中,封裝單元100,用于將接收的數(shù)據(jù)報(bào)文作為第一乘客報(bào)文進(jìn)行UDP隧道封裝,獲得 第一 UDP隧道報(bào)文。檢測(cè)單元200,用于當(dāng)所述第一 UDP隧道報(bào)文的長(zhǎng)度大于所述UDP隧道的MTU值 時(shí),判斷所述第一 UDP隧道報(bào)文中的第一乘客報(bào)文的幀頭中是否攜帶了允許分片標(biāo)志。分片單元300,用于當(dāng)所述第一乘客報(bào)文的幀頭中攜帶了允許分片標(biāo)志時(shí),根據(jù)所 述MTU值,將所述第一乘客報(bào)文進(jìn)行分片,將分片后的每片第二乘客報(bào)文進(jìn)行UDP封裝,獲 得對(duì)應(yīng)的第二 UDP隧道報(bào)文,發(fā)送每個(gè)第二 UDP隧道報(bào)文,其中,所述第二 UDP隧道報(bào)文中 的第二乘客報(bào)文的幀頭中攜帶與該片第二乘客報(bào)文對(duì)應(yīng)的分片標(biāo)識(shí)。丟棄單元400,用于當(dāng)所述第一乘客報(bào)文的幀頭中沒有攜帶允許分片標(biāo)志時(shí),丟棄 所述數(shù)據(jù)報(bào)文。其中,檢測(cè)單元200首將第一 UDP隧道報(bào)文的長(zhǎng)度與UDP隧道的MTU值進(jìn)行比較, 當(dāng)?shù)谝?UDP隧道報(bào)文的長(zhǎng)度大于MTU值時(shí),再判斷第一 UDP隧道報(bào)文中的第一乘客報(bào)文的 幀頭中是否攜帶了允許分片標(biāo)志,當(dāng)丟棄單元400丟棄數(shù)據(jù)報(bào)文后,該裝置還會(huì)與發(fā)送數(shù)據(jù)報(bào)文的終端進(jìn)行MTU值 協(xié)商,調(diào)整該終端發(fā)送下一次數(shù)據(jù)報(bào)文的長(zhǎng)度。因此,該裝置還包括協(xié)商單元,用于與所述 第一 UDP隧道報(bào)文的隧道幀頭中攜帶的源地址信息對(duì)應(yīng)的終端進(jìn)行MTU值的協(xié)商,調(diào)整所 述終端發(fā)送下一次數(shù)據(jù)報(bào)文的長(zhǎng)度。由于在UDP隧道中傳輸報(bào)文時(shí),有些中間網(wǎng)絡(luò)設(shè)備并不完全遵循上述MTU協(xié)商標(biāo) 準(zhǔn),無論乘客報(bào)文是否攜帶了允許分片標(biāo)志,對(duì)凡是超過MTU值的UDP隧道報(bào)文中的乘客報(bào) 文都直接進(jìn)行了分片,因此,本發(fā)明另一實(shí)施例中,該裝置還包括解封裝單元,用于對(duì)接收的第三UDP隧道報(bào)文進(jìn)行解封裝,獲得對(duì)應(yīng)的第三乘客 報(bào)文。
則,協(xié)商單元,還用于當(dāng)所述第三乘客報(bào)文的幀頭中攜帶了分片標(biāo)識(shí),,且所述第 三乘客報(bào)文的幀頭中沒有攜帶允許分片標(biāo)志時(shí),與所述第三UDP隧道報(bào)文的隧道幀頭中攜 帶的地址信息對(duì)應(yīng)的終端進(jìn)行MTU值協(xié)商,調(diào)整所述終端發(fā)送下一次數(shù)據(jù)報(bào)文的長(zhǎng)度。當(dāng)然,上述兩實(shí)施例中,協(xié)商單元包括獲取子單元,用于獲取所述UDP隧道報(bào)文中的隧道幀頭的長(zhǎng)度,確定子單元,用于根據(jù)所述UDP隧道的MTU值,以及所述隧道幀頭的長(zhǎng)度之間的差 值,確定協(xié)商的MTU值,發(fā)送子單元,用于根據(jù)所述UDP隧道報(bào)文的隧道幀頭中攜帶的源地址信息,發(fā)送 所述協(xié)商的MTU值。當(dāng)然,本發(fā)明實(shí)施例中,當(dāng)?shù)谝?UDP隧道報(bào)文的長(zhǎng)度小于或等于所述UDP隧道的 MTU值時(shí),可直接發(fā)送所述第一 UDP隧道報(bào)文。因此,本發(fā)明實(shí)施例中還包括發(fā)送單元,用 于當(dāng)所述第一 UDP隧道報(bào)文的長(zhǎng)度小于或等于所述UDP隧道的MTU值時(shí),發(fā)送所述第一 UDP 隧道報(bào)文。在如圖1所示的典型的隧道組網(wǎng)架構(gòu)中,本發(fā)明實(shí)施例中的UDP隧道中傳輸報(bào)文 的裝置可應(yīng)用于AP中。本發(fā)明實(shí)施例中,將接收的數(shù)據(jù)報(bào)文作為第一乘客報(bào)文進(jìn)行UDP隧道封裝,獲得 第一 UDP隧道報(bào)文,當(dāng)所述第一 UDP隧道報(bào)文的長(zhǎng)度大于所述UDP隧道的MTU值時(shí),判斷所 述第一 UDP隧道報(bào)文中的第一乘客報(bào)文的幀頭中是否攜帶了允許分片標(biāo)志,若是,根據(jù)所 述MTU值,將所述第一乘客報(bào)文進(jìn)行分片,將分片后的每片第二乘客報(bào)文進(jìn)行UDP封裝,獲 得對(duì)應(yīng)的第二 UDP隧道報(bào)文,發(fā)送每個(gè)第二 UDP隧道報(bào)文,其中,所述第二 UDP隧道報(bào)文中 的第二乘客報(bào)文的幀頭中攜帶與該片第二乘客報(bào)文對(duì)應(yīng)的分片標(biāo)識(shí),這樣,只是在第二層 的乘客報(bào)文的幀頭中攜帶有分片標(biāo)識(shí),從而,在隧道傳輸?shù)倪^程中,中間設(shè)備只能讀取UDP 隧道報(bào)文的隧道幀頭中的信息,即不能獲取到分片標(biāo)識(shí),從而確定該UDP隧道報(bào)文為完整 的報(bào)文,不會(huì)進(jìn)行重組。這樣,減少了資源的浪費(fèi),也提高了 UDP隧道傳輸報(bào)文的速度。并且,當(dāng)?shù)谝?UDP隧道報(bào)文的長(zhǎng)度大于UDP隧道的MTU值,且第一 UDP隧道報(bào)文中 的第一乘客報(bào)文的幀頭中沒有攜帶允許分片標(biāo)志時(shí),還可以與數(shù)據(jù)報(bào)文中攜帶的源地址信 息對(duì)應(yīng)的終端進(jìn)行MTU值協(xié)商,調(diào)整該終端發(fā)送下一次數(shù)據(jù)報(bào)文的長(zhǎng)度。這樣,在下一次 UDP隧道報(bào)文傳輸時(shí),封裝得到的UDP隧道報(bào)文可能會(huì)小于UDP隧道的MTU值,從而,不需 要對(duì)UDP隧道報(bào)文進(jìn)行分片,直接發(fā)送UDP隧道報(bào)文,極大地提高了 UDP隧道報(bào)文傳輸?shù)男?率。另外,本發(fā)明實(shí)施例中還能檢測(cè)出有些中間網(wǎng)絡(luò)設(shè)備無論乘客報(bào)文是否攜帶了允 許分片標(biāo)志,對(duì)凡是超過MTU值的UDP隧道報(bào)文中的乘客報(bào)文都直接進(jìn)行了分片,并且不進(jìn) 行MTU值的協(xié)商的情況,此時(shí),主動(dòng)去和該乘客報(bào)文的源端進(jìn)行MTU值的協(xié)商,從而減少分 片的發(fā)生,提高數(shù)據(jù)轉(zhuǎn)發(fā)性能,保證了 UDP隧道傳輸?shù)目煽啃院头€(wěn)定性。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
10
權(quán)利要求
一種用戶數(shù)據(jù)包協(xié)議UDP隧道中傳輸報(bào)文的方法,其特征在于,包括將接收的數(shù)據(jù)報(bào)文作為第一乘客報(bào)文進(jìn)行UDP隧道封裝,獲得第一UDP隧道報(bào)文;當(dāng)所述第一UDP隧道報(bào)文的長(zhǎng)度大于所述UDP隧道的最大傳輸單元MTU值時(shí),判斷所述第一UDP隧道報(bào)文中的第一乘客報(bào)文的幀頭中是否攜帶了允許分片標(biāo)志;若是,根據(jù)所述MTU值,將所述第一乘客報(bào)文進(jìn)行分片,將分片后的每片第二乘客報(bào)文進(jìn)行UDP封裝,獲得對(duì)應(yīng)的第二UDP隧道報(bào)文,發(fā)送每個(gè)第二UDP隧道報(bào)文,其中,所述第二UDP隧道報(bào)文中的第二乘客報(bào)文的幀頭中攜帶與該片第二乘客報(bào)文對(duì)應(yīng)的分片標(biāo)識(shí);否則,丟棄所述數(shù)據(jù)報(bào)文。
2.如權(quán)利要求1所述的方法,其特征在于,所述丟棄所述數(shù)據(jù)報(bào)文之后,還包括 與所述第一 UDP隧道報(bào)文的隧道幀頭中攜帶的源地址信息對(duì)應(yīng)的終端進(jìn)行MTU值的協(xié)商,調(diào)整所述終端發(fā)送下一次數(shù)據(jù)報(bào)文的長(zhǎng)度。
3.如權(quán)利要求1所述的方法,其特征在于,還包括對(duì)接收的第三UDP隧道報(bào)文進(jìn)行解封裝,獲得對(duì)應(yīng)的第三乘客報(bào)文; 當(dāng)所述第三乘客報(bào)文的幀頭中攜帶了分片標(biāo)識(shí),且所述第三乘客報(bào)文的幀頭中沒有攜 帶允許分片標(biāo)志時(shí),與所述第三UDP隧道報(bào)文的隧道幀頭中攜帶的源地址信息對(duì)應(yīng)的終端 進(jìn)行MTU值協(xié)商,調(diào)整所述終端發(fā)送下一次數(shù)據(jù)報(bào)文的長(zhǎng)度。
4.如權(quán)利要求2或3所述的方法,其特征在于,與UDP隧道報(bào)文的隧道幀頭中攜帶的源 地址信息對(duì)應(yīng)的終端進(jìn)行MTU值的協(xié)商包括獲取所述UDP隧道報(bào)文中的隧道幀頭的長(zhǎng)度;根據(jù)所述UDP隧道的MTU值,以及所述隧道幀頭的長(zhǎng)度之間的差值,確定協(xié)商的MTU值;根據(jù)所述UDP隧道報(bào)文的隧道幀頭中攜帶的源地址信息,發(fā)送所述協(xié)商的MTU值。
5.如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述第一UDP隧道報(bào)文的長(zhǎng)度小于或等于 所述UDP隧道的MTU值時(shí),還包括發(fā)送所述第一 UDP隧道報(bào)文。
6.一種用戶數(shù)據(jù)包協(xié)議UDP隧道中傳輸報(bào)文的裝置,其特征在于,包括封裝單元,用于將接收的數(shù)據(jù)報(bào)文作為第一乘客報(bào)文進(jìn)行UDP隧道封裝,獲得第一 UDP 隧道報(bào)文;檢測(cè)單元,用于當(dāng)所述第一 UDP隧道報(bào)文的長(zhǎng)度大于所述UDP隧道的最大傳輸單元MTU 值時(shí),判斷所述第一 UDP隧道報(bào)文中的第一乘客報(bào)文的幀頭中是否攜帶了允許分片標(biāo)志;分片單元,用于當(dāng)所述第一乘客報(bào)文的幀頭中攜帶了允許分片標(biāo)志時(shí),根據(jù)所述MTU 值,將所述第一乘客報(bào)文進(jìn)行分片,將分片后的每片第二乘客報(bào)文進(jìn)行UDP封裝,獲得對(duì)應(yīng) 的第二 UDP隧道報(bào)文,發(fā)送每個(gè)第二 UDP隧道報(bào)文,其中,所述第二 UDP隧道報(bào)文中的第二 乘客報(bào)文的幀頭中攜帶與該片第二乘客報(bào)文對(duì)應(yīng)的分片標(biāo)識(shí);丟棄單元,用于當(dāng)所述第一乘客報(bào)文的幀頭中沒有攜帶允許分片標(biāo)志時(shí),丟棄所述數(shù) 據(jù)報(bào)文。
7.如權(quán)利要求6所述的裝置,其特征在于,還包括協(xié)商單元,用于與所述第一 UDP隧道報(bào)文的隧道幀頭中攜帶的源地址信息對(duì)應(yīng)的終端 進(jìn)行MTU值的協(xié)商,調(diào)整所述終端發(fā)送下一次數(shù)據(jù)報(bào)文的長(zhǎng)度。
8.如權(quán)利要求6所述的裝置,其特征在于,還包括解封裝單元,用于對(duì)接收的第三UDP隧道報(bào)文進(jìn)行解封裝,獲得對(duì)應(yīng)的第三乘客報(bào)文; 所述協(xié)商單元,還用于當(dāng)所述第三乘客報(bào)文的幀頭中攜帶了分片標(biāo)識(shí),且所述第三乘 客報(bào)文的幀頭中沒有攜帶允許分片標(biāo)志時(shí),與所述第三UDP隧道報(bào)文的隧道幀頭中攜帶的 地址信息對(duì)應(yīng)的終端進(jìn)行MTU值協(xié)商,調(diào)整所述終端發(fā)送下一次數(shù)據(jù)報(bào)文的長(zhǎng)度。
9.如權(quán)利要求7或8所述的裝置,其特征在于,所述協(xié)商單元包括 獲取子單元,用于獲取所述UDP隧道報(bào)文中的隧道幀頭的長(zhǎng)度;確定子單元,用于根據(jù)所述UDP隧道的MTU值,以及所述隧道幀頭的長(zhǎng)度之間的差值, 確定協(xié)商的MTU值;發(fā)送子單元,用于根據(jù)所述UDP隧道報(bào)文的隧道幀頭中攜帶的源地址信息,發(fā)送所述 協(xié)商的MTU值。
10.如權(quán)利要求6所述的裝置,其特征在于,還包括發(fā)送單元,用于當(dāng)所述第一 UDP隧道報(bào)文的長(zhǎng)度小于或等于所述UDP隧道的MTU值時(shí), 發(fā)送所述第一 UDP隧道報(bào)文。
全文摘要
本發(fā)明公開了一種用戶數(shù)據(jù)包協(xié)議UDP隧道中傳輸報(bào)文的方法及裝置,用以減少隧道傳輸過程中報(bào)文重組的概率,提高隧道傳輸?shù)乃俣?。該方法包括將接收的?shù)據(jù)報(bào)文作為第一乘客報(bào)文進(jìn)行UDP隧道封裝,獲得第一UDP隧道報(bào)文,當(dāng)所述第一UDP隧道報(bào)文的大小長(zhǎng)度大于所述UDP隧道的最大傳輸單元MTU值時(shí),判斷所第一乘客報(bào)文的幀頭中是否攜帶了允許分片標(biāo)志,若是,根據(jù)所述MTU值,將所述第一乘客報(bào)文進(jìn)行分片,將分片后的每片第二乘客報(bào)文進(jìn)行UDP封裝,獲得對(duì)應(yīng)的第二UDP隧道報(bào)文,發(fā)送每個(gè)第二UDP隧道報(bào)文,其中,所述第二乘客報(bào)文的幀頭中攜帶與該片第二乘客報(bào)文對(duì)應(yīng)的分片標(biāo)識(shí),否則,丟棄所述數(shù)據(jù)報(bào)文。
文檔編號(hào)H04L12/56GK101827031SQ201010153910
公開日2010年9月8日 申請(qǐng)日期2010年4月22日 優(yōu)先權(quán)日2010年4月22日
發(fā)明者劉鵬午, 吳二剛, 郭輝 申請(qǐng)人:中興通訊股份有限公司