專利名稱:用于在網(wǎng)絡(luò)中發(fā)送數(shù)據(jù)包的方法
用于在網(wǎng)絡(luò)中發(fā)送數(shù)據(jù)包的方法 1.本發(fā)明要解決的問題
1. 類似流控制傳輸協(xié)議(=SCTP)的傳輸協(xié)議將數(shù)據(jù)包發(fā)送到遠(yuǎn) 端對(duì)等體(remote peer),其中數(shù)據(jù)包的大小等于或小于最大傳輸單 元(=MTU)。在SCTP的情況下,路徑的MTU可以利用RFC1191 (或類 似技術(shù))的路徑MTU發(fā)現(xiàn)算法來發(fā)現(xiàn)。然而,SCTP關(guān)聯(lián)內(nèi)的某個(gè)路徑 的MTU可隨著時(shí)間的過去而變化。如果路徑MTU (某個(gè)路徑的MTU)在 SCTP關(guān)聯(lián)期間增長(zhǎng),則不存在問題。如果路徑MTU減小,則大小等于 舊路徑MTU的數(shù)據(jù)包將不能被遞送到遠(yuǎn)端對(duì)等體,因?yàn)榫哂休^小MTU 的鏈路或路由器將丟棄該數(shù)據(jù)包。因此,所有這樣的數(shù)據(jù)包將保持未 確認(rèn),并且針對(duì)將流的數(shù)據(jù)包按序遞送到未被遞送的數(shù)據(jù)包所屬的地 方,所有這樣的數(shù)據(jù)包將導(dǎo)致線頭阻塞(head of line blocking)。 這導(dǎo)致關(guān)聯(lián)的故障。
2. 目前為止對(duì)該問題的解決方案 到目前為止,在SCTP還未解決該問題。
3. 根據(jù)本發(fā)明的對(duì)該問題的解決方案
根據(jù)本發(fā)明,由于發(fā)現(xiàn)最大數(shù)據(jù)包大小(MTU)減小,所以傳輸協(xié) 議對(duì)連接的數(shù)據(jù)包進(jìn)行再分割(在SCTP的情況下,連接被稱為關(guān)聯(lián)), 使其大小匹配新的最大數(shù)據(jù)包大小(MTU)。
以下,本發(fā)明的SCTP實(shí)施方案針對(duì)用于將消息/數(shù)據(jù)包遞送到應(yīng) 用的所有操作模式來描述(也參見附圖
的圖)。
根據(jù)SCTP,每個(gè)消息都可以被分割成一個(gè)或多個(gè)數(shù)據(jù)包,并且每 個(gè)數(shù)據(jù)包都具有分配給其的傳輸順序號(hào)(=TSN)。每個(gè)數(shù)據(jù)包也經(jīng)由 流標(biāo)識(shí)符(流id)被分配給某個(gè)流。屬于相同流id的所有順序操作的 消息必須按次序被遞送到對(duì)等體應(yīng)用。SCTP實(shí)施方按應(yīng)該針對(duì)其路徑 中的每個(gè)路徑有規(guī)律地進(jìn)行路徑MTU發(fā)現(xiàn)(這是由RFC2932所要求的)。 當(dāng)路徑MTU的減小已被檢測(cè)到時(shí),那么應(yīng)觀察無序的和有序的遞送的
3后面的動(dòng)作。檢測(cè)可以通過RFC1191或者類似技術(shù)(RFC1981、 draft - ietf - pmtud - method - 06. txt…)來完成。
-首先,新的路徑MTU必須通過使用路徑MTU發(fā)現(xiàn)來被檢測(cè)。如 果路徑MTU被減小,則舊數(shù)據(jù)包必須被再分割,使其大小匹配新的路 徑MTU(因此,至少兩個(gè)新的TSN必須被依次分配)。
-如果針對(duì)該消息僅生成單個(gè)數(shù)據(jù)包,則所要求的再分割可以產(chǎn) 生兩個(gè)或者更多數(shù)據(jù)包。根據(jù)在RFC2932中得到的規(guī)則,需要對(duì)數(shù)據(jù) 包進(jìn)行分割。
-如果原始數(shù)據(jù)包已經(jīng)是分割消息的結(jié)果,則根據(jù)在RFC2932中 得到的規(guī)則依次針對(duì)每個(gè)舊TSN數(shù)據(jù)包,舊數(shù)據(jù)包必須利用新TSN再 次4皮分割。
-另外,包含在控制數(shù)據(jù)包(SCTP控制組塊(chunk))中的再分 割參數(shù)被朝向遠(yuǎn)端對(duì)等體發(fā)送,以指示什么舊TSN被新TSN替換。舊 TSN將被映射到2個(gè)或者更多新TSN,并且如果要求重編整個(gè)消息,則 必須使用在舊TSN之前和之后已經(jīng)接收到的數(shù)據(jù)包。再分割參數(shù)可以 被包含在任何已經(jīng)存在的SCTP控制組塊或者新的SCTP重新映射控制 組塊中。
-在新的再分割的數(shù)據(jù)包被發(fā)送到遠(yuǎn)端對(duì)等體之前,再分割的參 數(shù)必須被發(fā)送到遠(yuǎn)端對(duì)等體。
-再分割的參數(shù)包含舊TSN和一個(gè)或者多個(gè)新TSN的列表。這將 舊TSN映射到新TSN。再分割的參數(shù)可以包含映射列表或者可以在控制 組塊內(nèi)或者跨越這些控制組塊被重復(fù)。
-通過將具有設(shè)置到舊數(shù)據(jù)包TSN的TSN的正向累積(forward cumulative) TSN組塊發(fā)送給遠(yuǎn)端對(duì)等體,使舊數(shù)據(jù)包TSN無效。參見 RFC3758中的正向累積TSN的具體使用。這僅僅可以在使用未完成的 (outstanding)舊TSN和所映射的舊到新TSN而已成功地由數(shù)據(jù)包重 編消息之后才完成。
-在發(fā)送再分割參數(shù)之后,具有舊TSN的數(shù)據(jù)包不必被重新發(fā)送 給遠(yuǎn)端對(duì)等體。
-在接收到再分割參數(shù)之后,不要求遠(yuǎn)端對(duì)等體發(fā)布舊TSN的間 隙報(bào)告(間隙報(bào)告=請(qǐng)求發(fā)送方對(duì)等體再次發(fā)送這些數(shù)據(jù)包,在這種 情況下為舊TSN)
4-當(dāng)遠(yuǎn)端對(duì)等體已接收到所有新的TSN段并且已重編該消息時(shí),那么該消息必須被遞送到該應(yīng)用。在有序遞送的情況下,所遞送的消息被繼之以包含原始舊TSN的消息。在無序遞送的情況下,具有原始舊TSN的消息曾已經(jīng)被遞送到該應(yīng)用。
-由于在SCTP RFC2932和其他技術(shù)中所利用的擁塞算法,再分割之后發(fā)送的數(shù)據(jù)包的數(shù)目不準(zhǔn)違背關(guān)于未完成的數(shù)據(jù)包的規(guī)則。
4.本發(fā)明的效果
如果路徑MTU在傳輸期間被減小,則允許SCTP不阻塞數(shù)據(jù)到遠(yuǎn)端對(duì)等體的傳輸。由于使用視為TSN的字節(jié)(TCP簡(jiǎn)單地分割消息并且使用繼之以原始字節(jié)計(jì)數(shù)TSN的在中間的字節(jié)計(jì)數(shù)TSN),所以TCP并沒
有這個(gè)問題。(尤其是在非常長(zhǎng)的使用期限的連接/關(guān)聯(lián)的情況下),尤其是在單個(gè)宿主關(guān)聯(lián)(homed association)中,本發(fā)明解決了 SCTP與TCP相比的弱點(diǎn)并且允許SCTP對(duì)于TCP應(yīng)用更易接受。如果使用多宿主關(guān)聯(lián),則過大的消息有經(jīng)過替換路徑被發(fā)送的可能性(假設(shè)路徑MTU沿著那些路徑?jīng)]有變化)。
權(quán)利要求
1. 一種用于在網(wǎng)絡(luò)中發(fā)送數(shù)據(jù)包的方法,該方法包括以下步驟a)發(fā)送連接的數(shù)據(jù)包,其中數(shù)據(jù)包的大小等于或小于最大數(shù)據(jù)包大小(MTU),b)有規(guī)律地發(fā)現(xiàn)最大數(shù)據(jù)包大小(MTU),c)由于發(fā)現(xiàn)最大數(shù)據(jù)包大小(MTU)減少,再分割該連接的數(shù)據(jù)包,使得數(shù)據(jù)包大小與新的最大數(shù)據(jù)包大小(MTU)相匹配。
2. 根據(jù)權(quán)利要求1所述的方法,還包括以下步驟a) 在某路徑上發(fā)送連接的數(shù)據(jù)包,b) 發(fā)現(xiàn)每個(gè)路徑的最大數(shù)據(jù)包大小(MTU)。
3. 根據(jù)權(quán)利要求1或2所述的方法,還包括以下步驟a) 給連接的每個(gè)數(shù)據(jù)包分配傳輸順序號(hào)(TSN),b) 將再分割參數(shù)朝向連接的遠(yuǎn)端對(duì)等體發(fā)送,以指示什么舊傳輸 順序號(hào)被新傳輸順序號(hào)替換。
4. 根據(jù)權(quán)利要求l、 2或3所述的方法,還包括以下步驟 不發(fā)送MTU對(duì)于目前的路徑MTU太大的數(shù)據(jù)包。
5. 根據(jù)權(quán)利要求l、 2、 3或4所述的方法,還包括以下步驟 根據(jù)SCTP發(fā)送數(shù)據(jù)包。
全文摘要
流控制傳輸協(xié)議(SCTP)將數(shù)據(jù)包發(fā)送到遠(yuǎn)端對(duì)等體,其中數(shù)據(jù)包的大小等于或小于最大傳輸單元(MTU)。MTU可以通過SCTP利用RFC1191(或者類似技術(shù))的路徑MTU發(fā)現(xiàn)算法來發(fā)現(xiàn)。然而,SCTP關(guān)聯(lián)內(nèi)的某個(gè)路徑的MTU可以隨著時(shí)間的過去而變化。如果路徑MTU增長(zhǎng),則不存在問題。如果路徑MTU減小,則大小等于舊路徑MTU的數(shù)據(jù)包將不能被遞送到遠(yuǎn)端對(duì)等體,因?yàn)榫哂休^小MTU的鏈路或路由器將丟棄該數(shù)據(jù)包。因此,所有這樣的數(shù)據(jù)包將保持未確認(rèn),并且針對(duì)將流的數(shù)據(jù)包按序遞送到未被遞送的數(shù)據(jù)包所屬的地方,所有這樣的數(shù)據(jù)包將導(dǎo)致線頭阻塞。這導(dǎo)致關(guān)聯(lián)的故障。本發(fā)明通過由于SCTP關(guān)聯(lián)中的路徑MTU減小而再分割SCTP數(shù)據(jù)包來解決該問題。
文檔編號(hào)H04L12/56GK101467405SQ200780022101
公開日2009年6月24日 申請(qǐng)日期2007年3月16日 優(yōu)先權(quán)日2006年7月12日
發(fā)明者L·科內(nèi) 申請(qǐng)人:西門子公司