專利名稱:Ip報(bào)文分片的處理方法和分布式系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,具體為一種IP報(bào)文分片的處理方法和分布式系統(tǒng)。
背景技術(shù):
IP網(wǎng)絡(luò)中,當(dāng)報(bào)文長(zhǎng)度超過(guò)MTU(Maximum Transmission Unit,最大傳輸單元) 時(shí),需將報(bào)文分片發(fā)送;目的設(shè)備接收到分片報(bào)文后,根據(jù)各分片的偏移量進(jìn)行重組。分布式系統(tǒng)通常包括集中控制線卡、業(yè)務(wù)線卡以及接口線卡,這些線卡之間通過(guò) 內(nèi)部總線進(jìn)行通信。圖1示出了簡(jiǎn)化的分布式系統(tǒng)組成。接口線卡,對(duì)外連接IP網(wǎng)絡(luò)。業(yè) 務(wù)線卡,實(shí)現(xiàn)上層業(yè)務(wù)的處理。集中控制線卡,作為系統(tǒng)的總控節(jié)點(diǎn),負(fù)責(zé)生成路由表和接 口表,并同步給所有其他線卡。現(xiàn)有技術(shù)中,分布式系統(tǒng)通常在一個(gè)或多個(gè)業(yè)務(wù)線卡或接口線卡上配置集中重組 模塊,重組目的地為本系統(tǒng)的分片報(bào)文。申請(qǐng)于2007年4月28日的中國(guó)專利CN200710097246提出了一種配置重組接口 線卡的選擇原則,將不同報(bào)文的分片發(fā)到不同的接口線卡上進(jìn)行重組,以在一定程度上分 擔(dān)重組模塊所在線卡的負(fù)荷,提高了重組速度。由于無(wú)論從一個(gè)還是多個(gè)接口線卡收到分 片報(bào)文,都會(huì)送到集中重組模塊所在線卡上處理,這樣會(huì)造成報(bào)文在接口線卡、集中重組模 塊所在線卡、業(yè)務(wù)線卡之間多次轉(zhuǎn)發(fā)。并且,受線卡間報(bào)文通道所限,集中重組后的報(bào)文在 線卡間轉(zhuǎn)發(fā)可能會(huì)出現(xiàn)再次分片重組的現(xiàn)象。此外,如圖2所示,即使同一接口線卡收到所有分片報(bào)文,并且分片報(bào)文和非分片 報(bào)文沒(méi)有交叉?zhèn)鬏敚F(xiàn)有技術(shù)實(shí)現(xiàn)由于將分片報(bào)文送集中重組模塊所在線卡處理,導(dǎo)致分 片報(bào)文(報(bào)文1)和作為小包的非分片報(bào)文(報(bào)文2、在系統(tǒng)內(nèi)走不同的路徑傳輸,最終造 成上層業(yè)務(wù)接收到的報(bào)文出現(xiàn)亂序問(wèn)題,而在通信領(lǐng)域的一些業(yè)務(wù)應(yīng)用中對(duì)于同一個(gè)流的 報(bào)文是不允許亂序的。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提供一種IP報(bào)文分片的處理方法和分布式系統(tǒng),以 避免報(bào)文多次轉(zhuǎn)發(fā)重組。為解決以上問(wèn)題,本發(fā)明提供的IP報(bào)文分片的處理方法包括線卡接收?qǐng)?bào)文分片;所述線卡接收到報(bào)文的所有分片時(shí),判斷本線卡是否是目的線卡;本線卡不是目的線卡時(shí),所述線卡將所述報(bào)文的所有分片發(fā)送給目的線卡;本線 卡是目的線卡時(shí),所述線卡將所述報(bào)文的所有分片進(jìn)行重組。進(jìn)一步地,所述線卡接收?qǐng)?bào)文分片的步驟包括接收所述報(bào)文的第一個(gè)分片時(shí),創(chuàng)建一個(gè)虛擬重組隊(duì)列;接收所述報(bào)文的后續(xù)分片時(shí),按分片在原始報(bào)文中的位置寫(xiě)入所述虛擬重組隊(duì)列 中;
根據(jù)虛擬重組隊(duì)列的寫(xiě)入情況判斷是否接收到報(bào)文的所有分片。進(jìn)一步地,創(chuàng)建所述虛擬重組隊(duì)列時(shí),初始化定時(shí)器,若所述線卡為接口線卡,且 在定時(shí)時(shí)間內(nèi)未接收到報(bào)文的所有分片時(shí),執(zhí)行以下操作所述接口線卡確定集中重組模塊所在的線卡;若所述集中重組模塊所在的線卡是本線卡,則丟棄已接收的報(bào)文分片,否則,所述 接口線卡將已接收的報(bào)文分片發(fā)送到集中重組模塊所在的線卡。進(jìn)一步地,創(chuàng)建所述虛擬重組隊(duì)列時(shí),初始化定時(shí)器,若所述線卡為業(yè)務(wù)線卡,且 在定時(shí)時(shí)間內(nèi)未接收到報(bào)文的所有分片時(shí),丟棄已接收的報(bào)文分片。進(jìn)一步地,所述線卡通過(guò)查詢分發(fā)表或路由確定本線卡是否為目的線卡。進(jìn)一步地,所述線卡為業(yè)務(wù)線卡時(shí),通過(guò)判斷本線卡是否為集中重組模塊所在的 線卡,來(lái)確定本線卡是否是目的線卡,若不是集中重組模塊所在的線卡,則本線卡為目的線 卡;通過(guò)判斷集中重組模塊所在的線卡的方式,確定本線卡為目的線卡時(shí),所述業(yè)務(wù)線卡根 據(jù)接收的報(bào)文分片直接進(jìn)行報(bào)文重組。進(jìn)一步地,若當(dāng)前接收的報(bào)文分片與已接收的報(bào)文分片重復(fù)或重疊,則丟棄所述 當(dāng)前接收的報(bào)文分片。為解決以上技術(shù)問(wèn)題,本發(fā)明還提供了一種分布式系統(tǒng),該系統(tǒng)包括若干個(gè)線卡, 所述線卡包括接收模塊,用于接收?qǐng)?bào)文分片;目的線卡判斷模塊,用于在接收到報(bào)文的所有分片時(shí),判斷本線卡是否是目的線 卡;轉(zhuǎn)發(fā)模塊,在接收到報(bào)文的所有分片且本線卡不是目的線卡時(shí),用于將所述報(bào)文 的所有分片發(fā)送給目的線卡;報(bào)文重組模塊,接收到報(bào)文的所有分片且本線卡是目的線卡時(shí),將所述報(bào)文的所 有分片進(jìn)行重組。進(jìn)一步地,所述接收模塊包括接收子模塊,用于接收?qǐng)?bào)文分片;虛擬重組隊(duì)列管理子模塊,用于接收所述報(bào)文的第一個(gè)分片時(shí),創(chuàng)建一個(gè)虛擬重 組隊(duì)列;以及在接收所述報(bào)文的后續(xù)分片時(shí),按分片在原始報(bào)文中的位置寫(xiě)入所述虛擬重 組隊(duì)列中;分片判斷子模塊,用于根據(jù)所述虛擬重組隊(duì)列的寫(xiě)入情況判斷是否接收到報(bào)文的 所有分片。進(jìn)一步地,所述虛擬重組隊(duì)列管理子模塊,在創(chuàng)建所述虛擬重組隊(duì)列時(shí),還用于初 始化定時(shí)器,所述線卡為接口線卡時(shí),還包括集中重組模塊線卡判斷模塊,用于在定時(shí)時(shí)間 內(nèi)未接收到報(bào)文的所有分片時(shí),確定本線卡是否集中重組模塊所在的線卡;所述轉(zhuǎn)發(fā)模塊, 還用于在所述集中重組模塊所在的線卡是本線卡時(shí),丟棄已接收的報(bào)文分片,否則,將已接 收的報(bào)文分片發(fā)送到集中重組模塊所在的線卡。進(jìn)一步地,所述虛擬重組隊(duì)列管理子模塊,在創(chuàng)建所述虛擬重組隊(duì)列時(shí),還用于初 始化定時(shí)器,所述線卡為業(yè)務(wù)線卡時(shí),所述轉(zhuǎn)發(fā)模塊還用于在定時(shí)時(shí)間內(nèi)未接收到報(bào)文的 所有分片時(shí),丟棄已接收的報(bào)文分片。
5
進(jìn)一步地,所述目的線卡判斷模塊,通過(guò)查詢分發(fā)表或路由確定本線卡是否為目 的線卡。進(jìn)一步地,所述線卡為業(yè)務(wù)線卡時(shí),所述目的線卡判斷模塊,還用于在接收到報(bào)文 分片時(shí),通過(guò)判斷本線卡是否為集中重組模塊所在的線卡來(lái)確定本線卡是否是目的線卡, 若不是集中重組模塊所在的線卡,則本線卡為目的線卡;通過(guò)判斷集中重組模塊所在的線 卡的方式確定本線卡為目的線卡時(shí),所述報(bào)文重組模塊還用于根據(jù)接收的報(bào)文分片直接進(jìn) 行報(bào)文重組。本發(fā)明IP報(bào)文分片的處理方法和分布式系統(tǒng)中,線卡判斷是否已接收全報(bào)文的 分片,并在接收齊全時(shí)轉(zhuǎn)發(fā)給目的線卡,由目的線卡實(shí)現(xiàn)報(bào)文重組,從而避免報(bào)文分片的多 次轉(zhuǎn)發(fā)和重組,節(jié)約系統(tǒng)資源。
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā) 明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中圖1是現(xiàn)有通信技術(shù)中,簡(jiǎn)化的分布式系統(tǒng)示意圖;圖2是現(xiàn)有技術(shù)中,分片報(bào)文和非分片報(bào)文在同一個(gè)接口板上沒(méi)有交叉?zhèn)鬏敚?由于分片報(bào)文送集中重組模塊所在的線卡,出現(xiàn)報(bào)文亂序;圖3是本發(fā)明接收IP報(bào)文分片的處理方法的示意圖;圖4是接收?qǐng)?bào)文分片的過(guò)程示意圖;圖5是接口線卡對(duì)報(bào)文分片進(jìn)行處理的實(shí)施例流程圖;圖6是業(yè)務(wù)線卡對(duì)報(bào)文分片進(jìn)行處理的實(shí)施例流程圖;圖7是本發(fā)明采用虛擬重組隊(duì)列后避免報(bào)文亂序的示意圖;圖8是本發(fā)明分布式系統(tǒng)中線卡的模塊結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明IP報(bào)文分片的處理方法和分布式系統(tǒng)的主要思想是分布式系統(tǒng)的線卡判 斷是否已接收全報(bào)文的分片,并在接收齊全時(shí)轉(zhuǎn)發(fā)給目的線卡,由目的線卡實(shí)現(xiàn)報(bào)文重組, 從而避免報(bào)文分片的多次轉(zhuǎn)發(fā)和重組,節(jié)約系統(tǒng)資源,避免報(bào)文亂序。如圖3所示,本發(fā)明IP報(bào)文分片的處理方法包括步驟301 線卡接收?qǐng)?bào)文分片;步驟302 所述線卡接收到報(bào)文的所有分片時(shí),判斷本線卡是否是目的線卡;步驟303 本線卡不是目的線卡時(shí),所述線卡將所述報(bào)文的所有分片發(fā)送給目的 線卡;本線卡是目的線卡時(shí),所述線卡將所述報(bào)文的所有分片進(jìn)行重組。 如圖4所示,步驟301,線卡接收?qǐng)?bào)文分片時(shí)具體包括以下步驟步驟3011 接收所述報(bào)文的第一個(gè)分片時(shí),創(chuàng)建一個(gè)虛擬重組隊(duì)列;步驟3012 接收所述報(bào)文的后續(xù)分片時(shí),按分片在原始報(bào)文中的位置寫(xiě)入所述虛 擬重組隊(duì)列中;步驟3013 根據(jù)虛擬重組隊(duì)列的寫(xiě)入情況判斷是否接收到報(bào)文的所有分片。為了保證對(duì)接收?qǐng)?bào)文分片的時(shí)效性控制,創(chuàng)建所述虛擬重組隊(duì)列時(shí),初始化定時(shí)
6器,若所述線卡為接口線卡,且在定時(shí)時(shí)間內(nèi)未接收到報(bào)文的所有分片時(shí),執(zhí)行以下操作所述接口線卡確定集中重組模塊所在的線卡;若所述集中重組模塊所在的線卡是本線卡,則丟棄已接收的報(bào)文分片,否則,所述 接口線卡將已接收的報(bào)文分片發(fā)送到集中重組模塊所在的線卡。若所述線卡為業(yè)務(wù)線卡,且在定時(shí)時(shí)間內(nèi)未接收到報(bào)文的所有分片時(shí),丟棄已接 收的報(bào)文分片。所述線卡通過(guò)查詢分發(fā)表或路由確定本線卡是否為目的業(yè)務(wù)線卡。若當(dāng)前接收的報(bào)文分片與已接收的報(bào)文分片重復(fù)或重疊,則丟棄所述當(dāng)前接收的 報(bào)文分片。所述線卡為業(yè)務(wù)線卡時(shí),通過(guò)判斷本線卡是否為集中重組模塊所在的線卡來(lái)確定 本線卡是否是目的線卡,若不是集中重組模塊所在的線卡,則本線卡為目的線卡;通過(guò)判斷 集中重組模塊所在的線卡的方式確定本線卡為目的線卡時(shí),所述業(yè)務(wù)線卡根據(jù)接收的報(bào)文 分片直接進(jìn)行報(bào)文重組。為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì) 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施 例中的特征可以相互組合。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不 用于限定本發(fā)明。實(shí)施例一參考圖5,說(shuō)明接口線卡上分片報(bào)文重組的完整工作流程,包括以下步驟S501,接收?qǐng)?bào)文分片;S502,判斷接收的報(bào)文分片是否是最先到達(dá)的分片,若是,則轉(zhuǎn)入S503 ;否則,轉(zhuǎn) 入 S504 ;S503,創(chuàng)建虛擬重組隊(duì)列,初始化超時(shí)定時(shí)器,轉(zhuǎn)507 ;S504,判斷接收的報(bào)文分片是否與已接收的報(bào)文分片重復(fù),若是,則轉(zhuǎn)入S506 ;否 則,轉(zhuǎn)入S505 ;S505,判斷接收的報(bào)文分片是否與已接受的報(bào)文分片存在重疊,若是,則轉(zhuǎn)入 S506 ;否則,轉(zhuǎn)入S507 ;S506,丟棄當(dāng)前接收的分片;S507,根據(jù)分片偏移量,插入本分片到虛擬重組隊(duì)列;S508,判斷尾片是否已到達(dá),若是,則轉(zhuǎn)入S309 ;否則,轉(zhuǎn)入S517 ;S509,判斷首片是否已到達(dá),若是,則轉(zhuǎn)入S310 ;否則,轉(zhuǎn)入S517 ;S510,判斷虛擬重組隊(duì)列是否有空洞,若有,則轉(zhuǎn)入S517 ;否則,轉(zhuǎn)入S511 ;步驟508至510并無(wú)嚴(yán)格的先后順序,主要是為了判斷是否已收到報(bào)文的所有分 片。S511,判斷是否存在報(bào)文分發(fā)表,若存在,則轉(zhuǎn)入S512 ;否則,轉(zhuǎn)入S513 ;S512,從首片中提取源地址、目的地址、源端口、目的端口、協(xié)議類型等信息,查找 分發(fā)表,得到目的線卡,轉(zhuǎn)入S514;S513,查找路由表,得到目的線卡;S514,判斷本線卡是否目的線卡,若是,則轉(zhuǎn)入S515 ;否則,轉(zhuǎn)入S516 ;
7
S515,報(bào)文重組成功,上送本線卡業(yè)務(wù)處理,流程結(jié)束;S516,將虛擬重組隊(duì)列中所有分片送目的線卡處理,流程結(jié)束;S517,判斷定時(shí)器是否超時(shí),若是,則轉(zhuǎn)S518 ;否則,轉(zhuǎn)S501,繼續(xù)接收?qǐng)?bào)文分片;S518,從報(bào)文中提取源地址、目的地址、協(xié)議類型等信息做哈希運(yùn)算,得到集中重 組模塊所在目的線卡;S519,判斷本線卡是否該集中重組模塊所在線卡,若是,轉(zhuǎn)S520 ;否則,轉(zhuǎn)S521 ;S520,釋放虛擬重組隊(duì)列,報(bào)文重組失敗,流程結(jié)束;S521,將虛擬重組隊(duì)列中所有分片報(bào)文分發(fā)到集中重組模塊所在線卡處理,流程結(jié)束。根據(jù)以上流程可以看出,是否執(zhí)行真實(shí)重組,與集中重組模塊在不在本線卡無(wú)關(guān), 只有一個(gè)原則本線卡是目的線卡,則真實(shí)重組;否則,虛擬重組。也就是說(shuō),集中重組模塊 所在線卡不是目的線卡,則它所在線卡執(zhí)行虛擬重組,否則執(zhí)行真實(shí)重組,不會(huì)二次轉(zhuǎn)發(fā)和 重組了。根據(jù)以上流程,對(duì)于接口線卡來(lái)說(shuō),如果在重組超時(shí)時(shí)間內(nèi),沒(méi)有收齊所有分片報(bào) 文,則根據(jù)報(bào)文的源地址、目的地址、協(xié)議類型等信息做哈希運(yùn)算,得到集中重組模塊所在 的線卡。若該集中重組模塊所在線卡是本線卡,則釋放虛擬重組隊(duì)列,報(bào)文重組失??;否則, 把虛擬重組隊(duì)列中的報(bào)文分片發(fā)送到集中重組模塊所在線卡上重組。如果在重組超時(shí)時(shí)間內(nèi),收齊所有分片報(bào)文,則從首片報(bào)文中提取源地址、目的地 址、源端口、目的端口、協(xié)議類型等信息,查分發(fā)表或根據(jù)報(bào)文目的地址查路由,決定報(bào)文是 本線卡進(jìn)行業(yè)務(wù)處理或送到目的線卡進(jìn)行業(yè)務(wù)處理。若是本線卡進(jìn)行業(yè)務(wù)處理,則將虛擬 重組隊(duì)列中的報(bào)文重組成功;否則,將虛擬重組隊(duì)列中的各分片報(bào)文發(fā)送到目的線卡處理。實(shí)施例二參考圖6,說(shuō)明業(yè)務(wù)線卡上分片報(bào)文重組的完整工作流程,包括以下步驟S601,接收?qǐng)?bào)文分片;S602,判斷本線卡是否是集中重組模塊所在線卡,若否,則轉(zhuǎn)入S603;是,則轉(zhuǎn)入 S604 ;S601和S602沒(méi)有嚴(yán)格的先后順序。S603,進(jìn)行報(bào)文重組,流程結(jié)束;一般來(lái)說(shuō),執(zhí)行S603,表示當(dāng)前線卡不是報(bào)文重組模塊所在的線卡,則一定是目的 線卡,報(bào)文分片來(lái)源于圖5流程的S516,表明由同一個(gè)接口線卡接收的報(bào)文分片,其傳輸路 徑是從接口線卡到達(dá)作為目的線卡的業(yè)務(wù)線卡,具體可根據(jù)現(xiàn)有技術(shù)進(jìn)行報(bào)文重組,如進(jìn) 行報(bào)文重組時(shí)設(shè)定定時(shí)器,定時(shí)器時(shí)間內(nèi)收齊所有分片,則進(jìn)行真實(shí)報(bào)文重組,否則報(bào)文重 組失敗,丟棄接收的報(bào)文分片。S604,判斷接收的報(bào)文分片是否是最先到達(dá)的分片,若是,則轉(zhuǎn)入S605 ;否則,轉(zhuǎn) Λ S606 ;執(zhí)行S604,表示當(dāng)前線卡是集中重組模塊所在的線卡,報(bào)文分片除了可能來(lái)源于 圖5流程的S516,還可能來(lái)源于圖5流程的S521,表明由不同接口線卡接收的報(bào)文分片,其 傳輸路徑是由不同接口線卡將其接收的部分報(bào)文分片匯聚到集中重組模塊所在的線卡。S605,創(chuàng)建虛擬重組隊(duì)列,初始化超時(shí)定時(shí)器,轉(zhuǎn)S609 ;
S606,判斷接收的報(bào)文分片是否與已接收的報(bào)文分片重復(fù),若是,則轉(zhuǎn)入608;否 則,轉(zhuǎn)入S607 ;S607,判斷接收的報(bào)文分片是否與已接受的報(bào)文分片存在重疊,若是,則轉(zhuǎn)入 S608 ;否則,轉(zhuǎn)入S609 ;S608,丟棄當(dāng)前接收的分片;S609,根據(jù)分片偏移量,插入本分片到虛擬重組隊(duì)列,也即根據(jù)報(bào)文分片在原始報(bào) 文中的位置進(jìn)行有序緩存;S610,判斷尾片是否已到達(dá),若是,則轉(zhuǎn)入S611否則,轉(zhuǎn)入S619 ;S611,判斷首片是否已到達(dá),若是,則轉(zhuǎn)入S612 ;否則,轉(zhuǎn)入S619 ;S612,判斷虛擬重組隊(duì)列是否有空洞。若有,則轉(zhuǎn)入S619 ;否則,轉(zhuǎn)入S613 ;步驟610至612并無(wú)嚴(yán)格的先后順序,主要是為了判斷是否已收到報(bào)文的所有分片。S613,判斷是否存在分發(fā)表。若存在,則轉(zhuǎn)入S614;否則,轉(zhuǎn)入S615 ;S614,從首片中提取源地址、目的地址、源端口、目的端口、協(xié)議類型等信息,查找 分發(fā)表,得到目的線卡,轉(zhuǎn)入S616S615,查找路由,得到目的線卡;S616,判斷本線卡是否目的線卡,若是,則轉(zhuǎn)入S617 ;否則,轉(zhuǎn)入S618 ;S617,報(bào)文重組成功,上送本線卡業(yè)務(wù)處理,流程結(jié)束;執(zhí)行S617表示當(dāng)前線卡既是集中重組模塊所在的線卡,也是目的線卡,進(jìn)行真實(shí) 的報(bào)文重組。S618,將虛擬重組隊(duì)列中所有分片報(bào)文分發(fā)到目的線卡處理,流程結(jié)束;執(zhí)行S618標(biāo)識(shí)當(dāng)前線卡僅是集中重組模塊所在的線卡,而不是目的線卡,根據(jù)虛 擬重組隊(duì)列進(jìn)實(shí)現(xiàn)虛擬重組,發(fā)送到目的線卡,再由目的線卡進(jìn)行真實(shí)報(bào)文重組。S619,判斷定時(shí)器是否超時(shí)。若是,則轉(zhuǎn)入S620 ;否則,轉(zhuǎn)入S601,繼續(xù)接收?qǐng)?bào)文分 片;S620,釋放虛擬重組隊(duì)列,報(bào)文重組失敗,流程結(jié)束。以上流程是業(yè)務(wù)線卡的優(yōu)選實(shí)施方式,執(zhí)行S602的判斷,可以對(duì)當(dāng)前線卡不是報(bào) 文重組模塊所在的線卡而是目的線卡的情形進(jìn)行簡(jiǎn)化處理,無(wú)需創(chuàng)建虛擬重組隊(duì)列??商?換地,可以不執(zhí)行步驟S602、S603,接收分片報(bào)文后直接執(zhí)行步驟604。根據(jù)以上流程,對(duì)于業(yè)務(wù)線卡來(lái)說(shuō)如果在重組超時(shí)時(shí)間內(nèi),沒(méi)有收齊所有分片報(bào)文,則釋放虛擬重組隊(duì)列中的分片 報(bào)文,重組失敗。如果在重組超時(shí)時(shí)間內(nèi),收齊所有分片報(bào)文。從首片報(bào)文中提取源地址、目的地 址、源端口、目的端口、協(xié)議類型等信息,查分發(fā)表或根據(jù)報(bào)文目的地址查路由,決定報(bào)文是 本線卡進(jìn)行業(yè)務(wù)處理或送到目的線卡進(jìn)行業(yè)務(wù)處理。若是本線卡進(jìn)行業(yè)務(wù)處理,則將虛擬 重組隊(duì)列中的報(bào)文重組成功;否則,將虛擬重組隊(duì)列中的各分片報(bào)文發(fā)送到目的線卡處理。本發(fā)明僅在目的線卡實(shí)現(xiàn)真實(shí)的報(bào)文重組,可避免二次重組,節(jié)約系統(tǒng)資源,提升 系統(tǒng)性能。本發(fā)明在當(dāng)前線卡不是目的線卡的情況下,采用虛擬重組隊(duì)列,可將對(duì)某個(gè)報(bào)文的虛擬重組隊(duì)列中的報(bào)文分片集中轉(zhuǎn)發(fā),使得不同報(bào)文的報(bào)文分片相對(duì)獨(dú)立于其他報(bào)文的 報(bào)文分片,報(bào)文之間有一定的隔離作用,避免上層業(yè)務(wù)接收到的報(bào)文亂序。對(duì)于圖2所示的情形,如果接口線卡、作為目的線卡的業(yè)務(wù)線卡和報(bào)文重組模塊 所在的線卡為不同的線卡,則其報(bào)文傳輸路徑入如圖7所示,報(bào)文1的分片1和分片2在接 口線卡1上經(jīng)過(guò)虛擬重組隊(duì)列的虛擬重組后,不經(jīng)過(guò)集中重組模塊所在的線卡,而是走路 徑1直接發(fā)送到業(yè)務(wù)線卡上,和小包報(bào)文2的傳輸路徑相同,從而避免報(bào)文1和報(bào)文2之間 的亂序。為了實(shí)現(xiàn)以上方法,本發(fā)明還提供了一種分布式系統(tǒng),該系統(tǒng)包括若干個(gè)線卡,如 圖8所示,所述線卡包括接收模塊,用于接收?qǐng)?bào)文分片;目的線卡判斷模塊,用于在接收到報(bào)文的所有分片時(shí),判斷本線卡是否是目的線 卡;轉(zhuǎn)發(fā)模塊,在接收到報(bào)文的所有分片且本線卡不是目的線卡時(shí),用于將所述報(bào)文 的所有分片發(fā)送給目的線卡;報(bào)文重組模塊,用于在接收到報(bào)文的所有分片且本線卡是目的線卡時(shí),將所述報(bào) 文的所有分片進(jìn)行重組。進(jìn)一步地,所述接收模塊包括接收子模塊,用于接收?qǐng)?bào)文分片;虛擬重組隊(duì)列管理子模塊,用于接收所述報(bào)文的第一個(gè)分片時(shí),創(chuàng)建一個(gè)虛擬重 組隊(duì)列;以及在接收所述報(bào)文的后續(xù)分片時(shí),按分片在原始報(bào)文中的位置寫(xiě)入所述虛擬重 組隊(duì)列中;分片判斷子模塊,用于根據(jù)所述虛擬重組隊(duì)列的寫(xiě)入情況判斷是否接收到報(bào)文的 所有分片。進(jìn)一步地,所述虛擬重組隊(duì)列管理子模塊,在創(chuàng)建所述虛擬重組隊(duì)列時(shí),還用于初 始化定時(shí)器,所述線卡為接口線卡時(shí),還包括集中重組模塊線卡判斷模塊,用于在定時(shí)時(shí)間 內(nèi)未接收到報(bào)文的所有分片時(shí),確定本線卡是否集中重組模塊所在的線卡;所述轉(zhuǎn)發(fā)模塊, 還用于在所述集中重組模塊所在的線卡是本線卡時(shí),丟棄已接收的報(bào)文分片,否則,將已接 收的報(bào)文分片發(fā)送到集中重組模塊所在的線卡。進(jìn)一步地,所述虛擬重組隊(duì)列管理子模塊,在創(chuàng)建所述虛擬重組隊(duì)列時(shí),還用于初 始化定時(shí)器,所述線卡為業(yè)務(wù)線卡時(shí),所述轉(zhuǎn)發(fā)模塊還用于在定時(shí)時(shí)間內(nèi)未接收到報(bào)文的 所有分片時(shí),丟棄已接收的報(bào)文分片。所述目的線卡判斷模塊,通過(guò)查詢分發(fā)表或路由確定本線卡是否為目的業(yè)務(wù)線 卡。對(duì)應(yīng)于圖6的流程,所述線卡為業(yè)務(wù)線卡時(shí),所述目的線卡判斷模塊,還用于在接 收到報(bào)文分片時(shí),通過(guò)判斷本線卡是否為集中重組模塊所在的線卡來(lái)確定本線卡是否是目 的線卡,若不是集中重組模塊所在的線卡,則本線卡為目的線卡;通過(guò)判斷集中重組模塊所 在的線卡的方式確定本線卡為目的線卡時(shí),所述報(bào)文重組模塊還用于根據(jù)接收的報(bào)文分片 直接進(jìn)行報(bào)文重組,包括,若在定時(shí)時(shí)間內(nèi)收到所有報(bào)文分片則重組成功,否則重組失敗, 丟棄收到的報(bào)文分片。
本發(fā)明方法和系統(tǒng)使得分片報(bào)文只有到達(dá)上層業(yè)務(wù)處理的線卡(即目的線卡)上 才進(jìn)行真實(shí)重組,否則只做虛擬重組,避免了傳統(tǒng)實(shí)現(xiàn)將分片報(bào)文送到集中重組模塊所在 線卡進(jìn)行真實(shí)重組再分發(fā)所帶來(lái)的弊端,如集中重組模塊易成為系統(tǒng)瓶頸,重組后報(bào)文在 線卡間轉(zhuǎn)發(fā)可能導(dǎo)致二次分片和重組,以及報(bào)文亂序等問(wèn)題。傳統(tǒng)的電信領(lǐng)域?qū)崿F(xiàn)是一股 腦將分片報(bào)文送到集中重組模塊所在線卡處理,本發(fā)明可以為了避免單板負(fù)荷過(guò)重,影響 業(yè)務(wù)運(yùn)行,提高效率重組性能。避免了報(bào)文重組后在線卡間轉(zhuǎn)發(fā)導(dǎo)致不必要的重分片、再重 組所帶來(lái)的性能消耗,提高了報(bào)文處理的效率。同時(shí),當(dāng)分片報(bào)文和非分片報(bào)文沒(méi)有交叉?zhèn)?輸并且由同一個(gè)接口線卡收到時(shí),因?yàn)閳?bào)文無(wú)需送到集中重組模塊所在線卡重組,從而能 夠?qū)崿F(xiàn)報(bào)文的保序。可以通過(guò)后臺(tái)配置,啟用或禁止系統(tǒng)的虛擬重組功能。此外,本發(fā)明在 多個(gè)接口線卡或業(yè)務(wù)線卡上駐留集中重組模塊,實(shí)現(xiàn)了虛擬重組在集中重組模塊所在線卡 上的負(fù)載均衡。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技 術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過(guò)程序來(lái)指令 相關(guān)硬件完成,所述程序可以存儲(chǔ)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如只讀存儲(chǔ)器、磁盤或光盤 等。可選地,上述實(shí)施例的全部或部分步驟也可以使用一個(gè)或多個(gè)集成電路來(lái)實(shí)現(xiàn)。相應(yīng) 地,上述實(shí)施例中的各模塊/單元可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的 形式實(shí)現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。
權(quán)利要求
1.一種IP報(bào)文分片的處理方法,其特征在于,該方法包括 線卡接收?qǐng)?bào)文分片;所述線卡接收到報(bào)文的所有分片時(shí),判斷本線卡是否是目的線卡; 本線卡不是目的線卡時(shí),所述線卡將所述報(bào)文的所有分片發(fā)送給目的線卡;本線卡是 目的線卡時(shí),所述線卡將所述報(bào)文的所有分片進(jìn)行重組。
2.如權(quán)利要求1所述的方法,其特征在于所述線卡接收?qǐng)?bào)文分片的步驟包括 接收所述報(bào)文的第一個(gè)分片時(shí),創(chuàng)建一個(gè)虛擬重組隊(duì)列;接收所述報(bào)文的后續(xù)分片時(shí),按分片在原始報(bào)文中的位置寫(xiě)入所述虛擬重組隊(duì)列中; 根據(jù)虛擬重組隊(duì)列的寫(xiě)入情況判斷是否接收到報(bào)文的所有分片。
3.如權(quán)利要求2所述的方法,其特征在于創(chuàng)建所述虛擬重組隊(duì)列時(shí),初始化定時(shí)器, 若所述線卡為接口線卡,且在定時(shí)時(shí)間內(nèi)未接收到報(bào)文的所有分片時(shí),執(zhí)行以下操作所述接口線卡確定集中重組模塊所在的線卡;若所述集中重組模塊所在的線卡是本線卡,則丟棄已接收的報(bào)文分片,否則,所述接口 線卡將已接收的報(bào)文分片發(fā)送到集中重組模塊所在的線卡。
4.如權(quán)利要求2所述的方法,其特征在于創(chuàng)建所述虛擬重組隊(duì)列時(shí),初始化定時(shí)器, 若所述線卡為業(yè)務(wù)線卡,且在定時(shí)時(shí)間內(nèi)未接收到報(bào)文的所有分片時(shí),丟棄已接收的報(bào)文 分片。
5.如權(quán)利要求1所述的方法,其特征在于所述線卡通過(guò)查詢分發(fā)表或路由確定本線 卡是否為目的線卡。
6.如權(quán)利要求1所述的方法,其特征在于所述線卡為業(yè)務(wù)線卡時(shí),通過(guò)判斷本線卡是 否為集中重組模塊所在的線卡,來(lái)確定本線卡是否是目的線卡,若不是集中重組模塊所在 的線卡,則本線卡為目的線卡;通過(guò)判斷集中重組模塊所在的線卡的方式,確定本線卡為目 的線卡時(shí),所述業(yè)務(wù)線卡根據(jù)接收的報(bào)文分片直接進(jìn)行報(bào)文重組。
7.如權(quán)利要求1所述的方法,其特征在于若當(dāng)前接收的報(bào)文分片與已接收的報(bào)文分 片重復(fù)或重疊,則丟棄所述當(dāng)前接收的報(bào)文分片。
8.一種分布式系統(tǒng),其特征在于,該系統(tǒng)包括若干個(gè)線卡,所述線卡包括 接收模塊,用于接收?qǐng)?bào)文分片;目的線卡判斷模塊,用于在接收到報(bào)文的所有分片時(shí),判斷本線卡是否是目的線卡; 轉(zhuǎn)發(fā)模塊,在接收到報(bào)文的所有分片且本線卡不是目的線卡時(shí),用于將所述報(bào)文的所 有分片發(fā)送給目的線卡;報(bào)文重組模塊,接收到報(bào)文的所有分片且本線卡是目的線卡時(shí),將所述報(bào)文的所有分 片進(jìn)行重組。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述接收模塊包括 接收子模塊,用于接收?qǐng)?bào)文分片;虛擬重組隊(duì)列管理子模塊,用于接收所述報(bào)文的第一個(gè)分片時(shí),創(chuàng)建一個(gè)虛擬重組隊(duì) 列;以及在接收所述報(bào)文的后續(xù)分片時(shí),按分片在原始報(bào)文中的位置寫(xiě)入所述虛擬重組隊(duì) 列中;分片判斷子模塊,用于根據(jù)所述虛擬重組隊(duì)列的寫(xiě)入情況判斷是否接收到報(bào)文的所有 分片。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于所述虛擬重組隊(duì)列管理子模塊,在創(chuàng)建所 述虛擬重組隊(duì)列時(shí),還用于初始化定時(shí)器,所述線卡為接口線卡時(shí),還包括集中重組模塊線 卡判斷模塊,用于在定時(shí)時(shí)間內(nèi)未接收到報(bào)文的所有分片時(shí),確定本線卡是否集中重組模 塊所在的線卡;所述轉(zhuǎn)發(fā)模塊,還用于在所述集中重組模塊所在的線卡是本線卡時(shí),丟棄已 接收的報(bào)文分片,否則,將已接收的報(bào)文分片發(fā)送到集中重組模塊所在的線卡。
11.如權(quán)利要求8所述的系統(tǒng),其特征在于所述虛擬重組隊(duì)列管理子模塊,在創(chuàng)建所 述虛擬重組隊(duì)列時(shí),還用于初始化定時(shí)器,所述線卡為業(yè)務(wù)線卡時(shí),所述轉(zhuǎn)發(fā)模塊還用于在 定時(shí)時(shí)間內(nèi)未接收到報(bào)文的所有分片時(shí),丟棄已接收的報(bào)文分片。
12.如權(quán)利要求8所述的系統(tǒng),其特征在于所述目的線卡判斷模塊,通過(guò)查詢分發(fā)表 或路由確定本線卡是否為目的線卡。
13.如權(quán)利要求8所述的系統(tǒng),其特征在于所述線卡為業(yè)務(wù)線卡時(shí),所述目的線卡判 斷模塊,還用于在接收到報(bào)文分片時(shí),通過(guò)判斷本線卡是否為集中重組模塊所在的線卡來(lái) 確定本線卡是否是目的線卡,若不是集中重組模塊所在的線卡,則本線卡為目的線卡;通過(guò) 判斷集中重組模塊所在的線卡的方式確定本線卡為目的線卡時(shí),所述報(bào)文重組模塊還用于 根據(jù)接收的報(bào)文分片直接進(jìn)行報(bào)文重組。
全文摘要
本發(fā)明涉及一種IP報(bào)文分片的處理方法和分布式系統(tǒng),該方法包括線卡接收?qǐng)?bào)文分片;所述線卡接收到報(bào)文的所有分片時(shí),判斷本線卡是否是目的線卡;本線卡不是目的線卡時(shí),所述線卡將所述報(bào)文的所有分片發(fā)送給目的線卡;本線卡是目的線卡時(shí),所述線卡將所述報(bào)文的所有分片進(jìn)行重組。本發(fā)明IP報(bào)文分片的處理方法和分布式系統(tǒng)可以避免報(bào)文多次轉(zhuǎn)發(fā)重組。
文檔編號(hào)H04L12/56GK102065012SQ201010601200
公開(kāi)日2011年5月18日 申請(qǐng)日期2010年12月22日 優(yōu)先權(quán)日2010年12月22日
發(fā)明者劉巍巍, 吳剛, 孫偉 申請(qǐng)人:中興通訊股份有限公司