一種數(shù)據(jù)報文發(fā)送方法、設(shè)備及系統(tǒng)的制作方法
【專利摘要】本發(fā)明實(shí)施例提供一種數(shù)據(jù)報文發(fā)送方法、設(shè)備及系統(tǒng)。該方法包括:當(dāng)前節(jié)點(diǎn)存在待發(fā)送的數(shù)據(jù)報文時,判斷下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間是否大于等于所述數(shù)據(jù)報文的長度;若是,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文發(fā)送至所述下游節(jié)點(diǎn);若否,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文拆分為至少兩個子數(shù)據(jù)報文,并向所述下游節(jié)點(diǎn)逐個發(fā)送所述子數(shù)據(jù)報文,其中,所述子數(shù)據(jù)報文的長度小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間。根據(jù)本發(fā)明提供一種數(shù)據(jù)報文發(fā)送方法、設(shè)備及系統(tǒng),有效減少了鏈路空閑時間,充分了利用鏈路資源。
【專利說明】一種數(shù)據(jù)報文發(fā)送方法、設(shè)備及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及流量控制技術(shù),尤其涉及一種數(shù)據(jù)報文發(fā)送方法、設(shè)備及系統(tǒng),屬于通信【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]一個復(fù)雜的網(wǎng)絡(luò)系統(tǒng)由各類設(shè)備(如交換機(jī)、路由器、核心網(wǎng)),以及這些設(shè)備之間的連接通路組成。當(dāng)源節(jié)點(diǎn)發(fā)送一個數(shù)據(jù)報文時,該數(shù)據(jù)報文通常需要通過網(wǎng)絡(luò)上的若干節(jié)點(diǎn)才能最終到達(dá)目的地。各節(jié)點(diǎn)中含有緩沖區(qū),用于暫存該節(jié)點(diǎn)中沒有處理完畢的數(shù)據(jù)報文。當(dāng)節(jié)點(diǎn)的緩沖區(qū)不足以緩存所接收到的數(shù)據(jù)報文時,會導(dǎo)致數(shù)據(jù)報文丟失,由發(fā)送端重新向該節(jié)點(diǎn)發(fā)送相應(yīng)的數(shù)據(jù)報文,從而造成網(wǎng)絡(luò)帶寬的浪費(fèi)。
[0003]針對上述問題,目前的網(wǎng)絡(luò)系統(tǒng)中通常采用以下方式,來提高網(wǎng)絡(luò)帶寬的利用率:當(dāng)前節(jié)點(diǎn)需要向下游節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)報文時,檢測下游節(jié)點(diǎn)的剩余緩存空間是否能夠容納該數(shù)據(jù)報文,若能夠容納,則向下游節(jié)點(diǎn)發(fā)送該數(shù)據(jù)報文;若不能夠容納,則暫時不向下游節(jié)點(diǎn)發(fā)送數(shù)據(jù)報文,等待下游節(jié)點(diǎn)的擁塞解除。
[0004]當(dāng)在網(wǎng)絡(luò)系統(tǒng)中的各節(jié)點(diǎn)采用以上方式進(jìn)行數(shù)據(jù)報文發(fā)送時,雖然避免了由于數(shù)據(jù)報文接收節(jié)點(diǎn)的緩存不足而導(dǎo)致數(shù)據(jù)報文丟失和數(shù)據(jù)報文重傳的問題,在一定程度上提高了網(wǎng)絡(luò)帶寬的利用率,但是由于數(shù)據(jù)報文傳輸?shù)那疤釣?下游節(jié)點(diǎn)必須具備接收完整數(shù)據(jù)報文的能力,才會進(jìn)行數(shù)據(jù)報文的發(fā)送,造成了鏈路的空閑和浪費(fèi)。
【發(fā)明內(nèi)容】
[0005]針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明提供一種數(shù)據(jù)報文發(fā)送方法、設(shè)備及系統(tǒng),用以有效減少鏈路空閑時間,充分利用鏈路資源。
[0006]第一方面,提供一種數(shù)據(jù)報文發(fā)送方法,包括:
[0007]當(dāng)前節(jié)點(diǎn)存在待發(fā)送的數(shù)據(jù)報文時,判斷下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間是否大于等于所述數(shù)據(jù)報文的長度;
[0008]若是,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文發(fā)送至所述下游節(jié)點(diǎn);若否,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文拆分為至少兩個子數(shù)據(jù)報文,并向所述下游節(jié)點(diǎn)逐個發(fā)送所述子數(shù)據(jù)報文,其中,所述子數(shù)據(jù)報文的長度小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間。
[0009]在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述待發(fā)送的數(shù)據(jù)報文包括所述當(dāng)前節(jié)點(diǎn)從上游節(jié)點(diǎn)接收的構(gòu)成所述數(shù)據(jù)報文的全部子數(shù)據(jù)報文;
[0010]相應(yīng)地,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文發(fā)送至所述下游節(jié)點(diǎn),包括:
[0011] 所述當(dāng)前節(jié)點(diǎn)將構(gòu)成所述數(shù)據(jù)報文的全部子數(shù)據(jù)報文,合并為所述數(shù)據(jù)報文,并發(fā)送至所述下游節(jié)點(diǎn)。
[0012]在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文拆分為至少兩個子數(shù)據(jù)報文,包括:
[0013]所述當(dāng)前節(jié)點(diǎn)判斷,若按照預(yù)設(shè)的拆分子數(shù)據(jù)報文數(shù)量閾值,對所述數(shù)據(jù)報文進(jìn)行拆分,拆分獲得的子數(shù)據(jù)報文的長度是否小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間;
[0014]若是,則將所述數(shù)據(jù)報文拆分為數(shù)量小于等于所述拆分子數(shù)據(jù)報文數(shù)量閾值的子數(shù)據(jù)報文;
[0015]若否,則等待所述下游節(jié)點(diǎn)更新所述當(dāng)前緩存剩余空間,并根據(jù)更新后的當(dāng)前緩存剩余空間,重新執(zhí)行所述判斷拆分獲得的子數(shù)據(jù)報文的長度是否小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間的操作。
[0016]結(jié)合第一方面或第一方面的第一或第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文拆分為至少兩個子數(shù)據(jù)報文之后,且向所述下游節(jié)點(diǎn)逐個發(fā)送所述子數(shù)據(jù)報文之前,還包括:
[0017]所述當(dāng)前節(jié)點(diǎn)在各所述子數(shù)據(jù)報文中設(shè)置唯一的子標(biāo)識,并設(shè)置用于指示所述子標(biāo)識有效的使能位;
[0018]相應(yīng)地,所述向所述下游節(jié)點(diǎn)逐個發(fā)送所述子數(shù)據(jù)報文之后,還包括:
[0019]所述當(dāng)前節(jié)點(diǎn)接收所述下游節(jié)點(diǎn)返回的、攜帶有所述子標(biāo)識的確認(rèn)報文或否定確認(rèn)報文,并根據(jù)所述確認(rèn)報文或否定確認(rèn)報文所攜帶的所述子標(biāo)識,對重新播送緩存進(jìn)行
清理和/或進(jìn)行重傳。
[0020]第二方面,提供一種數(shù)據(jù)報文發(fā)送設(shè)備,包括:
[0021]判斷模塊,用于當(dāng)存在待發(fā)送的數(shù)據(jù)報文時,判斷下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間是否大于等于所述數(shù)據(jù)報文的長度;
[0022]發(fā)送處理模塊,用于若所述判斷模塊判斷為是,將所述數(shù)據(jù)報文發(fā)送至所述下游節(jié)點(diǎn);若所述判斷模塊判斷為否,將所述數(shù)據(jù)報文拆分為至少兩個子數(shù)據(jù)報文,并向所述下游節(jié)點(diǎn)逐個發(fā)送所述子數(shù)據(jù)報文,其中,所述子數(shù)據(jù)報文的長度小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間。
[0023]在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述待發(fā)送的數(shù)據(jù)報文包括數(shù)據(jù)報文發(fā)送設(shè)備從上游節(jié)點(diǎn)接收的構(gòu)成所述數(shù)據(jù)報文的全部子數(shù)據(jù)報文;相應(yīng)地,所述發(fā)送處理模塊還用于:
[0024]將構(gòu)成所述數(shù)據(jù)報文的全部子數(shù)據(jù)報文,合并為所述數(shù)據(jù)報文,并發(fā)送至所述下游節(jié)點(diǎn)。
[0025]在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述發(fā)送處理模塊用于:
[0026]判斷若按照預(yù)設(shè)的拆分子數(shù)據(jù)報文數(shù)量閾值對所述數(shù)據(jù)報文進(jìn)行拆分,拆分獲得的子數(shù)據(jù)報文的長度是否小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間;
[0027]若是,則將所述數(shù)據(jù)報文拆分為數(shù)量小于等于所述拆分子數(shù)據(jù)報文數(shù)量閾值的子數(shù)據(jù)報文;
[0028]若否,則等待所述下游節(jié)點(diǎn)更新所述當(dāng)前緩存剩余空間,并根據(jù)更新后的當(dāng)前緩存剩余空間,重新執(zhí)行所述判斷拆分獲得的子數(shù)據(jù)報文的長度是否小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間的操作。
[0029]結(jié)合第二方面或第 二方面的第一或第二種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述發(fā)送處理模塊還用于:
[0030]在將所述數(shù)據(jù)報文拆分為至少兩個子數(shù)據(jù)報文之后,且向所述下游節(jié)點(diǎn)逐個發(fā)送所述子數(shù)據(jù)報文之前,在各所述子數(shù)據(jù)報文中設(shè)置唯一的子標(biāo)識,并設(shè)置用于指示所述子標(biāo)識有效的使能位;
[0031]相應(yīng)地,在所述向所述下游節(jié)點(diǎn)逐個發(fā)送所述子數(shù)據(jù)報文之后,接收所述下游節(jié)點(diǎn)返回的、攜帶有所述子標(biāo)識的確認(rèn)報文或否定確認(rèn)報文,并根據(jù)所述確認(rèn)報文或否定確認(rèn)報文所攜帶的所述子標(biāo)識,對重新播送緩存進(jìn)行清理和/或進(jìn)行重傳。
[0032]第三方面,提供一種數(shù)據(jù)報文發(fā)送系統(tǒng),包括本發(fā)明提供的數(shù)據(jù)報文發(fā)送設(shè)備,以及與所述數(shù)據(jù)報文發(fā)送設(shè)備連接的下游節(jié)點(diǎn)。
[0033]根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)報文發(fā)送方法、設(shè)備及系統(tǒng),,由于當(dāng)前節(jié)點(diǎn)在發(fā)送數(shù)據(jù)報文時,根據(jù)鏈路上的緩存資源自動判斷是否對數(shù)據(jù)報文進(jìn)行拆分發(fā)送,即,如果下游節(jié)點(diǎn)提供的緩存空間不能夠容納待發(fā)送的完整的數(shù)據(jù)報文,只要滿足下游節(jié)點(diǎn)現(xiàn)有的緩存空間能夠容納待發(fā)送的數(shù)據(jù)報文的部分?jǐn)?shù)據(jù),就可以將大報文拆分為小報文,先行傳送完整報文的一部分到下游節(jié)點(diǎn),等到下游節(jié)點(diǎn)能夠繼續(xù)接收的時候,再發(fā)送剩余的TLP報文。因此,有效減少了鏈路空閑時間,避免了鏈路資源的浪費(fèi),并且降低了傳輸報文的整體延時。
【專利附圖】
【附圖說明】
[0034]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0035]圖1為本發(fā)明實(shí)施例的數(shù)據(jù)報文發(fā)送方法的典型應(yīng)用場景示意圖。
[0036]圖2為本發(fā)明實(shí)施例的數(shù)據(jù)報文發(fā)送方法的流程示意圖。
[0037]圖3為本發(fā)明實(shí)施例的數(shù)據(jù)報文發(fā)送方法中報文重傳的一個示例。
[0038]圖4為本發(fā)明實(shí)施例的數(shù)據(jù)報文發(fā)送設(shè)備的結(jié)構(gòu)示意圖。
[0039]圖5為本發(fā)明實(shí)施例的另一數(shù)據(jù)報文發(fā)送設(shè)備的結(jié)構(gòu)示意圖。
[0040]圖6為本發(fā)明實(shí)施例的數(shù)據(jù)報文發(fā)送系統(tǒng)的系統(tǒng)架構(gòu)圖。
【具體實(shí)施方式】
[0041]圖1為本發(fā)明實(shí)施例的數(shù)據(jù)報文發(fā)送方法的典型應(yīng)用場景示意圖。如圖1所示,該改進(jìn)的外圍部件互連總線(Peripheral Component InterconnectExpress, PCIE)體系的網(wǎng)絡(luò)為例,根據(jù)網(wǎng)絡(luò)中數(shù)據(jù)報文的傳輸過程,假設(shè)網(wǎng)絡(luò)中存在三類節(jié)點(diǎn),分別是上游(Upstream)節(jié)點(diǎn)11、當(dāng)前(Current)節(jié)點(diǎn)12以及下游(Downstream)節(jié)點(diǎn)13。其中,上游節(jié)點(diǎn)通過物理鏈路將數(shù)據(jù)報文發(fā)向當(dāng)前節(jié)點(diǎn)12,而當(dāng)前節(jié)點(diǎn)通過物理鏈路將數(shù)據(jù)報文發(fā)向下游節(jié)點(diǎn)13。并且,各節(jié)點(diǎn)例如應(yīng)用基于信用(Credit-Based)的機(jī)制,即使用信用點(diǎn)(Credit)來表示緩存空間,當(dāng)前節(jié)點(diǎn)12通過將下游節(jié)點(diǎn)13提供的Credit與待發(fā)送數(shù)據(jù)報文需消耗的Credit進(jìn)行比較,來判斷下游節(jié)點(diǎn)13能否容納該數(shù)據(jù)報文。
[0042]其中,上游節(jié)點(diǎn)11、當(dāng)前節(jié)點(diǎn)12以及下游節(jié)點(diǎn)13僅用于區(qū)分在傳輸一個數(shù)據(jù)報文時,各節(jié)點(diǎn)傳輸該數(shù)據(jù)報文的先后次序,而并非用于限制各節(jié)點(diǎn)在網(wǎng)絡(luò)中的位置。而且,上游節(jié)點(diǎn)11、當(dāng)前節(jié)點(diǎn)12以及下游節(jié)點(diǎn)13可以為網(wǎng)絡(luò)中的任意網(wǎng)絡(luò)設(shè)備,例如交換機(jī)、路由器或核心網(wǎng)設(shè)備等。下文中,結(jié)合圖1所示的應(yīng)用場景,對本發(fā)明實(shí)施例的數(shù)據(jù)報文發(fā)送方法進(jìn)行詳細(xì)說明。[0043]圖2為本發(fā)明實(shí)施例的數(shù)據(jù)報文發(fā)送方法的流程示意圖。如圖2所示,該數(shù)據(jù)報文發(fā)送方法包括:
[0044]步驟201,當(dāng)前節(jié)點(diǎn)存在待發(fā)送的數(shù)據(jù)報文時,判斷下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間是否大于等于所述數(shù)據(jù)報文的長度;
[0045]具體地,以應(yīng)用Credit-Based機(jī)制的PCIE體系的網(wǎng)絡(luò)為例,當(dāng)Current節(jié)點(diǎn)準(zhǔn)備向下游節(jié)點(diǎn)發(fā)送一個事務(wù)層包(Transaction Lay Packet, TLP)報文的時候,Current節(jié)點(diǎn)首先根據(jù)Downstream節(jié)點(diǎn)反饋回來的Credit,判斷Downstream節(jié)點(diǎn)是否能提供足夠的緩存空間用以接收該TLP報文。其中,Current節(jié)點(diǎn)獲取Downstream節(jié)點(diǎn)反饋的Credit的方式,既可以是由Current節(jié)點(diǎn)主動查詢,也可以由Downstream節(jié)點(diǎn)定時反饋,本文中不做限制。
[0046]例如網(wǎng)絡(luò)中預(yù)先約定I個Credit所對應(yīng)的存儲空間為a,其中a為自然數(shù),例如為2DW。若下游節(jié)點(diǎn)向Current節(jié)點(diǎn)提供的Credit是x,表明目前下游節(jié)點(diǎn)的數(shù)據(jù)接收能力(即當(dāng)前緩存剩余空間)是x*a個DW,例如,下游節(jié)點(diǎn)的數(shù)據(jù)緩存總的容量為8X 2DW=16DW,則當(dāng)下游節(jié)點(diǎn)的緩存處于空閑時,它向當(dāng)前節(jié)點(diǎn)提供的Credit為8。若當(dāng)前節(jié)點(diǎn)向下游節(jié)點(diǎn)發(fā)送TLP報文的長度為y個DW,其中y為自然數(shù),則需消耗的Credit為y/a個DW,例如為y/2個DW。
[0047]如果Downstream節(jié)點(diǎn)提供的Credit大于或者等于發(fā)送該TLP報文所需的Credit,則判定Downstream節(jié)點(diǎn)能夠接收該TLP報文,即Downstream節(jié)點(diǎn)的當(dāng)前緩存剩余空間大于等于該TLP報文的長度;反之,如果Downstream節(jié)點(diǎn)提供的Credit小于發(fā)送該TLP報文所需的Credit的話,則判定Downstream節(jié)點(diǎn)能夠接收該TLP報文,即Downstream節(jié)點(diǎn)的當(dāng)前緩存剩余空間小于該TLP報文的長度。
[0048]步驟202,若是,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文發(fā)送至所述下游節(jié)點(diǎn);若否,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文拆分為至少兩個子數(shù)據(jù)報文,并向所述下游節(jié)點(diǎn)逐個發(fā)送所述子數(shù)據(jù)報文,其中,所述子數(shù)據(jù)報文的長度小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間。
[0049]具體地,若通過步驟201判斷獲知Downstream節(jié)點(diǎn)的當(dāng)前緩存剩余空間大于等于該TLP報文的長度,則直接向Downstream節(jié)點(diǎn)發(fā)送該TLP報文。若通過步驟201判斷獲知Downstream節(jié)點(diǎn)的當(dāng)前緩存剩余空間小于該TLP報文的長度,則將該TLP報文拆分為多個子報文(下文中稱為,小TLP報文),以使每個小TLP報文的長度小于等于Downstream節(jié)點(diǎn)的當(dāng)前緩存剩余空間。
[0050]例如, 當(dāng)前需要傳送的TLP報文所需要的Credit是y,若將該TLP報文拆分為z個小TLP報文,則每個拆分后的小TLP報文所需的Credit就是y/z。其中,對于z的選取,應(yīng)滿足y/z小于等于X,其中X為下游節(jié)點(diǎn)提供的Credit。由于小TLP報文的長度小于等于Downstream節(jié)點(diǎn)的當(dāng)前緩存剩余空間,因此當(dāng)前節(jié)點(diǎn)可首先將一個小TLP報文發(fā)送至Downstream節(jié)點(diǎn),若Downstream節(jié)點(diǎn)接收該小TLP報文后的緩存剩余空間仍大于等于小TLP報文的長度,則當(dāng)前節(jié)點(diǎn)再向Downstream節(jié)點(diǎn)發(fā)送一個小TLP報文;若Downstream節(jié)點(diǎn)接收該小TLP報文后的緩存剩余空間小于小TLP報文的長度,則當(dāng)前節(jié)點(diǎn)等待Downstream節(jié)點(diǎn)的更新的當(dāng)前緩存剩余空間,并當(dāng)更新的當(dāng)前緩存剩余空間大于等于小TLP報文的長度時,當(dāng)前節(jié)點(diǎn)再向Downstream節(jié)點(diǎn)發(fā)送下一個小TLP報文。
[0051]根據(jù)上述實(shí)施例的數(shù)據(jù)報文發(fā)送方法,由于當(dāng)前節(jié)點(diǎn)發(fā)送數(shù)據(jù)報文時,根據(jù)鏈路上的緩存資源自動判斷是否對數(shù)據(jù)報文進(jìn)行拆分發(fā)送,即,如果下游節(jié)點(diǎn)提供的緩存空間不能夠容納待發(fā)送的完整的數(shù)據(jù)報文,只要滿足下游節(jié)點(diǎn)現(xiàn)有的緩存空間能夠容納待發(fā)送的數(shù)據(jù)報文的部分?jǐn)?shù)據(jù),就可以將大報文拆分為小報文,先行傳送完整報文的一部分到下游節(jié)點(diǎn),等到下游節(jié)點(diǎn)能夠繼續(xù)接收的時候,再發(fā)送剩余的TLP報文。因此,有效減少了鏈路空閑時間,避免了鏈路資源的浪費(fèi),并且降低了傳輸報文的整體延時。
[0052]進(jìn)一步地,在上述實(shí)施例的數(shù)據(jù)報文發(fā)送方法中,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文拆分為至少兩個子數(shù)據(jù)報文,包括:
[0053]所述當(dāng)前節(jié)點(diǎn)判斷,若按照預(yù)設(shè)的拆分子數(shù)據(jù)報文數(shù)量閾值,對所述數(shù)據(jù)報文進(jìn)行拆分,拆分獲得的子數(shù)據(jù)報文的長度是否小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間;
[0054]若是,則將所述數(shù)據(jù)報文拆分為數(shù)量小于等于所述拆分子數(shù)據(jù)報文數(shù)量閾值的子數(shù)據(jù)報文;[0055]若否,則等待所述下游節(jié)點(diǎn)更新所述當(dāng)前緩存剩余空間,并根據(jù)更新后的當(dāng)前緩存剩余空間,重新執(zhí)行所述判斷拆分獲得的子數(shù)據(jù)報文的長度是否小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間的操作。
[0056]具體地,當(dāng)前節(jié)點(diǎn)中例如預(yù)先設(shè)置有拆分子數(shù)據(jù)報文數(shù)量閾值,用于限制可拆分的子數(shù)據(jù)報文的最大數(shù)量。例如,拆分子數(shù)據(jù)報文數(shù)量閾值為4,同當(dāng)前節(jié)點(diǎn)在對待發(fā)送的TLP報文進(jìn)行拆分之前,先判斷是否滿足y/4 ( X,其中:X為下游節(jié)點(diǎn)提供的Credit,y為當(dāng)前需要傳送的TLP報文所需要的Credit。僅當(dāng)滿足y/4 ( x,當(dāng)前節(jié)點(diǎn)對TLP報文進(jìn)行拆分,例如拆分為4個小TLP報文,此外,若還滿足y/2 ( x,當(dāng)前節(jié)點(diǎn)還可以將TLP報文拆分為2個小TLP報文。
[0057]根據(jù)上述實(shí)施例的數(shù)據(jù)報文發(fā)送方法,由于在節(jié)點(diǎn)中預(yù)置拆分子數(shù)據(jù)報文數(shù)量閾值,能夠降低節(jié)點(diǎn)的硬件實(shí)現(xiàn)的復(fù)雜度。
[0058]進(jìn)一步地,在上述實(shí)施例的數(shù)據(jù)報文發(fā)送方法中,所述待發(fā)送的數(shù)據(jù)報文包括所述當(dāng)前節(jié)點(diǎn)從上游節(jié)點(diǎn)接收的構(gòu)成所述數(shù)據(jù)報文的全部子數(shù)據(jù)報文;
[0059]相應(yīng)地,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文發(fā)送至所述下游節(jié)點(diǎn),包括:
[0060]所述當(dāng)前節(jié)點(diǎn)將構(gòu)成所述數(shù)據(jù)報文的全部子數(shù)據(jù)報文,合并為所述數(shù)據(jù)報文,并發(fā)送至所述下游節(jié)點(diǎn)。
[0061]具體地,如果Current節(jié)點(diǎn)收到了 Upstream節(jié)點(diǎn)發(fā)送過來的拆分后的子數(shù)據(jù)報文,例如共4個,并且各子數(shù)據(jù)報文的數(shù)據(jù)量為4個DW,則這4個子數(shù)據(jù)報文的數(shù)據(jù)總量為16個DW。當(dāng)Current節(jié)點(diǎn)向Downstream節(jié)點(diǎn)再轉(zhuǎn)發(fā)的時候,若發(fā)現(xiàn)Downstream節(jié)點(diǎn)提供的Credit大于8,即16個DW,則當(dāng)前節(jié)點(diǎn)將該4個子數(shù)據(jù)報文合成原始的大TLP報文進(jìn)行傳輸。更為具體地,在具體實(shí)現(xiàn)中,各TLP報文具有唯一對應(yīng)的序列標(biāo)識(Sequence ID),用于在鏈路兩端實(shí)現(xiàn)TLP報文傳輸?shù)谋P驒C(jī)制。將TLP報文拆分獲得小TLP報文后,各小TLP報文均攜帶該Sequence ID,即由同一 TLP報文拆分獲得的小TLP報文攜帶有相同的Sequence ID。因此,Current節(jié)點(diǎn)可以根據(jù)是否連續(xù)接收到多個攜帶有相同Sequence ID的TLP報文,來判斷所接收的多個TLP報文是否為由同一 TLP報文拆分獲得的小TLP報文。
[0062]進(jìn)一步地,拆分獲得的各個小TLP報文中還可攜帶有由拆分節(jié)點(diǎn)設(shè)置的唯一子標(biāo)識(SubID),以及由拆分節(jié)點(diǎn)設(shè)置的用于指示子標(biāo)識有效的使能位。以上游節(jié)點(diǎn)對TLP報文進(jìn)行拆分,即當(dāng)前節(jié)點(diǎn)接收到拆分后的小TLP報文為例,進(jìn)行如下說明。[0063]例如,上游節(jié)點(diǎn)將原始TLP報文拆分為4個小TLP報文,并對各小TLP報文按照表I進(jìn)行設(shè)置。表1為SubID字段和子標(biāo)識使能位(SubID Enabled)的設(shè)置示例,在該示例中,例如使用PCIE協(xié)議,對TLP報文頭當(dāng)中的TLP處理提示信息(TLP Processing Hint, TPH)字段中的保留(Reserve)位進(jìn)行自定義擴(kuò)展,并將TLP報文頭的TH位設(shè)置為1,以指示當(dāng)前TLP中含有提示信息(Hint)。更具體地,Reserve位的長度為2個字節(jié),將其中的幾個比特設(shè)置為SubID字段,可以根據(jù)預(yù)設(shè)的拆分子數(shù)據(jù)報文數(shù)量閾值確定,例如,。拆分子數(shù)據(jù)報文數(shù)量閾值為4,則采用2比特作為SubID字段即可,若拆分子數(shù)據(jù)報文數(shù)量閾值為8,則需采用3比特作為SubID字段。此外,還將I比特設(shè)置為SubID Enabled字段。在表1中,以采用Bit O和Bit I作為SubID字段,并采用Bit 2作為SubID Enabled字段為例。
[0064]表1
[0065]
【權(quán)利要求】
1.一種數(shù)據(jù)報文發(fā)送方法,其特征在于,包括: 當(dāng)前節(jié)點(diǎn)存在待發(fā)送的數(shù)據(jù)報文時,判斷下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間是否大于等于所述數(shù)據(jù)報文的長度; 若是,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文發(fā)送至所述下游節(jié)點(diǎn);若否,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文拆分為至少兩個子數(shù)據(jù)報文,并向所述下游節(jié)點(diǎn)逐個發(fā)送所述子數(shù)據(jù)報文,其中,所述子數(shù)據(jù)報文的長度小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)報文發(fā)送方法,其特征在于,所述待發(fā)送的數(shù)據(jù)報文包括所述當(dāng)前節(jié)點(diǎn)從上游節(jié)點(diǎn)接收的構(gòu)成所述數(shù)據(jù)報文的全部子數(shù)據(jù)報文; 相應(yīng)地,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文發(fā)送至所述下游節(jié)點(diǎn),包括: 所述當(dāng)前節(jié)點(diǎn)將構(gòu)成所述數(shù)據(jù)報文的全部子數(shù)據(jù)報文,合并為所述數(shù)據(jù)報文,并發(fā)送至所述下游節(jié)點(diǎn)。
3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)報文發(fā)送方法,其特征在于,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文拆分為至少兩個子數(shù)據(jù)報文,包括: 所述當(dāng)前節(jié)點(diǎn)判斷,若按照預(yù)設(shè)的拆分子數(shù)據(jù)報文數(shù)量閾值,對所述數(shù)據(jù)報文進(jìn)行拆分,拆分獲得的子數(shù)據(jù)報文的長度是否小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間; 若是,則將所述數(shù)據(jù)報文拆分為數(shù)量小于等于所述拆分子數(shù)據(jù)報文數(shù)量閾值的子數(shù)據(jù)報文; 若否,則等待所述下游節(jié)點(diǎn)更新所述當(dāng)前緩存剩余空間,并根據(jù)更新后的當(dāng)前緩存剩余空間,重新執(zhí)行所述判斷拆分獲得的子數(shù)據(jù)報文的長度是否小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間的操作。
4.根據(jù)權(quán)利要求1-3任一所述的數(shù)據(jù)報文發(fā)送方法,其特征在于,所述當(dāng)前節(jié)點(diǎn)將所述數(shù)據(jù)報文拆分為至少兩個子數(shù)據(jù)報文之后,且向所述下游節(jié)點(diǎn)逐個發(fā)送所述子數(shù)據(jù)報文之前,還包括: 所述當(dāng)前節(jié)點(diǎn)在各所述子數(shù)據(jù)報文中設(shè)置唯一的子標(biāo)識,并設(shè)置用于指示所述子標(biāo)識有效的使能位; 相應(yīng)地,所述向所述下游節(jié)點(diǎn)逐個發(fā)送所述子數(shù)據(jù)報文之后,還包括: 所述當(dāng)前節(jié)點(diǎn)接收所述下游節(jié)點(diǎn)返回的、攜帶有所述子標(biāo)識的確認(rèn)報文或否定確認(rèn)報文,并根據(jù)所述確認(rèn)報文或否定確認(rèn)報文所攜帶的所述子標(biāo)識,對重新播送緩存進(jìn)行清理和/或進(jìn)行重傳。
5.一種數(shù)據(jù)報文發(fā)送設(shè)備,其特征在于,包括: 判斷模塊,用于當(dāng)存在待發(fā)送的數(shù)據(jù)報文時,判斷下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間是否大于等于所述數(shù)據(jù)報文的長度; 發(fā)送處理模塊,用于若所述判斷模塊判斷為是,將所述數(shù)據(jù)報文發(fā)送至所述下游節(jié)點(diǎn);若所述判斷模塊判斷為否,將所述數(shù)據(jù)報文拆分為至少兩個子數(shù)據(jù)報文,并向所述下游節(jié)點(diǎn)逐個發(fā)送所述子數(shù)據(jù)報文,其中,所述子數(shù)據(jù)報文的長度小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)報文發(fā)送設(shè)備,其特征在于,所述待發(fā)送的數(shù)據(jù)報文包括數(shù)據(jù)報文發(fā)送設(shè)備從上游節(jié)點(diǎn)接收的構(gòu)成所述數(shù)據(jù)報文的全部子數(shù)據(jù)報文;相應(yīng)地,所述發(fā)送處理模塊還用于:將構(gòu)成所述數(shù)據(jù)報文的全部子數(shù)據(jù)報文,合并為所述數(shù)據(jù)報文,并發(fā)送至所述下游節(jié)點(diǎn)。
7.根據(jù)權(quán)利要求5所述的數(shù)據(jù)報文發(fā)送設(shè)備,其特征在于,所述發(fā)送處理模塊用于: 判斷若按照預(yù)設(shè)的拆分子數(shù)據(jù)報文數(shù)量閾值對所述數(shù)據(jù)報文進(jìn)行拆分,拆分獲得的子數(shù)據(jù)報文的長度是否小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間; 若是,則將所述數(shù)據(jù)報文拆分為數(shù)量小于等于所述拆分子數(shù)據(jù)報文數(shù)量閾值的子數(shù)據(jù)報文; 若否,則等待所述下游節(jié)點(diǎn)更新所述當(dāng)前緩存剩余空間,并根據(jù)更新后的當(dāng)前緩存剩余空間,重新執(zhí)行所述判斷拆分獲得的子數(shù)據(jù)報文的長度是否小于等于所述下游節(jié)點(diǎn)的當(dāng)前緩存剩余空間的操作。
8.根據(jù)權(quán)利要求5-7任一所述的數(shù)據(jù)報文發(fā)送設(shè)備,其特征在于,所述發(fā)送處理模塊還用于: 在將所述數(shù)據(jù)報文拆分為至少兩個子數(shù)據(jù)報文之后,且向所述下游節(jié)點(diǎn)逐個發(fā)送所述子數(shù)據(jù)報文之前,在各所述子數(shù)據(jù)報文中設(shè)置唯一的子標(biāo)識,并設(shè)置用于指示所述子標(biāo)識有效的使能位; 相應(yīng)地,在所述向所述下游節(jié)點(diǎn)逐個發(fā)送所述子數(shù)據(jù)報文之后,接收所述下游節(jié)點(diǎn)返回的、攜帶有所述子標(biāo)識的確認(rèn)報文或否定確認(rèn)報文,并根據(jù)所述確認(rèn)報文或否定確認(rèn)報文所攜帶的所述子標(biāo)識,對重新播送緩存進(jìn)行清理和/或進(jìn)行重傳。
9.一種數(shù)據(jù)報文發(fā)送系統(tǒng),其 特征在于,包括權(quán)利要求5-8任一所述的數(shù)據(jù)報文發(fā)送設(shè)備,以及與所述數(shù)據(jù)報文發(fā)送設(shè)備連接的下游節(jié)點(diǎn)。
【文檔編號】H04L12/70GK103905300SQ201210572445
【公開日】2014年7月2日 申請日期:2012年12月25日 優(yōu)先權(quán)日:2012年12月25日
【發(fā)明者】馮煜晶, 侯銳, 張立新, 郭旭斌 申請人:華為技術(shù)有限公司, 中國科學(xué)院計算技術(shù)研究所