亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種傳輸報(bào)文的方法及裝置的制作方法

文檔序號(hào):7796908閱讀:279來源:國知局
專利名稱:一種傳輸報(bào)文的方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種傳輸報(bào)文的方法及裝置。
背景技術(shù)
分布式系統(tǒng)通常包括各種線卡,如主控卡、業(yè)務(wù)卡、載板卡等,各線卡之間傳輸數(shù)據(jù)報(bào)文的通道一般通過快速外設(shè)組件互聯(lián)標(biāo)準(zhǔn)(Peripheral Component Interconnect Express, PCIE)總線技術(shù)實(shí)現(xiàn)。圖1為現(xiàn)有技術(shù)中的基于PCIE的分布式系統(tǒng)結(jié)構(gòu)示意圖,如圖1所示,該系統(tǒng)包括主控卡、業(yè)務(wù)卡1、業(yè)務(wù)卡2、業(yè)務(wù)卡3和業(yè)務(wù)卡4,并且,各線卡之間通過PCIE總線相連。 其中,在實(shí)際應(yīng)用中,基于PCIE的分布式系統(tǒng)還包括載板卡(圖1中未示出)。在現(xiàn)有技術(shù)中,各線卡之間傳輸數(shù)據(jù)報(bào)文主要是通過直接內(nèi)存訪問(Direct Memory Access, DMA)來進(jìn)行的。具體的,針對(duì)每個(gè)線卡,該線卡將自身的一部分存儲(chǔ)空間映射到PCIE空間,用于存放向其他線卡發(fā)送數(shù)據(jù)報(bào)文時(shí)的目的地址。由于通過DMA傳輸數(shù)據(jù)報(bào)文時(shí),發(fā)送方需要獲知要將數(shù)據(jù)報(bào)文發(fā)送到接收方的哪個(gè)存儲(chǔ)空間,因此當(dāng)作為數(shù)據(jù)報(bào)文發(fā)送方的線卡(以下稱為發(fā)送線卡)向作為數(shù)據(jù)報(bào)文接收方的線卡(以下稱為接收線卡)發(fā)送數(shù)據(jù)報(bào)文時(shí),接收線卡從自身映射到PCIE空間的存儲(chǔ)空間中,選擇一定數(shù)量的存儲(chǔ)空間,作為接收數(shù)據(jù)報(bào)文的存儲(chǔ)空間,并將選擇的一定數(shù)量的存儲(chǔ)空間的地址信息,寫入到發(fā)送線卡映射到PCIE空間上的存儲(chǔ)空間中。其中,接收線卡用于接收數(shù)據(jù)報(bào)文的每個(gè)存儲(chǔ)空間的地址信息稱為信用,發(fā)送線卡映射到PCIE空間上的用于保存這些信用的存儲(chǔ)空間稱為信用池。圖2為現(xiàn)有技術(shù)中線卡之間傳輸數(shù)據(jù)報(bào)文的過程,具體包括以下步驟S201 發(fā)送線卡向接收線卡發(fā)送數(shù)據(jù)報(bào)文時(shí),先向接收線卡申請(qǐng)信用。也即,通知接收線卡將用于接收數(shù)據(jù)報(bào)文的存儲(chǔ)空間的地址信息,寫入到PCIE空間上對(duì)應(yīng)該發(fā)送線卡的信用池中。S202 接收線卡從自身映射到PCIE空間的存儲(chǔ)空間中,選擇一定數(shù)量的存儲(chǔ)空間并以一定的順序進(jìn)行排序,作為接收數(shù)據(jù)報(bào)文的接收(RX)隊(duì)列。也即,將選擇的該一定數(shù)量的存儲(chǔ)空間作為接收數(shù)據(jù)報(bào)文的存儲(chǔ)空間,并且是按照一定的順序,依次采用各個(gè)存儲(chǔ)空間接收數(shù)據(jù)報(bào)文的。S203:接收線卡將選擇的該一定數(shù)量的存儲(chǔ)空間的地址信息作為信用,將每個(gè)信用按照RX隊(duì)列中的排列順序,依次寫入發(fā)送線卡的信用池中。S204 發(fā)送線卡順序讀取信用池中的信用,并通過DMA將待發(fā)送數(shù)據(jù)報(bào)文寫入到讀取的信用對(duì)應(yīng)的地址上。其中,對(duì)于接收線卡的RX隊(duì)列中的一個(gè)存儲(chǔ)空間,如果當(dāng)前正在采用該存儲(chǔ)空間接收數(shù)據(jù)報(bào)文,那么判斷該存儲(chǔ)空間上的數(shù)據(jù)報(bào)文已經(jīng)接收完畢之后,接收線卡則將接收到的數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)給自身的數(shù)據(jù)處理模塊,對(duì)該數(shù)據(jù)報(bào)文進(jìn)行處理。這是因?yàn)槿绻摯鎯?chǔ)空間上的數(shù)據(jù)報(bào)文還未接收完畢,則該存儲(chǔ)空間上接收到的并不是完整的數(shù)據(jù)報(bào)文,將不完整的數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)給數(shù)據(jù)處理模塊進(jìn)行處理時(shí),必然會(huì)導(dǎo)致處理出錯(cuò)。
在現(xiàn)有技術(shù)中,接收線卡判斷RX隊(duì)列中的某個(gè)存儲(chǔ)空間是否已經(jīng)接收數(shù)據(jù)報(bào)文完畢的方法為判斷RX隊(duì)列中當(dāng)前用于接收數(shù)據(jù)報(bào)文的存儲(chǔ)空間的下一個(gè)存儲(chǔ)空間中,是否存在數(shù)據(jù)報(bào)文的報(bào)文頭,若存在,則確定當(dāng)前用于接收數(shù)據(jù)報(bào)文的存儲(chǔ)空間已經(jīng)接收完畢,否則確定當(dāng)前用于接收數(shù)據(jù)報(bào)文的存儲(chǔ)空間還未接收完畢。這是由于一個(gè)數(shù)據(jù)報(bào)文包括報(bào)文頭和數(shù)據(jù)區(qū),報(bào)文頭包括報(bào)文類型字段和報(bào)文長度字段,數(shù)據(jù)區(qū)中是該數(shù)據(jù)報(bào)文的內(nèi)容,如圖3所示。圖3為現(xiàn)有技術(shù)中數(shù)據(jù)報(bào)文的結(jié)構(gòu)示意圖,在圖3中,數(shù)據(jù)報(bào)文的報(bào)文頭包括報(bào)文類型字段和報(bào)文長度字段,這兩個(gè)字段各占 2個(gè)字節(jié),數(shù)據(jù)區(qū)的長度不固定。發(fā)送線卡在發(fā)送一個(gè)數(shù)據(jù)報(bào)文時(shí),是按照先發(fā)送數(shù)據(jù)報(bào)文的報(bào)文頭,再發(fā)送數(shù)據(jù)報(bào)文的數(shù)據(jù)區(qū)進(jìn)行發(fā)送的。并且,發(fā)送線卡在發(fā)送多個(gè)數(shù)據(jù)報(bào)文時(shí), 也是按照一定順序,將該多個(gè)數(shù)據(jù)報(bào)文依次發(fā)送給接收線卡的。因此,發(fā)送線卡讀取一個(gè)信用,將一個(gè)數(shù)據(jù)報(bào)文寫入該信用對(duì)應(yīng)的地址上之后,會(huì)依次讀取下一個(gè)信用,將下一個(gè)數(shù)據(jù)報(bào)文寫入該下一個(gè)信用對(duì)應(yīng)的地址上,從而,接收線卡只要確定RX隊(duì)列中當(dāng)前接收數(shù)據(jù)報(bào)文的存儲(chǔ)空間的下一個(gè)存儲(chǔ)空間上存在了數(shù)據(jù)報(bào)文的報(bào)文頭,就可以確定當(dāng)前接收數(shù)據(jù)報(bào)文的存儲(chǔ)空間已經(jīng)完整的接收到了數(shù)據(jù)報(bào)文,也即接收數(shù)據(jù)報(bào)文完畢。但是,在實(shí)際應(yīng)用中,線卡之間傳輸數(shù)據(jù)報(bào)文是具有突發(fā)性的,并且每次可能需要傳輸多個(gè)數(shù)據(jù)報(bào)文,采用上述方法傳輸數(shù)據(jù)報(bào)文時(shí),由于接收線卡是根據(jù)RX隊(duì)列中當(dāng)前接收數(shù)據(jù)報(bào)文的存儲(chǔ)空間的下一個(gè)存儲(chǔ)空間上是否存在報(bào)文頭,來判斷該當(dāng)前接收數(shù)據(jù)報(bào)文的存儲(chǔ)空間是否已經(jīng)接收完畢的,因此對(duì)于某一次傳輸多個(gè)數(shù)據(jù)報(bào)文的過程,當(dāng)發(fā)送線卡將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送給接收線卡之后,由于已經(jīng)不存在下一個(gè)數(shù)據(jù)報(bào)文需要發(fā)送了, 因此接收線卡的RX隊(duì)列中用于接收該最后一個(gè)數(shù)據(jù)報(bào)文的存儲(chǔ)空間的下一個(gè)存儲(chǔ)空間必然不會(huì)接收到下一個(gè)數(shù)據(jù)報(bào)文的報(bào)文頭,這就會(huì)導(dǎo)致接收線卡誤認(rèn)為該最后一個(gè)數(shù)據(jù)報(bào)文遲遲沒有接收完畢,從而不能及時(shí)的將該最后一個(gè)數(shù)據(jù)報(bào)文從RX隊(duì)列中取走,并轉(zhuǎn)發(fā)給數(shù)據(jù)處理模塊進(jìn)行處理。因此,現(xiàn)有技術(shù)中傳輸報(bào)文的方法會(huì)導(dǎo)致對(duì)數(shù)據(jù)報(bào)文的處理不及時(shí),降低了處理數(shù)據(jù)報(bào)文的效率。

發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種傳輸報(bào)文的方法及裝置,用以解決現(xiàn)有技術(shù)中傳輸報(bào)文的方法導(dǎo)致對(duì)數(shù)據(jù)報(bào)文的處理不及時(shí),降低了處理數(shù)據(jù)報(bào)文的效率的問題。本發(fā)明實(shí)施例提供的一種傳輸報(bào)文的方法,包括發(fā)送線卡在信用池中讀取第一信用,將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到讀取的所述第一信用對(duì)應(yīng)的地址上;并在所述信用池中讀取所述第一信用的下一個(gè)信用作為讀取的第二信用,生成包含數(shù)據(jù)報(bào)文的報(bào)文頭的結(jié)束報(bào)文;所述發(fā)送線卡將生成的所述結(jié)束報(bào)文發(fā)送到讀取的所述第二信用對(duì)應(yīng)的地址上。本發(fā)明實(shí)施例提供的一種傳輸報(bào)文的裝置,包括信用讀取模塊,用于在信用池中讀取第一信用,并在所述信用池中讀取所述第一信用的下一個(gè)信用作為讀取的第二信用;生成模塊,用于生成包含數(shù)據(jù)報(bào)文的報(bào)文頭的結(jié)束報(bào)文;
5
發(fā)送模塊,用于將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到讀取的所述第一信用對(duì)應(yīng)的地址上, 并將生成的所述結(jié)束報(bào)文發(fā)送到讀取的所述第二信用對(duì)應(yīng)的地址上。本發(fā)明實(shí)施例提供一種傳輸報(bào)文的方法及裝置,該方法發(fā)送線卡將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到在信用池中讀取的第一信用對(duì)應(yīng)的地址上之后,讀取信用池中該第一信用的下一個(gè)信用,作為讀取的第二信用,并生成包含報(bào)文頭的結(jié)束報(bào)文,將該結(jié)束報(bào)文發(fā)送到該第二信用對(duì)應(yīng)的地址上。通過上述方法,接收線卡RX隊(duì)列中第一信用對(duì)應(yīng)的存儲(chǔ)空間上接收到最后一個(gè)數(shù)據(jù)報(bào)文后,就會(huì)在RX隊(duì)列中該第一信用對(duì)應(yīng)的存儲(chǔ)空間的下一個(gè)存儲(chǔ)空間, 也即第二信用對(duì)應(yīng)的存儲(chǔ)空間上接收到包含報(bào)文頭的結(jié)束報(bào)文,從而確定第一信用對(duì)應(yīng)的存儲(chǔ)空間已經(jīng)完整的接收到了最后一個(gè)數(shù)據(jù)報(bào)文,可以及時(shí)的將該最后一個(gè)數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)到數(shù)據(jù)處理模塊進(jìn)行處理,提高了處理數(shù)據(jù)報(bào)文的效率。


圖1為現(xiàn)有技術(shù)中的基于PCIE的分布式系統(tǒng)結(jié)構(gòu)示意圖;圖2為現(xiàn)有技術(shù)中線卡之間傳輸數(shù)據(jù)報(bào)文的過程;圖3為現(xiàn)有技術(shù)中數(shù)據(jù)報(bào)文的結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例提供的傳輸報(bào)文的過程;圖5為本發(fā)明實(shí)施例提供的結(jié)束報(bào)文的結(jié)構(gòu)示意圖;圖6為本發(fā)明實(shí)施例提供的發(fā)送線卡向接收線卡發(fā)送各數(shù)據(jù)報(bào)文,并在發(fā)送最后一個(gè)數(shù)據(jù)報(bào)文后發(fā)送結(jié)束報(bào)文時(shí),發(fā)送線卡的信用池中的信用使用情況和接收線卡的RX 隊(duì)列中存儲(chǔ)空間的使用情況示意圖;圖7為本發(fā)明實(shí)施例提供的傳輸報(bào)文的裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式由于現(xiàn)有技術(shù)中接收線卡是根據(jù)RX隊(duì)列中當(dāng)前接收數(shù)據(jù)報(bào)文的存儲(chǔ)空間的下一個(gè)存儲(chǔ)空間上是否存在報(bào)文頭,來判斷該當(dāng)前接收數(shù)據(jù)報(bào)文的存儲(chǔ)空間是否已經(jīng)接收完畢的,因此本發(fā)明實(shí)施例為了使接收線卡可以及時(shí)的取走最后一個(gè)數(shù)據(jù)報(bào)文并進(jìn)行處理,發(fā)送線卡在發(fā)送完最后一個(gè)數(shù)據(jù)報(bào)文后,讀取發(fā)送該最后一個(gè)數(shù)據(jù)報(bào)文時(shí)讀取的信用的下一個(gè)信用,將包含報(bào)文頭的結(jié)束報(bào)文發(fā)送到該下一個(gè)信用對(duì)應(yīng)的地址上,從而,接收線卡RX 隊(duì)列當(dāng)前接收該最后一個(gè)數(shù)據(jù)報(bào)文的存儲(chǔ)空間已經(jīng)接收完畢后,下一個(gè)存儲(chǔ)空間上就會(huì)接收到包含報(bào)文頭的結(jié)束報(bào)文,因此接收線卡就會(huì)確定該下一個(gè)存儲(chǔ)空間上存在了報(bào)文頭, 進(jìn)而確定當(dāng)前接收該最后一個(gè)數(shù)據(jù)報(bào)文的存儲(chǔ)空間已經(jīng)接收完畢,可以及時(shí)的將該最后一個(gè)數(shù)據(jù)報(bào)文取走并進(jìn)行處理,提高了處理數(shù)據(jù)報(bào)文的效率。下面結(jié)合說明書附圖,對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)描述。圖4為本發(fā)明實(shí)施例提供的傳輸報(bào)文的過程,具體包括以下步驟S401 發(fā)送線卡在信用池中讀取第一信用,將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到讀取的該第一信用對(duì)應(yīng)的地址上。在本發(fā)明實(shí)施例中,發(fā)送線卡每次發(fā)送數(shù)據(jù)報(bào)文可能是多個(gè)數(shù)據(jù)報(bào)文,每次發(fā)送數(shù)據(jù)報(bào)文時(shí),依次讀取信用池中的信用,將每個(gè)數(shù)據(jù)報(bào)文分別發(fā)送到讀取的信用對(duì)應(yīng)的地址上,也即通過DMA將每個(gè)數(shù)據(jù)報(bào)文分別寫入到依次讀取的每個(gè)信用對(duì)應(yīng)的地址上。其中,發(fā)送最后一個(gè)數(shù)據(jù)報(bào)文時(shí)所讀取的信用即為本發(fā)明實(shí)施例中的第一信用。S402:在信用池中讀取第一信用的下一個(gè)信用作為讀取的第二信用,生成包含數(shù)據(jù)報(bào)文的報(bào)文頭的結(jié)束報(bào)文。在本發(fā)明實(shí)施例中,發(fā)送線卡將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到該第一信用對(duì)應(yīng)的地址上之后,在信用池中讀取該第一信用的下一個(gè)信用,作為讀取的第二信用。并且,生成一個(gè)結(jié)束報(bào)文,該結(jié)束報(bào)文包括數(shù)據(jù)報(bào)文的報(bào)文頭,當(dāng)然,該結(jié)束報(bào)文也可以包括數(shù)據(jù)區(qū)。本發(fā)明實(shí)施例中為了提高傳輸結(jié)束報(bào)文的效率,該結(jié)束報(bào)文可以為只包含數(shù)據(jù)報(bào)文的報(bào)文頭, 而不包含數(shù)據(jù)區(qū)的報(bào)文,具體的該結(jié)束報(bào)文可以為幀間隙(Inter Packet Gap, IPG)報(bào)文。 圖5為本發(fā)明實(shí)施例提供的結(jié)束報(bào)文的結(jié)構(gòu)示意圖,如圖5所示,該結(jié)束報(bào)文只包含報(bào)文頭,報(bào)文頭具體由報(bào)文類型字段和報(bào)文長度字段組成,其中,報(bào)文類型字段和報(bào)文長度字段均為2個(gè)字節(jié),與圖3所示的數(shù)據(jù)報(bào)文的報(bào)文頭相同。但是與圖3所示的數(shù)據(jù)報(bào)文所不同的是,該結(jié)束報(bào)文不包含數(shù)據(jù)區(qū)。S403:發(fā)送線卡將生成的結(jié)束報(bào)文發(fā)送到讀取的第二信用對(duì)應(yīng)的地址上。在本發(fā)明實(shí)施例中,發(fā)送線卡將生成的結(jié)束報(bào)文發(fā)送到該第二信用對(duì)應(yīng)的地址上。由于發(fā)送線卡向接收線卡申請(qǐng)信用時(shí),接收線卡對(duì)RX隊(duì)列中的每個(gè)信用對(duì)應(yīng)的存儲(chǔ)空間的排序順序,與向發(fā)送線卡的信用池中寫入每個(gè)信用的順序是相同的,因此發(fā)送線卡將結(jié)束報(bào)文發(fā)送到作為第一信用的下一個(gè)信用的第二信用對(duì)應(yīng)的地址上時(shí),接收線卡的RX 隊(duì)列中用于接收最后一個(gè)數(shù)據(jù)報(bào)文的第一信用對(duì)應(yīng)的存儲(chǔ)空間的下一個(gè)存儲(chǔ)空間,也即該第二信用對(duì)應(yīng)的存儲(chǔ)空間上就會(huì)接收到該結(jié)束報(bào)文。下面舉例進(jìn)行說明,假設(shè)接收線卡向發(fā)送線卡的信用池中寫入了 η個(gè)信用,分別
為信用0、信用1、信用2......信用η-l,其中,這η個(gè)信用對(duì)應(yīng)接收線卡的存儲(chǔ)空間的地址
信息分別為AddO、Addl、Add2.......Addn-1,發(fā)送線卡要依次發(fā)送三個(gè)數(shù)據(jù)報(bào)文,分別為
Data-0, DataU Data-2,則發(fā)送線卡向接收線卡發(fā)送各數(shù)據(jù)報(bào)文,并在發(fā)送最后一個(gè)數(shù)據(jù)報(bào)文后發(fā)送結(jié)束報(bào)文時(shí),發(fā)送線卡的信用池中的信用使用情況和接收線卡的RX隊(duì)列中存儲(chǔ)空間的使用情況如圖6所示。圖6為本發(fā)明實(shí)施例提供的發(fā)送線卡向接收線卡發(fā)送各數(shù)據(jù)報(bào)文,并在發(fā)送最后一個(gè)數(shù)據(jù)報(bào)文后發(fā)送結(jié)束報(bào)文時(shí),發(fā)送線卡的信用池中的信用使用情況和接收線卡的RX隊(duì)列中存儲(chǔ)空間的使用情況示意圖。在圖6中,接收線卡建立了 RX隊(duì)列,RX隊(duì)列中每個(gè)存儲(chǔ)空間的排序,與接收線卡在發(fā)送線卡的信用池中寫入相應(yīng)的每個(gè)信用的順序相同,也即,接收線卡寫入信用池中的每
個(gè)信用的順序?yàn)樾庞?、信用1、信用2......信用Π-1,由于信用0對(duì)應(yīng)接收線卡中地址
信息為AddO的存儲(chǔ)空間,信用1對(duì)應(yīng)接收線卡中地址信息為Addl的存儲(chǔ)空間,以此類推, 因此接收線卡的RX隊(duì)列中每個(gè)存儲(chǔ)空間的排序?yàn)锳ddO、Addl、Add2......Addn-1。發(fā)送線卡依次發(fā)送Data-0、DataU Data-2這三個(gè)數(shù)據(jù)報(bào)文時(shí),假設(shè)從信用0開始讀取信用,則發(fā)送線卡先讀取信用0,設(shè)置DMA的源地址為Data-O的存儲(chǔ)地址,目的地址為讀取的信用0對(duì)應(yīng)的地址,也即AddO,將設(shè)置的源地址和目的地址放到DMA鏈上,DMA就會(huì)將該源地址中的數(shù)據(jù)報(bào)文Data-O寫入到目的地址上,也即發(fā)送線卡通過DMA將Data-Ο發(fā)送到了接收線卡的RX隊(duì)列中地址信息為AddO的存儲(chǔ)空間上。重復(fù)上述步驟,將Data-1、 Data-2分別發(fā)送到接收線卡RX隊(duì)列中地址信息分別為Addl和Add2的存儲(chǔ)空間上,至此, 要發(fā)送的這三個(gè)數(shù)據(jù)報(bào)文已經(jīng)全部發(fā)送完畢。
上述過程中,Data-2即為最后一個(gè)數(shù)據(jù)報(bào)文,發(fā)送Data_2時(shí)所讀取的信用2即為第一信用,發(fā)送線卡發(fā)送完Data-2后,讀取信用池中該第一信用的下一個(gè)信用作為讀取的第二信用,也即讀取信用3作為第二信用,并生成包含報(bào)文頭的結(jié)束報(bào)文,同樣的,設(shè)置DMA 的源地址為該結(jié)束報(bào)文的存儲(chǔ)地址,目的地址為信用3對(duì)應(yīng)的地址,也即Add3,DMA則將該結(jié)束報(bào)文發(fā)送到接收線卡RX隊(duì)列中地址信息為Add3的存儲(chǔ)空間上。由于接收線卡判斷RX隊(duì)列中地址信息為Add2的存儲(chǔ)空間是否已經(jīng)完整的接收到數(shù)據(jù)報(bào)文Data-2的方法為判斷下一個(gè)存儲(chǔ)空間,也即地址信息為Add3的存儲(chǔ)空間上是否存在報(bào)文頭,因此,將包含報(bào)文頭的結(jié)束報(bào)文發(fā)送到地址信息為Add3的存儲(chǔ)空間上后,接收線卡就可以確定地址信息為Add2的存儲(chǔ)空間已經(jīng)完整的接收到數(shù)據(jù)報(bào)文Data-2,也即接收Data-2完畢,則可以及時(shí)的將Data-2取走并轉(zhuǎn)發(fā)給數(shù)據(jù)處理模塊進(jìn)行處理,從而提高了處理數(shù)據(jù)報(bào)文的效率。在本發(fā)明實(shí)施例中,為了使接收線卡能夠更加準(zhǔn)確的判斷RX隊(duì)列中的各存儲(chǔ)空間是否已經(jīng)接收數(shù)據(jù)報(bào)文完畢,以進(jìn)一步提高數(shù)據(jù)報(bào)文的處理效率,在圖4所示的步驟 S401之前,也即發(fā)送線卡將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到讀取的第一信用對(duì)應(yīng)的地址上之前, 還要確定讀取的該第一信用不是該信用池中的最后一個(gè)信用。并且,當(dāng)確定讀取的第一信用是信用池中的最后一個(gè)信用時(shí),生成包含數(shù)據(jù)報(bào)文的報(bào)文頭的結(jié)束報(bào)文,將生成的結(jié)束報(bào)文發(fā)送到讀取的第一信用對(duì)應(yīng)的地址上,并重新為信用池申請(qǐng)信用,讀取該信用池中重新申請(qǐng)的第一個(gè)信用,將讀取的信用池中重新申請(qǐng)的第一個(gè)信用重新作為讀取的第一信用。也即,在發(fā)送最后一個(gè)數(shù)據(jù)報(bào)文時(shí),如果讀取的信用不是信用池中的最后一個(gè)信用,則按照正常的發(fā)送流程發(fā)送該最后一個(gè)數(shù)據(jù)報(bào)文,如果讀取的信用是信用池中的最后一個(gè)信用,則先將結(jié)束報(bào)文發(fā)送到該信用對(duì)應(yīng)的地址上,并重新申請(qǐng)信用,采用重新申請(qǐng)的信用發(fā)送最后一個(gè)報(bào)文,并進(jìn)行后續(xù)步驟。這是由于發(fā)送線卡的信用池容量有限,每次申請(qǐng)的信用的個(gè)數(shù)也是有限的,一般為64個(gè)。如果信用池中的信用已經(jīng)用盡,則需要重新為信用池申請(qǐng)信用,相應(yīng)的,接收線卡也要重新建立RX隊(duì)列。如果發(fā)送最后一個(gè)數(shù)據(jù)報(bào)文時(shí)所申請(qǐng)的信用恰好為信用池中的最后一個(gè)信用,那么信用池中將不會(huì)存在該信用的下一個(gè)信用,用來發(fā)送結(jié)束報(bào)文,相應(yīng)的, 接收線卡的RX隊(duì)列中也是采用最后一個(gè)存儲(chǔ)空間接收該最后一個(gè)數(shù)據(jù)報(bào)文的,RX隊(duì)列中也同樣不存在下一個(gè)存儲(chǔ)空間用來接收結(jié)束報(bào)文,并以此來判斷最后一個(gè)數(shù)據(jù)報(bào)文是否接收完畢。而即使通過重新申請(qǐng)的信用池中的第一個(gè)信用發(fā)送結(jié)束報(bào)文,由于接收線卡此時(shí)也重新建立的RX隊(duì)列,因此接收線卡不能通過重新建立的RX隊(duì)列中的第一個(gè)存儲(chǔ)空間上是否存在報(bào)文頭,來判斷之前的RX隊(duì)列的最后一個(gè)存儲(chǔ)空間是否已經(jīng)接收數(shù)據(jù)報(bào)文完畢。因此,這種特殊的情況就需要利用信用池中的最后一個(gè)信用發(fā)送結(jié)束報(bào)文,相應(yīng)的,接收線卡可以根據(jù)RX隊(duì)列中的最后一個(gè)存儲(chǔ)空間上接收到的結(jié)束報(bào)文,確定前一個(gè)存儲(chǔ)空間上已經(jīng)接收數(shù)據(jù)報(bào)文完畢。此時(shí),發(fā)送線卡則重新申請(qǐng)信用,采用重新申請(qǐng)的第一個(gè)信用,發(fā)送尚未發(fā)送的最后一個(gè)數(shù)據(jù)報(bào)文,將該重新申請(qǐng)的第一個(gè)信用,作為本發(fā)明實(shí)施例中的第一信用,并進(jìn)行后續(xù)步驟,也即將該最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到該重新申請(qǐng)的第一個(gè)信用對(duì)應(yīng)的地址上之后,讀取重新申請(qǐng)的該第一個(gè)信用的下一個(gè)信用,即重新申請(qǐng)的第二個(gè)信用,作為第二信用,采用該第二信用再次發(fā)送結(jié)束報(bào)文。繼續(xù)以圖6為例進(jìn)行說明,由于發(fā)送線卡的信用池中最多保存η個(gè)信用,分別為信用0 信用n-1,其對(duì)應(yīng)的接收線卡RX隊(duì)列中的存儲(chǔ)空間分別為地址信息為AddO Addn-I 的存儲(chǔ)空間,因此如果在發(fā)送最后一個(gè)數(shù)據(jù)報(bào)文時(shí),讀取的信用恰好為信用n-1,則信用池中不存在下一個(gè)信用,即信用η用來發(fā)送后續(xù)的結(jié)束報(bào)文,接收線卡的RX隊(duì)列中也不存在地址信息為Addn的存儲(chǔ)空間來存儲(chǔ)結(jié)束報(bào)文。因此,當(dāng)發(fā)送最后一個(gè)數(shù)據(jù)報(bào)文時(shí)所讀取的信用為信用n-1時(shí),先生成結(jié)束報(bào)文,并將該結(jié)束報(bào)文發(fā)送到信用n-1對(duì)應(yīng)的地址上,此時(shí)接收線卡RX隊(duì)列中地址信息為Addn-I的存儲(chǔ)空間會(huì)接收到該結(jié)束報(bào)文,接收線卡也就可以確定前一個(gè)存儲(chǔ)空間,即地址信息為Addn-2的存儲(chǔ)空間已經(jīng)接收數(shù)據(jù)報(bào)文完畢。在后續(xù)的步驟中,發(fā)送線卡重新為信用池申請(qǐng)信用,申請(qǐng)的信用的個(gè)數(shù)仍為η個(gè), 將重新申請(qǐng)的η個(gè)信用記為信用0’ 信用n-Γ,其對(duì)應(yīng)接收線卡重新建立的RX隊(duì)列中的存儲(chǔ)空間分別記為地址信息為AddO’ Addn-Γ的存儲(chǔ)空間,則發(fā)送線卡讀取重新申請(qǐng)的第一個(gè)信用,即信用0’,將尚未發(fā)送的該最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到該信用0’對(duì)應(yīng)的地址上,也即接收線卡重新建立的RX隊(duì)列中地址信息為AddO’的存儲(chǔ)空間上,再讀取重新申請(qǐng)的第二個(gè)信用,即信用1’,將結(jié)束報(bào)文發(fā)送到該信用1’對(duì)應(yīng)的地址上,也即接收線卡重新建立的RX隊(duì)列中地址信息為Addl’的存儲(chǔ)空間上。至此,接收線卡可以根據(jù)RX隊(duì)列中地址信息為Addl’的存儲(chǔ)空間上接收到的結(jié)束報(bào)文,確定RX隊(duì)列中地址信息為AddO’的存儲(chǔ)空間已經(jīng)接收數(shù)據(jù)報(bào)文完畢,可以及時(shí)的將該數(shù)據(jù)報(bào)文取走并進(jìn)行處理。在實(shí)際應(yīng)用中,發(fā)送線卡每讀取一個(gè)信用,并將報(bào)文發(fā)送到該信用對(duì)應(yīng)的地址上之后,就要將該信用釋放,也即在信用池中刪除該信用,并釋放信用池中用來保存該信用的存儲(chǔ)空間,相應(yīng)的,接收線卡將RX隊(duì)列中的一個(gè)存儲(chǔ)空間上接收到的數(shù)據(jù)報(bào)文取走之后, 也會(huì)釋放該存儲(chǔ)空間。而本發(fā)明實(shí)施例中的結(jié)束報(bào)文為只包含報(bào)文頭,不包含數(shù)據(jù)區(qū),也即不包含任何內(nèi)容的報(bào)文,其作用只是為了讓接收線卡可以根據(jù)該結(jié)束報(bào)文確定RX隊(duì)列中前一個(gè)存儲(chǔ)空間已經(jīng)接收數(shù)據(jù)報(bào)文完畢,因此,如果發(fā)送線卡發(fā)送完結(jié)束報(bào)文后,也將發(fā)送該結(jié)束報(bào)文時(shí)所采用的信用釋放,無疑會(huì)浪費(fèi)掉一個(gè)信用來發(fā)送沒有任何內(nèi)容的結(jié)束報(bào)文。然而,由于發(fā)送線卡每次申請(qǐng)的信用的個(gè)數(shù)是有限的,浪費(fèi)了信用來發(fā)送沒有任何內(nèi)容的結(jié)束報(bào)文,勢(shì)必就要增加申請(qǐng)信用的次數(shù),由于發(fā)送線卡想接收線卡申請(qǐng)信用的過程非常復(fù)雜,每次申請(qǐng)都需要耗費(fèi)發(fā)送線卡和接收線卡較大的開銷,因此,浪費(fèi)信用必然會(huì)導(dǎo)致發(fā)送線卡和接收線卡的壓力增大。本發(fā)明實(shí)施例中為了節(jié)省發(fā)送結(jié)束報(bào)文所采用的信用,以減輕發(fā)送線卡和接收線卡的壓力,在圖4所示的步驟S403之后,也即發(fā)送線卡將生成的結(jié)束報(bào)文發(fā)送到讀取的第二信用對(duì)應(yīng)的地址上之后,不釋放信用池中的該第二信用,并在下一次要發(fā)送數(shù)據(jù)報(bào)文時(shí), 從信用池中的該第二信用開始,依次讀取信用,將下一次要發(fā)送的每個(gè)數(shù)據(jù)報(bào)文分別發(fā)送到依次讀取的信用對(duì)應(yīng)的地址上。也即,發(fā)送線卡在發(fā)送結(jié)束報(bào)文之后,不釋放發(fā)送該結(jié)束報(bào)文所采用的信用,并在下一次要發(fā)送數(shù)據(jù)報(bào)文時(shí),重新利用該信用發(fā)送下一次要發(fā)送的第一個(gè)數(shù)據(jù)報(bào)文,將下一次要發(fā)送的第一個(gè)數(shù)據(jù)報(bào)文發(fā)送到該信用對(duì)應(yīng)的地址上,并繼續(xù)進(jìn)行正常的發(fā)送數(shù)據(jù)報(bào)文的流程。較佳的,發(fā)送線卡不釋放該信用池中的第二信用之前,還要確定該第二信用不是該信用池中的最后一個(gè)信用。如果該第二信用是信用池中的最后一個(gè)信用,則釋放該第二信用。這是由于如果利用信用池中的最后一個(gè)信用發(fā)送數(shù)據(jù)報(bào)文,則發(fā)送下一個(gè)數(shù)據(jù)報(bào)文時(shí)就要重新申請(qǐng)信用,相應(yīng)的,接收線卡RX隊(duì)列中的最后一個(gè)存儲(chǔ)空間接收到該數(shù)據(jù)報(bào)文后,也會(huì)根據(jù)發(fā)送線卡申請(qǐng)信用的請(qǐng)求,重新建立RX隊(duì)列,但是接收線卡無法根據(jù)重新建立的RX隊(duì)列中的第一個(gè)存儲(chǔ)空間上是否接收到了報(bào)文頭,來判斷之前的RX隊(duì)列中的最后一個(gè)存儲(chǔ)空間是否接收數(shù)據(jù)報(bào)文完畢,因此,如果發(fā)送結(jié)束報(bào)文的信用是信用池中的最后一個(gè)信用,則釋放該第二信用,在下一次要發(fā)送數(shù)據(jù)報(bào)文時(shí),重新申請(qǐng)信用。圖7為本發(fā)明實(shí)施例提供的傳輸報(bào)文的裝置結(jié)構(gòu)示意圖,具體包括信用讀取模塊701,用于在信用池中讀取第一信用,并在所述信用池中讀取所述第一信用的下一個(gè)信用作為讀取的第二信用;生成模塊702,用于生成包含數(shù)據(jù)報(bào)文的報(bào)文頭的結(jié)束報(bào)文;發(fā)送模塊703,用于將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到讀取的所述第一信用對(duì)應(yīng)的地址上,并將生成的所述結(jié)束報(bào)文發(fā)送到讀取的所述第二信用對(duì)應(yīng)的地址上。所述發(fā)送模塊703還用于,在將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到讀取的所述第一信用對(duì)應(yīng)的地址上之前,確定讀取的所述第一信用不是所述信用池中的最后一個(gè)信用。所述發(fā)送模塊703還用于,在將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到讀取的所述第一信用對(duì)應(yīng)的地址上之前,確定讀取的所述第一信用是所述信用池中的最后一個(gè)信用時(shí),將所述生成模塊702生成的所述結(jié)束報(bào)文發(fā)送到讀取的所述第一信用對(duì)應(yīng)的地址上;所述裝置還包括申請(qǐng)模塊704,用于重新為所述信用池申請(qǐng)信用;所述信用讀取模塊701還用于,讀取所述信用池中重新申請(qǐng)的第一個(gè)信用,將讀取的所述信用池中重新申請(qǐng)的第一個(gè)信用重新作為讀取的第一信用。所述裝置還包括信用釋放模塊705,用于在所述發(fā)送模塊703將生成的所述結(jié)束報(bào)文發(fā)送到讀取的所述第二信用對(duì)應(yīng)的地址上之后,不釋放所述信用池中的所述第二信用;所述信用讀取模塊701還用于,在下一次要發(fā)送數(shù)據(jù)報(bào)文時(shí),從所述信用池中的所述第二信用開始,依次讀取信用;所述發(fā)送模塊703還用于,將下一次要發(fā)送的每個(gè)數(shù)據(jù)報(bào)文分別發(fā)送到依次讀取的信用對(duì)應(yīng)的地址上。所述信用釋放模塊705還用于,在不釋放所述信用池中的所述第二信用之前,確定所述第二信用不是所述信用池中的最后一個(gè)信用。具體的上述傳輸報(bào)文的裝置可以位于發(fā)送線卡中。本發(fā)明實(shí)施例提供一種傳輸報(bào)文的方法及裝置,該方法發(fā)送線卡將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到在信用池中讀取的第一信用對(duì)應(yīng)的地址上之后,讀取信用池中該第一信用的下一個(gè)信用,作為讀取的第二信用,并生成包含報(bào)文頭的結(jié)束報(bào)文,將該結(jié)束報(bào)文發(fā)送到該第二信用對(duì)應(yīng)的地址上。通過上述方法,接收線卡RX隊(duì)列中第一信用對(duì)應(yīng)的存儲(chǔ)空間上接收到最后一個(gè)數(shù)據(jù)報(bào)文后,就會(huì)在RX隊(duì)列中該第一信用對(duì)應(yīng)的存儲(chǔ)空間的下一個(gè)存儲(chǔ)空間, 也即第二信用對(duì)應(yīng)的存儲(chǔ)空間上接收到包含報(bào)文頭的結(jié)束報(bào)文,從而確定第一信用對(duì)應(yīng)的存儲(chǔ)空間已經(jīng)完整的接收到了最后一個(gè)數(shù)據(jù)報(bào)文,可以及時(shí)的將該最后一個(gè)數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)到數(shù)據(jù)處理模塊進(jìn)行處理,提高了處理數(shù)據(jù)報(bào)文的效率。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種傳輸報(bào)文的方法,其特征在于,包括發(fā)送線卡在信用池中讀取第一信用,將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到讀取的所述第一信用對(duì)應(yīng)的地址上;并在所述信用池中讀取所述第一信用的下一個(gè)信用作為讀取的第二信用,生成包含數(shù)據(jù)報(bào)文的報(bào)文頭的結(jié)束報(bào)文;所述發(fā)送線卡將生成的所述結(jié)束報(bào)文發(fā)送到讀取的所述第二信用對(duì)應(yīng)的地址上。
2.如權(quán)利要求1所述的方法,其特征在于,將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到讀取的所述第一信用對(duì)應(yīng)的地址上之前,所述方法還包括確定讀取的所述第一信用不是所述信用池中的最后一個(gè)信用。
3.如權(quán)利要求1所述的方法,其特征在于,將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到讀取的所述第一信用對(duì)應(yīng)的地址上之前,所述方法還包括當(dāng)確定讀取的所述第一信用是所述信用池中的最后一個(gè)信用時(shí),生成包含數(shù)據(jù)報(bào)文的報(bào)文頭的結(jié)束報(bào)文,將生成的所述結(jié)束報(bào)文發(fā)送到讀取的所述第一信用對(duì)應(yīng)的地址上;并重新為所述信用池申請(qǐng)信用,讀取所述信用池中重新申請(qǐng)的第一個(gè)信用,將讀取的所述信用池中重新申請(qǐng)的第一個(gè)信用重新作為讀取的第一信用。
4.如權(quán)利要求1所述的方法,其特征在于,所述發(fā)送線卡將生成的所述結(jié)束報(bào)文發(fā)送到讀取的所述第二信用對(duì)應(yīng)的地址上之后,所述方法還包括不釋放所述信用池中的所述第二信用;并在下一次要發(fā)送數(shù)據(jù)報(bào)文時(shí),從所述信用池中的所述第二信用開始,依次讀取信用,將下一次要發(fā)送的每個(gè)數(shù)據(jù)報(bào)文分別發(fā)送到依次讀取的信用對(duì)應(yīng)地址上。
5.如權(quán)利要求4所述的方法,其特征在于,不釋放所述信用池中的所述第二信用之前, 所述方法還包括確定所述第二信用不是所述信用池中的最后一個(gè)信用。
6.一種傳輸報(bào)文的裝置,其特征在于,包括信用讀取模塊,用于在信用池中讀取第一信用,并在所述信用池中讀取所述第一信用的下一個(gè)信用作為讀取的第二信用;生成模塊,用于生成包含數(shù)據(jù)報(bào)文的報(bào)文頭的結(jié)束報(bào)文;發(fā)送模塊,用于將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到讀取的所述第一信用對(duì)應(yīng)的地址上,并將生成的所述結(jié)束報(bào)文發(fā)送到讀取的所述第二信用對(duì)應(yīng)的地址上。
7.如權(quán)利要求6所述的裝置,其特征在于,所述發(fā)送模塊還用于,在將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到讀取的所述第一信用對(duì)應(yīng)的地址上之前,確定讀取的所述第一信用不是所述信用池中的最后一個(gè)信用。
8.如權(quán)利要求6所述的裝置,其特征在于,所述發(fā)送模塊還用于,在將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到讀取的所述第一信用對(duì)應(yīng)的地址上之前,確定讀取的所述第一信用是所述信用池中的最后一個(gè)信用時(shí),將所述生成模塊生成的所述結(jié)束報(bào)文發(fā)送到讀取的所述第一信用對(duì)應(yīng)的地址上;所述裝置還包括申請(qǐng)模塊,用于重新為所述信用池申請(qǐng)信用;所述信用讀取模塊還用于信用池中重新申請(qǐng)的第一個(gè)信用重新作為讀取的第一信用。
9.如權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括信用釋放模塊,用于在所述發(fā)送模塊將生成的所述結(jié)束報(bào)文發(fā)送到讀取的所述第二信用對(duì)應(yīng)的地址上之后,不釋放所述信用池中的所述第二信用;所述信用讀取模塊還用于,在下一次要發(fā)送數(shù)據(jù)報(bào)文時(shí),從所述信用池中的所述第二信用開始,依次讀取信用;所述發(fā)送模塊還用于,將下一次要發(fā)送的每個(gè)數(shù)據(jù)報(bào)文分別發(fā)送到依次讀取的信用對(duì)應(yīng)的地址上。
10.如權(quán)利要求9所述的裝置,其特征在于,所述信用釋放模塊還用于,在不釋放所述信用池中的所述第二信用之前,確定所述第二信用不是所述信用池中的最后一個(gè)信用。
全文摘要
本發(fā)明公開了一種傳輸報(bào)文的方法及裝置,用以解決現(xiàn)有技術(shù)處理數(shù)據(jù)報(bào)文的效率低的問題。該方法發(fā)送線卡將最后一個(gè)數(shù)據(jù)報(bào)文發(fā)送到第一信用對(duì)應(yīng)的地址上之后,讀取信用池中該第一信用的下一個(gè)信用,作為讀取的第二信用,并生成包含報(bào)文頭的結(jié)束報(bào)文,將結(jié)束報(bào)文發(fā)送到該第二信用對(duì)應(yīng)的地址上。通過上述方法,接收線卡RX隊(duì)列中第一信用對(duì)應(yīng)的存儲(chǔ)空間上接收到最后一個(gè)數(shù)據(jù)報(bào)文后,會(huì)在RX隊(duì)列中該第一信用對(duì)應(yīng)的存儲(chǔ)空間的下一個(gè)存儲(chǔ)空間,也即第二信用對(duì)應(yīng)的存儲(chǔ)空間上接收到包含報(bào)文頭的結(jié)束報(bào)文,從而確定第一信用對(duì)應(yīng)的存儲(chǔ)空間已經(jīng)完整的接收到了最后一個(gè)數(shù)據(jù)報(bào)文,可以及時(shí)的將該最后一個(gè)數(shù)據(jù)報(bào)文進(jìn)行處理,提高了處理數(shù)據(jù)報(bào)文的效率。
文檔編號(hào)H04L12/56GK102523168SQ20111044093
公開日2012年6月27日 申請(qǐng)日期2011年12月23日 優(yōu)先權(quán)日2011年12月23日
發(fā)明者楊濤 申請(qǐng)人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1