本發(fā)明涉及一種路由系統(tǒng)及其方法,特別是在具有相同包頭及輸入端口的情況下,有效提高封包的路由效率的具有學(xué)習(xí)功能的路由系統(tǒng)及其方法。
背景技術(shù):
::近年來,隨著因特網(wǎng)的普及與蓬勃發(fā)展,為了提升網(wǎng)絡(luò)速度及可靠性,如何有效提升封包路由的效率便成為各家廠商亟欲解決的問題之一。一般而言,傳統(tǒng)的封包路由是核心層(kernel)逐一針對每一個(gè)接收到的封包以路由表進(jìn)行路由處理。其中,路由表記錄預(yù)先設(shè)定好的路徑,以便根據(jù)所述路徑將封包轉(zhuǎn)送至下一個(gè)節(jié)點(diǎn),所以路由表記錄的路徑是否為最佳路徑便成為影響路由效率的主要因素,不適當(dāng)或錯(cuò)誤的路由路徑將造成路由效率不佳的問題。有鑒于此,便有廠商提出動(dòng)態(tài)路由的技術(shù),以各種算法及路由協(xié)議建立和維護(hù)路由表,使路由表一直保持在最佳狀態(tài)。然而,由于網(wǎng)絡(luò)上傳輸?shù)姆獍鼣?shù)量極為龐大,假設(shè)這些封包都具有相同包頭及輸入端口,若每一個(gè)封包仍然都通過核心層的路由表進(jìn)行路由處理,勢必會耗費(fèi)大量的處理時(shí)間,因此,這一方式仍然無法有效解決路由效率不佳的問題。綜上所述,可知先前技術(shù)中長期以來一直存在路由效率不佳的問題,因此有必要提出改進(jìn)的技術(shù)手段,來解決這一問題。技術(shù)實(shí)現(xiàn)要素:本發(fā)明披露了一種具有學(xué)習(xí)功能的路由系統(tǒng)及其方法。首先,本發(fā)明披露了一種具有學(xué)習(xí)功能的路由系統(tǒng),其應(yīng)用在具有多個(gè)端口的路由裝置中,該系統(tǒng)包括:儲存模塊、傳輸模塊、檢測模塊、查詢模塊及處理模塊。其中,儲存模塊用以儲存路徑表;傳輸模塊用以通過端口其 中的一個(gè)接收原始封包,以及通過端口其中的一個(gè)發(fā)送修改后的封包;檢測模塊用以檢測接收到原始封包的端口作為輸入端口,以及讀取原始封包的包頭作為原始包頭;查詢模塊用以從路徑表查詢符合原始包頭及輸入端口的路由消息;以及,處理模塊用以在路由消息不存在時(shí),原始封包由核心層進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換以形成修改后的封包,并根據(jù)核心層的路由表從端口選擇其中的一個(gè)作為發(fā)送所述修改后的封包的輸出端口,以及將原始包頭、所述修改后的封包的修改后的包頭、輸入端口及所述修改后的封包的輸出端口記錄在路徑表中作為路由消息,并且由輸出端口發(fā)送所述修改后的封包,以及當(dāng)路由消息存在時(shí),直接以路由消息中的所述修改后的包頭取代原始封包的包頭以形成所述修改后的封包,并且根據(jù)路由消息中的輸出端口發(fā)送所述修改后的封包。另外,本發(fā)明披露了一種具有學(xué)習(xí)功能的路由方法,其應(yīng)用在具有多個(gè)端口的路由裝置中,其步驟包括:提供路徑表;通過端口其中的一個(gè)接收原始封包;檢測接收到原始封包的端口作為輸入端口,以及讀取原始封包的包頭作為原始包頭;從路徑表查詢符合原始包頭及輸入端口的路由消息;當(dāng)路由消息不存在時(shí),原始封包由核心層進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換以形成修改后的封包,并根據(jù)核心層的路由表從端口選擇其中的一個(gè)作為發(fā)送所述修改后的封包的輸出端口,以及將原始包頭、所述修改后的封包的修改后的包頭、輸入端口及所述修改后的封包的輸出端口記錄在路徑表中作為路由消息,并且由輸出端口發(fā)送所述修改后的封包;當(dāng)路由消息存在時(shí),直接以路由消息中的修改后的包頭取代原始封包的包頭以形成所述修改后的封包,并且根據(jù)路由消息中的輸出端口發(fā)送所述修改后的封包。本發(fā)明所披露的系統(tǒng)與方法如上,與先前技術(shù)的差異在于本發(fā)明是通過檢測接收到的原始封包的包頭及輸入端口,用以從路徑表查詢相符的路由消息,當(dāng)路由消息不存在時(shí),原始封包由核心層進(jìn)行路由處理,并且將路由結(jié)果記錄在路徑表作為路由消息,以及當(dāng)路由消息存在時(shí),以路由消息中記錄的修改后的包頭取代原始封包的包頭形成修改后的封包,并且通過路由消息中記錄的輸出端口發(fā)送修改后的封包。通過上述的技術(shù)手段,本發(fā)明可以達(dá)成提高具有相同包頭及輸入端口的封包的路由效率的技術(shù)功效。附圖說明圖1為根據(jù)本發(fā)明的具有學(xué)習(xí)功能的路由系統(tǒng)的系統(tǒng)框圖。圖2為根據(jù)本發(fā)明的具有學(xué)習(xí)功能的路由方法的方法流程圖。圖3為示出了本發(fā)明與已知技術(shù)的封包處理的差異的示意圖。圖4為應(yīng)用本發(fā)明的路徑表的示意圖。附圖標(biāo)記列表100路由系統(tǒng)110儲存模塊120傳輸模塊130檢測模塊140查詢模塊150處理模塊310已知技術(shù)的架構(gòu)320應(yīng)用本發(fā)明的架構(gòu)410路徑表步驟210提供路徑表步驟220通過多個(gè)端口其中的一個(gè)接收原始封包步驟230檢測接收到原始封包的端口作為輸入端口,以及讀取原始封包的包頭作為原始包頭步驟240從路徑表查詢符合原始包頭及輸入端口的路由消息步驟250當(dāng)路由消息不存在時(shí),原始封包由核心層進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換以形成修改后的封包,并根據(jù)核心層的路由表從這些端口選擇其中的一個(gè)作為發(fā)送修改后的封包的輸出端口,以及將原始包頭、修改后的封包的修改后的包頭、輸入端口及修改后的封包的輸出端口記錄在路徑表中作為路由消息,并且由輸出端口發(fā)送修改后的封包步驟260當(dāng)路由消息存在時(shí),直接以路由消息中的修改后的包頭取代原始封包的包頭以形成修改后的封包,并且根據(jù)路由消息中的輸出端口發(fā)送修改后的封包具體實(shí)施方式以下將配合圖示及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,藉此對本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題并達(dá)成技術(shù)功效的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。在說明本發(fā)明所披露的具有學(xué)習(xí)功能的路由系統(tǒng)及其方法之前,先對本發(fā)明所自行定義的名詞作說明,本發(fā)明所述的路徑表是指記錄原始包頭、修改后的包頭、輸入端口及輸出端口作為路由消息的表,前述路由消息是原始封包經(jīng)過核心層完成路由過程后所獲得的相關(guān)消息,此路徑表與路由表的差異在于前者是原始封包尚未輸入核心層時(shí)使用,而后者則為原始封包輸入核心層進(jìn)行路由處理之用,特別要說明的是,后者記錄的消息也與前者不同,后者記錄的消息包括網(wǎng)段、子網(wǎng)掩碼及輸出端口的對應(yīng)關(guān)系。以下配合圖示對本發(fā)明的具有學(xué)習(xí)功能的路由系統(tǒng)及其方法做進(jìn)一步說明,請先參閱圖1,圖1為根據(jù)本發(fā)明的具有學(xué)習(xí)功能的路由系統(tǒng)的系統(tǒng)框圖,其應(yīng)用在具有多個(gè)端口的路由裝置中,路由系統(tǒng)100包括:儲存模塊110、傳輸模塊120、檢測模塊130、查詢模塊140及處理模塊150。其中,儲存模塊110用以儲存路徑表。在實(shí)際實(shí)施中,所述路徑表初始為空,并且以文本文件或數(shù)據(jù)庫記錄原始包頭、修改后的包頭、輸入端口及輸出端口作為路由消息。所述原始包頭及修改后的包頭是記錄鏈結(jié)層、網(wǎng)絡(luò)層及傳輸層的消息,如:mac(mediaaccesscontrol)地址、ip(internetprotocol)地址、vlan(virtuallocalareanetwork)、網(wǎng)絡(luò)協(xié)議(例如:tcp或udp)、端口號等等。傳輸模塊120用以通過端口其中的一個(gè)接收原始封包,以及通過端口其中的一個(gè)發(fā)送修改后的封包。在實(shí)際實(shí)施中,所述端口是以太網(wǎng)絡(luò)的rj-45接頭。所述原始封包是指從端口接收到的以太網(wǎng)絡(luò)封包;所述修改后的封包是指包頭(header)被修改、取代或替換后的以太網(wǎng)絡(luò)封包,例如:通過網(wǎng)絡(luò)地址轉(zhuǎn)換(networkaddresstranslation,nat)或基于路徑表修改、取代或替換原始封包的包頭。檢測模塊130用以檢測接收到原始封包的端口作為輸入端口,以及讀取原始封包的包頭作為原始包頭。在實(shí)際實(shí)施中,讀取原始封包的包頭是指讀取鏈結(jié)層、網(wǎng)絡(luò)層及傳輸層的消息,例如:來源mac、目的mac、vlan、來源ip、目的ip、網(wǎng)絡(luò)協(xié)議(例如:tcp或udp)、來源端口號、目的端口 號等消息。查詢模塊140用以從儲存模塊110的路徑表查詢符合原始包頭及輸入端口的路由消息。由于接收到封包后,檢測模塊130會獲得原始包頭及輸入端口,因此,查詢模塊140將以原始包頭及輸入端口查詢路徑表中是否存在相符的路由消息,也就是具有相同的原始包頭及輸入端口的路由消息,以便后續(xù)進(jìn)一步獲得此路由消息所記錄的修改后的包頭及輸出端口。處理模塊150用以當(dāng)路由消息不存在時(shí)(即查詢模塊140未查詢到相符的路由消息),將原始封包由核心層(例如:linuxkernel)進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換以形成修改后的封包,并根據(jù)核心層的路由表從端口選擇其中的一個(gè)作為發(fā)送所述修改后的封包的輸出端口,以及將原始包頭、所述修改后的封包的修改后的包頭、輸入端口及修改后的封包的輸出端口記錄在路徑表中作為路由消息,并且由輸出端口發(fā)送所述修改后的封包,以及當(dāng)路由消息存在時(shí),直接以路由消息中的修改后的包頭取代原始封包的包頭以形成所述修改后的封包,并且根據(jù)路由消息中的輸出端口發(fā)送所述修改后的封包。在實(shí)際實(shí)施中,核心層的路由表記錄網(wǎng)段、子網(wǎng)掩碼及輸出端口的對應(yīng)關(guān)系,所述路由表可示意如下:網(wǎng)段/子網(wǎng)掩碼輸出端口路由規(guī)則1192.168.128.0/24端口2路由規(guī)則2192.168.127.0/24端口1特別要說明的是,當(dāng)路由表記錄的對應(yīng)關(guān)系改變時(shí),處理模塊150還可重置路徑表,例如:清空路徑表,以便路由系統(tǒng)100重新根據(jù)路由表產(chǎn)生路由消息,避免當(dāng)網(wǎng)絡(luò)拓?fù)涓淖儠r(shí),造成封包傳遞錯(cuò)誤的情況發(fā)生。接著,請參閱圖2,圖2為根據(jù)本發(fā)明的具有學(xué)習(xí)功能的路由方法的方法流程圖,應(yīng)用在具有多個(gè)端口的路由裝置中,其步驟包括:提供路徑表(步驟210);通過端口其中的一個(gè)接收原始封包(步驟220);檢測接收到原始封包的端口作為輸入端口,以及讀取此原始封包的包頭作為原始包頭(步驟230);從路徑表查詢符合原始包頭及輸入端口的路由消息(步驟240);當(dāng)路由消息不存在時(shí),此原始封包由核心層進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換以形成修改后的 封包,并根據(jù)核心層的路由表從端口選擇其中的一個(gè)作為發(fā)送所述修改后的封包的輸出端口,以及將原始包頭、所述修改后的封包的修改后的包頭、輸入端口及所述修改后的封包的輸出端口記錄在路徑表中作為路由消息,并且由輸出端口發(fā)送所述修改后的封包(步驟250);當(dāng)路由消息存在時(shí),直接以路由消息中的修改后的包頭取代原始封包的包頭以形成所述修改后的封包,并且根據(jù)路由消息中的輸出端口發(fā)送所述修改后的封包(步驟260)。通過上述步驟,即可通過檢測接收到的原始封包的包頭及輸入端口,用以從路徑表查詢相符的路由消息,當(dāng)路由消息不存在時(shí),原始封包由核心層進(jìn)行路由處理,并且將路由結(jié)果記錄在路徑表作為路由消息,以及當(dāng)路由消息存在時(shí),以路由消息中記錄的修改后的包頭取代原始封包的包頭形成修改后的封包,并且通過路由消息中記錄的輸出端口發(fā)送修改后的封包。以下配合圖3及圖4以實(shí)施例的方式進(jìn)行如下說明,請先參閱圖3,圖3為本發(fā)明與已知技術(shù)的封包處理差異的示意圖。其中,上方為已知技術(shù)的架構(gòu)310,下方為應(yīng)用本發(fā)明的架構(gòu)320,虛線箭頭為第一個(gè)封包的處理流程,實(shí)線箭頭為后續(xù)具有相同的包頭及輸入端口(例如:端口1)的封包的處理流程。從已知技術(shù)的架構(gòu)310可以清楚看到,無論是否具有相同的包頭及輸入端口,所有的封包皆會經(jīng)過核心層處理,并且逐一進(jìn)行路由,故需花費(fèi)大量時(shí)間。至于應(yīng)用本發(fā)明的架構(gòu)320則可清楚看到,具有相同的包頭及輸入端口的所有封包中,只有第一個(gè)封包會經(jīng)過核心層處理,之后的第二個(gè)封包、第三個(gè)封包、第四個(gè)封包等等皆會以實(shí)線箭頭的方式,也就是只需經(jīng)過應(yīng)用本發(fā)明的路由系統(tǒng)100而無需經(jīng)過核心層處理,即可正確將封包經(jīng)由端口2轉(zhuǎn)送。具體而言,假設(shè)有兩個(gè)客戶端,第一個(gè)客戶端連接至端口1,第二個(gè)客戶端連接至端口2,第一個(gè)客戶端欲通過應(yīng)用本發(fā)明的路由裝置發(fā)送封包給第二個(gè)客戶端,其中,第一個(gè)客戶端的ip為「192.168.127.1」、mac為「00:00:00:00:00:01」;第二個(gè)客戶端的ip為「192.168.128.1」、mac為「00:00:00:00:00:02」;第一個(gè)客戶端發(fā)送的封包的包頭如下:當(dāng)多個(gè)封包依次從端口1(port1)輸入時(shí),將進(jìn)行下列步驟:1.第一個(gè)封包(packet1)輸入端口1后被路由系統(tǒng)100攔截;2.檢查路徑表是否有對應(yīng)此包頭的路由消息;3.由于初始時(shí)路徑表為空,所以找不到對應(yīng)的路由消息來處理封包;4.第一個(gè)封包繼續(xù)送往核心層(如:linuxkernel)做處理;5.核心層對第一個(gè)封包進(jìn)行相應(yīng)處理并做nat修改,使包頭被修改成如下:6.核心層根據(jù)路由表(routingtable)決定將第一個(gè)封包送往端口2(port2);7.第一個(gè)封包在由核心層送往端口2前被路由系統(tǒng)100攔截;8.在路徑表建立新規(guī)則,如:路由消息1;9.將第一個(gè)封包原始的包頭記錄到所述路由消息1的原始包頭的字段;10.將第一個(gè)封包修改后的包頭記錄到所述路由消息1的修改后的包頭的字段;11.將第一個(gè)封包輸入的端口,如:端口1(port1)記錄到所述路由消息1的輸入端口的字段;12.將第一個(gè)封包輸出的端口,如:端口2(port2)記錄到所述路由消息1的輸出端口的字段;13.加入完成后繼續(xù)將第一個(gè)封包轉(zhuǎn)送到端口2;及14.第二個(gè)客戶端成功收到第一個(gè)封包。其中,路徑表記錄的路由消息1可示意如下:接著,第一個(gè)客戶端繼續(xù)輸出第二個(gè)封包(packet2)至輸入端口1時(shí),其步驟如下:a.第二個(gè)封包被路由系統(tǒng)100攔截;b.檢查路徑表的路由消息中是否有兩個(gè)字段(即:原始包頭的字段及輸入端口的字段)與第二個(gè)封包都符合;c.發(fā)現(xiàn)路徑表內(nèi)的路由消息1符合條件;d.將第二個(gè)封包按照路由消息1的修改后的包頭做修改,例如:直接以記錄在修改后的包頭的字段的信息取代第二個(gè)封包的包頭;e.將第二個(gè)封包直接由路由消息1的輸出端口的字段所記錄的端口,即端口2(port2)輸出;及f.第二個(gè)客戶端成功收到第二個(gè)封包。如此一來,第二個(gè)封包即可跳過核心層處理來節(jié)省處理時(shí)間,進(jìn)而達(dá)成加速路由的效果,并且以此類推,第三個(gè)封包、第四個(gè)封包等等具有相同的原始包頭及輸入端口的封包,同樣通過步驟a至f跳過核心層處理而直接以查到的路由消息中所記錄的修改后的包頭取代其包頭,并且通過此路由消息中記錄的輸出端口將封包輸出至第二個(gè)客戶端。也就是說,當(dāng)路徑表中的路由消息被建立后,即代表路由系統(tǒng)100已學(xué)習(xí)到此類封包的發(fā)送方式,往后只要是符合路徑表中的路由消息的封包都會跳過核心層處理,當(dāng)相同的包頭及輸入端口的封包數(shù)量越多時(shí)(例如流影音播放越久時(shí)),節(jié)省的處理時(shí)間也隨之越多。如圖4所示意,圖4為應(yīng)用本發(fā)明的路徑表的示意圖。前面提到,路徑表初始為空。當(dāng)成功路由第一個(gè)封包后,將產(chǎn)生并記錄相應(yīng)的路由消息于路徑表中,如圖4所示意的路徑表410中的路由消息1,假設(shè)下一個(gè)接收到的封包的包頭及輸入端口與路徑表410中的所有路由消息都不相符,那么會再產(chǎn)生并記錄相應(yīng)的路由消息于路徑表410中,如圖4所示意的路由消息2,并以此類推,倘若再下一個(gè)接收到的封包仍不相符,則產(chǎn)生并記錄相應(yīng)的路由消息3等等。綜上所述,可知本發(fā)明與先前技術(shù)之間的差異在于通過檢測接收到的原始封包的包頭及輸入端口,用以從路徑表查詢相符的路由消息,當(dāng)路由消息不存在時(shí),原始封包由核心層進(jìn)行路由處理,并且將路由結(jié)果記錄在路徑表作為路由消息,以及當(dāng)路由消息存在時(shí),以路由消息中記錄的修改后的包頭取代原始封包的包頭形成修改后的封包,并且通過路由消息中記錄的輸出端 口發(fā)送修改后的封包,藉由這一技術(shù)手段可以解決先前技術(shù)所存在的問題,進(jìn)而達(dá)成提高具有相同包頭及輸入端口的封包的路由效率的技術(shù)功效。雖然本發(fā)明以前述的實(shí)施例披露如上,然其并非用以限定本發(fā)明,任何熟習(xí)相像技藝者,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的更動(dòng)與修正,因此本發(fā)明的專利保護(hù)范圍應(yīng)以本說明書所附權(quán)利要求所限定的范圍為準(zhǔn)。以上所述僅為本發(fā)明優(yōu)選的實(shí)施例,所有根據(jù)本發(fā)明權(quán)利要求所做的等效變化與修正,都應(yīng)屬于本發(fā)明的涵蓋范圍內(nèi)。當(dāng)前第1頁12當(dāng)前第1頁12