本申請(qǐng)涉及計(jì)算機(jī)通信領(lǐng)域,尤其涉及分片報(bào)文的處理方法及裝置。
背景技術(shù):
IP報(bào)文分片技術(shù)是網(wǎng)絡(luò)上傳輸IP報(bào)文常用的一種技術(shù)手段。通常情況下,當(dāng)發(fā)送端發(fā)送的IP報(bào)文的大小超過(guò)MTU(Maximum Transmission Unit,最大傳輸單元)時(shí),就可以對(duì)待發(fā)送的IP報(bào)文進(jìn)行分片處理,然后將分片后的分片報(bào)文發(fā)送至接收端,由接收端進(jìn)行相應(yīng)地IP報(bào)文重組。
然而,隨著互聯(lián)網(wǎng)的高速發(fā)展,網(wǎng)絡(luò)設(shè)備地性能也面臨著嚴(yán)峻地考驗(yàn),而分片報(bào)文的處理能力是衡量網(wǎng)絡(luò)設(shè)備的性能的一個(gè)重要指標(biāo),因此,如何提高網(wǎng)絡(luò)設(shè)備分片報(bào)文的處理效率就成為亟待解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請(qǐng)?zhí)峁┮环N分片報(bào)文的處理方法及裝置,用以通過(guò)減少分片報(bào)文的拷貝次數(shù),提高網(wǎng)絡(luò)設(shè)備的設(shè)備性能。
具體地,本申請(qǐng)是通過(guò)如下技術(shù)方案實(shí)現(xiàn)的:
根據(jù)本申請(qǐng)的第一方面,提供一種分片報(bào)文的處理方法,所述方法應(yīng)用于網(wǎng)絡(luò)設(shè)備,所述方法包括:
將接收到的分片報(bào)文分別儲(chǔ)存至對(duì)應(yīng)的緩存區(qū);其中,所述緩存區(qū)包括報(bào)頭區(qū)以及數(shù)據(jù)區(qū);
基于各分片報(bào)文的報(bào)頭區(qū)記錄的分片偏移量,將各分片報(bào)文的數(shù)據(jù)區(qū)的地址有序地鏈接為對(duì)應(yīng)的邏輯鏈表;
基于所述邏輯鏈表,對(duì)各分片報(bào)文進(jìn)行相應(yīng)的業(yè)務(wù)處理,并在處理完成后,基于所述邏輯鏈表,依次將各分片報(bào)文轉(zhuǎn)發(fā)至下一級(jí)網(wǎng)絡(luò)設(shè)備。
根據(jù)本申請(qǐng)的第二方面,提供一種分片報(bào)文的處理裝置,所述裝置應(yīng)用于網(wǎng)絡(luò)設(shè)備,所述裝置包括:
儲(chǔ)存單元,用于將接收到的分片報(bào)文分別儲(chǔ)存至對(duì)應(yīng)的緩存區(qū);其中,所述緩存區(qū)包括報(bào)頭區(qū)以及數(shù)據(jù)區(qū);
重組單元,用于基于各分片報(bào)文的報(bào)頭區(qū)記錄的分片偏移量,將各分片報(bào)文的數(shù)據(jù)區(qū)的地址有序地鏈接為對(duì)應(yīng)的邏輯鏈表;
發(fā)送單元,用于基于所述邏輯鏈表,對(duì)各分片報(bào)文進(jìn)行相應(yīng)的業(yè)務(wù)處理,并在處理完成后,基于所述邏輯鏈表,依次將各分片報(bào)文轉(zhuǎn)發(fā)至下一級(jí)網(wǎng)絡(luò)設(shè)備。
本申請(qǐng)?zhí)岢鲆环N分片報(bào)文的處理方法,網(wǎng)絡(luò)設(shè)備可以將接收到的分片報(bào)文分別儲(chǔ)存至對(duì)應(yīng)的緩存區(qū);其中,所述緩存區(qū)包括報(bào)頭區(qū)以及數(shù)據(jù)區(qū)。并可以基于各分片報(bào)文的報(bào)頭區(qū)記錄的分片偏移量,將各分片報(bào)文的數(shù)據(jù)區(qū)的地址有序地鏈接為對(duì)應(yīng)的邏輯鏈表。網(wǎng)絡(luò)設(shè)備可以基于所述邏輯鏈表,對(duì)各分片報(bào)文進(jìn)行相應(yīng)的業(yè)務(wù)處理,并在處理完成后,基于所述邏輯鏈表,依次將各分片報(bào)文轉(zhuǎn)發(fā)至下一級(jí)網(wǎng)絡(luò)設(shè)備。
在分片報(bào)文重組時(shí),由于網(wǎng)絡(luò)設(shè)備不再將緩存區(qū)中儲(chǔ)存的分片報(bào)文有序地拷貝至連續(xù)的物理內(nèi)存中,而是可以基于各分片報(bào)文的報(bào)頭區(qū)記錄的分片偏移量,將各分片報(bào)文的數(shù)據(jù)區(qū)的地址有序地鏈接為對(duì)應(yīng)的邏輯鏈表,將緩存區(qū)中的分片報(bào)文重組成邏輯的上原報(bào)文,從而可以有效地減少拷貝的次數(shù)。因此可以有效地提高設(shè)備的性能,減少報(bào)文轉(zhuǎn)發(fā)的時(shí)延。
附圖說(shuō)明
圖1是本申請(qǐng)示出的一種接收方網(wǎng)絡(luò)設(shè)備緩存區(qū)中的分片報(bào)文的映射格式的示意圖;
圖2是本申請(qǐng)示出的一種相關(guān)技術(shù)的分片報(bào)文重組方法的示意圖;
圖3是本申請(qǐng)一示例性實(shí)施例示出的一種分片報(bào)文的處理方法的流程圖;
圖4是本申請(qǐng)一示例性實(shí)施例示出的一種分片報(bào)文的重組方法的示意圖;
圖5是本申請(qǐng)一示例性實(shí)施例示出的分片報(bào)文的處理裝置所在設(shè)備的硬件結(jié)構(gòu)圖;
圖6是本申請(qǐng)一示例性實(shí)施例示出的分片報(bào)文的處理裝置的框圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本申請(qǐng)相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書(shū)中所詳述的、本申請(qǐng)的一些方面相一致的裝置和方法的例子。
在本申請(qǐng)使用的術(shù)語(yǔ)是僅僅出于描述特定實(shí)施例的目的,而非旨在限制本申請(qǐng)。在本申請(qǐng)和所附權(quán)利要求書(shū)中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語(yǔ)“和/或”是指并包含一個(gè)或多個(gè)相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。
應(yīng)當(dāng)理解,盡管在本申請(qǐng)可能采用術(shù)語(yǔ)第一、第二、第三等來(lái)描述各種信息,但這些信息不應(yīng)限于這些術(shù)語(yǔ)。這些術(shù)語(yǔ)僅用來(lái)將同一類(lèi)型的信息彼此區(qū)分開(kāi)。例如,在不脫離本申請(qǐng)范圍的情況下,第一信息也可以被稱(chēng)為第二信息,類(lèi)似地,第二信息也可以被稱(chēng)為第一信息。取決于語(yǔ)境,如在此所使用的詞語(yǔ)“如果”可以被解釋成為“在……時(shí)”或“當(dāng)……時(shí)”或“響應(yīng)于確定”。
隨著互聯(lián)網(wǎng)的高速發(fā)展,網(wǎng)絡(luò)設(shè)備地性能也面臨著嚴(yán)峻地考驗(yàn),分片報(bào)文的處理能力是衡量網(wǎng)絡(luò)設(shè)備的性能的一個(gè)重要指標(biāo)。
通常情況下,當(dāng)發(fā)送方網(wǎng)絡(luò)設(shè)備發(fā)送的原報(bào)文的大小超過(guò)MTU(Maximum Transmission Unit,最大傳輸單元)時(shí),就可以對(duì)待發(fā)送的原報(bào)文進(jìn)行分片處理,然后將每個(gè)分片報(bào)文的分片偏移量寫(xiě)入至該分片報(bào)文的報(bào)頭中,然后再將這些分片報(bào)文依次發(fā)送至接收方網(wǎng)絡(luò)設(shè)備,由接收方網(wǎng)絡(luò)設(shè)備進(jìn)行相應(yīng)地分片報(bào)文重組。
當(dāng)接收方網(wǎng)絡(luò)設(shè)備接收到分片報(bào)文后,可以將該分片報(bào)文緩存至緩存區(qū)中。參見(jiàn)圖1,圖1是本申請(qǐng)示出的一種接收方網(wǎng)絡(luò)設(shè)備緩存區(qū)中的分片報(bào)文的映射格式的示意圖。
通常情況下,接收方網(wǎng)絡(luò)設(shè)備可以將接收到的分片報(bào)文的報(bào)頭和分片報(bào)文數(shù)據(jù)所在緩存區(qū)(即數(shù)據(jù)區(qū))的地址寫(xiě)入SKB中,并將該分片報(bào)文的數(shù)據(jù)寫(xiě)入與該SKB記錄的緩存區(qū)地址對(duì)應(yīng)的緩存區(qū)(即數(shù)據(jù)區(qū))中。
由于在上述原報(bào)文被分片后,每一個(gè)分片報(bào)文都具有自己的報(bào)頭,并在選擇路由時(shí)與其他的分片報(bào)文獨(dú)立。所以,當(dāng)這些分片報(bào)文到達(dá)接收方網(wǎng)絡(luò)設(shè)備時(shí),可能會(huì)出現(xiàn)亂序的問(wèn)題,換句話(huà)來(lái)說(shuō),就是接收方網(wǎng)絡(luò)設(shè)備的緩存區(qū)中緩存的分片報(bào)文的順序并不是該分片報(bào)文在該原報(bào)文中的順序。
例如,發(fā)送方網(wǎng)絡(luò)設(shè)備將該原報(bào)文拆分成第一個(gè)、第二個(gè)至第N個(gè)分片報(bào)文,并將依次將這第一個(gè)、第二個(gè)至第N個(gè)分片報(bào)文發(fā)送至接收方網(wǎng)絡(luò)設(shè)備。
但是,由于每個(gè)分片報(bào)文所選擇的路由不同,鏈路質(zhì)量不同,使得接收方網(wǎng)絡(luò)設(shè)備接收到的分片報(bào)文的順序并非是第一個(gè)、第二個(gè)至第N個(gè)分片報(bào)文這樣的順序,例如,接收方接收到的分片報(bào)文的順序可能為第一個(gè)、第四個(gè)、第三個(gè)、第二個(gè)分片報(bào)文等等。
因此,接收方網(wǎng)絡(luò)設(shè)備需要對(duì)接收到的分片報(bào)文進(jìn)行重組,重新組成該原報(bào)文,才能對(duì)該原報(bào)文進(jìn)行相應(yīng)地業(yè)務(wù)處理(如NAT、協(xié)議深度檢測(cè)等)。
參見(jiàn)圖2,圖2是相關(guān)IP報(bào)文重組方法示出的圖2是本申請(qǐng)示出的一種相關(guān)技術(shù)的分片報(bào)文重組方法的示意圖。
在相關(guān)的分片報(bào)文重組的方案中,網(wǎng)絡(luò)設(shè)備通常將可以根據(jù)每個(gè)分片報(bào)文中記載的該分片報(bào)文的分片偏移量,有序地將緩存區(qū)中的分片報(bào)文的數(shù)據(jù)依次拷貝至一段連續(xù)的物理內(nèi)存中,使得該連續(xù)的物理內(nèi)存中儲(chǔ)存的是完整的原報(bào)文。
然而,在相關(guān)技術(shù)中的分片報(bào)文的重組技術(shù)中,在對(duì)分片報(bào)文重組時(shí),接收方網(wǎng)絡(luò)設(shè)備需要將每個(gè)分片報(bào)文從緩存區(qū)中拷貝至上述連續(xù)的物理內(nèi)存(此過(guò)程也可以被稱(chēng)之為內(nèi)存拷貝),由于發(fā)生內(nèi)存拷貝的次數(shù)過(guò)多,所以嚴(yán)重影響了設(shè)備的性能,大大增加了報(bào)文轉(zhuǎn)發(fā)的時(shí)延。
本申請(qǐng)?zhí)岢鲆环N分片報(bào)文的處理方法,網(wǎng)絡(luò)設(shè)備可以將接收到的分片報(bào)文分別儲(chǔ)存至對(duì)應(yīng)的緩存區(qū),該緩存區(qū)包括報(bào)頭區(qū)以及數(shù)據(jù)區(qū)。并可以基于各分片報(bào)文的報(bào)頭區(qū)記錄的分片偏移量,將各分片報(bào)文的數(shù)據(jù)區(qū)的地址有序地鏈接為對(duì)應(yīng)的邏輯鏈表。網(wǎng)絡(luò)設(shè)備可以基于所述邏輯鏈表,對(duì)各分片報(bào)文進(jìn)行相應(yīng)的業(yè)務(wù)處理,并在處理完成后,基于所述邏輯鏈表,依次將各分片報(bào)文轉(zhuǎn)發(fā)至下一級(jí)網(wǎng)絡(luò)設(shè)備。
在分片報(bào)文重組時(shí),由于網(wǎng)絡(luò)設(shè)備不再將緩存區(qū)中儲(chǔ)存的分片報(bào)文有序地拷貝至連續(xù)的物理內(nèi)存中,而是可以基于各分片報(bào)文的報(bào)頭區(qū)記錄的分片偏移量,將各分片報(bào)文的數(shù)據(jù)區(qū)的地址有序地鏈接為對(duì)應(yīng)的邏輯鏈表,將緩存區(qū)中的分片報(bào)文重組成邏輯的上原報(bào)文,從而可以有效地減少拷貝的次數(shù)。因此可以有效地提高設(shè)備的性能,減少報(bào)文轉(zhuǎn)發(fā)的時(shí)延。
參見(jiàn)圖3,圖3是本申請(qǐng)一示例性實(shí)施例示出的一種分片報(bào)文的處理方法的流程圖;所述方法應(yīng)用于網(wǎng)絡(luò)設(shè)備,所述方法可以包括如下所示步驟:
步驟301:將接收到的分片報(bào)文分別儲(chǔ)存至對(duì)應(yīng)的緩存區(qū);其中,所述緩存區(qū)包括報(bào)頭區(qū)以及數(shù)據(jù)區(qū);
步驟302:基于各分片報(bào)文的報(bào)頭區(qū)記錄的分片偏移量,將各分片報(bào)文的數(shù)據(jù)區(qū)的地址有序地鏈接為對(duì)應(yīng)的邏輯鏈表;
步驟303:基于所述邏輯鏈表,對(duì)各分片報(bào)文進(jìn)行相應(yīng)的業(yè)務(wù)處理,并在處理完成后,基于所述邏輯鏈表,依次將各分片報(bào)文轉(zhuǎn)發(fā)至下一級(jí)網(wǎng)絡(luò)設(shè)備。
其中,上述報(bào)頭區(qū),為緩存區(qū)中儲(chǔ)存分片報(bào)文的報(bào)頭所在的區(qū)域,通常為SKB。
上述數(shù)據(jù)區(qū),是指緩存區(qū)中用于儲(chǔ)存分片報(bào)文的數(shù)據(jù)的區(qū)域。
在本申請(qǐng)實(shí)施例中,在分片報(bào)文重組時(shí),由于網(wǎng)絡(luò)設(shè)備不再將緩存區(qū)中儲(chǔ)存的分片報(bào)文有序地拷貝至連續(xù)的物理內(nèi)存中,而是可以基于各分片報(bào)文的報(bào)頭區(qū)記錄的分片偏移量,將各分片報(bào)文的數(shù)據(jù)區(qū)的地址有序地鏈接為對(duì)應(yīng)的邏輯鏈表,將緩存區(qū)中的分片報(bào)文重組成邏輯的上原報(bào)文,從而可以有效地減少拷貝的次數(shù)。因此可以有效地提高設(shè)備的性能,減少報(bào)文轉(zhuǎn)發(fā)的時(shí)延。
在實(shí)現(xiàn)時(shí),網(wǎng)絡(luò)設(shè)備可以接收上一級(jí)網(wǎng)絡(luò)設(shè)備發(fā)送的分片報(bào)文,并將接收到的分片報(bào)文依次儲(chǔ)存在對(duì)應(yīng)的緩存區(qū)中。
在儲(chǔ)存時(shí),網(wǎng)絡(luò)設(shè)備可以將每個(gè)分片報(bào)文的報(bào)頭儲(chǔ)存在緩存區(qū)中SKB中(即報(bào)頭區(qū)),并將每個(gè)分片報(bào)文的數(shù)據(jù)儲(chǔ)存在該緩存區(qū)的數(shù)據(jù)區(qū)中,同時(shí)將每個(gè)分片報(bào)文的數(shù)據(jù)所在的緩存區(qū)的地址寫(xiě)入與該分片報(bào)文對(duì)應(yīng)的SKB中,如圖1所示。
網(wǎng)絡(luò)設(shè)備可以基于接收到的各分片報(bào)文的報(bào)頭區(qū)記錄的分片偏移量,確定各報(bào)文在原報(bào)文的位置順序,然后將各分片報(bào)文的數(shù)據(jù)區(qū)的地址有序地連接為對(duì)應(yīng)的邏輯鏈表,以將緩存區(qū)中的各分片報(bào)文組織邏輯上的原報(bào)文。如圖4所示。
在一種可選的實(shí)現(xiàn)方式中,網(wǎng)絡(luò)設(shè)備可以在各分片報(bào)文的報(bào)頭區(qū)添加指向下一個(gè)分片報(bào)文的數(shù)據(jù)區(qū)的地址的邏輯鏈表指針。
在實(shí)現(xiàn)時(shí),對(duì)于首個(gè)分片報(bào)文,網(wǎng)絡(luò)設(shè)備可以在該首個(gè)分片報(bào)文的SKB(即報(bào)頭區(qū))中添加指向第二個(gè)分片報(bào)文的數(shù)據(jù)區(qū)的地址的邏輯鏈表指針。然后,網(wǎng)絡(luò)設(shè)備可以在第二個(gè)分片報(bào)文對(duì)應(yīng)的SKB中添加指向第三個(gè)分片報(bào)文的數(shù)據(jù)區(qū)的地址的邏輯鏈表指針,以此類(lèi)推,直到網(wǎng)絡(luò)設(shè)備在N-1個(gè)分片報(bào)文對(duì)應(yīng)的SKB中添加指向第N個(gè)分片報(bào)文的數(shù)據(jù)區(qū)的地址的邏輯鏈表指針。其中,第N個(gè)分片報(bào)文為最后一個(gè)分片報(bào)文,網(wǎng)絡(luò)設(shè)備可以基于分片報(bào)文報(bào)頭中的標(biāo)志位,判斷出最后一個(gè)分片報(bào)文,N為大于1的整數(shù)。
在另一種可選的實(shí)現(xiàn)方式中,網(wǎng)絡(luò)設(shè)備可以在各分片報(bào)文的數(shù)據(jù)區(qū)中添加指向下一個(gè)分片報(bào)文的數(shù)據(jù)區(qū)的地址邏輯鏈表指針。
在實(shí)現(xiàn)時(shí),網(wǎng)絡(luò)設(shè)備可以在首個(gè)分片報(bào)文的數(shù)據(jù)區(qū)中添加指向第二個(gè)分片報(bào)文的數(shù)據(jù)區(qū)地址的邏輯鏈表指針。然后,在第二個(gè)分片報(bào)文的數(shù)據(jù)區(qū)中添加指向第三個(gè)分片報(bào)文的數(shù)據(jù)區(qū)地址的邏輯鏈表指針,依次類(lèi)推,直到網(wǎng)絡(luò)設(shè)備在N-1個(gè)分片報(bào)文的數(shù)據(jù)區(qū)中添加指向第N個(gè)分片報(bào)文的數(shù)據(jù)區(qū)地址的邏輯鏈表指針。其中,第N個(gè)分片報(bào)文為最后一個(gè)分片報(bào)文,網(wǎng)絡(luò)設(shè)備可以基于分片報(bào)文報(bào)頭中的標(biāo)志位,判斷出最后一個(gè)分片報(bào)文,N為大于1的整數(shù)。
在完成上述通過(guò)邏輯鏈表對(duì)分片報(bào)文進(jìn)行重組之后,該網(wǎng)絡(luò)設(shè)備可以基于該邏輯鏈表,對(duì)各分片報(bào)文進(jìn)行相應(yīng)的業(yè)務(wù)處理。
以業(yè)務(wù)處理為NAT轉(zhuǎn)換為例,網(wǎng)絡(luò)設(shè)備可以通過(guò)SKB查看首個(gè)分片報(bào)文報(bào)頭中的地址和端口,然后基于NAT轉(zhuǎn)換策略,完成轉(zhuǎn)換即可。
在完成上述分片報(bào)文的業(yè)務(wù)處理之后,網(wǎng)絡(luò)設(shè)備可以基于上述邏輯鏈表,依次將各分片報(bào)文轉(zhuǎn)發(fā)至下一級(jí)網(wǎng)絡(luò)設(shè)備。
在發(fā)送時(shí),網(wǎng)絡(luò)設(shè)備可以基于上述邏輯鏈表,確定首個(gè)分片報(bào)文,并記錄該首個(gè)分片報(bào)文的報(bào)頭和有效載荷長(zhǎng)度,將該首個(gè)分片報(bào)文發(fā)送至下一級(jí)網(wǎng)絡(luò)設(shè)備。
然后網(wǎng)絡(luò)設(shè)備可以基于該邏輯鏈表,依次將未發(fā)送的分片報(bào)文選定為當(dāng)前待發(fā)送報(bào)文。
在針對(duì)所述當(dāng)前待發(fā)送報(bào)文,網(wǎng)絡(luò)設(shè)備可以將當(dāng)前待發(fā)送的分片報(bào)文的報(bào)頭內(nèi)容修改為首個(gè)分片報(bào)文的報(bào)頭內(nèi)容,并可以將上一個(gè)分片報(bào)文的分片偏移量和上一個(gè)分片報(bào)文的有效載荷長(zhǎng)度進(jìn)行累加,作為該當(dāng)前待發(fā)送的分片報(bào)文的分片偏移量。網(wǎng)絡(luò)設(shè)備可以使用累加得到的所述當(dāng)前待發(fā)送的分片報(bào)文的分片偏移量更新該當(dāng)前待發(fā)送報(bào)文的報(bào)頭中的分片偏移量的取值。同時(shí),網(wǎng)絡(luò)設(shè)備可以記錄當(dāng)前待發(fā)送的分片報(bào)文的分片偏移量和有效載荷長(zhǎng)度。
在完成對(duì)當(dāng)前待發(fā)送報(bào)文的報(bào)頭的更新及記錄之后,網(wǎng)絡(luò)設(shè)備可以將該當(dāng)前待發(fā)送的分片報(bào)文發(fā)送至下一級(jí)網(wǎng)絡(luò)設(shè)備。
例如,網(wǎng)絡(luò)設(shè)備在將首個(gè)分片報(bào)文發(fā)送至下一級(jí)網(wǎng)絡(luò)設(shè)備后,可以基于該邏輯鏈表,讀取第二個(gè)分片報(bào)文,作為當(dāng)前待發(fā)送報(bào)文。
網(wǎng)絡(luò)設(shè)備可以使用首個(gè)分片報(bào)文的報(bào)文內(nèi)容修改第二個(gè)分片報(bào)文的報(bào)頭內(nèi)容。并將首個(gè)分片報(bào)文的分片偏移量(首個(gè)分片報(bào)文的分片偏移量為0)與首個(gè)分片報(bào)文的有效載荷長(zhǎng)度進(jìn)行累加,作為第二個(gè)分片報(bào)文的分片偏移量,然后使用該第二個(gè)分片報(bào)文的分片偏移量更新第二個(gè)分片報(bào)文當(dāng)前報(bào)頭中的分片偏移量,同時(shí),網(wǎng)絡(luò)設(shè)備記錄第二個(gè)分片報(bào)文的分片偏移量和第二個(gè)分片報(bào)文的有效載荷長(zhǎng)度。然后再將該第二個(gè)分片報(bào)文發(fā)送至下一級(jí)網(wǎng)絡(luò)設(shè)備。
然后,網(wǎng)絡(luò)設(shè)備可以讀取邏輯鏈表中的第三個(gè)分片報(bào)文作為當(dāng)前待發(fā)送的報(bào)文。
網(wǎng)絡(luò)設(shè)備可以使用首個(gè)分片報(bào)文的報(bào)文內(nèi)容修改第三個(gè)分片報(bào)文的報(bào)頭內(nèi)容,并可以將記錄的第二個(gè)分片報(bào)文的分片偏移量與第二個(gè)分片報(bào)文的有效載荷長(zhǎng)度進(jìn)行累加,作為第三個(gè)分片報(bào)文的分片偏移量。
網(wǎng)絡(luò)設(shè)備可以使用該第三個(gè)分片報(bào)文的分片偏移量更新第三個(gè)分片報(bào)文當(dāng)前報(bào)頭中的分片偏移量,同時(shí),網(wǎng)絡(luò)設(shè)備記錄第三分片報(bào)文的分片偏移量和第三個(gè)分片報(bào)文的有效載荷長(zhǎng)度。然后再將該第三個(gè)分片報(bào)文發(fā)送至下一級(jí)網(wǎng)絡(luò)設(shè)備。
網(wǎng)絡(luò)設(shè)備可以基于上述發(fā)送第二個(gè)分片報(bào)文和第三個(gè)分片報(bào)文的方法依次將邏輯鏈表中剩余的所有分片報(bào)文都發(fā)送至下一級(jí)網(wǎng)絡(luò)設(shè)備。
在本申請(qǐng)實(shí)施例中,上述邏輯鏈表可以采用插入法進(jìn)行排序。
在網(wǎng)絡(luò)設(shè)備通過(guò)邏輯鏈表對(duì)接收到的分片報(bào)文進(jìn)行重組時(shí),網(wǎng)絡(luò)設(shè)備可以基于接收到的分片報(bào)文的分片偏移量,在該邏輯鏈表中查找該分片報(bào)文的插入位置,并可以將該分片報(bào)文插入至查找到的該邏輯鏈表中的位置。
需要說(shuō)明的是,上述邏輯鏈表采用插入法進(jìn)行排序,可以做到邊接收分片報(bào)文,邊對(duì)分片報(bào)文進(jìn)行重組,從而有效地避免了接收到所有分片報(bào)文后,再對(duì)分片報(bào)文進(jìn)行排序的發(fā)生,因此可以有效地降低分片報(bào)文的重組時(shí)延。
本申請(qǐng)?zhí)岢鲆环N分片報(bào)文的處理方法,網(wǎng)絡(luò)設(shè)備可以將接收到的分片報(bào)文分別儲(chǔ)存至對(duì)應(yīng)的緩存區(qū);其中,所述緩存區(qū)包括報(bào)頭區(qū)以及數(shù)據(jù)區(qū)。并可以基于各分片報(bào)文的報(bào)頭區(qū)記錄的分片偏移量,將各分片報(bào)文的數(shù)據(jù)區(qū)的地址有序地鏈接為對(duì)應(yīng)的邏輯鏈表。網(wǎng)絡(luò)設(shè)備可以基于所述邏輯鏈表,對(duì)各分片報(bào)文進(jìn)行相應(yīng)的業(yè)務(wù)處理,并在處理完成后,基于所述邏輯鏈表,依次將各分片報(bào)文轉(zhuǎn)發(fā)至下一級(jí)網(wǎng)絡(luò)設(shè)備。
在分片報(bào)文重組時(shí),由于網(wǎng)絡(luò)設(shè)備不再將緩存區(qū)中儲(chǔ)存的分片報(bào)文有序地拷貝至連續(xù)的物理內(nèi)存中,而是可以基于各分片報(bào)文的報(bào)頭區(qū)記錄的分片偏移量,將各分片報(bào)文的數(shù)據(jù)區(qū)的地址有序地鏈接為對(duì)應(yīng)的邏輯鏈表,將緩存區(qū)中的分片報(bào)文重組成邏輯的上原報(bào)文,從而可以有效地減少拷貝的次數(shù)。因此可以有效地提高設(shè)備的性能,減少報(bào)文轉(zhuǎn)發(fā)的時(shí)延。
與前述分片報(bào)文的處理方法的實(shí)施例相對(duì)應(yīng),本申請(qǐng)還提供了分片報(bào)文的處理裝置的實(shí)施例。
本申請(qǐng)分片報(bào)文的處理裝置的實(shí)施例可以應(yīng)用在網(wǎng)絡(luò)設(shè)備上。裝置實(shí)施例可以通過(guò)軟件實(shí)現(xiàn),也可以通過(guò)硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為一個(gè)邏輯意義上的裝置,是通過(guò)其所在網(wǎng)絡(luò)設(shè)備的處理器將非易失性存儲(chǔ)器中對(duì)應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。從硬件層面而言,如圖5所示,為本申請(qǐng)分片報(bào)文的處理裝置所在網(wǎng)絡(luò)設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖5所示的處理器、內(nèi)存、網(wǎng)絡(luò)出接口、以及非易失性存儲(chǔ)器之外,實(shí)施例中裝置所在的網(wǎng)絡(luò)設(shè)備通常根據(jù)該網(wǎng)絡(luò)設(shè)備的實(shí)際功能,還可以包括其他硬件,對(duì)此不再贅述。
請(qǐng)參考圖6,圖6是本申請(qǐng)一示例性實(shí)施例示出的分片報(bào)文的處理裝置的框圖。所述裝置應(yīng)用于網(wǎng)絡(luò)設(shè)備,所述裝置包括:
儲(chǔ)存單元610,用于將接收到的分片報(bào)文分別儲(chǔ)存至對(duì)應(yīng)的緩存區(qū);其中,所述緩存區(qū)包括報(bào)頭區(qū)以及數(shù)據(jù)區(qū);
重組單元620,用于基于各分片報(bào)文的報(bào)頭區(qū)記錄的分片偏移量,將各分片報(bào)文的數(shù)據(jù)區(qū)的地址有序地鏈接為對(duì)應(yīng)的邏輯鏈表;
發(fā)送單元630,用于基于所述邏輯鏈表,對(duì)各分片報(bào)文進(jìn)行相應(yīng)的業(yè)務(wù)處理,并在處理完成后,基于所述邏輯鏈表,依次將各分片報(bào)文轉(zhuǎn)發(fā)至下一級(jí)網(wǎng)絡(luò)設(shè)備。
在一種可選的實(shí)現(xiàn)方式中,所述重組單元620,具體用于在各分片報(bào)文的報(bào)頭區(qū)添加指向下一個(gè)分片報(bào)文的數(shù)據(jù)區(qū)地址的邏輯鏈表指針;基于各分片報(bào)文的報(bào)頭區(qū)添加的指針,將各分片報(bào)文的數(shù)據(jù)區(qū)的地址鏈接為對(duì)應(yīng)的邏輯鏈表。
在另一種可選的實(shí)現(xiàn)方式中,所述發(fā)送單元630,具體用于基于所述邏輯鏈表,確定首個(gè)分片報(bào)文,并記錄該首個(gè)分片報(bào)文的報(bào)頭和有效載荷長(zhǎng)度,將所述首個(gè)分片報(bào)文發(fā)送至下一級(jí)網(wǎng)絡(luò)設(shè)備;基于所述邏輯鏈表,依次將未發(fā)送的分片報(bào)文選定為當(dāng)前待發(fā)送報(bào)文;針對(duì)所述當(dāng)前待發(fā)送報(bào)文,基于所述首個(gè)分片報(bào)文的報(bào)頭、上一個(gè)分片報(bào)文的有效載荷長(zhǎng)度和分片偏移量,更新所述當(dāng)前待發(fā)送的分片報(bào)文的報(bào)頭,并記錄所述當(dāng)前待發(fā)送的分片報(bào)文的分片偏移量和有效載荷長(zhǎng)度;將所述當(dāng)前待發(fā)送的分片報(bào)文發(fā)送至下一級(jí)網(wǎng)絡(luò)設(shè)備。
在另一種可選的實(shí)現(xiàn)方式中,所述發(fā)送單元630,進(jìn)一步用于將所述當(dāng)前待發(fā)送的分片報(bào)文的報(bào)頭內(nèi)容修改為首個(gè)分片報(bào)文的報(bào)頭內(nèi)容,將所述上一個(gè)分片報(bào)文的分片偏移量和上一個(gè)分片報(bào)文的有效載荷長(zhǎng)度進(jìn)行累加,作為所述當(dāng)前待發(fā)送的分片報(bào)文的分片偏移量;使用累加得到的所述當(dāng)前待發(fā)送的分片報(bào)文的分片偏移量更新該當(dāng)前待發(fā)送報(bào)文的報(bào)頭中的分片偏移量的取值。
在另一種可選的實(shí)現(xiàn)方式中,所述裝置還包括:
插入單元640,用于基于接收到的分片報(bào)文的分片偏移量,在所述邏輯鏈表中查找該分片報(bào)文的插入位置,并將該分片報(bào)文插入至查找到的該邏輯鏈表中的插入位置。
上述裝置中各個(gè)單元的功能和作用的實(shí)現(xiàn)過(guò)程具體詳見(jiàn)上述方法中對(duì)應(yīng)步驟的實(shí)現(xiàn)過(guò)程,在此不再贅述。
對(duì)于裝置實(shí)施例而言,由于其基本對(duì)應(yīng)于方法實(shí)施例,所以相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本申請(qǐng)方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
以上所述僅為本申請(qǐng)的較佳實(shí)施例而已,并不用以限制本申請(qǐng),凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)保護(hù)的范圍之內(nèi)。