用于報(bào)文壓縮的保序方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種用于報(bào)文壓縮的保序方法和裝置,其中該方法包括:接收多個(gè)報(bào)文,并依次判斷每個(gè)報(bào)文是否滿足壓縮條件;將滿足壓縮條件的待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列,并將未滿足壓縮條件的非待壓縮報(bào)文發(fā)送至臨時(shí)緩沖隊(duì)列;每當(dāng)將待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列之前,判斷臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文;如果存在,則將非待壓縮報(bào)文和待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中;以及對(duì)壓縮請(qǐng)求隊(duì)列中的待壓縮報(bào)文進(jìn)行壓縮處理,通過壓縮響應(yīng)隊(duì)列將壓縮處理后的待壓縮報(bào)文和元數(shù)據(jù)中的非待壓縮報(bào)文按序輸出。本發(fā)明實(shí)施例的保序方法有效地利用壓縮協(xié)處理器帶寬資源,優(yōu)化了壓縮卡I/O帶寬和CPU使用效率。
【專利說明】用于報(bào)文壓縮的保序方法和裝置
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及網(wǎng)絡(luò)通信【技術(shù)領(lǐng)域】,尤其涉及一種用于報(bào)文壓縮的保序方法和裝置?!颈尘凹夹g(shù)】
[0002]目前,網(wǎng)絡(luò)壓縮一般是基于傳輸控制協(xié)議TCP之上的應(yīng)用層的數(shù)據(jù)壓縮,如超文本轉(zhuǎn)移協(xié)議HTTP,主要通過細(xì)粒度控制到TCP層以實(shí)現(xiàn)對(duì)業(yè)務(wù)數(shù)據(jù)的壓縮,但是對(duì)業(yè)務(wù)數(shù)據(jù)的透明壓縮尚未發(fā)現(xiàn)。例如,類似采用協(xié)處理器或者中央處理器CPU的加速系統(tǒng),可通過FIFO (First in First Out,先入先出隊(duì)列)機(jī)制實(shí)現(xiàn)CPU與協(xié)處理器之間的通信,同時(shí)通過基于TCP流粒度的并行策略,以確保TCP流中的報(bào)文無亂序發(fā)生。
[0003]目前存在的問題是,F(xiàn)IFO機(jī)制的實(shí)現(xiàn)針對(duì)上述這種類似壓縮的應(yīng)用,會(huì)將所有的業(yè)務(wù)數(shù)據(jù)都經(jīng)過協(xié)處理器進(jìn)行處理,這樣會(huì)導(dǎo)致數(shù)據(jù)壓縮協(xié)處理器的寬度浪費(fèi)問題,同時(shí)也額外消耗了不必要的輸入輸出端口(I/o)寬度。
【發(fā)明內(nèi)容】
[0004]本發(fā)明旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問題之一。
[0005]為此,本發(fā)明的第一個(gè)目的在于提出一種用于報(bào)文壓縮的保序方法。該方法可以有效地利用壓縮協(xié)處理器帶寬資源,也可以減少不必要的協(xié)處理器I/o訪問,優(yōu)化CPU使用效率,并且通過自適應(yīng)的保序推送機(jī)制,減少了非待壓縮報(bào)文保序過程中的積累處理延遲。
[0006]本發(fā)明的第二個(gè)目的在于提出一種用于報(bào)文壓縮的保序裝置。
[0007]為了實(shí)現(xiàn)上述目的,本發(fā)明第一方面實(shí)施例的用于報(bào)文壓縮的保序方法,包括:接收多個(gè)報(bào)文,并依次判斷每個(gè)所述報(bào)文是否滿足壓縮條件;將滿足所述壓縮條件的待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列,并將未滿足所述壓縮條件的非待壓縮報(bào)文發(fā)送至臨時(shí)緩沖隊(duì)列;每當(dāng)將所述待壓縮報(bào)文發(fā)送至所述壓縮請(qǐng)求隊(duì)列之前,判斷所述臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文;如果當(dāng)前存在有所述非待壓縮報(bào)文,則將所述非待壓縮報(bào)文和所述待壓縮報(bào)文發(fā)送至所述壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中;以及對(duì)所述壓縮請(qǐng)求隊(duì)列中的所述待壓縮報(bào)文進(jìn)行壓縮處理,通過壓縮響應(yīng)隊(duì)列將壓縮處理后的待壓縮報(bào)文和所述元數(shù)據(jù)中的所述非待壓縮報(bào)文按序輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
[0008]本發(fā)明實(shí)施例的用于報(bào)文壓縮的保序方法,每當(dāng)將待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列之前,判斷臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文,如果當(dāng)前存在有非待壓縮報(bào)文,則將非待壓縮報(bào)文和待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中,并在對(duì)壓縮請(qǐng)求隊(duì)列中的待壓縮報(bào)文進(jìn)行壓縮處理之后,通過壓縮響應(yīng)隊(duì)列將壓縮處理后的待壓縮報(bào)文和元數(shù)據(jù)中的非待壓縮報(bào)文按序輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中,至少具有以下優(yōu)點(diǎn):(I)基于TCP Flow粒度進(jìn)行數(shù)據(jù)壓縮,不同TCP Flow允許采用不同的壓縮方法,實(shí)現(xiàn)了對(duì)業(yè)務(wù)數(shù)據(jù)透明的數(shù)據(jù)壓縮;(2)通過壓縮協(xié)處理器進(jìn)行數(shù)據(jù)壓縮,協(xié)處理器與CPU之間進(jìn)行異步操作,提高了壓縮設(shè)備的系統(tǒng)性能;(3)通過對(duì)報(bào)文長(zhǎng)度小于預(yù)設(shè)值的報(bào)文進(jìn)行過濾,避免了小報(bào)文壓縮無壓縮收益,提高了數(shù)據(jù)壓縮協(xié)處理器的有效負(fù)載的利用率和優(yōu)化協(xié)處理器的I/o性能。
[0009]為了實(shí)現(xiàn)上述目的,本發(fā)明第二方面實(shí)施例的用于報(bào)文壓縮的保序裝置,包括:接收模塊,用于接收多個(gè)報(bào)文;第一判斷模塊,用于依次判斷每個(gè)所述報(bào)文是否滿足壓縮條件;發(fā)送模塊,用于將滿足所述壓縮條件的待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列,并將未滿足所述壓縮條件的非待壓縮報(bào)文發(fā)送至臨時(shí)緩沖隊(duì)列;第二判斷模塊,用于每當(dāng)所述發(fā)送模塊將所述待壓縮報(bào)文發(fā)送至所述壓縮請(qǐng)求隊(duì)列之前,判斷所述臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文;所述發(fā)送模塊還用于在所述第二判斷模塊判斷所述臨時(shí)緩沖隊(duì)列中當(dāng)前存在有所述非待壓縮報(bào)文時(shí),將所述非待壓縮報(bào)文和所述待壓縮報(bào)文發(fā)送至所述壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中;壓縮保序模塊,用于對(duì)所述壓縮請(qǐng)求隊(duì)列中的所述待壓縮報(bào)文進(jìn)行壓縮處理,通過壓縮響應(yīng)隊(duì)列將壓縮處理后的待壓縮報(bào)文和所述元數(shù)據(jù)中的所述非待壓縮報(bào)文按序輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
[0010]本發(fā)明實(shí)施例的用于報(bào)文壓縮的保序裝置,每當(dāng)發(fā)送模塊將待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列之前,通過第二判斷模塊判斷臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文,發(fā)送模塊在當(dāng)前存在有非待壓縮報(bào)文時(shí),將非待壓縮報(bào)文和待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中,壓縮保序模塊在對(duì)壓縮請(qǐng)求隊(duì)列中的待壓縮報(bào)文進(jìn)行壓縮處理之后,通過壓縮響應(yīng)隊(duì)列將壓縮處理后的待壓縮報(bào)文和元數(shù)據(jù)中的非待壓縮報(bào)文按序輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中,至少具有以下優(yōu)點(diǎn):(1)基于TCP Flow粒度進(jìn)行數(shù)據(jù)壓縮,不同TCP Flow允許采用不同的壓縮方法,實(shí)現(xiàn)了對(duì)業(yè)務(wù)數(shù)據(jù)透明的數(shù)據(jù)壓縮;(2)通過壓縮協(xié)處理器進(jìn)行數(shù)據(jù)壓縮,協(xié)處理器與CPU之間進(jìn)行異步操作,提高了壓縮設(shè)備的系統(tǒng)性能;(3)通過對(duì)報(bào)文長(zhǎng)度小于預(yù)設(shè)值的報(bào)文進(jìn)行過濾,避免了小報(bào)文壓縮無壓縮收益,提高了數(shù)據(jù)壓縮協(xié)處理器的有效負(fù)載的利用率和優(yōu)化協(xié)處理器的I/O性能。
[0011]本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
【專利附圖】
【附圖說明】
[0012]本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中,
[0013]圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的用于報(bào)文壓縮的保序方法的流程圖;
[0014]圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的判斷報(bào)文滿足壓縮條件的流程圖;
[0015]圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例的用于報(bào)文壓縮的保序方法的示意圖;
[0016]圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例的非待壓縮報(bào)文多于待壓縮報(bào)文的TCP流的示意圖;
[0017]圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的對(duì)用于報(bào)文壓縮的保序方法進(jìn)行優(yōu)化的流程圖;
[0018]圖6是根據(jù)本發(fā)明一個(gè)實(shí)施例的對(duì)用于報(bào)文壓縮的保序方法進(jìn)行優(yōu)化的示意圖;
[0019]圖7是根據(jù)本發(fā)明一個(gè)實(shí)施例的用于報(bào)文壓縮的保序裝置的結(jié)構(gòu)示意圖;
[0020]圖8是根據(jù)本發(fā)明一個(gè)具體實(shí)施例的用于報(bào)文壓縮的保序裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0021]下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制。
[0022]下文的公開提供了許多不同的實(shí)施例或例子用來實(shí)現(xiàn)本發(fā)明的不同結(jié)構(gòu)。為了簡(jiǎn)化本發(fā)明的公開,下文中對(duì)特定例子的部件和設(shè)置進(jìn)行描述。當(dāng)然,它們僅僅為示例,并且目的不在于限制本發(fā)明。此外,本發(fā)明可以在不同例子中重復(fù)參考數(shù)字和/或字母。這種重復(fù)是為了簡(jiǎn)化和清楚的目的,其本身不指示所討論各種實(shí)施例和/或設(shè)置之間的關(guān)系。
[0023]下面參考附圖描述根據(jù)本發(fā)明實(shí)施例的用于報(bào)文壓縮的保序方法和裝置。
[0024]本發(fā)明實(shí)施例提供的一種用于報(bào)文壓縮的保序方法,包括:接收多個(gè)報(bào)文,并依次判斷每個(gè)報(bào)文是否滿足壓縮條件;將滿足壓縮條件的待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列,并將未滿足壓縮條件的非待壓縮報(bào)文發(fā)送至臨時(shí)緩沖隊(duì)列;每當(dāng)將待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列之前,判斷臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文;如果當(dāng)前存在有非待壓縮報(bào)文,則將非待壓縮報(bào)文和待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中;以及對(duì)壓縮請(qǐng)求隊(duì)列中的待壓縮報(bào)文進(jìn)行壓縮處理,通過壓縮響應(yīng)隊(duì)列將壓縮處理后的待壓縮報(bào)文和元數(shù)據(jù)中的非待壓縮報(bào)文按序輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
[0025]圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的用于報(bào)文壓縮的保序方法的流程圖。
[0026]如圖1所示,該用于報(bào)文壓縮的保序方法可以包括:
[0027]S101,接收多個(gè)報(bào)文,并依次判斷每個(gè)報(bào)文是否滿足壓縮條件。
[0028]具體地,可先接收TCP (Transmission Control Protocol,傳輸控制協(xié)議)流(TCPFlow)中包含的多個(gè)報(bào)文,之后可依次判斷每個(gè)報(bào)文是否滿足壓縮條件,以便將滿足壓縮條件的報(bào)文進(jìn)行壓縮,將不滿足壓縮條件的報(bào)文不進(jìn)行壓縮。
[0029]在本發(fā)明的一個(gè) 實(shí)施例中,如2所示,判斷報(bào)文滿足壓縮條件可以包括:
[0030]S201,獲取每個(gè)報(bào)文的長(zhǎng)度。
[0031]S202,判斷每個(gè)報(bào)文的長(zhǎng)度是否大于或等于預(yù)設(shè)值。
[0032]其中,在本發(fā)明的實(shí)施例中,預(yù)設(shè)值可由系統(tǒng)設(shè)定。例如,系統(tǒng)可根據(jù)報(bào)文長(zhǎng)度的實(shí)際情況確定該預(yù)設(shè)值的大小,可收集大量報(bào)文,先獲取這些報(bào)文的長(zhǎng)度,之后對(duì)這些長(zhǎng)度求平均,以獲得平均值,之后可根據(jù)該平均值確定預(yù)設(shè)值。
[0033]S203,如果大于或等于預(yù)設(shè)值,則判斷報(bào)文滿足壓縮條件。
[0034]S204,如果小于預(yù)設(shè)值,則判斷報(bào)文未滿足壓縮條件。
[0035]由此,可根據(jù)報(bào)文的長(zhǎng)度判斷該報(bào)文是否滿足壓縮條件,提高了判斷結(jié)果的準(zhǔn)確度。
[0036]舉例而言,如圖3所示,接收到的TCP Flow中連續(xù)存在P0、P1、…P6這七個(gè)報(bào)文,依次獲取這七個(gè)報(bào)文的長(zhǎng)度,可判斷出報(bào)文P2、P4、P5的長(zhǎng)度有限,即小于預(yù)設(shè)值,也就是說,報(bào)文P2、P4、P5為未滿足壓縮條件的報(bào)文,可無需對(duì)其進(jìn)行壓縮;判斷出報(bào)文P0、P1、P3、P6的長(zhǎng)度大于預(yù)設(shè)值,即報(bào)文PO、P1、P3、P6為滿足壓縮條件的報(bào)文,需對(duì)其進(jìn)行壓縮。
[0037]S102,將滿足壓縮條件的待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列,并將未滿足壓縮條件的非待壓縮報(bào)文發(fā)送至臨時(shí)緩沖隊(duì)列。
[0038]例如,如圖3所示,為了優(yōu)化對(duì)P2、P4、P5這種無壓縮收益的報(bào)文進(jìn)行壓縮導(dǎo)致的協(xié)處理器開銷,避免報(bào)文P2、P4 、P5進(jìn)入1/0 (Input/Output,輸入輸出端口)階段。因此,當(dāng)處理到報(bào)文P3時(shí),壓縮請(qǐng)求隊(duì)列中共有PO、Pl和P3這三個(gè)待壓縮報(bào)文,報(bào)文P2將被濾除。此時(shí),如果直接將報(bào)文P2透?jìng)鞯较乱患?jí)報(bào)文處理過程或者輸出到網(wǎng)卡,則可能會(huì)引發(fā)報(bào)文P2在報(bào)文PO和Pl之前輸出到傳輸網(wǎng)絡(luò)中,從而導(dǎo)致亂序發(fā)生。
[0039]為此,在本發(fā)明的實(shí)施例中,可將滿足壓縮條件的待壓縮報(bào)文PO、PU P3、P6發(fā)送至壓縮請(qǐng)求隊(duì)列,并將未滿足壓縮條件的非待壓縮報(bào)文P2、P4、P5發(fā)送至臨時(shí)緩沖隊(duì)列中。其中,如圖3所示,0rder_buffer可為TCP Flow session結(jié)構(gòu)中控制亂序的臨時(shí)緩沖隊(duì)列,用于臨時(shí)記錄非待壓縮報(bào)文。此外,非待壓縮報(bào)文P2、P4、P5無需壓縮,并可通過隊(duì)尾入隊(duì)操作記錄到Order_buffer中,且可旁路壓縮系統(tǒng)并輸出到后級(jí)系統(tǒng)中。
[0040]S103,每當(dāng)將待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列之前,判斷臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文。
[0041]例如,如圖3所示,壓縮引擎判斷報(bào)文Pl滿足壓縮條件,當(dāng)將待壓縮報(bào)文Pl發(fā)送至壓縮請(qǐng)求隊(duì)列之前,可先判斷此時(shí)臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文。
[0042]S104,如果當(dāng)前不存在有非待壓縮報(bào)文,則將滿足壓縮條件的待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中。
[0043]例如,當(dāng)將待壓縮報(bào)文Pl發(fā)送至壓縮請(qǐng)求隊(duì)列之前,判斷此時(shí)臨時(shí)緩沖隊(duì)列中當(dāng)前不存在有非待壓縮報(bào)文,之后可將該待壓縮報(bào)文Pl發(fā)送至壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)(metadata)對(duì)應(yīng)的存儲(chǔ)單元中。
[0044]S105,如果當(dāng)前存在有非待壓縮報(bào)文,則將非待壓縮報(bào)文和待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中。
[0045]具體而言,當(dāng)判斷臨時(shí)緩沖隊(duì)列中當(dāng)前存在有非待壓縮報(bào)文時(shí),可先提取臨時(shí)緩沖隊(duì)列中當(dāng)前存在的非待壓縮報(bào)文,之后可將滿足壓縮條件的待壓縮報(bào)文和提取的非待壓縮報(bào)文一起發(fā)送至壓縮請(qǐng)求隊(duì)列中。其中,在本發(fā)明的實(shí)施例中,非待壓縮報(bào)文可以以指針形式記錄至待壓縮報(bào)文對(duì)應(yīng)的元數(shù)據(jù)中。此外,在本發(fā)明的一個(gè)實(shí)施例中,元數(shù)據(jù)具有待壓縮報(bào)文的存儲(chǔ)地址。也就是說,每當(dāng)存在待壓縮報(bào)文入隊(duì)操作時(shí),提取oder_buffer臨時(shí)鏈表的隊(duì)頭指示的旁路報(bào)文并記錄到壓縮隊(duì)列相關(guān)項(xiàng)的元數(shù)據(jù)中。
[0046]例如,如圖3所示,壓縮引擎判斷報(bào)文P2不滿足壓縮條件,可先將該非待壓縮報(bào)文P2發(fā)送至臨時(shí)緩沖隊(duì)列中。之后,壓縮引擎判斷報(bào)文P3滿足壓縮條件,當(dāng)將待壓縮報(bào)文P3發(fā)送至壓縮請(qǐng)求隊(duì)列之前,判斷此時(shí)臨時(shí)緩沖隊(duì)列中當(dāng)前存在有非待壓縮報(bào)文P2。之后可先提取臨時(shí)緩沖隊(duì)列中當(dāng)前存在的非待壓縮報(bào)文P2,并將Order_buffer臨時(shí)鏈表的隊(duì)頭指針置空。最后,可將待壓縮報(bào)文P3和非待壓縮報(bào)文P2 —起發(fā)送至壓縮請(qǐng)求隊(duì)列中。
[0047]又如,如圖3所示,壓縮引擎判斷報(bào)文P6滿足壓縮條件,當(dāng)將待壓縮報(bào)文P6發(fā)送至壓縮請(qǐng)求隊(duì)列時(shí),待壓縮報(bào)文P6可將臨時(shí)緩沖隊(duì)列中的非待壓縮報(bào)文P4和P5 —起帶入壓縮請(qǐng)求隊(duì)列中。
[0048]S106,對(duì)壓縮請(qǐng)求隊(duì)列中的待壓縮報(bào)文進(jìn)行壓縮處理,通過壓縮響應(yīng)隊(duì)列將壓縮處理后的待壓縮報(bào)文和元數(shù)據(jù)中的非待壓縮報(bào)文按序輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
[0049]具體而言,可先根據(jù)元數(shù)據(jù)中的存儲(chǔ)地址獲取待壓縮報(bào)文,并對(duì)待壓縮報(bào)文進(jìn)行壓縮處理。之后,可將元數(shù)據(jù)中的待壓縮報(bào)文的存儲(chǔ)地址替換為壓縮處理后的待壓縮報(bào)文的存儲(chǔ)地址。最后,當(dāng)待壓縮報(bào)文進(jìn)行壓縮處理完成后并被從壓縮響應(yīng)隊(duì)列中取走時(shí),可先順序輸出每個(gè)元數(shù)據(jù)中記錄的指針,并從指針的頭部開始遍歷,依次輸出非待壓縮報(bào)文和壓縮處理后的待壓縮報(bào)文。
[0050]舉例而言,如圖3所示,在某一時(shí)刻,壓縮請(qǐng)求隊(duì)列存在待壓縮報(bào)文P3,同時(shí)待壓縮報(bào)文P3附帶一個(gè)指針記錄非待壓縮報(bào)文P2 ;壓縮請(qǐng)求隊(duì)列存在待壓縮報(bào)文P6,同時(shí)待壓縮報(bào)文P6進(jìn)入壓縮請(qǐng)求隊(duì)列后,可記錄order_bufTer的隊(duì)頭指針到待壓縮報(bào)文P6的相關(guān)指針中。
[0051]例如,當(dāng)壓縮引擎對(duì)待壓縮報(bào)文P3進(jìn)行出隊(duì)操作時(shí),首先可順序輸出當(dāng)前待壓縮報(bào)文P3對(duì)應(yīng)的元數(shù)據(jù)記錄的亂序指針,從該指針頭部遍歷并依次輸出非待壓縮報(bào)文P2,最后輸出待壓縮報(bào)文P3。由此,可以確保非待壓縮報(bào)文P2、P4和P5不經(jīng)過實(shí)際的壓縮過程、不消耗壓縮帶寬、不引發(fā)協(xié)處理器I/O過程,同時(shí)也不影響整體的壓縮性能,最終也可以達(dá)到TCP Flow內(nèi)數(shù)據(jù)報(bào)文的保序過程。
[0052]本發(fā)明實(shí)施例的用于報(bào)文壓縮的保序方法,每當(dāng)將待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列之前,判斷臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文,如果當(dāng)前存在有非待壓縮報(bào)文,則將非待壓縮報(bào)文和待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中,并在對(duì)壓縮請(qǐng)求隊(duì)列中的待壓縮報(bào)文進(jìn)行壓縮處理之后,通過壓縮響應(yīng)隊(duì)列將壓縮處理后的待壓縮報(bào)文和元數(shù)據(jù)中的非待壓縮報(bào)文按序輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中,至少具有以下優(yōu)點(diǎn):(I)基于TCP Flow粒度進(jìn)行數(shù)據(jù)壓縮,不同TCP Flow允許采用不同的壓縮方法,實(shí)現(xiàn)了對(duì)業(yè)務(wù)數(shù)據(jù)透明的數(shù)據(jù)壓縮;(2)通過壓縮協(xié)處理器進(jìn)行數(shù)據(jù)壓縮,協(xié)處理器與CPU之間進(jìn)行異步操作,提高了壓縮設(shè)備的系統(tǒng)性能;(3)通過對(duì)報(bào)文長(zhǎng)度小于預(yù)設(shè)值的報(bào)文進(jìn)行過濾,避免了小報(bào)文壓縮無壓縮收益,提高了數(shù)據(jù)壓縮協(xié)處理器的有效負(fù)載的利用率和優(yōu)化協(xié)處理器的I/O性能。
[0053]需要說明的是,發(fā)明人通過對(duì)實(shí)際數(shù)據(jù)傳輸?shù)臄?shù)據(jù)報(bào)文進(jìn)行分析,發(fā)現(xiàn)有種現(xiàn)象普遍存在,例如,在Web Page網(wǎng)頁的傳輸過程中,某一方向絕大部分為小ACK(Acknowledgement,確認(rèn)字符)報(bào)文,這些ACK報(bào)文不符合壓縮條件,并且滿足壓縮條件的待壓縮報(bào)文的分布明顯稀疏于非待壓縮報(bào)文的分布。依據(jù)上述用于報(bào)文壓縮的保序方法的邏輯,若待壓縮報(bào)文遲遲不被送入壓縮請(qǐng)求隊(duì)列,則臨時(shí)緩沖隊(duì)列中的非待壓縮報(bào)文將會(huì)一直等待該待壓縮報(bào)文將其攜帶到壓縮請(qǐng)求隊(duì)列中,這樣將會(huì)出現(xiàn)非待壓縮報(bào)文積累過高的延遲的現(xiàn)象,甚至影響TCP性能和TCP上層協(xié)議的正確性。
[0054]舉例而言,如圖4所示,非待壓縮報(bào)文與待壓縮報(bào)文的稀疏性對(duì)比,圖中ACK表示ACK報(bào)文且捎帶極少量TCP payload或者無TCP payload的報(bào)文,這種現(xiàn)象普遍存在于大塊數(shù)據(jù)的單向推送的數(shù)據(jù)傳輸過程中。
[0055]為了更靈活地處理這種稀疏性差異大的報(bào)文,對(duì)上述保序方法進(jìn)行優(yōu)化設(shè)計(jì)。在本發(fā)明的實(shí)施例中,對(duì)于非待壓縮報(bào)文明顯多于待壓縮報(bào)文的情景,避免通過待壓縮報(bào)文來推送,而是由非待壓縮報(bào)文直接主動(dòng)推送輸出;當(dāng)主動(dòng)推送非待壓縮報(bào)文之前必須保證壓縮卡中沒有當(dāng)前session中的報(bào)文,否則可能亂序,所以需要感知壓縮卡隊(duì)列中所有當(dāng)前session報(bào)文的數(shù)目。具體地,在本發(fā)明的一個(gè)實(shí)施例中,如圖5所示,對(duì)該用于報(bào)文壓縮的保序方法進(jìn)行優(yōu)化可以包括:
[0056]S501,獲取壓縮請(qǐng)求隊(duì)列中當(dāng)前待壓縮報(bào)文的數(shù)目。
[0057]舉例而言,可為每個(gè)報(bào)文中的session添加Fly_in_HW_cnt變量,該變量可表示當(dāng)前在壓縮卡中的待處理報(bào)文的數(shù)目,可維護(hù)當(dāng)前仍然處于壓縮請(qǐng)求隊(duì)列和壓縮響應(yīng)隊(duì)列中的所有報(bào)文。例如,每當(dāng)一個(gè)待壓縮報(bào)文進(jìn)入壓縮請(qǐng)求隊(duì)列時(shí),可執(zhí)行Fly_in_HW_cnt++操作;每當(dāng)一個(gè)壓縮處理后的待壓縮報(bào)文出壓縮響應(yīng)隊(duì)列時(shí),可執(zhí)行Fly_in_HW_cnt--操作。也就是說,可通過獲取Fly_in_HW_cnt變量當(dāng)前的值,即可獲取壓縮請(qǐng)求隊(duì)列中當(dāng)前待壓縮報(bào)文的數(shù)目。
[0058]S502,當(dāng)壓縮處理后的待壓縮報(bào)文通過壓縮響應(yīng)隊(duì)列出隊(duì),且壓縮請(qǐng)求隊(duì)列中的當(dāng)前待壓縮報(bào)文的數(shù)目變?yōu)轭A(yù)設(shè)閥值時(shí),將臨時(shí)緩沖隊(duì)列中的當(dāng)前所有非待壓縮報(bào)文輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
[0059]其中,在本發(fā)明的實(shí)施例中,預(yù)設(shè)閥值可為O。例如,如圖6所示,出隊(duì)時(shí),當(dāng)Fly_in_HW_cnt-=0,即壓縮請(qǐng)求隊(duì)列中最后一個(gè)待壓縮報(bào)文出隊(duì)時(shí),同時(shí)臨時(shí)緩沖隊(duì)列0rder_buffer中當(dāng)前還存在有非待壓縮報(bào)文時(shí),此時(shí),可通過Flush Order_buffer強(qiáng)行將0rder_buffer中當(dāng)前記錄的所有非待壓縮報(bào)文直接輸出到下一級(jí)處理或者輸出到網(wǎng)卡,無需經(jīng)過壓縮卡隊(duì)列。其中,F(xiàn)lush Order_buffer可維護(hù)所有臨時(shí)非待壓縮報(bào)文。由此,避免了死鎖和高延遲,優(yōu)化性能。
[0060]S503,當(dāng)判斷當(dāng)前接收到的報(bào)文為非待壓縮報(bào)文,且壓縮請(qǐng)求隊(duì)列中的當(dāng)前待壓縮報(bào)文的數(shù)目等于預(yù)設(shè)閥值時(shí),將非待壓縮報(bào)文直接輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
[0061]例如,如圖6所示,入隊(duì)時(shí),當(dāng)Fly_in_HW_cnt==0,即當(dāng)前沒有待壓縮報(bào)文被發(fā)送到壓縮請(qǐng)求隊(duì)列中時(shí),同時(shí)臨時(shí)緩沖隊(duì)列0rder_buffer中當(dāng)前不存在有非待壓縮報(bào)文時(shí),此時(shí),TCP Flow中的未滿足壓縮條件的非待壓縮報(bào)文無需經(jīng)過Order_buffer緩沖,可以直接進(jìn)入下一級(jí)處理或者輸出到壓縮卡。這樣,可避免死鎖和高延遲,優(yōu)化性能。
[0062]綜上所述,這種優(yōu)化策略充分從單session粒度角度,考慮到非待壓縮報(bào)文在order_buffer中的積累延遲控制,即對(duì)于連續(xù)大段的非待壓縮流,可以自適應(yīng)的完成透?jìng)鞴δ?。也就是說,對(duì)于非待壓縮報(bào)文,可直接旁路壓縮卡的硬件處理流程,優(yōu)化了壓縮卡I/O帶寬和CPU使用效率,避免了壓縮帶寬資源浪費(fèi),`并且,當(dāng)Fly_in_HW_cnt—==0時(shí),通過Flush Order_buffer強(qiáng)行將臨時(shí)緩沖隊(duì)列中的非待壓縮報(bào)文直接輸出至下一級(jí)處理或者輸出至網(wǎng)卡,減少了非待壓縮報(bào)文保序過程中的積累處理延遲。
[0063]由上述實(shí)施例可知,獲取壓縮請(qǐng)求隊(duì)列中當(dāng)前待壓縮報(bào)文的數(shù)目和臨時(shí)緩沖隊(duì)列中當(dāng)前非待壓縮報(bào)文的數(shù)目,當(dāng)壓縮請(qǐng)求隊(duì)列中的當(dāng)前待壓縮報(bào)文的數(shù)目等于預(yù)設(shè)閥值,且臨時(shí)緩沖隊(duì)列中的當(dāng)前非待壓縮報(bào)文的數(shù)目不等于預(yù)設(shè)閥值時(shí),將臨時(shí)緩沖隊(duì)列中的當(dāng)前非待壓縮報(bào)文輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中;當(dāng)壓縮請(qǐng)求隊(duì)列中的當(dāng)前待壓縮報(bào)文的數(shù)目等于預(yù)設(shè)閥值,且臨時(shí)緩沖隊(duì)列中的當(dāng)前非待壓縮報(bào)文的數(shù)目等于預(yù)設(shè)閥值時(shí),將未滿足壓縮條件的非待壓縮報(bào)文直接輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中,優(yōu)化了壓縮卡I/O帶寬和CPU使用效率,避免了壓縮帶寬資源浪費(fèi),并且減少了非待壓縮報(bào)文保序過程中的積累處理延遲。
[0064]為了實(shí)現(xiàn)上述實(shí)施例,本發(fā)明還提出一種用于報(bào)文壓縮的保序裝置。
[0065]本發(fā)明實(shí)施例提出的一種用于報(bào)文壓縮的保序裝置,包括:接收模塊,用于接收多個(gè)報(bào)文;第一判斷模塊,用于依次判斷每個(gè)報(bào)文是否滿足壓縮條件;發(fā)送模塊,用于將滿足壓縮條件的待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列,并將未滿足壓縮條件的非待壓縮報(bào)文發(fā)送至臨時(shí)緩沖隊(duì)列;第二判斷模塊,用于每當(dāng)發(fā)送模塊將待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列之前,判斷臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文;發(fā)送模塊還用于在第二判斷模塊判斷臨時(shí)緩沖隊(duì)列中當(dāng)前存在有非待壓縮報(bào)文時(shí),將非待壓縮報(bào)文和待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中;壓縮保序模塊,用于對(duì)壓縮請(qǐng)求隊(duì)列中的待壓縮報(bào)文進(jìn)行壓縮處理,通過壓縮響應(yīng)隊(duì)列將壓縮處理后的待壓縮報(bào)文和元數(shù)據(jù)中的非待壓縮報(bào)文按序輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
[0066]圖7是根據(jù)本發(fā)明一個(gè)實(shí)施例的用于報(bào)文壓縮的保序裝置的結(jié)構(gòu)示意圖。
[0067]如圖7所示,該用于報(bào)文壓縮的保序裝置可以包括:接收模塊100、第一判斷模塊200、發(fā)送模塊300、第二判斷模塊400和壓縮保序模塊500。
[0068]具體地,接收模塊100用于接收多個(gè)報(bào)文。第一判斷模塊200用于依次判斷每個(gè)報(bào)文是否滿足壓縮條件。更具體地,接收模塊100可接收TCP流中包含的多個(gè)報(bào)文,之后,第一判斷模塊200可依次判斷每個(gè)報(bào)文是否滿足壓縮條件,以便將滿足壓縮條件的報(bào)文進(jìn)行壓縮,將不滿足壓縮條件的報(bào)文不進(jìn)行壓縮。
[0069]在本發(fā)明的一個(gè)實(shí)施例中,第一判斷模塊200還用于獲取接收模塊100接收的每個(gè)報(bào)文的長(zhǎng)度,并判斷每個(gè)報(bào)文的長(zhǎng)度是否大于或等于預(yù)設(shè)值,以及在大于或等于預(yù)設(shè)值時(shí),判斷報(bào)文滿足壓縮條件。其中,在本發(fā)明的實(shí)施例中,預(yù)設(shè)值可由系統(tǒng)設(shè)定。例如,系統(tǒng)可根據(jù)報(bào)文長(zhǎng)度的實(shí)際情況確定該預(yù)設(shè)值的大小,可收集大量報(bào)文,先獲取這些報(bào)文的長(zhǎng)度,之后對(duì)這些長(zhǎng)度求平均,以獲得平均值,之后可根據(jù)該平均值確定預(yù)設(shè)值。
[0070]在本發(fā)明的另一個(gè)實(shí)施例中,第一判斷模塊200還用于在判斷每個(gè)報(bào)文的長(zhǎng)度小于預(yù)設(shè)值時(shí),可判斷報(bào)文未滿足壓縮條件。
[0071]由此,可根據(jù)報(bào)文的長(zhǎng)度判斷該報(bào)文是否滿足壓縮條件,提高了判斷結(jié)果的準(zhǔn)確度。
`[0072]舉例而言,如圖3所示,接收模塊100接收到的TCP Flow中連續(xù)存在PO、P1、…P6這七個(gè)報(bào)文,第一判斷模塊200可依次獲取這七個(gè)報(bào)文的長(zhǎng)度,并判斷出報(bào)文P2、P4、P5的長(zhǎng)度有限,即小于預(yù)設(shè)值,也就是說,報(bào)文P2、P4、P5為未滿足壓縮條件的報(bào)文,可無需對(duì)其進(jìn)行壓縮;判斷出報(bào)文PO、P1、P3、P6的長(zhǎng)度大于預(yù)設(shè)值,即報(bào)文PO、P1、P3、P6為滿足壓縮條件的報(bào)文,需對(duì)其進(jìn)行壓縮。
[0073]發(fā)送模塊300用于將滿足壓縮條件的待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列,并將未滿足壓縮條件的非待壓縮報(bào)文發(fā)送至臨時(shí)緩沖隊(duì)列。
[0074]例如,如圖3所示,為了優(yōu)化對(duì)P2、P4、P5這種無壓縮收益的報(bào)文進(jìn)行壓縮導(dǎo)致的協(xié)處理器開銷,避免報(bào)文P2、P4、P5進(jìn)入I/O階段。因此,當(dāng)處理到報(bào)文P3時(shí),壓縮請(qǐng)求隊(duì)列中共有PO、Pl和P3這三個(gè)待壓縮報(bào)文,報(bào)文P2將被濾除。此時(shí),如果直接將報(bào)文P2透?jìng)鞯较乱患?jí)報(bào)文處理過程或者輸出到網(wǎng)卡,則可能會(huì)引發(fā)報(bào)文P2在報(bào)文PO和Pl之前輸出到傳輸網(wǎng)絡(luò)中,從而導(dǎo)致亂序發(fā)生。
[0075]為此,在本發(fā)明的實(shí)施例中,發(fā)送模塊300可將滿足壓縮條件的待壓縮報(bào)文PO、P1、P3、P6發(fā)送至壓縮請(qǐng)求隊(duì)列,并將未滿足壓縮條件的非待壓縮報(bào)文P2、P4、P5發(fā)送至臨時(shí)緩沖隊(duì)列中。其中,如圖3所示,0rder_buffer可為TCP Flow session結(jié)構(gòu)中控制亂序的臨時(shí)緩沖隊(duì)列,用于臨時(shí)記錄非待壓縮報(bào)文。此外,非待壓縮報(bào)文P2、P4、P5無需壓縮,并可通過隊(duì)尾入隊(duì)操作記錄到0rder_buffer中,且可旁路壓縮系統(tǒng)并輸出到后級(jí)系統(tǒng)中。
[0076]第二判斷模塊400用于每當(dāng)發(fā)送模塊300將待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列之前,判斷臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文。例如,如圖3所示,在第一判斷模塊200判斷報(bào)文Pl滿足壓縮條件,且在發(fā)送模塊300待壓縮報(bào)文Pl發(fā)送至壓縮請(qǐng)求隊(duì)列之前,第二判斷模塊400可先判斷此時(shí)臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文。
[0077]在本發(fā)明的一個(gè)實(shí)施例中,發(fā)送模塊300還用于在第二判斷模塊400判斷臨時(shí)緩沖隊(duì)列中當(dāng)前不存在有非待壓縮報(bào)文時(shí),可將滿足壓縮條件的待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中。例如,在發(fā)送模塊300將待壓縮報(bào)文Pl發(fā)送至壓縮請(qǐng)求隊(duì)列之前,第二判斷模塊400判斷此時(shí)臨時(shí)緩沖隊(duì)列中當(dāng)前不存在有非待壓縮報(bào)文,之后發(fā)送模塊300可將該待壓縮報(bào)文Pl發(fā)送至壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)(metadata)對(duì)應(yīng)的存儲(chǔ)單元中。
[0078]在本發(fā)明的一個(gè)實(shí)施例中,發(fā)送模塊300還用于在第二判斷模塊400判斷臨時(shí)緩沖隊(duì)列中當(dāng)前存在有非待壓縮報(bào)文時(shí),將非待壓縮報(bào)文和待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中。
[0079]更具體地,在本發(fā)明的實(shí)施例中,在第二判斷模塊400判斷臨時(shí)緩沖隊(duì)列中當(dāng)前存在有非待壓縮報(bào)文時(shí),發(fā)送模塊300可先提取臨時(shí)緩沖隊(duì)列中當(dāng)前存在的非待壓縮報(bào)文,之后可將滿足壓縮條件的待壓縮報(bào)文和提取的非待壓縮報(bào)文一起發(fā)送至壓縮請(qǐng)求隊(duì)列中。其中,在本發(fā)明的實(shí)施例中,非待壓縮報(bào)文可以以指針形式記錄至待壓縮報(bào)文對(duì)應(yīng)的元數(shù)據(jù)中。此外,在本發(fā)明的一個(gè)實(shí)施例中,元數(shù)據(jù)具有待壓縮報(bào)文的存儲(chǔ)地址。也就是說,每當(dāng)存在待壓縮報(bào)文入隊(duì)操作時(shí),發(fā)送模塊300可提取oder_bufTer臨時(shí)鏈表的隊(duì)頭指示的旁路報(bào)文并記錄到壓縮隊(duì)列相關(guān)項(xiàng)的元數(shù)據(jù)中。
[0080]例如,如圖3所示,在第一判斷模塊200判斷報(bào)文P2不滿足壓縮條件時(shí),發(fā)送模塊300可先將該非待壓縮報(bào)文P2發(fā)送至臨時(shí)緩沖隊(duì)列中。之后,第一判斷模塊200判斷報(bào)文P3滿足壓縮條件,在發(fā)送模塊300將待壓縮報(bào)文P3發(fā)送至壓縮請(qǐng)求隊(duì)列之前,第二判斷模塊400判斷此時(shí)臨時(shí)緩沖隊(duì)列中當(dāng)前存在有非待壓縮報(bào)文P2。發(fā)送模塊300可先提取臨時(shí)緩沖隊(duì)列中當(dāng)前存在的非待壓縮報(bào)文P2,并將Order_buffer臨時(shí)鏈表的隊(duì)頭指針置空。最后,可將待壓縮報(bào)文P3和非待壓縮報(bào)文P2 —起發(fā)送至壓縮請(qǐng)求隊(duì)列中。
[0081]又如,如圖3所示,第一判斷模塊200判斷報(bào)文P6滿足壓縮條件,在發(fā)送模塊300將待壓縮報(bào)文P6發(fā)送至壓縮請(qǐng)求隊(duì)列時(shí),待壓縮報(bào)文P6可將臨時(shí)緩沖隊(duì)列中的非待壓縮報(bào)文P4和P5 —起帶入壓縮請(qǐng)求隊(duì)列中。
[0082]壓縮保序模塊500用于對(duì)壓縮請(qǐng)求隊(duì)列中的待壓縮報(bào)文進(jìn)行壓縮處理,通過壓縮響應(yīng)隊(duì)列將壓縮處理后的待壓縮報(bào)文和元數(shù)據(jù)中的非待壓縮報(bào)文按序輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
[0083]更具體地,在本發(fā)明的實(shí)施例中,壓縮保序模塊500可先根據(jù)元數(shù)據(jù)中的存儲(chǔ)地址獲取待壓縮報(bào)文,并對(duì)待壓縮報(bào)文進(jìn)行壓縮處理。之后,可將元數(shù)據(jù)中的待壓縮報(bào)文的存儲(chǔ)地址替換為壓縮處理后的待壓縮報(bào)文的存儲(chǔ)地址。最后,當(dāng)待壓縮報(bào)文進(jìn)行壓縮處理完成后并被從壓縮響應(yīng)隊(duì)列中取走時(shí),可先順序輸出每個(gè)元數(shù)據(jù)中記錄的指針,并從指針的頭部開始遍歷,依次輸出非待壓縮報(bào)文和壓縮處理后的待壓縮報(bào)文。
[0084]舉例而言,如圖3所示,在某一時(shí)刻,壓縮請(qǐng)求隊(duì)列存在待壓縮報(bào)文P3,同時(shí)待壓縮報(bào)文P3附帶一個(gè)指針記錄非待壓縮報(bào)文P2 ;壓縮請(qǐng)求隊(duì)列存在待壓縮報(bào)文P6,同時(shí)待壓縮報(bào)文P6進(jìn)入壓縮請(qǐng)求隊(duì)列后,可記錄order_bufTer的隊(duì)頭指針到待壓縮報(bào)文P6的相關(guān)指針中。
[0085]例如,當(dāng)壓縮保序模塊500對(duì)待壓縮報(bào)文P3進(jìn)行出隊(duì)操作時(shí),首先可順序輸出當(dāng)前待壓縮報(bào)文P3對(duì)應(yīng)的元數(shù)據(jù)記錄的亂序指針,從該指針頭部遍歷并依次輸出非待壓縮報(bào)文P2,最后輸出待壓縮報(bào)文P3。由此,可以確保非待壓縮報(bào)文P2、P4和P5不經(jīng)過實(shí)際的壓縮過程、不消耗壓縮帶寬、不引發(fā)協(xié)處理器I/O過程,同時(shí)也不影響整體的壓縮性能,最終也可以達(dá)到TCP Flow內(nèi)數(shù)據(jù)報(bào)文的保序過程。
[0086]本發(fā)明實(shí)施例的用于報(bào)文壓縮的保序裝置,每當(dāng)發(fā)送模塊將待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列之前,通過第二判斷模塊判斷臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文,發(fā)送模塊在當(dāng)前存在有非待壓縮報(bào)文時(shí),將非待壓縮報(bào)文和待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中,壓縮保序模塊在對(duì)壓縮請(qǐng)求隊(duì)列中的待壓縮報(bào)文進(jìn)行壓縮處理之后,通過壓縮響應(yīng)隊(duì)列將壓縮處理后的待壓縮報(bào)文和元數(shù)據(jù)中的非待壓縮報(bào)文按序輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中,至少具有以下優(yōu)點(diǎn):(1)基于TCP Flow粒度進(jìn)行數(shù)據(jù)壓縮,不同TCP Flow允許采用不同的壓縮方法,實(shí)現(xiàn)了對(duì)業(yè)務(wù)數(shù)據(jù)透明的數(shù)據(jù)壓縮;(2)通過壓縮協(xié)處理器進(jìn)行數(shù)據(jù)壓縮,協(xié)處理器與CPU之間進(jìn)行異步操作,提高了壓縮設(shè)備的系統(tǒng)性能;(3)通過對(duì)報(bào)文長(zhǎng)度小于預(yù)設(shè)值的報(bào)文進(jìn)行過濾,避免了小報(bào)文壓縮無壓縮收益,提高了數(shù)據(jù)壓縮協(xié)處理器的有效負(fù)載的利用率和優(yōu)化協(xié)處理器的I/O性能。
[0087]圖8是根據(jù)本發(fā)明一個(gè)具體實(shí)施例的用于報(bào)文壓縮的保序裝置的結(jié)構(gòu)示意圖。
[0088]如圖8所示,該用于報(bào)文壓縮的保序裝置可以包括:接收模塊100、第一判斷模塊200、發(fā)送模塊300、第二判斷模塊400、壓縮保序模塊500和第一獲取模塊600。
[0089]具體地,第一獲取模塊600用于獲取壓縮請(qǐng)求隊(duì)列中當(dāng)前待壓縮報(bào)文的數(shù)目。舉例而言,第一獲取模塊600可為每個(gè)報(bào)文中的session添加Fly_in_HW_cnt變量,該變量可表示當(dāng)前在壓縮卡中的待處理報(bào)文的數(shù)目,可維護(hù)當(dāng)前仍然處于壓縮請(qǐng)求隊(duì)列和壓縮響應(yīng)隊(duì)列中的所有報(bào)文。例如,每當(dāng)一個(gè)待壓縮報(bào)文進(jìn)入壓縮請(qǐng)求隊(duì)列時(shí),可執(zhí)行Fly_in_HW_cnt++操作;每當(dāng)一個(gè)壓縮處理后的待壓縮報(bào)文出壓縮響應(yīng)隊(duì)列時(shí),可執(zhí)行Fly_in_HW_cnt—操作。也就是說,第一獲取模塊600可通過獲取Fly_in_HW_cnt變量當(dāng)前的值,即可獲取壓縮請(qǐng)求隊(duì)列中當(dāng)前待壓縮報(bào)文的數(shù)目。
[0090]在本發(fā)明的一個(gè)實(shí)施例中,壓縮保序模塊500還用于在壓縮處理后的待壓縮報(bào)文通過壓縮響應(yīng)隊(duì)列出隊(duì),且壓縮請(qǐng)求隊(duì)列中的當(dāng)前待壓縮報(bào)文的數(shù)目變?yōu)轭A(yù)設(shè)閥值時(shí),將臨時(shí)緩沖隊(duì)列中的當(dāng)前所有非待壓縮報(bào)文輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。其中,在本發(fā)明的實(shí)施例中,預(yù)設(shè)閥值可為O。
[0091]例如,如圖6所示,出隊(duì)時(shí),當(dāng)Fly_in_HW_cnt—=0,即壓縮請(qǐng)求隊(duì)列中最后一個(gè)待壓縮報(bào)文出隊(duì)時(shí),同時(shí)臨時(shí)緩沖隊(duì)列0rder_buffer中當(dāng)前還存在有非待壓縮報(bào)文時(shí),此時(shí),壓縮保序模塊500可通過Flush Order_buffer強(qiáng)行將Order_buffer中當(dāng)前記錄的所有非待壓縮報(bào)文直接輸出到下一級(jí)處理或者輸出到網(wǎng)卡,無需經(jīng)過壓縮卡隊(duì)列。其中,F(xiàn)lushOrder_buffer可維護(hù)所有臨時(shí)非待壓縮報(bào)文。由此,避免了死鎖和高延遲,優(yōu)化性能。
[0092]在本發(fā)明的一個(gè)實(shí)施例中,壓縮保序模塊500還用于在第一判斷模塊判斷當(dāng)前接收到的報(bào)文為非待壓縮報(bào)文,且壓縮請(qǐng)求隊(duì)列中的當(dāng)前待壓縮報(bào)文的數(shù)目等于預(yù)設(shè)閥值時(shí),將非待壓縮報(bào)文直接輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
[0093]例如,如圖6所示,入隊(duì)時(shí),當(dāng)Fly_in_HW_cnt==0,即當(dāng)前沒有待壓縮報(bào)文被發(fā)送到壓縮請(qǐng)求隊(duì)列中時(shí),同時(shí)臨時(shí)緩沖隊(duì)列Order_buffer中當(dāng)前不存在有非待壓縮報(bào)文時(shí),此時(shí),TCP Flow中的未滿足壓縮條件的非待壓縮報(bào)文無需經(jīng)過Order_buffer緩沖,可以直接進(jìn)入下一級(jí)處理或者輸出到壓縮卡。這樣,可避免死鎖和高延遲,優(yōu)化性能。
[0094]綜上所述,這種優(yōu)化策略充分從單session粒度角度,考慮到非待壓縮報(bào)文在order_buffer中的積累延遲控制,即對(duì)于連續(xù)大段的非待壓縮流,可以自適應(yīng)的完成透?jìng)鞴δ?。也就是說,對(duì)于非待壓縮報(bào)文,可直接旁路壓縮卡的硬件處理流程,優(yōu)化了壓縮卡I/O帶寬和CPU使用效率,避免了壓縮帶寬資源浪費(fèi),并且,當(dāng)Fly_in_HW_cnt—==0時(shí),通過Flush Order_buffer強(qiáng)行將臨時(shí)緩沖隊(duì)列中的非待壓縮報(bào)文直接輸出至下一級(jí)處理或者輸出至網(wǎng)卡,減少了非待壓縮報(bào)文保序過程中的積累處理延遲。
[0095]本發(fā)明實(shí)施例的用于報(bào)文壓縮的保序裝置,通過第一獲取模塊獲取壓縮請(qǐng)求隊(duì)列中當(dāng)前待壓縮報(bào)文的數(shù)目,第二獲取模塊獲取臨時(shí)緩沖隊(duì)列中當(dāng)前非待壓縮報(bào)文的數(shù)目,壓縮保序模塊在壓縮請(qǐng)求隊(duì)列中的當(dāng)前待壓縮報(bào)文的數(shù)目等于預(yù)設(shè)閥值,且臨時(shí)緩沖隊(duì)列中的當(dāng)前非待壓縮報(bào)文的數(shù)目不等于預(yù)設(shè)閥值時(shí),將臨時(shí)緩沖隊(duì)列中的當(dāng)前非待壓縮報(bào)文輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中;在壓縮請(qǐng)求隊(duì)列中的當(dāng)前待壓縮報(bào)文的數(shù)目等于預(yù)設(shè)閥值,且臨時(shí)緩沖隊(duì)列中的當(dāng)前非待壓縮報(bào)文的數(shù)目等于預(yù)設(shè)閥值時(shí),將未滿足壓縮條件的非待壓縮報(bào)文直接輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中,優(yōu)化了壓縮卡I/o帶寬和(PU使用效率,避免了壓縮帶寬資源浪費(fèi),并且減少了非待壓縮報(bào)文保序過程中的積累處理延遲。
[0096]流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實(shí)施例所屬【技術(shù)領(lǐng)域】的技術(shù)人員所理解。
[0097]在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認(rèn)為是用于實(shí)現(xiàn)邏輯功能的可執(zhí)行指令的定序列表,可以具體實(shí)現(xiàn)在任何計(jì)算機(jī)可讀介質(zhì)中,以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備(如基于計(jì)算機(jī)的系統(tǒng)、包括處理器的系統(tǒng)或其他可以從指令執(zhí)行系統(tǒng)、裝置或設(shè)備取指令并執(zhí)行指令的系統(tǒng))使用,或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用。就本說明書而言,"計(jì)算機(jī)可讀介質(zhì)"可以是任何可以包含、存儲(chǔ)、通信、傳播或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用的裝置。計(jì)算機(jī)可讀介質(zhì)的更具體的示例(非窮盡性列表)包括以下:具有一個(gè)或多個(gè)布線的電連接部(電子裝置),便攜式計(jì)算機(jī)盤盒(磁裝置),隨機(jī)存取存儲(chǔ)器(RAM),只讀存儲(chǔ)器(R0M),可擦除可編輯只讀存儲(chǔ)器(EPR0M或閃速存儲(chǔ)器),光纖裝置,以及便攜式光盤只讀存儲(chǔ)器(⑶ROM)。另外,計(jì)算機(jī)可讀介質(zhì)甚至可以是可在其上打印所述程序的紙或其他合適的介質(zhì),因?yàn)榭梢岳缤ㄟ^對(duì)紙或其他介質(zhì)進(jìn)行光學(xué)掃描,接著進(jìn)行編輯、解譯或必要時(shí)以其他合適方式進(jìn)行處理來以電子方式獲得所述程序,然后將其存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中。
[0098]應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實(shí)現(xiàn)。例如,如果用硬件來實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來實(shí)現(xiàn):具有用于對(duì)數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場(chǎng)可編程門陣列(FPGA)等。
[0099]本【技術(shù)領(lǐng)域】的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。
[0100]此外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理模塊中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。
[0101 ] 上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。
[0102]此外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對(duì)重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括一個(gè)或者更多個(gè)該特征。在本發(fā)明的描述中,“多個(gè)”的含義是兩個(gè)或兩個(gè)以上,除非另有明確具體的限定。
[0103]在本說明書的描述中,參考術(shù)語“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說明書中,對(duì)上述術(shù)語的示意性表述不必須針對(duì)的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。
[0104]盡管上面已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對(duì)本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對(duì)上述實(shí)施例進(jìn)行變化、修改、替換和變型。
【權(quán)利要求】
1.一種用于報(bào)文壓縮的保序方法,其特征在于,包括: 接收多個(gè)報(bào)文,并依次判斷每個(gè)所述報(bào)文是否滿足壓縮條件; 將滿足所述壓縮條件的待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列,并將未滿足所述壓縮條件的非待壓縮報(bào)文發(fā)送至臨時(shí)緩沖隊(duì)列; 每當(dāng)將所述待壓縮報(bào)文發(fā)送至所述壓縮請(qǐng)求隊(duì)列之前,判斷所述臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文; 如果當(dāng)前存在有所述非待壓縮報(bào)文,則將所述非待壓縮報(bào)文和所述待壓縮報(bào)文發(fā)送至所述壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中;以及 對(duì)所述壓縮請(qǐng)求隊(duì)列中的所述待壓縮報(bào)文進(jìn)行壓縮處理,通過壓縮響應(yīng)隊(duì)列將壓縮處理后的待壓縮報(bào)文和所述元數(shù)據(jù)中的所述非待壓縮報(bào)文按序輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將非待壓縮報(bào)文和所述待壓縮報(bào)文發(fā)送至所述壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中包括: 提取所述臨時(shí)緩沖隊(duì)列中當(dāng)前存在的所述非待壓縮報(bào)文; 將滿足所述壓縮條件的所述待壓縮報(bào)文和提取的所述非待壓縮報(bào)文發(fā)送至所述壓縮請(qǐng)求隊(duì)列中,其中,所述非待壓縮報(bào)文以指針形式記錄至所述待壓縮報(bào)文對(duì)應(yīng)的元數(shù)據(jù)中。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述元數(shù)據(jù)具有所述待壓縮報(bào)文的存儲(chǔ)地址,所述對(duì)壓縮請(qǐng)求隊(duì)列中的所述待壓縮報(bào)文進(jìn)行壓縮處理包括: 根據(jù)所述存儲(chǔ)地址獲取所述待壓縮報(bào)文,并對(duì)所述待壓縮報(bào)文進(jìn)行壓縮處理; 將所述元數(shù)據(jù)中的所述待壓縮報(bào)文的存儲(chǔ)地址替換為壓縮處理后的待壓縮報(bào)文的存儲(chǔ)地址。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述通過壓縮響應(yīng)隊(duì)列將壓縮處理后的待壓縮報(bào)文和所述元數(shù)據(jù)中的所述非待壓縮報(bào)文按序輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中包括: 順序輸出所述元數(shù)據(jù)中記錄的指針,并從所述指針的頭部開始遍歷,依次輸出所述非待壓縮報(bào)文和壓縮處理后的所述待壓縮報(bào)文。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,判斷所述報(bào)文滿足所述壓縮條件包括: 獲取每個(gè)所述報(bào)文的長(zhǎng)度; 判斷每個(gè)所述報(bào)文的長(zhǎng)度是否大于或等于預(yù)設(shè)值; 如果大于或等于所述預(yù)設(shè)值,則判斷所述報(bào)文滿足所述壓縮條件。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 獲取所述壓縮請(qǐng)求隊(duì)列中當(dāng)前待壓縮報(bào)文的數(shù)目; 當(dāng)所述壓縮處理后的待壓縮報(bào)文通過壓縮響應(yīng)隊(duì)列出隊(duì),且所述壓縮請(qǐng)求隊(duì)列中的當(dāng)前待壓縮報(bào)文的數(shù)目變?yōu)轭A(yù)設(shè)閥值時(shí),將所述臨時(shí)緩沖隊(duì)列中的當(dāng)前所有非待壓縮報(bào)文輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
7.根據(jù)權(quán)利要求6所述的 方法,其特征在于,還包括: 當(dāng)判斷當(dāng)前接收到的報(bào)文為非待壓縮報(bào)文,且所述壓縮請(qǐng)求隊(duì)列中的當(dāng)前待壓縮報(bào)文的數(shù)目等于所述預(yù)設(shè)閥值時(shí),將所述非待壓縮報(bào)文直接輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
8.一種用于報(bào)文壓縮的保序裝置,其特征在于,包括: 接收模塊,用于接收多個(gè)報(bào)文; 第一判斷模塊,用于依次判斷每個(gè)所述報(bào)文是否滿足壓縮條件; 發(fā)送模塊,用于將滿足所述壓縮條件的待壓縮報(bào)文發(fā)送至壓縮請(qǐng)求隊(duì)列,并將未滿足所述壓縮條件的非待壓縮報(bào)文發(fā)送至臨時(shí)緩沖隊(duì)列; 第二判斷模塊,用于每當(dāng)所述發(fā)送模塊將所述待壓縮報(bào)文發(fā)送至所述壓縮請(qǐng)求隊(duì)列之前,判斷所述臨時(shí)緩沖隊(duì)列中當(dāng)前是否存在有非待壓縮報(bào)文; 所述發(fā)送模塊還用于在所述第二判斷模塊判斷所述臨時(shí)緩沖隊(duì)列中當(dāng)前存在有所述非待壓縮報(bào)文時(shí),將所述非待壓縮報(bào)文和所述待壓縮報(bào)文發(fā)送至所述壓縮請(qǐng)求隊(duì)列中的相應(yīng)元數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)單元中; 壓縮保序模塊,用于對(duì)所述壓縮請(qǐng)求隊(duì)列中的所述待壓縮報(bào)文進(jìn)行壓縮處理,通過壓縮響應(yīng)隊(duì)列將壓縮處理后的待壓縮報(bào)文和所述元數(shù)據(jù)中的所述非待壓縮報(bào)文按序輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述發(fā)送模塊還用于:提取所述臨時(shí)緩沖隊(duì)列中當(dāng)前存在的所述非待壓縮報(bào)文,并將滿足所述壓縮條件的所述待壓縮報(bào)文和提取的所述非待壓縮報(bào)文發(fā)送至所述壓縮請(qǐng)求隊(duì)列中,其中,所述非待壓縮報(bào)文以指針形式記錄至所述待壓縮報(bào)文對(duì)應(yīng)的元數(shù)據(jù)中。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述元數(shù)據(jù)具有所述待壓縮報(bào)文的存儲(chǔ)地址,所述壓縮保序模塊還用于:根據(jù)所述存儲(chǔ)地址獲取所述待壓縮報(bào)文,并對(duì)所述待壓縮報(bào)文進(jìn)行壓縮處理,以及將所述元數(shù)據(jù)中的所述待壓縮報(bào)文的存儲(chǔ)地址替換為壓縮處理后的待壓縮報(bào)文的存儲(chǔ)地址。`
11.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述壓縮保序模塊具體用于:順序輸出所述元數(shù)據(jù)中記錄的指針,并從所述指針的頭部開始遍歷,依次輸出所述非待壓縮報(bào)文和壓縮處理后的所述待壓縮報(bào)文。
12.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述第一判斷模塊還用于:獲取所述接收模塊接收的每個(gè)所述報(bào)文的長(zhǎng)度,并判斷每個(gè)所述報(bào)文的長(zhǎng)度是否大于或等于預(yù)設(shè)值,以及在大于或等于所述預(yù)設(shè)值時(shí),判斷所述報(bào)文滿足所述壓縮條件。
13.根據(jù)權(quán)利要求8所述的裝置,其特征在于,還包括: 第一獲取模塊,用于獲取所述壓縮請(qǐng)求隊(duì)列中當(dāng)前待壓縮報(bào)文的數(shù)目;其中 所述壓縮保序模塊還用于在所述壓縮處理后的待壓縮報(bào)文通過壓縮響應(yīng)隊(duì)列出隊(duì),且所述壓縮請(qǐng)求隊(duì)列中的當(dāng)前待壓縮報(bào)文的數(shù)目變?yōu)轭A(yù)設(shè)閥值時(shí),將所述臨時(shí)緩沖隊(duì)列中的當(dāng)前所有非待壓縮報(bào)文輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述壓縮保序模塊還用于在所述第一判斷模塊判斷當(dāng)前接收到的報(bào)文為非待壓縮報(bào)文,且所述壓縮請(qǐng)求隊(duì)列中的當(dāng)前待壓縮報(bào)文的數(shù)目等于所述預(yù)設(shè)閥值時(shí),將所述非待壓縮報(bào)文直接輸出至下一級(jí)處理系統(tǒng)或傳輸網(wǎng)絡(luò)中。
【文檔編號(hào)】H04L29/06GK103888452SQ201410086621
【公開日】2014年6月25日 申請(qǐng)日期:2014年3月10日 優(yōu)先權(quán)日:2014年3月10日
【發(fā)明者】王燕飛, 吳教仁, 劉濤, 劉寧 申請(qǐng)人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司