專利名稱:一種數(shù)據(jù)轉(zhuǎn)發(fā)方法、裝置及網(wǎng)絡(luò)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)轉(zhuǎn)發(fā)方法、裝置及網(wǎng)絡(luò)設(shè)備。
背景技術(shù):
高速以太網(wǎng)是數(shù)據(jù)通信系統(tǒng)的核心部分,用于匯集來自眾多邊緣網(wǎng)絡(luò)的數(shù)據(jù),并通過相應(yīng)的數(shù)據(jù)隊列將數(shù)據(jù)轉(zhuǎn)發(fā)出去。其中,高速以太網(wǎng)主要通過內(nèi)部的路由器完成數(shù)據(jù)的轉(zhuǎn)發(fā)。圖I為現(xiàn)有技術(shù)中高速以太網(wǎng)內(nèi)部的路由器轉(zhuǎn)發(fā)數(shù)據(jù)的過程,具體包括以下步驟SlOl :路由器接收邊緣網(wǎng)絡(luò)發(fā)送的數(shù)據(jù),并保存該數(shù)據(jù)。 S102 :生成該數(shù)據(jù)對應(yīng)的描述符,并將生成的該描述符插入到轉(zhuǎn)發(fā)該數(shù)據(jù)所要采用的數(shù)據(jù)隊列中的末尾。其中,路由器預(yù)先建立了多個數(shù)據(jù)隊列,可以根據(jù)接收到的數(shù)據(jù)的數(shù)據(jù)類型、發(fā)送該數(shù)據(jù)的發(fā)送方、接收該數(shù)據(jù)的接收方等信息建立不同的數(shù)據(jù)隊列。S103:按照該數(shù)據(jù)隊列中各描述符排列的先后順序,依次調(diào)度該數(shù)據(jù)隊列中的每個描述符對應(yīng)的數(shù)據(jù)并轉(zhuǎn)發(fā)。在實際應(yīng)用中,通常要求路由器以穩(wěn)定的速率轉(zhuǎn)發(fā)數(shù)據(jù)。在判斷一個路由器轉(zhuǎn)發(fā)數(shù)據(jù)的速率是否穩(wěn)定時,主要是根據(jù)路由器在兩個相同的時間段內(nèi)分別調(diào)度并轉(zhuǎn)發(fā)數(shù)據(jù)的數(shù)據(jù)量的差值進行判斷,如果差值較大,則說明路由器轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性較差,如果差值較小,則說明路由器轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性較好。然而,在圖I所示的步驟S103中,路由器在調(diào)度數(shù)據(jù)隊列中的描述符對應(yīng)的數(shù)據(jù)并轉(zhuǎn)發(fā)時,每次只調(diào)度一個描述符對應(yīng)的數(shù)據(jù)進行轉(zhuǎn)發(fā),也即路由器一次只調(diào)度一個數(shù)據(jù)并轉(zhuǎn)發(fā)。而由于需要轉(zhuǎn)發(fā)的每個數(shù)據(jù)的長度并不是固定的,因此在現(xiàn)有技術(shù)中,不可避免的會出現(xiàn)這種情況在一個時間段內(nèi),路由器調(diào)度并轉(zhuǎn)發(fā)的大多數(shù)數(shù)據(jù)是長度較短的短數(shù)據(jù),而在另一個時間段內(nèi),路由器調(diào)度并轉(zhuǎn)發(fā)的大多數(shù)數(shù)據(jù)是長度較長的長數(shù)據(jù)。甚至出現(xiàn)極端的情況路由器在一個時間段內(nèi)調(diào)度并轉(zhuǎn)發(fā)的所有數(shù)據(jù)都是短數(shù)據(jù),在另一個時間段內(nèi)調(diào)度并轉(zhuǎn)發(fā)的所有數(shù)據(jù)都是長數(shù)據(jù)。這就會導致路由器在兩個相同的時間段內(nèi)調(diào)度并轉(zhuǎn)發(fā)數(shù)據(jù)的數(shù)據(jù)量差異很大,從而降低路由器轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種數(shù)據(jù)轉(zhuǎn)發(fā)方法、裝置及網(wǎng)絡(luò)設(shè)備,用以解決現(xiàn)有技術(shù)中路由器轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性較低的問題。本發(fā)明實施例提供的一種數(shù)據(jù)轉(zhuǎn)發(fā)方法,包括接收并保存數(shù)據(jù),確定所述數(shù)據(jù)所屬的數(shù)據(jù)隊列,并生成所述數(shù)據(jù)對應(yīng)的描述符;
確定當前所述數(shù)據(jù)隊列中的最后一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的第一和值,將生成的描述符對應(yīng)的數(shù)據(jù)的長度與所述第一和值相加得到第二和值;判斷所述第二和值是否大于規(guī)定長度;若是,則新建一個鏈表塊并插入到所述數(shù)據(jù)隊列的末尾,并將所述生成的描述符插入到新建的鏈表塊中,否則,將所述生成的描述符插入到所述最后一個鏈表塊中;在轉(zhuǎn)發(fā)所述數(shù)據(jù)隊列中的描述符對應(yīng)的數(shù)據(jù)時,按照所述數(shù)據(jù)隊列中各鏈表塊排序的先后順序,依次調(diào)度每個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)并轉(zhuǎn)發(fā)。本發(fā)明實施例提供的一種數(shù)據(jù)轉(zhuǎn)發(fā)裝置,包括緩存管理單元,用于接收并保存數(shù)據(jù),確定所述數(shù)據(jù)所屬的數(shù)據(jù)隊列,并生成所述 數(shù)據(jù)對應(yīng)的描述符;鏈表輸入單元,用于確定當前所述數(shù)據(jù)隊列中的最后一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)長度的第一和值,將生成的描述符對應(yīng)的數(shù)據(jù)的長度與所述第一和值相加得到第二和值;判斷所述第二和值是否大于規(guī)定長度;若是,則新建一個鏈表塊并插入到所述數(shù)據(jù)隊列的末尾,將所述生成的描述符插入到新建的鏈表塊中,否則,將所述生成的描述符插入到所述最后一個鏈表塊中;鏈表輸出單元,用于在轉(zhuǎn)發(fā)所述數(shù)據(jù)隊列中的描述符對應(yīng)的數(shù)據(jù)時,按照所述數(shù)據(jù)隊列中各鏈表塊排序的先后順序,依次調(diào)度每個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)并轉(zhuǎn)發(fā)。本發(fā)明實施例提供的一種網(wǎng)絡(luò)設(shè)備,包括如上所述的數(shù)據(jù)轉(zhuǎn)發(fā)裝置。本發(fā)明實施例提供一種數(shù)據(jù)轉(zhuǎn)發(fā)方法、裝置及網(wǎng)絡(luò)設(shè)備,該方法路由器生成接收到的數(shù)據(jù)對應(yīng)的描述符,判斷將該描述符插入到相應(yīng)數(shù)據(jù)隊列中的最后一個鏈表塊中后,最后一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的和值是否大于規(guī)定長度,若是,則新建一個鏈表塊插入到該數(shù)據(jù)隊列的末尾,并將生成的描述符插入到新建的鏈表塊中,否則將生成的描述符插入到最后一個鏈表塊中,并在轉(zhuǎn)發(fā)該數(shù)據(jù)隊列中的描述符對應(yīng)的數(shù)據(jù)時,一次調(diào)度該數(shù)據(jù)隊列中的一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)并轉(zhuǎn)發(fā)。通過上述方法,路由器在連續(xù)接收到短數(shù)據(jù)或者長數(shù)據(jù)時,均可以保證一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的和值接近于規(guī)定長度,但不超過規(guī)定長度,因此每次調(diào)度一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)進行轉(zhuǎn)發(fā),則可以在一定程度上提高路由器轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性。
圖I為現(xiàn)有技術(shù)中高速以太網(wǎng)內(nèi)部的路由器轉(zhuǎn)發(fā)數(shù)據(jù)的過程;圖2為本發(fā)明實施例提供的數(shù)據(jù)轉(zhuǎn)發(fā)過程;圖3為本發(fā)明實施例提供的將接收到的數(shù)據(jù)對應(yīng)的描述符插入到相應(yīng)數(shù)據(jù)隊列中的詳細過程;圖4為本發(fā)明實施例提供的數(shù)據(jù)轉(zhuǎn)發(fā)裝置結(jié)構(gòu)示意圖。
具體實施例方式由于現(xiàn)有技術(shù)中路由器調(diào)度一個數(shù)據(jù)隊列中的描述符對應(yīng)的數(shù)據(jù)進行轉(zhuǎn)發(fā)時,一次只調(diào)度一個描述對應(yīng)的數(shù)據(jù)進行轉(zhuǎn)發(fā),也即一次轉(zhuǎn)發(fā)一個數(shù)據(jù),當路由器在一個時間段內(nèi)連續(xù)收到長度較短的短數(shù)據(jù),在下一個時間段內(nèi)連續(xù)收到長度較長的長數(shù)據(jù)時,就會導致路由器在這兩個時間段轉(zhuǎn)發(fā)數(shù)據(jù)的數(shù)據(jù)量差異很大,從而降低路由器轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性。本發(fā)明實施例為了提高路由器轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性,在數(shù)據(jù)隊列中建立鏈表塊,每個鏈表塊中包含若干個描述符,并且使每個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的和值接近于規(guī)定長度,但不超過規(guī)定長度,在調(diào)度并轉(zhuǎn)發(fā)該數(shù)據(jù)隊列中包含的描述符對應(yīng)的數(shù)據(jù)時,一次調(diào)度該數(shù)據(jù)隊列中的一個鏈表塊包含的所有描述符對應(yīng)的數(shù)據(jù)進行轉(zhuǎn)發(fā)。采用本發(fā)明實施例提供的數(shù)據(jù)轉(zhuǎn)發(fā)方法時,即使路由器在一個時間段內(nèi)連續(xù)收到短數(shù)據(jù),在下一個時間段內(nèi)連續(xù)收到長數(shù)據(jù),則數(shù)據(jù)隊列中的每個鏈表塊中包含的描述符對應(yīng)的數(shù)據(jù)的長度的和值仍然接近于固定長度,因此每次調(diào)度一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)進行轉(zhuǎn)發(fā),則可以在一定程度上提高路由器轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性。下面結(jié)合說明書附圖,對本發(fā)明實施例進行詳細描述。
圖2為本發(fā)明實施例提供的數(shù)據(jù)轉(zhuǎn)發(fā)過程,具體包括以下步驟S201 :接收并保存數(shù)據(jù),確定該數(shù)據(jù)所屬的數(shù)據(jù)隊列,并生成該數(shù)據(jù)對應(yīng)的描述符。在本發(fā)明實施例中,路由器確定接收到的數(shù)據(jù)所屬的數(shù)據(jù)隊列,也即確定轉(zhuǎn)發(fā)該數(shù)據(jù)所要采用的數(shù)據(jù)隊列。另外,路由器在生成該數(shù)據(jù)對應(yīng)的描述符時,可以根據(jù)保存該數(shù)據(jù)的存儲地址、該數(shù)據(jù)的長度、確定的該數(shù)據(jù)所屬的數(shù)據(jù)隊列的隊列標識,生成該數(shù)據(jù)對應(yīng)的描述符。生成的該數(shù)據(jù)對應(yīng)的描述符的格式如表I所示。
AddressLength Queue ID表I在表I中,Address即為保存該數(shù)據(jù)的存儲地址,Length即為該數(shù)據(jù)的長度,QueueID即為該數(shù)據(jù)所屬的數(shù)據(jù)隊列的隊列標識。由表I可見,生成的該數(shù)據(jù)對應(yīng)的描述符中包含了該數(shù)據(jù)的存儲地址、該數(shù)據(jù)的長度、確定的該數(shù)據(jù)所屬的數(shù)據(jù)隊列的隊列標識。S202:確定當前該數(shù)據(jù)隊列中的最后一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)長度的第一和值,將生成的描述符對應(yīng)的數(shù)據(jù)的長度與該第一和值相加得到第二和值。在本發(fā)明實施例中,一個數(shù)據(jù)隊列由順序排列的若干個鏈表塊(Link Block, LB)構(gòu)成,每個LB中包含若干個描述符,如表2所不。
LBl LB2 ~LbF表2在表2中,該數(shù)據(jù)隊列共包含3個LB,按各LB排序的先后順序依次為LBl、LB2、LB3。每個LB中均包含若干個描述符。當生成了接收到的數(shù)據(jù)對應(yīng)的描述符后,路由器先確定該數(shù)據(jù)所屬的數(shù)據(jù)隊列中的最后一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)長度的和值,記為第一和值。然后將生成的描述符對應(yīng)的數(shù)據(jù)的長度(也即接收到的數(shù)據(jù)的長度)與第一和值相加得到第二和值。繼續(xù)以表2為例進行說明,由于該數(shù)據(jù)隊列中的最后一個LB為LB3,因此路由器先確定當前LB3中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的第一和值,在將接收到的數(shù)據(jù)的長度與第一和值相加得到第二和值。S203 :判斷該第二和值是否大于規(guī)定長度,若是,則執(zhí)行步驟S204,否則執(zhí)行步驟S205。S204:新建一個鏈表塊并插入到該數(shù)據(jù)隊列的末尾,并將生成的描述符插入到新建的鏈表塊中,執(zhí)行步驟S206。S205 :將生成的描述符插入到該最后一個鏈表塊中,執(zhí)行步驟S206。繼續(xù)以表2為例進行說明,如果確定的第二和值大于規(guī)定長度,貝U建立一個鏈表塊,記為LB4,并插入到該數(shù)據(jù)隊列的末尾,此時該數(shù)據(jù)隊列中的最后一個LB即為LB4,并將生成的描述符插入到LB4中。如果確定的第二和值不大于規(guī)定長度,則將生成的描述符插入到LB3中。通過步驟S202 S205,則可以保證一個LB中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度之和接近于規(guī)定長度,但不超過規(guī)定長度。S206:在轉(zhuǎn)發(fā)該數(shù)據(jù)隊列中的描述符對應(yīng)的數(shù)據(jù)時,按照該數(shù)據(jù)隊列中個鏈表塊排序的先后順序,依次調(diào)度每個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)并轉(zhuǎn)發(fā)。在本發(fā)明實施例中,路由器在轉(zhuǎn)發(fā)該數(shù)據(jù)隊列中的描述符對應(yīng)的數(shù)據(jù)時,并非是每次只調(diào)度一個數(shù)據(jù)進行轉(zhuǎn)發(fā)的,而是每次調(diào)度一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)進行轉(zhuǎn)發(fā)的,而由于一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度之和接近于規(guī)定長度,因此即使路由器在一個時間段內(nèi)連續(xù)接收到短數(shù)據(jù),在下一個時間段內(nèi)連續(xù)接收到長數(shù)據(jù),也仍然可以保證路由器在這兩個時間段內(nèi)轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性。例如,假設(shè)路由器先連續(xù)接收到8個長度均為64字節(jié)的短數(shù)據(jù),又連續(xù)接收到3個長度均為I. 5K字節(jié)的長數(shù)據(jù),則如果路由器在第一時間段內(nèi)連續(xù)轉(zhuǎn)發(fā)8個長度均為64字節(jié)的短數(shù)據(jù),在第二時間段內(nèi)連續(xù)轉(zhuǎn)發(fā)3個長度均為I. 5K字節(jié)的長數(shù)據(jù),必然會導致路由器在這兩個時間段內(nèi)轉(zhuǎn)發(fā)數(shù)據(jù)的數(shù)據(jù)量差異較大,降低了路由器轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性。而采用如圖2所示的方法轉(zhuǎn)發(fā)數(shù)據(jù)時,假設(shè)規(guī)定長度設(shè)為2K字節(jié),則路由器先新建一個LB,記為LB1,將8個長度均為64字節(jié)的短數(shù)據(jù)分別對應(yīng)的描述符,以及第I個長度為I. 5K字節(jié)的長數(shù)據(jù)分別對應(yīng)的描述符插入到LBl中。由于此時LBl中包含的9個描述 符對應(yīng)的數(shù)據(jù)的長度的和值已經(jīng)達到規(guī)定長度(2K字節(jié)),因此再建立一個LB,記為LB2,將第2個長度為I. 5K字節(jié)的長數(shù)據(jù)對應(yīng)的描述符插入到LB2中。類似的,再建立LB3,將第3個長度為I. 5K字節(jié)的長數(shù)據(jù)對應(yīng)的描述符插入到LB3中??梢?,數(shù)據(jù)隊列中包含的3個LB(LB1、LB2、LB3)中分別包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的和值分別為2K字節(jié)、I. 5K字節(jié)、I. 5K字節(jié)。在調(diào)度并轉(zhuǎn)發(fā)該數(shù)據(jù)隊列中的描述符對應(yīng)的數(shù)據(jù)時,每次調(diào)度一個LB中包含的所有描述符對應(yīng)的數(shù)據(jù)進行轉(zhuǎn)發(fā),因此每次調(diào)度并轉(zhuǎn)發(fā)的數(shù)據(jù)量均接近于2K字節(jié),從而,路由器在任一時間段內(nèi)轉(zhuǎn)發(fā)的數(shù)據(jù)量均接近于2K字節(jié)的若干倍,因此即使路由器在一個時間段內(nèi)連續(xù)接收到短數(shù)據(jù),在下一個時間段內(nèi)連續(xù)接收到長數(shù)據(jù),也仍然可以保證路由器在這兩個時間段內(nèi)轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性。另外,由于路由器一次調(diào)度并轉(zhuǎn)發(fā)的多個數(shù)據(jù)的數(shù)據(jù)量接近于規(guī)定長度,因此可以保證每秒轉(zhuǎn)發(fā)數(shù)據(jù)的數(shù)據(jù)量基本固定,從而也提高了控制數(shù)據(jù)轉(zhuǎn)發(fā)速率的準確性。并且,由上例也可以看出,現(xiàn)有技術(shù)中路由器一次只調(diào)度并轉(zhuǎn)發(fā)一個數(shù)據(jù),而本發(fā)明實施例提供的方法中路由器一次調(diào)度并轉(zhuǎn)發(fā)多個數(shù)據(jù),因此也提高了路由器轉(zhuǎn)發(fā)數(shù)據(jù)的效率。另外,由于路由器調(diào)度并轉(zhuǎn)發(fā)一次短數(shù)據(jù)所需要的時間小于調(diào)度并轉(zhuǎn)發(fā)一次長數(shù)據(jù)所需要的時間,因此現(xiàn)有技術(shù)中當路由器連續(xù)接收到短數(shù)據(jù)時,就需要頻繁的進行調(diào)度轉(zhuǎn)發(fā),使路由器的負擔增大。而本發(fā)明實施例提供的方法中路由器一次調(diào)度并轉(zhuǎn)發(fā)多個數(shù)據(jù),并且調(diào)度轉(zhuǎn)發(fā)的數(shù)據(jù)量接近于規(guī)定長度,因此路由器即使連續(xù)接收到短數(shù)據(jù),也不需要頻繁的進行調(diào)度轉(zhuǎn)發(fā),從而也減輕了路由器的負擔。 較佳的,為了進一步提高路由器在兩個相同的時間段內(nèi)轉(zhuǎn)發(fā)的數(shù)據(jù)量的差異,以進一步提高路由器轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性,本發(fā)明實施例中一個數(shù)據(jù)隊列中包含的每個鏈表塊可以對應(yīng)不同的規(guī)定長度。其中,一個鏈表塊對應(yīng)的規(guī)定長度由可變長度與預(yù)先設(shè)定的固定長度決定,可變長度由該鏈表塊的前一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的和值與該固定長度的差值決定。具體的,在確定一個鏈表塊對應(yīng)的規(guī)定長度時,先確定該鏈表塊的前一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的第三和值,根據(jù)預(yù)先設(shè)定的固定長度,確定該固定長度減第三和值的差值,確定的該差值就是規(guī)定長度中的可變長度。確定了可變長度之后,確定可變長度與預(yù)先設(shè)定的該固定長度的第四和值,作為該鏈表塊對應(yīng)的規(guī)定長度。相應(yīng)的,在圖2所示的步驟S203中,判斷第二和值是否大與規(guī)定長度的方法具體為在該數(shù)據(jù)隊列中確定該最后一個鏈表塊的前一個鏈表塊,確定該前一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的第三和值,根據(jù)預(yù)先設(shè)定的固定長度,確定該固定長度減第三和值的差值,再將該固定長度與該差值相加得到第四和值,判斷第二和值是否大于第四和值,若是,則確定第二和值大于規(guī)定長度,否則確定第二和值不大于規(guī)定長度。繼續(xù)以表2為例進行說明,確定數(shù)據(jù)隊列中的LB3中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的第一和值,再確定生成的描述符對應(yīng)的數(shù)據(jù)的長度與第一和值相加得到的第二和值之后,確定前一個鏈表塊(LB2)中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的第三和值。假設(shè)LB2中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的第三和值為K,預(yù)先設(shè)定的固定長度為n,則確定該固定長度減第三和值的差值為n-K,將固定長度與該差值相加得到的第四和值即為2η-Κ,該第四和值就是LB3對應(yīng)的規(guī)定長度。在判斷第二和值是否大于規(guī)定長度時,則判斷第二和值是否大于2η-Κ,若大于,則確定第二和值大于規(guī)定長度,執(zhí)行步驟S204,否則,確定第二和值不大于規(guī)定長度,執(zhí)行步驟S205。由此可以看出,LB2中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的和值為K,而LB3對應(yīng)的規(guī)定長度為2η-Κ,二者的和值即為2η。采用該方法設(shè)定一個數(shù)據(jù)隊列中每個LB對應(yīng)的規(guī)定長度時,任意兩個相鄰的LB對應(yīng)的規(guī)定長度相加的和值均為固定長度的兩倍。從而,如果在一個時間段內(nèi),路由器可以對該數(shù)據(jù)隊列進行m次調(diào)度,則這m次調(diào)度并轉(zhuǎn)發(fā)的數(shù)據(jù)量即為mn±lmax,Imax為最長數(shù)據(jù)的長度,也即,理想情況下路由器在該時間段內(nèi)路由器轉(zhuǎn)發(fā)的數(shù)據(jù)量為mn,實際應(yīng)用中在該時間段內(nèi)轉(zhuǎn)發(fā)的數(shù)據(jù)量是在mn上下不超過Imax的范圍內(nèi)浮動,因此路由器在兩個相同時間段內(nèi)轉(zhuǎn)發(fā)的數(shù)據(jù)量的差異最多不會超過21_,進而提高了路由器轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性。在圖2所示的步驟S204中,新建一個鏈表快并插入到該數(shù)據(jù)隊列的末尾的方法具體為根據(jù)預(yù)先設(shè)定的最短數(shù)據(jù)長度,確定預(yù)先設(shè)定的固定長度與該最短數(shù)據(jù)長度的比值,新建一個長度大于該比值的鏈表塊,并插入到該數(shù)據(jù)隊列的末尾,將新建的鏈表塊重新作為該數(shù)據(jù)隊列的最后一個鏈表塊。其中,預(yù)先設(shè)定的最短數(shù)據(jù)長度就是路由器可能接收到的長度最短的數(shù)據(jù)的長度。采用上述方法新建鏈表塊的原因在于,建立了鏈表塊之后,并不能預(yù)知將要在該鏈表塊中插入多少個描述符,而如果一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)都是最短的數(shù)據(jù),那么這個鏈表塊中包含的描述符的數(shù)量最大,因此建立的每個鏈表塊均要求至少
可以容納最大數(shù)量的描述符,該最大數(shù)量即為f,其中,η為預(yù)先設(shè)定的固定長度,Imin為最
min
短數(shù)據(jù)長度。本發(fā)明實施例提供了一種鏈表塊的格式,如表3所不。
權(quán)利要求
1.一種數(shù)據(jù)轉(zhuǎn)發(fā)方法,其特征在于,包括 接收并保存數(shù)據(jù),確定所述數(shù)據(jù)所屬的數(shù)據(jù)隊列,并生成所述數(shù)據(jù)對應(yīng)的描述符;確定當前所述數(shù)據(jù)隊列中的最后一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的第一和值,將生成的描述符對應(yīng)的數(shù)據(jù)的長度與所述第一和值相加得到第二和值; 判斷所述第二和值是否大于規(guī)定長度; 若是,則新建一個鏈表塊并插入到所述數(shù)據(jù)隊列的末尾,并將所述生成的描述符插入到新建的鏈表塊中,否則,將所述生成的描述符插入到所述最后一個鏈表塊中; 在轉(zhuǎn)發(fā)所述數(shù)據(jù)隊列中的描述符對應(yīng)的數(shù)據(jù)時,按照所述數(shù)據(jù)隊列中各鏈表塊排序的先后順序,依次調(diào)度每個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)并轉(zhuǎn)發(fā)。
2.如權(quán)利要求I所述的方法,其特征在于,生成所述數(shù)據(jù)對應(yīng)的描述符,具體包括 根據(jù)保存所述數(shù)據(jù)的存儲地址、所述數(shù)據(jù)的長度、確定的所述數(shù)據(jù)所屬的數(shù)據(jù)隊列的隊列標識,生成所述數(shù)據(jù)對應(yīng)的描述符; 按照所述數(shù)據(jù)隊列中各鏈表塊排序的先后順序,依次調(diào)度每個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)并轉(zhuǎn)發(fā),具體包括 按照所述數(shù)據(jù)隊列中各鏈表塊排序的先后順序,依次針對每個鏈表塊,讀取該鏈表塊中包含的所有描述符; 針對讀取的每個描述符,根據(jù)該描述符中包含的存儲地址,讀取該描述符對應(yīng)的數(shù)據(jù)并轉(zhuǎn)發(fā)。
3.如權(quán)利要求I所述的方法,其特征在于,判斷所述第二和值是否大于規(guī)定長度,具體包括 在所述數(shù)據(jù)隊列中確定所述最后一個鏈表塊的前一個鏈表塊,確定所述前一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的第三和值; 根據(jù)預(yù)先設(shè)定的固定長度,確定所述固定長度減所述第三和值的差值,將所述固定長度與所述差值相加得到第四和值; 判斷所述第二和值是否大于第四和值,若是,則確定所述第二和值大于規(guī)定長度,否則確定所述第二和值不大于規(guī)定長度。
4.如權(quán)利要求3所述的方法,其特征在于,新建一個鏈表塊并插入到所述數(shù)據(jù)隊列的末尾,具體包括 根據(jù)預(yù)先設(shè)定的最短數(shù)據(jù)長度,確定所述固定長度與所述最短數(shù)據(jù)長度的比值; 新建一個長度大于所述比值的鏈表塊,并插入到所述數(shù)據(jù)隊列的末尾,將新建的鏈表塊重新作為所述數(shù)據(jù)隊列的最后一個鏈表塊。
5.如權(quán)利要求I所述的方法,其特征在于,依次調(diào)度每個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)并轉(zhuǎn)發(fā)之后,所述方法還包括 在所述數(shù)據(jù)隊列中刪除已轉(zhuǎn)發(fā)的數(shù)據(jù)對應(yīng)的描述符所在的鏈表塊。
6.一種數(shù)據(jù)轉(zhuǎn)發(fā)裝置,其特征在于,包括 緩存管理單元,用于接收并保存數(shù)據(jù),確定所述數(shù)據(jù)所屬的數(shù)據(jù)隊列,并生成所述數(shù)據(jù)對應(yīng)的描述符; 鏈表輸入單元,用于確定當前所述數(shù)據(jù)隊列中的最后一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)長度的第一和值,將生成的描述符對應(yīng)的數(shù)據(jù)的長度與所述第一和值相加得到第二和值;判斷所述第二和值是否大于規(guī)定長度;若是,則新建一個鏈表塊并插入到所述數(shù)據(jù)隊列的末尾,將所述生成的描述符插入到新建的鏈表塊中,否則,將所述生成的描述符插入到所述最后一個鏈表塊中; 鏈表輸出單元,用于在轉(zhuǎn)發(fā)所述數(shù)據(jù)隊列中的描述符對應(yīng)的數(shù)據(jù)時,按照所述數(shù)據(jù)隊列中各鏈表塊排序的先后順序,依次調(diào)度每個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)并轉(zhuǎn)發(fā)。
7.如權(quán)利要求6所述的裝置,其特征在于,所述緩存管理單元具體用于,根據(jù)保存所述數(shù)據(jù)的存儲地址、所述數(shù)據(jù)的長度、確定的所述數(shù)據(jù)所屬的數(shù)據(jù)隊列的隊列標識,生成所述數(shù)據(jù)對應(yīng)的描述符; 所述鏈表輸出單元具體用于,按照所述數(shù)據(jù)隊列中各鏈表塊排序的先后順序,依次針對每個鏈表塊,讀取該鏈表塊中包含的所有描述符,針對讀取的每個描述符,根據(jù)該描述符中包含的存儲地址,讀取該描述符對應(yīng)的數(shù)據(jù)并轉(zhuǎn)發(fā)。
8.如權(quán)利要求6所述的裝置,其特征在于,所述鏈表輸入單元具體用于,在所述數(shù)據(jù)隊列中確定所述最后一個鏈表塊的前一個鏈表塊,確定所述前一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的第三和值,根據(jù)預(yù)先設(shè)定的固定長度,確定所述固定長度減所述第三和值的差值,將所述固定長度與所述差值相加得到第四和值,判斷所述第二和值是否大于第四和值,若是,則確定所述第二和值大于規(guī)定長度,否則確定所述第二和值不大于規(guī)定長度。
9.如權(quán)利要求8所述的裝置,其特征在于,所述鏈表輸入單元具體用于,根據(jù)預(yù)先設(shè)定的最短數(shù)據(jù)長度,確定所述固定長度與所述最短數(shù)據(jù)長度的比值,新建一個長度大于所述比值的鏈表塊,并插入到所述數(shù)據(jù)隊列的末尾,將新建的鏈表塊重新作為所述數(shù)據(jù)隊列的最后一個鏈表塊。
10.如權(quán)利要求6所述的裝置,其特征在于,所述鏈表輸入單元還用于,在所述鏈表輸出單元依次調(diào)度每個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)并轉(zhuǎn)發(fā)后,在所述數(shù)據(jù)隊列中刪除已轉(zhuǎn)發(fā)的數(shù)據(jù)對應(yīng)的描述符所在的鏈表塊。
11.一種網(wǎng)絡(luò)設(shè)備,其特征在于,包括如權(quán)利要求6 10任一所述的數(shù)據(jù)轉(zhuǎn)發(fā)裝置。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)轉(zhuǎn)發(fā)方法、裝置及網(wǎng)絡(luò)設(shè)備,用以解決現(xiàn)有技術(shù)中路由器轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性較低的問題。該方法路由器生成描述符,判斷將該描述符插入到相應(yīng)數(shù)據(jù)隊列中的最后一個鏈表塊中后,最后一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)的長度的和值是否大于規(guī)定長度,若是,則新建一個鏈表塊插入到該數(shù)據(jù)隊列的末尾,并將生成的描述符插入到新建的鏈表塊中,否則將生成的描述符插入到最后一個鏈表塊中,在轉(zhuǎn)發(fā)數(shù)據(jù)時,一次轉(zhuǎn)發(fā)該數(shù)據(jù)隊列中的一個鏈表塊中包含的所有描述符對應(yīng)的數(shù)據(jù)。通過上述方法,路由器在連續(xù)接收到短數(shù)據(jù)或者長數(shù)據(jù)時,仍然可以保證轉(zhuǎn)發(fā)數(shù)據(jù)的速率的穩(wěn)定性。
文檔編號H04L12/56GK102780626SQ20121026539
公開日2012年11月14日 申請日期2012年7月27日 優(yōu)先權(quán)日2012年7月27日
發(fā)明者彭鼎祥 申請人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司