本技術屬于數據傳輸,特別涉及一種數據包的路由方法、計算機裝置、存儲介質和程序。
背景技術:
1、在片上網絡的傳統(tǒng)技術中,通常將同一數據拆分為多個數據包之后,按照數據包的排列次序逐一發(fā)送給接收端。
2、而傳統(tǒng)的數據包傳輸的路由方式是隨機的選擇一個源路由節(jié)點和終端節(jié)點最近的父親節(jié)點,首先將數據包發(fā)送到父親節(jié)點,再從父親節(jié)點將數據包發(fā)送到目標節(jié)點。但是源節(jié)點和終端節(jié)點之間可能存在多個父親節(jié)點,即從源節(jié)點到終端節(jié)點存在路徑多樣性,因此不同的數據包在發(fā)送的過程中會有不同的路由路徑,而不同路由路徑的阻塞程度不同,這就導致不同數據包的傳輸時延存在差異,接收端接收到數據包的次序與數據包的實際次序不一致,產生了數據亂序的錯誤。
技術實現思路
1、本技術提供了一種數據包的路由方法、計算機裝置、存儲介質和程序。
2、本技術一些實施例提供一種數據包的路由方法,所述方法包括:
3、在存在待發(fā)送的第一數據包時,查詢所對應的數據包次序在所述第一數據包之前的第二數據包的路由情況,所述路由情況是從全連接網絡獲取的;
4、在所述路由情況表征所述第二數據包未經過目標路由節(jié)點的情況下,暫停對第一數據包進行發(fā)送;
5、在所述路由情況表征所述第二數據包已經過目標路由節(jié)點的情況下,將所述第一數據包發(fā)送至下一路由節(jié)點,并將所述第一數據包的路由情況發(fā)送至全連接網絡。
6、可選地,所述方法還包括:
7、在存在待發(fā)送的第一數據包時,判斷所述第一數據包所對應的數據包次序是否為首位;
8、在所述第一數據包所對應的數據包次序為首位時,從所述第一數據包的源路由節(jié)點和目標路由節(jié)點所連接的父親節(jié)點中選取路由節(jié)點作為下一路由節(jié)點;
9、將所述第一數據包通過所述下一路由節(jié)點發(fā)送至所述目標路由節(jié)點。
10、可選地,所述從所述第一數據包的源路由節(jié)點和目標路由節(jié)點所連接的父親節(jié)點中選取路由節(jié)點作為下一路由節(jié)點,包括:
11、在所述第一數據包的源路由節(jié)點和目標路由節(jié)點所連接的父親節(jié)點中選取路徑最近的路由節(jié)點作為下一路由節(jié)點;
12、將所述第一數據包從當前路由節(jié)點發(fā)送至所述父親節(jié)點;
13、在所述第一數據包達到所述父親節(jié)點之后,將所述第一數據包從所述父親節(jié)點發(fā)送至所述目標路由節(jié)點。
14、可選地,所述將所述第一數據包從當前路由節(jié)點發(fā)送至所述父親節(jié)點,包括:
15、對所述源路由節(jié)點和所述父親節(jié)點的節(jié)點編號進行按位異或運算,得到第一運算結果,以及對所述源路由節(jié)點和所述當前路由節(jié)點的節(jié)點編號進行按位異或運算,得到第二運算結果;
16、從低到高查看所述第二運算結果中有效值所在的最高有效值位;
17、從低到高查看所述第一運算結果中最低取值位到所述最高有效值位之間取有效值的目標取值位;
18、將所述當前路由節(jié)點的節(jié)點編號中與所述目標取值位對應的數值從低到高依次進行取反操作,獲取所得到的節(jié)點編號所構成的第一路由路徑;
19、按照所述第一路由路徑將所述第一數據包發(fā)送至所述父親節(jié)點。
20、可選地,所述將所述第一數據包從所述父親節(jié)點發(fā)送至所述目標路由節(jié)點,包括:
21、對所述父親節(jié)點和所述目標路由節(jié)點的節(jié)點編號進行按位異或運算,得到第三運算結果,以及對所述當前路由節(jié)點和所述目標路由節(jié)點的節(jié)點編號進行按位異或運算,得到第四運算結果;
22、從高到低查看所述第四運算結果中有效值所在的最高有效值位;
23、從高到低查看所述第三運算結果中最低取值位到所述最高有效值位之間取有效值的目標取值位;
24、將所述當前路由節(jié)點的節(jié)點編號中與所述目標取值位對應的數值從高到低依次進行取反操作,獲取所得到的節(jié)點編號所構成的第二路由路徑;
25、按照所述第二路由路徑將所述第一數據包發(fā)送至所述目標路由節(jié)點。
26、可選地,所述目標路由節(jié)點包括:父親節(jié)點;
27、在所述查詢所對應的數據包次序在所述第一數據包之前的第二數據包的路由情況之后,所述方法還包括:
28、在查詢到所述第二數據包的路由情況時,判斷所述第二數據包是否達到父親節(jié)點;
29、在所述第二數據包未達到的父親節(jié)點時,將所述第一數據包所在的當前路由節(jié)點作為下一路由節(jié)點;
30、在所述第二數據包達到父親節(jié)點時,將所述第一數據包發(fā)送至下一路由節(jié)點。
31、可選地,所述在所述第二數據包未達到的父親節(jié)點時,將所述第一數據包所在的當前路由節(jié)點作為下一路由節(jié)點,包括:
32、對所述源路由節(jié)點和所述下一路由節(jié)點的節(jié)點編號進行按位異或運算,得到第五運算結果;
33、將所述當前路由節(jié)點所在層數和所述下一路由節(jié)點所在層數之間的層級對應的取值位作為有效取值位;
34、從低到高查看所述第五運算結果中有效取值位取有效值的目標取值位;
35、將所述當前路由節(jié)點的節(jié)點編號中與所述目標取值位對應的數值從低到高依次進行取反操作,獲取所得到的節(jié)點編號所構成的第三路由路徑;
36、按照所述第三路由路徑將所述第一數據包發(fā)送至所述下一路由節(jié)點。
37、可選地,所述在所述第二數據包達到父親節(jié)點時,將所述第一數據包發(fā)送至下一路由節(jié)點,包括:
38、在所述第二數據包達到父親節(jié)點時,判斷所述第一數據包是否經過所述父親節(jié)點;
39、在所述第一數據包經過所述父親節(jié)點時,將所述第一數據包向下層路由節(jié)點進行路由;
40、在所述第一數據包未經過所述父親節(jié)點時,將所述第一數據包,向所述當前路由節(jié)點和所述下一路由節(jié)點之間的父親節(jié)點進行路由。
41、可選地,所述將所述第一數據包向下層路由節(jié)點進行路由,包括:
42、對所述父親節(jié)點和所述下一路由節(jié)點的節(jié)點編號進行按位異或運算,得到第六運算結果;
43、將所述當前路由節(jié)點所在層數和所述下一路由節(jié)點所在層數之間的層級對應的取值位作為有效取值位;
44、從低到高查看所述第六運算結果中有效取值位取有效值的目標取值位;
45、將所述源路由節(jié)點的節(jié)點編號中與所述目標取值位對應的數值從高到低依次進行取反操作,獲取所得到的節(jié)點編號所構成的第四路由路徑;
46、按照所述第四路由路徑將所述第一數據包發(fā)送至所述下一路由節(jié)點。
47、可選地,所述將所述第一數據包向上層路由節(jié)點進行路由,包括:
48、對所述源路由節(jié)點和所述下一路由節(jié)點的節(jié)點編號進行按位異或運算,得到第七運算結果;
49、將所述當前路由節(jié)點所在層數和所述下一路由節(jié)點所在層數之間的層級對應的取值位作為有效取值位;
50、從低到高查看所述第七運算結果中有效取值位取有效值的目標取值位;
51、將所述當前路由節(jié)點的節(jié)點編號中與所述目標取值位對應的數值從低到高依次進行取反操作,獲取所得到的節(jié)點編號所構成的第三路由路徑;
52、按照所述第三路由路徑將所述第一數據包發(fā)送至所述下一路由節(jié)點。
53、可選地,所述方法還包括:
54、在存在待發(fā)送的第一數據包時,判斷所述第一數據包的源路由節(jié)點和目標路由節(jié)點的節(jié)點編號是否相同;
55、在所述源路由節(jié)點和所述目標路由節(jié)點的節(jié)點編號相同時,將所述第一數據包在當前路由節(jié)點執(zhí)行內部路由過程。
56、可選地,所述判斷所述第一數據包的源路由節(jié)點和目標路由節(jié)點的節(jié)點編號是否相同,包括:
57、將所述源路由節(jié)點和所述目標路由節(jié)點的節(jié)點編號進行按位異或運算,得到第八運算結果;
58、在所述第八運算結果中不存在有效值時,確定所述源路由節(jié)點和所述目標路由節(jié)點的節(jié)點編號相同;
59、在所述第八運算結果中存在有效值時,確定所述源路由節(jié)點和所述目標路由節(jié)點的節(jié)點編號不同。
60、可選地,在所述查詢所對應的數據包次序在所述第一數據包之前的第二數據包的路由情況之后,所述方法還包括:
61、在未查詢到所述第二數據包的路由情況時,暫停所述第一數據包的發(fā)送過程。
62、本技術一些實施例提供一種網絡系統(tǒng),包括:胖樹網絡和全連接網絡;
63、所述胖樹網絡中的節(jié)點用于通過所述的數據包的路由方法對數據包進行傳輸,并將所述數據包的路由情況發(fā)送至所述全連接網絡;
64、所述全連接網絡用于在接收到所述數據包的路由情況時,向所述胖樹網絡中的路由節(jié)點發(fā)送所述路由情況相對應的廣播報文。
65、可選地,所述全連接網絡中任一節(jié)點在接收到所述數據包的路由情況時,將所述路由情況發(fā)送至全連接網絡中的其他節(jié)點。
66、可選地,所述全連接網絡中的任一節(jié)點在接收到所述數據包的路由情況時,向所述胖樹網絡中與所述節(jié)點相對應的路由節(jié)點發(fā)送廣播報文。
67、本技術一些實施例提供一種數據包的路由裝置,包括:
68、查詢模塊,用于在存在待發(fā)送的第一數據包時,查詢所對應的數據包次序在所述第一數據包之前的第二數據包的路由情況,所述路由情況是從全連接網絡獲取的;
69、路由模塊,用于在所述路由情況表征所述第二數據包未經過目標路由節(jié)點的情況下,暫停對第一數據包進行發(fā)送;
70、在所述路由情況表征所述第二數據包已經過目標路由節(jié)點的情況下,將所述第一數據包發(fā)送至下一路由節(jié)點,并將所述第一數據包的路由情況發(fā)送至全連接網絡。
71、可選地,所述路由模塊,還用于:
72、在存在待發(fā)送的第一數據包時,判斷所述第一數據包所對應的數據包次序是否為首位;
73、在所述第一數據包所對應的數據包次序為首位時,從所述第一數據包的源路由節(jié)點和目標路由節(jié)點所連接的父親節(jié)點中選取路由節(jié)點作為下一路由節(jié)點;
74、將所述第一數據包通過所述下一路由節(jié)點發(fā)送至所述目標路由節(jié)點。
75、可選地,所述路由模塊,還用于:
76、在所述第一數據包的源路由節(jié)點和目標路由節(jié)點所連接的父親節(jié)點中選取路徑最近的路由節(jié)點作為下一路由節(jié)點;
77、將所述第一數據包從當前路由節(jié)點發(fā)送至所述父親節(jié)點;
78、在所述第一數據包達到所述父親節(jié)點之后,將所述第一數據包從所述父親節(jié)點發(fā)送至所述目標路由節(jié)點。
79、可選地,所述路由模塊,還用于:
80、對所述源路由節(jié)點和所述父親節(jié)點的節(jié)點編號進行按位異或運算,得到第一運算結果,以及對所述源路由節(jié)點和所述當前路由節(jié)點的節(jié)點編號進行按位異或運算,得到第二運算結果;
81、從低到高查看所述第二運算結果中有效值所在的最高有效值位;
82、從低到高查看所述第一運算結果中最低取值位到所述最高有效值位之間取有效值的目標取值位;
83、將所述當前路由節(jié)點的節(jié)點編號中與所述目標取值位對應的數值從低到高依次進行取反操作,獲取所得到的節(jié)點編號所構成的第一路由路徑;
84、按照所述第一路由路徑將所述第一數據包發(fā)送至所述父親節(jié)點。
85、可選地,所述路由模塊,還用于:
86、對所述父親節(jié)點和所述目標路由節(jié)點的節(jié)點編號進行按位異或運算,得到第三運算結果,以及對所述當前路由節(jié)點和所述目標路由節(jié)點的節(jié)點編號進行按位異或運算,得到第四運算結果;
87、從高到低查看所述第四運算結果中有效值所在的最高有效值位;
88、從高到低查看所述第三運算結果中最低取值位到所述最高有效值位之間取有效值的目標取值位;
89、將所述當前路由節(jié)點的節(jié)點編號中與所述目標取值位對應的數值從高到低依次進行取反操作,獲取所得到的節(jié)點編號所構成的第二路由路徑;
90、按照所述第二路由路徑將所述第一數據包發(fā)送至所述目標路由節(jié)點。
91、可選地,所述目標路由節(jié)點包括:父親節(jié)點;
92、所述路由模塊,還用于:
93、在查詢到所述第二數據包的路由情況時,判斷所述第二數據包是否達到父親節(jié)點;
94、在所述第二數據包未達到的父親節(jié)點時,將所述第一數據包所在的當前路由節(jié)點作為下一路由節(jié)點;
95、在所述第二數據包達到父親節(jié)點時,將所述第一數據包發(fā)送至下一路由節(jié)點。
96、可選地,所述路由模塊,還用于:
97、對所述源路由節(jié)點和所述下一路由節(jié)點的節(jié)點編號進行按位異或運算,得到第五運算結果;
98、將所述當前路由節(jié)點所在層數和所述下一路由節(jié)點所在層數之間的層級對應的取值位作為有效取值位;
99、從低到高查看所述第五運算結果中有效取值位取有效值的目標取值位;
100、將所述當前路由節(jié)點的節(jié)點編號中與所述目標取值位對應的數值從低到高依次進行取反操作,獲取所得到的節(jié)點編號所構成的第三路由路徑;
101、按照所述第三路由路徑將所述第一數據包發(fā)送至所述下一路由節(jié)點。
102、可選地,所述路由模塊,還用于:
103、在所述第二數據包達到父親節(jié)點時,判斷所述第一數據包是否經過所述父親節(jié)點;
104、在所述第一數據包經過所述父親節(jié)點時,將所述第一數據包向下層路由節(jié)點進行路由;
105、在所述第一數據包未經過所述父親節(jié)點時,將所述第一數據包,向所述當前路由節(jié)點和所述下一路由節(jié)點之間的父親節(jié)點進行路由。
106、可選地,所述路由模塊,還用于:
107、對所述父親節(jié)點和所述下一路由節(jié)點的節(jié)點編號進行按位異或運算,得到第六運算結果;
108、將所述當前路由節(jié)點所在層數和所述下一路由節(jié)點所在層數之間的層級對應的取值位作為有效取值位;
109、從低到高查看所述第六運算結果中有效取值位取有效值的目標取值位;
110、將所述源路由節(jié)點的節(jié)點編號中與所述目標取值位對應的數值從高到低依次進行取反操作,獲取所得到的節(jié)點編號所構成的第四路由路徑;
111、按照所述第四路由路徑將所述第一數據包發(fā)送至所述下一路由節(jié)點。
112、可選地,所述路由模塊,還用于:
113、對所述源路由節(jié)點和所述下一路由節(jié)點的節(jié)點編號進行按位異或運算,得到第七運算結果;
114、將所述當前路由節(jié)點所在層數和所述下一路由節(jié)點所在層數之間的層級對應的取值位作為有效取值位;
115、從低到高查看所述第七運算結果中有效取值位取有效值的目標取值位;
116、將所述當前路由節(jié)點的節(jié)點編號中與所述目標取值位對應的數值從低到高依次進行取反操作,獲取所得到的節(jié)點編號所構成的第三路由路徑;
117、按照所述第三路由路徑將所述第一數據包發(fā)送至所述下一路由節(jié)點。
118、可選地,所述路由模塊,還用于:
119、在存在待發(fā)送的第一數據包時,判斷所述第一數據包的源路由節(jié)點和目標路由節(jié)點的節(jié)點編號是否相同;
120、在所述源路由節(jié)點和所述目標路由節(jié)點的節(jié)點編號相同時,將所述第一數據包在當前路由節(jié)點執(zhí)行內部路由過程。
121、可選地,所述路由模塊,還用于:
122、將所述源路由節(jié)點和所述目標路由節(jié)點的節(jié)點編號進行按位異或運算,得到第八運算結果;
123、在所述第八運算結果中不存在有效值時,確定所述源路由節(jié)點和所述目標路由節(jié)點的節(jié)點編號相同;
124、在所述第八運算結果中存在有效值時,確定所述源路由節(jié)點和所述目標路由節(jié)點的節(jié)點編號不同。
125、可選地,所述路由模塊,還用于:
126、在未查詢到所述第二數據包的路由情況時,暫停所述第一數據包的發(fā)送過程。
127、本技術一些實施例提供一種計算機裝置,包括:存儲器、處理器及存儲在存儲器上的計算機程序,其特征在于,所述處理器執(zhí)行所述計算機程序以實現如所述的數據包的路由方法的步驟。
128、本技術一些實施例提供一種計算機可讀存儲介質,其上存儲有計算機程序/指令,其特征在于,該計算機程序/指令被處理器執(zhí)行時實現如所述的數據包的路由方法的步驟。
129、本技術一些實施例提供一種計算機程序產品,包括計算機程序/指令,該計算機程序/指令被處理器執(zhí)行時實現所述的數據包的路由方法的步驟。
130、本技術一些實施例提供的數據包的路由方法、計算機裝置、存儲介質和程序,通過在網絡上設置全連接網絡來對網絡中數據包的路由情況進行收集和下發(fā),使得路由節(jié)點在對數據包進行傳輸時,可以通過查詢位于該數據包次序之前的數據包的路由情況,使得數據包在次序在其之前數據包經過目標路由節(jié)點之后才進行發(fā)送,保證了接收端接收到數據包的接收次序和數據包的排列次序一致,避免了由于網絡延遲導致的接收端數據包次序紊亂的情況。
131、上述說明僅是本技術技術方案的概述,為了能夠更清楚了解本技術的技術手段,而可依照說明書的內容予以實施,并且為了讓本技術的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本技術的具體實施方式。