TWI779798B - 網路裝置及其媒體存取控制位址學習方法 - Google Patents
網路裝置及其媒體存取控制位址學習方法 Download PDFInfo
- Publication number
- TWI779798B TWI779798B TW110131361A TW110131361A TWI779798B TW I779798 B TWI779798 B TW I779798B TW 110131361 A TW110131361 A TW 110131361A TW 110131361 A TW110131361 A TW 110131361A TW I779798 B TWI779798 B TW I779798B
- Authority
- TW
- Taiwan
- Prior art keywords
- packet
- mac
- parameter
- learning
- stage
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/251—Cut-through or wormhole routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/252—Store and forward routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/08—Learning-based routing, e.g. using neural networks or artificial intelligence
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
- H04L61/103—Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/622—Layer-2 addresses, e.g. medium access control [MAC] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5038—Address allocation for local use, e.g. in LAN or USB networks, or in a controller area network [CAN]
Abstract
網路交換裝置包含轉傳引擎及二階段學習引擎。轉傳引擎解析出來自輸出入埠之封包的封包頭及封包校驗參數,並產生對應於輸出入埠的埠識別符。二階段學習引擎以封包頭啟動第一階段程序,及以封包校驗參數啟動第二階段程序。第一階段程序包含根據埠識別符及MAC轉發表,對封包頭的來源MAC位址進行學習處理而產生學習結果;根據學習結果產生狀態參數;及關聯狀態參數、埠識別符及來源MAC位址對應的雜湊位址,儲存至記憶體。第二階段程序包含根據埠識別符,從記憶體取得狀態參數及雜湊位址;及根據封包校驗參數、狀態參數及雜湊位址,更新MAC轉發表。
Description
本案是有關於一種網路技術,尤其是一種具有MAC位址學習的網路裝置及其方法。
網路交換器(Network switch)在進行來自電子裝置的封包傳送時,可以使用切貫封包交換(cut-through switching)。具體來說,網路交換器不是在接收並儲存完整個封包後,轉發該封包及進行媒體存取控制(Media Access Control,MAC)位址轉發表的建立與維護(例如,存轉交換(store and forward switching)),而是在接收到封包的來源MAC位址及目的地MAC位址時,即透過目的地MAC位址來進行轉發封包的動作以及透過來源MAC位址來進行MAC位址轉發表的建立與維護。相較於存轉交換而言,在切貫封包交換下,網路交換器的封包轉發速度較快。
然而,切貫封包交換會造成錯誤的來源MAC位址被學習至MAC位址轉發表而佔用了MAC位址轉發表的有效儲存容量,以及一些動作(例如,輸出入埠遷移(station move))可能被錯誤的觸發。例如,網路交換器在尚未得知封包之完整性驗證是否通過的情形下,即將來源MAC位址學習至MAC位址轉發表,因而,若此來源MAC位址是損壞的(例如來源MAC位址並未完整的從電子裝置發送至網路交換器),則會導致MAC位址轉發表學習了錯誤的來源MAC位址,從而造成輸出入埠遷移可能被此錯誤的來源MAC位址觸發(亦即,輸出入埠遷移被誤觸發)。
鑒於上述,本案提供一種網路交換裝置及其MAC位址學習方法。依據一些實施例,網路交換裝置可以在切貫封包交換的情形下,濾除MAC位址轉發表中錯誤的來源MAC位址。
依據一些實施例,網路交換裝置包含一轉傳引擎及一二階段學習引擎。轉傳引擎用以接收來自一輸出入埠的一封包,解析出封包的一封包頭及一封包校驗參數,以及產生對應於輸出入埠的一埠識別符,轉傳引擎依據一MAC轉發表轉發封包至另一輸出入埠,其中封包頭具有一來源MAC位址。二階段學習引擎包含一記憶體及一二階段學習電路。記憶體儲存有MAC轉發表。二階段學習電路用以在取得來源MAC位址及埠識別符時,啟動一第一階段程序;及在取得封包校驗參數及埠識別符時,啟動一第二階段程序。第一階段程序包含根據MAC轉發表及埠識別符,對來源MAC位址進行一學習處理而產生一學習結果;根據學習結果產生一狀態參數;及關聯狀態參數、埠識別符及來源MAC位址對應的一雜湊位址,並儲存至記憶體。第二階段程序包含根據埠識別符,從記憶體中取得狀態參數及雜湊位址;及根據封包校驗參數、取得的狀態參數及取得的雜湊位址,更新MAC轉發表。
依據一些實施例,MAC位址學習方法適於一網路交換裝置。MAC位址學習方法包含接收來自一輸出入埠的一封包;產生相應於輸出入埠的一埠識別符;在解析出封包的一封包頭時,啟動一第一階段程序,其中封包頭具有一來源MAC位址;在解析出封包的一封包校驗參數時,啟動一第二階段程序;及依據一記憶體之一MAC轉發表,轉發封包至另一輸出入埠。其中,第一階段程序包含根據MAC轉發表及埠識別符,對來源MAC位址進行一學習處理而產生一學習結果;根據學習結果產生一狀態參數;及關聯狀態參數、埠識別符及來源MAC位址對應的一雜湊位址,並儲存至記憶體。第二階段程序包含根據埠識別符,從記憶體中取得狀態參數及雜湊位址;及根據封包校驗參數、取得的狀態參數及取得的雜湊位址,更新MAC轉發表。
綜上所述,依據一些實施例,網路交換裝置在切貫封包交換的情形下,濾除MAC位址轉發表中錯誤的來源MAC位址,以使在快速轉發封包的情形下,仍可使MAC位址轉發表中只儲存有正確的來源MAC位址。依據一些實施例,由於網路交換裝置可以是在接收到封包中的來源MAC位址時,即進行來源MAC位址的學習處理(也就是說,無需儲存完整個封包後,進行學習處理),並於接收完整個封包後,確認上述學習處理,因此降低了網路交換裝置處理封包時所需的儲存容量,以及提升了網路交換裝置處理封包時的處理速度。例如,當網路交換裝置在對來源MAC位址的學習處理中取得有關丟棄(discard)該封包的指示時,即可丟棄封包,因而提升了處理封包的速度。如此,網路交換裝置可達到在線速(line rate)(亦即實體層總位元速率(physical layer gross bit rate))下,完成來源MAC位址的學習處理。
參照圖1,圖1係為本案依據一些實施例之網路交換裝置10的應用示意圖。網路交換裝置10包含一轉傳引擎12、一二階段學習引擎14及多個輸出入埠16A~16D。轉傳引擎12耦接二階段學習引擎14及輸出入埠16A~16D。輸出入埠16A~16D供多個電子裝置20A~20D耦接。雖然圖1僅繪示四個輸出入埠及四個電子裝置,但本案不限於此。二階段學習引擎14包含一記憶體141及一二階段學習電路143。二階段學習電路143耦接記憶體141。記憶體141儲存有一MAC位址轉發表(於後稱為MAC轉發表1411)。MAC轉發表1411記錄有電子裝置20A~20D的MAC位址(於後稱為已記錄MAC位址)與輸出入埠16A~16D(例如以埠識別參數來表示輸出入埠16A~16D)之間的對應關係。記憶體141可以為揮發性記憶體、非揮發性記憶體或其組合。在一些示範例中,揮發性記憶體為隨機存取記憶體等,非揮發性記憶體為唯讀記憶體等。二階段學習電路143可以為微控制器、嵌入式控制器、特定應用積體電路、或系統單晶片等運算電路。
網路交換裝置10用以經由輸出入埠16A~16D及轉傳引擎12轉發電子裝置20A~20D的資料(例如封包)。也就是說,電子裝置20A~20D之間透過網路交換裝置10進行封包的傳輸。其中,網路交換裝置10可以是在資料鏈路層(Data Link Layer)中透過MAC位址來轉發電子裝置20A~20D的封包。
轉傳引擎12用以接收來自一輸出入埠16A~16D的一封包,解析出封包的一封包頭(header)及一封包校驗參數,產生對應於輸出入埠16A~16D的一埠識別符(Port identifier,Port ID),以及將封包頭、封包校驗參數及埠識別符輸出至二階段學習引擎14。其中,封包頭具有一來源MAC位址。在一些實施例中,封包頭還具有一目的地MAC位址。
二階段學習引擎14根據來源MAC位址、埠識別符及封包校驗參數,進行MAC轉發表1411的建立與維護。例如,二階段學習引擎14查看MAC轉發表1411是否已記錄過該封包的來源MAC位址。若未記錄過,則二階段學習引擎14記錄該封包的來源MAC位址(即,電子裝置20A~20D的MAC位址)及埠識別符(具體而言,將埠識別符作為埠識別參數而記錄於MAC轉發表1411)。若已記錄過,則二階段學習引擎14調整MAC轉發表1411中的一些參數。藉此學習方式,以建立及維護電子裝置20A~20D的MAC位址與輸出入埠16A~16D之間的對應關係。
轉傳引擎12依據MAC轉發表1411,將來自一輸出入埠16A~16D的封包轉發至另一輸出入埠16A~16D。舉例來說,轉傳引擎12透過將封包之目的地MAC位址比對MAC轉發表1411(即轉發查詢),而得知目的地MAC位址所對應的埠識別參數(亦即,得知目的地MAC位址所對應的輸出入埠16A~16D),並將封包從對應的輸出入埠16A~16D轉發至目的MAC位址所對應的電子裝置20A~20D。
參照圖2,圖2係為本案依據一些實施例之網路交換裝置10的方塊示意圖。在一些實施例中,轉傳引擎12包含多個前置處理電路120A~120D、一第一多工器121、一選擇電路122、一資料段緩衝電路123、一擷取電路124、一轉發處理電路125、一決策電路126、一第二多工器127、一序列管理電路128及一解多工器129。上述各元件的耦接關係請參照圖2。
前置處理電路120A~120D用以接收來自輸出入埠16A~16D的封包,並對封包進行預處理動作,以將處理後的封包經由第一多工器121輸出至選擇電路122。其中,預處理動作可以包含一分割動作、一校驗動作及一埠識別符賦予動作。
校驗動作為驗證封包的正確性而產生一封包校驗參數。例如,利用循環冗餘校驗(Cyclic redundancy check,CRC)來驗證封包的正確性以產生封包校驗參數。
分割動作係將一個封包分割為多個資料段。例如,如圖1及圖2所示,第一前置處理電路120A經由第一輸出入埠16A而從第一電子裝置20A接收到一個9千位元組(KB)的封包時,第一前置處理電路120A對該封包進行封包分割動作,而分割出固定大小(例如:128位元組)的串列的多個資料段。在一些實施例中,該封包排序最前的資料段可以包含封包頭,該封包中排序最後的資料段可以包含封包校驗參數。在一些實施例中,在單一封包中,可以區分出一封包頭段SOP、至少一個中間資料段OOP及一封包尾段EOP。具體來說,封包頭段SOP為該封包排序最前的非資料段,例如封包頭。封包尾段EOP為該封包中排序最後的非資料段,例如封包校驗參數。中間資料段OOP為該封包中的資料被分割成多個固定大小的串列的資料段。
埠識別符賦予動作為前置處理電路120A~120D依據接收到的封包是由哪一輸出入埠16A~16D輸入,產生對應的埠識別符。埠識別符可以是置入於該封包分割出的每個資料段及非資料段,或是在資料段及非資料段各別被輸出至選擇電路122時,隨同輸出一個埠識別符。換言之,同一封包的每個資料段或是非資料段(例如,封包頭段SOP、中間資料段OOP及封包尾段EOP)係相應同一埠識別符。
如圖2所示,選擇電路122用以將封包頭段SOP經由訊號路徑L1輸出至擷取電路124,並將中間資料段OOP及封包尾段EOP經由訊號路徑L2輸出至資料段緩衝電路123。選擇電路122可以由多路復用器(multiplexer,MUX)實現。
如圖2所示,資料段緩衝電路123用以儲存中間資料段OOP及封包尾段EOP,並將中間資料段OOP及封包尾段EOP經由第二多工器127輸出至序列管理電路128。資料段緩衝電路123可以由先進先出(First in first out,FIFO)緩衝器實現。
如圖2所示,擷取電路124用以解析接收到的封包頭段SOP,以取得埠識別符及封包頭的來源MAC位址,並輸出至二階段學習引擎14,以供執行MAC位址學習方法。擷取電路124從封包頭段SOP中取得封包頭的目的地MAC位址,以供轉發處理電路125執行轉發查詢。在一些實施例中,封包頭段SOP還可以包含虛擬區域網(Virtual Local Area Network,VLAN)訊息,擷取電路124可以從封包頭段SOP中取得虛擬區域網訊息、來源MAC位址及埠識別符,以供二階段學習引擎14執行MAC位址學習方法。
如圖2所示,轉發處理電路125用以根據目的地MAC位址比對MAC轉發表1411,以執行轉發查詢,而產生一轉發指令。序列管理電路128用以在接收到轉發指令之後,開始經由解多工器129轉發該封包。舉例來說,序列管理電路128將相應於同一埠識別符的封包頭段SOP、中間資料段OOP及封包尾段EOP組合在一起而還原出封包,並在接收到轉發指令之後,轉發該封包。在一些實施例中,序列管理電路128包含多個序列管理子電路1281A~1281D,分別對應輸出入埠16A~16D,並在收到轉發指令之前,儲存來自對應的輸出入埠16A~16D之封包。
如圖2所示,決策電路126用以執行網路交換裝置10之轉發封包及MAC位址學習之外的其他功能。例如,傳輸流量監控。擷取電路124、轉發處理電路125及決策電路126可以由中央處理器或是微處理器等運算電路實現。序列管理電路128可以由具有儲存媒體的控制器實現。
參照圖3,圖3係為本案依據一些實施例之MAC位址學習方法的流程示意圖。在一些實施例中,本案之MAC位址學習方法(亦即建立及維護MAC轉發表1411的方法)適於由網路交換裝置10執行。首先,在解析出封包頭時,二階段學習電路143啟動第一階段程序(步驟S310)。具體而言,二階段學習電路143在從轉傳引擎12取得來源MAC位址及埠識別符時,啟動第一階段程序。接著,執行第一階段程序(步驟S312)。在步驟S310的一些實施例中,二階段學習電路143在取得虛擬區域網訊息、來源MAC位址及埠識別符之後,啟動第一階段程序。
參照圖4,圖4係為本案依據一些實施例之第一階段程序的流程示意圖。首先,二階段學習電路143根據MAC轉發表1411及埠識別符,對來源MAC位址進行一學習處理(容後詳述)而產生一學習結果(步驟S410)。接著,二階段學習電路143根據學習結果產生一狀態參數(步驟S412)。之後,二階段學習電路143關聯狀態參數、埠識別符及來源MAC位址對應的一雜湊位址(容後詳述),並儲存至記憶體141(步驟S414)。
在一些實施例中,如圖2所示,二階段學習電路143包含一學習處理電路1431,學習處理電路1431耦接擷取電路124及MAC轉發表1411,以執行第一階段程序。在一些實施例中,記憶體141包含一狀態緩衝電路1413。狀態緩衝電路1413用以儲存被關聯的狀態參數、埠識別符及來源MAC位址對應的雜湊位址。狀態緩衝電路1413可以由先進先出緩衝器實現。在一些實施例中,狀態緩衝電路1413包含多個狀態緩衝子電路14131A~14131D,分別對應輸出入埠16A~16D。在步驟S414的一些實施例中,二階段學習電路143根據埠識別符,將被關聯的狀態參數、埠識別符及雜湊位址,儲存至對應的狀態緩衝子電路14131A~14131D。在一些實施例中,狀態緩衝子電路14131A~14131D於狀態緩衝電路1413中是依據輸出入埠16A~16D之順序而串列在一起。
在一些實施例中,如圖2所示,二階段學習電路143還包含一指令電路1434,指令電路1434耦接學習處理電路1431及狀態緩衝電路1413。在步驟S414的一些實施例中,學習處理電路1431透過指令電路1434發出推入指令至狀態緩衝電路1413,以使狀態緩衝電路1413響應推入指令而儲存被關聯的狀態參數、埠識別符及來源MAC位址對應的雜湊位址。
復參照圖3。另一方面,在解析出封包校驗參數時,二階段學習電路143啟動第二階段程序(步驟S314)。具體而言,二階段學習電路143在從轉傳引擎12取得封包校驗參數及埠識別符時,啟動第二階段程序。接著,執行第二階段程序(步驟S316),以確認封包校驗是否通過(即確認封包資料是否正確)。若校驗通過(即封包是正確的),則二階段學習電路143讀取在第一階段程序下於記憶體141所儲存的資料,並根據取得的資料來更新MAC轉發表1411。
參照圖5,圖5係為本案依據一些實施例之第二階段程序的流程示意圖。若校驗通過,則二階段學習電路143根據埠識別符,從記憶體141中取得關聯的狀態參數及雜湊位址(步驟S510)。接著,二階段學習電路143根據封包校驗參數、取得的狀態參數及取得的雜湊位址,更新MAC轉發表1411(步驟S512)。
若校驗未通過(即封包是不正確的),則二階段學習電路143不更新MAC轉發表1411。在一些實施例中,若校驗未通過,則二階段學習電路143可以是還原在第一階段程序下對MAC轉發表1411所進行的操作或是更動,亦即還原出尚未執行第一階段程序時的MAC轉發表1411,且也不更新MAC轉發表1411。在一些實施例中,如圖2所示,二階段學習電路143還包含一更新處理電路1432,耦接狀態緩衝電路1413、MAC轉發表1411及轉傳引擎12(圖未示),以執行第二階段程序。
藉此,可以避免錯誤的MAC位址被儲存至MAC轉發表1411中,以確保MAC轉發表1411的有效儲存空間。在一些實施例中,由於儲存於記憶體141之供執行MAC位址學習方法所需的資料的資料量相對於整個封包而言是較小的,因此藉由本發明的MAC位址學習方法還可以降低記憶體141或是網路交換裝置10中的其他儲存媒體所需的儲存空間。
在一些實施例中,如圖2所示,記憶體141還包含一指令緩衝電路1415。指令緩衝電路1415耦接更新處理電路1432、第二多工器127及指令電路1434。指令緩衝電路1415可以由先進先出緩衝器實現。在步驟S510的一些實施例中,更新處理電路1432透過指令緩衝電路1415取得封包尾段EOP之封包校驗參數及埠識別符。更新處理電路1432根據埠識別符,發出控制訊號至指令緩衝電路1415。指令緩衝電路1415響應控制訊號而透過指令電路1434發出彈出指令至狀態緩衝電路1413。狀態緩衝電路1413響應彈出指令而輸出與埠識別符關聯的狀態參數及雜湊位址至更新處理電路1432。
在一些實施例中,由於狀態緩衝電路1413響應彈出指令的優先權是低於響應推入指令的優先權。因此在狀態緩衝電路1413同時接收到彈出指令及推入指令的情形下,指令緩衝電路1415可以暫存埠識別符、封包校驗參數及控制訊號,致使不會因較低的優先權而導致資料流失。
在一些實施例中,如圖2所示,二階段學習電路143還包含一仲裁器1435,仲裁器1435耦接在MAC轉發表1411、學習處理電路1431及更新處理電路1432之間。在啟動第一階段程序時,仲裁器1435導通MAC轉發表1411與學習處理電路1431之間的耦接,以使學習處理電路1431可以執行第一階段程序。在啟動第二階段程序時,仲裁器1435導通MAC轉發表1411與更新處理電路1432之間的耦接,以使更新處理電路1432可以執行第二階段程序。
參照圖6、表1及表2。圖6係為本案依據一些實施例之MAC轉發表1411的示意圖。表1係為圖6之各欄位的說明。表2係為雜湊表(hash table)。圖6的每一列即為一個條目(entry)。每一條目對應有一雜湊位址。每一條目可以包含已記錄MAC位址、狀態旗標、過時參數、埠識別參數及埠識別參數對應的MAC數量。其中,狀態旗標包含更新旗標、建立旗標及移動旗標。在此,圖6所示的埠識別參數「port A」、「port B」、「port C」、「port D」分別對應第一輸出入埠16A~第四輸出入埠16D。
在一些實施例中,為了方便且快速地從記憶體141中讀取MAC轉發表1411的已記錄MAC位址,因而記憶體141可以儲存有雜湊表。雜湊表(如表2所示)與MAC轉發表1411(如圖6所示)之間具有映射關係,以使MAC轉發表1411可以透過雜湊表而被快速地讀取及查找。在雜湊表中,單一雜湊值對應一個雜湊位址集。例如如表2所示,單一雜湊值(例如「0x00」)對應由四個雜湊位址(「0x00/0x0」、「0x00/0x1」、「0x00/0x2」、「0x00/0x3」)組成的雜湊位址集。雜湊位址可以為記憶體141中的實體位址。例如,「0x00/0x0」為實體位址「0x00」、「0x00/0x1」為實體位址「0x01」等。雜湊值可以為學習處理電路1431以來源MAC位址及虛擬區域網訊息進行雜湊函數的演算所產生。
[表1]為圖6之各欄位的說明,具體如下所示。
名稱 | 功能說明 | 資料長度(位元) |
雜湊位址 | MAC轉發表的每一條目於記憶體的儲存位置 | 視設計需求 |
MAC位址 | 已記錄過的來源MAC位址(即已記錄MAC位址) | 視設計需求 |
埠識別參數 | 已記錄過的來源MAC位址所對應的埠識別符(亦即,對應的輸出入埠) | 視設計需求 |
MAC數量 | 輸出入埠在MAC轉發表中對應的MAC位址的總數量 | 視設計需求 |
過時參數 | 條目未被更新的時間或是條目將被移除的時間 | 視設計需求 |
更新旗標 | 是否通過更新檢驗,例如邏輯「1」為通過,邏輯「0」為未通過 | 1 |
移動旗標 | 是否通過輸出入埠遷移檢驗或是輸出入埠遷移超限檢驗,例如邏輯「1」為通過,邏輯「0」為未通過 | 1 |
建立旗標 | 是否為新建立的條目且尚未經第二階段程序的確認,例如邏輯「1」為新建立且未確認的條目,邏輯「0」為非新建立且已確認的條目 | 1 |
靜態 | MAC轉發表是否為使用者自行輸入及管理,例如邏輯「1」為使用者自行輸入及管理,邏輯「0」為非使用者自行輸入及管理 | 1 |
有效 | 條目是否為有效的,例如邏輯「1」是條目為有效,邏輯「0」是條目為無效的 | 1 |
[表2]為雜湊表
雜湊值 | 第一雜湊位址 | 第二雜湊位址 | 第三雜湊位址 | 第四雜湊位址 |
0x00 | 0x00/0x0 | 0x00/0x1 | 0x00/0x2 | 0x00/0x3 |
0x04 | 0x04/0x0 | 0x04/0x1 | 0x04/0x2 | 0x04/0x3 |
0x08 | 0x08/0x0 | 0x08/0x1 | 0x08/0x2 | 0x08/0x3 |
在一些實施例中,每一輸出入埠16A~16D對應有一MAC數量,且MAC轉發表1411可以儲存該些MAC數量。在一些實施例中,同一輸出入埠16A~16D所分別對應的埠識別參數、埠識別符及MAC數量相互關聯。MAC數量為單一輸出入埠16A~16D於MAC轉發表1411中所對應有的MAC位址的總數量。例如,如圖6所示,第一輸出入埠16A對應的埠識別參數為「port A」,於MAC轉發表1411中,可見第一輸出入埠16A對應有2個已記錄MAC位址。
在一些實施例中,如圖2所示,二階段學習電路143還包含一計數電路1433。計數電路1433耦接MAC轉發表1411。計數電路1433用以累計每一輸出入埠16A~16D的MAC數量。計數電路1433可以包含多個計數子電路14331A~14331D,以分別累計輸出入埠16A~16D的MAC數量。在一些實施例中,計數電路1433還可以耦接學習處理電路1431及更新處理電路1432,學習處理電路1431或是更新處理電路1432可以在需增加或減少某一輸出入埠16A~16D的MAC數量時,驅動計數電路1433以使其累增MAC數量(例如將MAC數量加一)或是累減MAC數量(例如將MAC數量減一)。
在一些實施例中,學習處理可以包含一MAC位址超限(MAC limit exceed)檢驗、一雜湊碰撞(hash collision)檢驗、一更新檢驗、一輸出入埠遷移檢驗及一輸出入埠遷移超限(station move MAC limit exceed)檢驗(容後說明)。
在一些實施例中,學習處理電路1431以來源MAC位址比對MAC轉發表1411所記錄的條目。若來源MAC位址於MAC轉發表1411中未具有對應的條目(例如,MAC轉發表1411中的條目之已記錄MAC位址皆與來源MAC位址不相同),則學習處理電路1431執行MAC位址超限檢驗及雜湊碰撞檢驗。若通過檢驗,則學習處理電路1431於MAC轉發表1411建立一個新的條目,以記錄來源MAC位址為新的已記錄MAC位址,以及記錄埠識別符作為埠識別參數。
若來源MAC位址於MAC轉發表1411中具有對應的條目(例如,MAC轉發表1411中的其中一個條目之已記錄MAC位址與來源MAC位址相同),則學習處理電路1431產生「允許學習」的學習結果,並執行更新檢驗、連接埠遷移檢驗或是連接埠遷移超限檢驗。
在一些實施例中,MAC位址超限檢驗為學習處理電路1431根據埠識別符,判斷埠識別符對應的MAC數量是否已達到MAC數量上限。若已達到MAC數量上限,則學習處理電路1431產生「不允許學習」的學習結果,亦即未通過檢驗。若未達到MAC數量上限,則學習處理電路1431產生「允許學習」的學習結果,亦即通過檢驗。
在一些實施例中,雜湊碰撞檢驗為學習處理電路1431根據MAC轉發表1411及雜湊表,判斷根據來源MAC位址所產生的雜湊值,其雜湊位址集的雜湊位址是否皆已分配有MAC位址。若皆已分配有MAC位址,則學習處理電路1431產生「不允許學習」的學習結果,亦即未通過檢驗。例如,如圖6及表2所示,若根據來源MAC位址所產生的雜湊值為「0x04」,其第一雜湊位址~第四雜湊位址皆已分配有MAC位址,則學習處理電路1431產生「不允許學習」的學習結果。若非皆已分配有MAC位址,則學習處理電路1431產生「允許學習」的學習結果(即通過檢驗),並將來源MAC位址分配給該雜湊值的尚未有MAC位址的雜湊位址。例如,如圖6及表2所示,若根據來源MAC位址所產生的雜湊值為「0x00」,其第四雜湊位址「0x00/0x3」尚未分配有MAC位址,則學習處理電路1431產生「允許學習」的學習結果,並將來源MAC位址記錄於第四雜湊位址「0x00/0x3」所指的儲存位置。在一些實施例中,同一雜湊值的雜湊位址是被依序分配給MAC位址。例如,分配順序為「第一雜湊位址、第二雜湊位址、第三雜湊位址、第四雜湊位址」,但本案不限於此,也可以是以其他順序來分配。
參照圖7,圖7係為本案依據一些實施例之第一階段程序的流程示意圖。在一些實施例中,學習處理電路1431還耦接序列管理電路128(圖未示)。在一些實施例中,在產生學習結果後,學習處理電路1431判斷學習結果(步驟S710)。若判斷學習結果為「允許學習」,則學習處理電路1431執行步驟S712、步驟S714及步驟S414。若判斷學習結果為「不允許學習」,則學習處理電路1431產生對應於該封包的一丟棄符,序列管理電路128根據丟棄符丟棄該封包(步驟S716)。具體來說,序列管理電路128在偵測到丟棄符時,丟棄封包。藉此節省了序列管理電路128的儲存空間,且提升了處理封包的速度(例如在第一階段程序下即可判斷出是否丟棄封包,而不必在整個封包的資料段皆經處理後,始判斷是否丟棄封包)。但本案不限於此,序列管理電路128也可以是在第二階段程序後,將封包丟棄。在一些實施例中,如圖2所示,決策電路126還耦接學習處理電路1431,以協助其產生丟棄符。
在步驟S712中,學習處理電路1431根據來源MAC位址,而在MAC轉發表1411中,對來源MAC位址對應的雜湊位址之一條目(於後稱為待更新條目)設置狀態旗標,以形成出待確認條目,從而供第二階段程序做更新前的確認。例如,於條目設置邏輯為「1」的更新旗標、移動旗標及/或建立旗標,而形成出待確認條目。如圖6所示,編號「5」~「8」的條目即為待確認條目。反之,若條目未設置有更新旗標、移動旗標及/或建立旗標(例如,條目的更新旗標、移動旗標及建立旗標皆為邏輯「0」),則稱此條目為待更新條目。如圖6所示,編號「1」~「4」的條目即為待更新條目。
在步驟S714中,學習處理電路1431根據狀態旗標產生對應的狀態參數。例如,學習處理電路1431產生與狀態旗標相同數位邏輯的狀態參數,例如產生邏輯「1」的狀態參數。狀態參數包含更新參數、移動參數、移動超限參數及建立參數。更新參數對應更新旗標,以表示更新檢驗被觸發且檢驗通過。移動參數及移動超限參數對應移動旗標,以分別表示輸出入埠遷移檢驗及輸出入埠遷移超限檢驗被觸發且檢驗通過。建立參數對應建立旗標,以表示學習處理電路1431於MAC轉發表1411建立了新的條目。
參照圖8,圖8係為本案依據一些實施例之尚未被執行第一階段程序之MAC轉發表1411的示意圖。在步驟S712的一些實施例中,在滿足來源MAC位址於MAC轉發表1411未具有對應的待更新條目(亦即,MAC轉發表1411中尚未有條目的已記錄MAC位址是與來源MAC位址相同)之條件時(於此稱為第一條件),學習處理電路1431對待更新條目設置建立旗標,以形成出待確認條目。接著,學習處理電路1431響應建立旗標而產生建立參數(步驟S714)。滿足第一條件的示例可為假設來源MAC位址為「22-11-33-44-55-66」,則參照圖8可見,MAC轉發表1411尚未具有有關MAC位址「22-11-33-44-55-66」的條目。
參照圖9,圖9係為本案依據一些實施例之在滿足第一條件下,執行第一階段程序後的MAC轉發表1411的示意圖。具體來說,若學習結果為允許學習且滿足第一條件,則學習處理電路1431根據來源MAC位址及埠識別符,而於MAC轉發表1411建立一新的待更新條目。例如,承前述例子,如圖9所示,將來源MAC位址及埠識別符分別作為雜湊位址「0x04/0x0」的條目之已記錄MAC位址及埠識別參數,以形成出新的待更新條目。之後,學習處理電路1431執行步驟S712,以形成出待確認條目。例如,如圖9所示,將待更新條目(即雜湊位址「0x04/0x0」的條目)之建立旗標從邏輯「0」變換為邏輯「1」。
在一些實施例中,當MAC轉發表1411的條目設置有建立旗標時,此條目即無法被轉發查詢。具體來說,轉發處理電路125在進行轉發查詢時,判斷MAC轉發表1411的條目是否設置有建立旗標(例如建立旗標是否為邏輯「1」)。若設置有建立旗標,即表示此條目是新建立的(例如,由新建立的待更新條目所形成出的待確認條目),且尚未經過更新處理電路1432執行第二階段程序之封包校驗確認。因此,轉發處理電路125即無需將目的地MAC位址與此條目的已記錄MAC位址進行比對。反之,則轉發處理電路125仍會比對此條目。
參照圖8。在步驟S712的一些實施例中,在滿足來源MAC位址於MAC轉發表1411具有對應的待更新條目,且該待更新條目之埠識別參數與埠識別符相符之條件時(於此稱為第二條件)(亦即,來源MAC位址及埠識別符已被MAC轉發表1411記錄過,且與已記錄的待更新條目相同),學習處理電路1431對待更新條目設置更新旗標,以形成出待確認條目。接著,學習處理電路1431響應更新旗標而產生更新參數(步驟S714)。滿足第二條件的示例可為假設來源MAC位址為「AA-BB-CC-DD-EE-FF」、埠識別符為「port A」,參照圖8可見其與雜湊位址「0x00/0x0」的條目(即待更新條目)之MAC位址及埠識別參數相同。
參照圖10,圖10係為本案依據一些實施例之在滿足第二條件下,執行第一階段程序後的MAC轉發表1411之示意圖。具體來說,若滿足第二條件,則更新檢驗被觸發且通過。例如,輸出入埠16A~16D仍耦接電子裝置20A~20D,且此電子裝置20A~20D並未更換。承前述例子,滿足第二條件的步驟S712之示例可為如圖10所示,將雜湊位址「0x00/0x0」的條目(即待更新條目)之更新旗標從邏輯「0」變換為邏輯「1」(即藉此形成出待確認條目)。
參照圖8。在步驟S712的一些實施例中,在滿足來源MAC位址於MAC轉發表1411具有對應的待更新條目,且待更新條目之埠識別參數與埠識別符不相符之條件時(於此稱為第三條件)(亦即,來源MAC位址已被MAC轉發表1411記錄過且對應的輸出入埠被變更),學習處理電路1431對待更新條目設置移動旗標,以形成出待確認條目。接著,學習處理電路1431響應移動旗標而產生移動參數或是移動超限參數(步驟S714)。滿足第三條件的示例可為假設來源MAC位址為「AA-BB-CC-DD-EE-FF」、埠識別符為「port B」,則參照圖8可見其與雜湊位址「0x00/0x0」的條目(即待更新條目)之MAC位址相同,而與埠識別參數不相同。
參照圖11及圖12。圖11係為本案之一實施例之在滿足第三條件下,執行第一階段程序後的MAC轉發表1411之示意圖。圖12係為本案之另一實施例之在滿足第三條件下,執行第一階段程序後的MAC轉發表1411之示意圖。具體來說,若滿足第三條件,則輸出入埠遷移檢驗或是輸出入埠遷移超限檢驗被觸發且通過。例如,電子裝置20A~20D更換其耦接的輸出入埠16A~16D。具體來說,第一電子裝置20A從耦接第一輸出入埠16A更換為耦接第二輸出入埠16B。承前述例子,滿足第三條件的步驟S712之示例可為如圖11及圖12所示,將雜湊位址「0x00/0x0」的條目(即待更新條目)之移動旗標從邏輯「0」變換為邏輯「1」(即藉此形成出待確認條目)。
在步驟S712的一些實施例中,學習處理電路1431還累增埠識別符對應的一MAC數量。例如,若待確認條目是在滿足第一條件的情形下形成,則學習處理電路1431還增加封包頭段SOP之埠識別符對應的MAC數量。例如,如圖8及圖9所示,假設埠識別符為「port A」,則「port A」對應的MAC數量加一(即,「port A」的MAC數量從2增加為3)。藉此,網路交換裝置10可以實時掌握每一輸出入埠16A~16D可能對應到的MAC位址的總數量,以確保儲存空間(例如,MAC轉發表1411)仍可儲存新的MAC位址。
在一些實施例中,若待確認條目是在滿足第三條件的情形下形成,且埠識別符對應的MAC數量未達到MAC數量上限,則學習處理電路1431響應移動旗標而產生移動參數,且學習處理電路1431還累增封包頭段SOP之埠識別符對應的MAC數量。例如,如圖11所示,假設埠識別符為「port B」,則「port B」對應的MAC數量加一(即,「port B」的MAC數量從2增加為3)。
在另一些實施例中,若待確認條目是在滿足第三條件的情形下形成,且埠識別符對應的MAC數量已達到MAC數量上限,則學習處理電路1431響應移動旗標而產生移動超限參數,且學習處理電路1431不累增封包頭段SOP之埠識別符對應的MAC數量。例如,與圖11的差異在於,在圖12中,「port B」對應的MAC數量維持不變(即,「port B」的MAC數量維持為2)。
復參照圖5。在步驟S512的一些實施例中,在第二階段程序下,當封包校驗參數表示為校驗通過時(例如封包校驗參數以邏輯「0」表示校驗通過),更新處理電路1432根據取得的雜湊位址,從MAC轉發表1411中取得對應的待確認條目,並根據從狀態緩衝電路1413取得的狀態參數,對取得的待確認條目進行一計時更新、一MAC累計更新、一埠識別更新、一旗標更新、或其組合。
計時更新是,更新處理電路1432將取得的待確認條目之一過時參數設置為一預設值。為了節省MAC轉發表1411的儲存空間,因此網路交換裝置10設計有一老化時間上限(例如300秒(s))。每一條目的過時參數用以累計條目未被更新的時間。當條目的過時參數達到老化時間上限,且條目仍未被更新時,則此條目即從MAC轉發表1411中移除。因此,在條目被更新時,更新處理電路1432重置過時參數為預設值(例如重置為0秒),以重新累計未被更新的時間。但本案不限於此,每一條目的過時參數可以用以倒數條目將被移除的時間(例如,在未被更新時,基於老化時間上限進行累減)。因此,在條目被更新時,更新處理電路1432可以重置過時參數為老化時間上限(例如重置為300秒)。
MAC累計更新是,更新處理電路1432累減取得的待確認條目之埠識別參數所對應的MAC數量。埠識別更新是,更新處理電路1432將封包尾段EOP之埠識別符作為該取得的待確認條目之埠識別參數。旗標更新是,更新處理電路1432清除取得的待確認條目之狀態旗標,藉以使更新後的條目能做為新的待更新條目,以供後續的封包所啟動之第一階段程序及第二階段程序執行。
在一些實施例中,在第二階段程序下,當封包校驗參數表示為校驗未通過時(例如封包校驗參數以邏輯「1」表示校驗未通過),更新處理電路1432根據取得的雜湊位址及取得的狀態參數,對待確認條目進行一還原動作。還原動作具有清除待確認條目之狀態旗標的動作、累減封包尾段EOP之埠識別符對應的MAC數量的動作、從MAC轉發表1411中移除待確認條目的動作、或其組合。藉此,還原在第一階段程序下對MAC轉發表1411所進行的操作及更動,且不進行MAC轉發表1411的更新。
參照圖13,圖13係為本案依據一些實施例之第二階段程序的流程示意圖。在取得封包校驗參數後,更新處理電路1432判斷封包校驗參數(步驟S910)。若判斷結果為「校驗未通過」,則更新處理電路1432執行步驟S911~S918,以對取得的待確認條目進行還原動作,而還原出執行第一階段程序前的MAC轉發表1411(如圖8所示)。若判斷結果為「校驗通過」,則更新處理電路1432執行步驟S919~S929,以對取得的待確認條目進行更新動作。
在步驟S911中,更新處理電路1432判斷從狀態緩衝電路1413中取得的狀態參數(亦即,於步驟S510中取得的狀態參數)是否為建立參數。若狀態參數為建立參數,表示已根據封包的來源MAC位址建立了新的待更新條目。由於校驗未通過,因此更新處理電路1432根據建立參數及取得的雜湊位址(亦即,於步驟S510中取得的雜湊位址),將取得的待確認條目從MAC轉發表1411中移除,並累減封包尾段EOP之埠識別符對應的MAC數量(步驟S912)。例如,將圖9所示的MAC轉發表1411還原為圖8所示的MAC轉發表1411。具體而言,假設於步驟S510中取得的雜湊位址為「0x04/0x0」,封包尾段EOP之埠識別符為「port A」,則刪除雜湊位址「0x04/0x0」對應的條目(即取得的待確認條目)所記錄的資訊,並將「port A」對應的MAC數量減一(例如從3降低2)。若狀態參數非為建立參數,則執行步驟S913。
在步驟S913中,更新處理電路1432判斷從狀態緩衝電路1413中取得的狀態參數是否為移動參數。若狀態參數為移動參數,表示輸出入埠遷移檢驗被觸發且通過。由於校驗未通過,因此,更新處理電路1432根據移動參數及取得的雜湊位址,清除取得的待確認條目之移動旗標,而還原出待更新條目,並累減封包尾段EOP之埠識別符對應的MAC數量(步驟S914)。例如,將圖11所示的MAC轉發表1411還原為圖8所示的MAC轉發表1411。具體而言,假設於步驟S510中取得的雜湊位址為「0x00/0x0」,封包尾段EOP之埠識別符為「port B」,則將雜湊位址「0x00/0x0」對應的條目(即取得的待確認條目)之移動旗標從邏輯「1」變換為邏輯「0」,並將「port B」對應的MAC數量減一(例如從3降低為2)。若狀態參數非為移動參數,則執行步驟S915。
在步驟S915中,更新處理電路1432判斷從狀態緩衝電路1413中取得的狀態參數是否為移動超限參數。若狀態參數為移動超限參數,表示輸出入埠遷移超限檢驗被觸發且通過。由於校驗未通過,因此,更新處理電路1432根據移動超限參數及取得的雜湊位址,清除取得的待確認條目之移動旗標,而還原出待更新條目(步驟S916)。例如,將圖12所示的MAC轉發表1411還原為圖8所示的MAC轉發表1411。具體而言,假設於步驟S510中取得的雜湊位址為「0x00/0x0」,則將雜湊位址「0x00/0x0」對應的條目(即取得的待確認條目)之移動旗標從邏輯「1」變換為邏輯「0」。若狀態參數非為移動超限參數,則執行步驟S917。
在步驟S917中,更新處理電路1432判斷從狀態緩衝電路1413中取得的狀態參數是否為更新參數。若狀態參數為更新參數,表示更新檢驗被觸發且通過。由於校驗未通過,因此,更新處理電路1432根據更新參數及取得的雜湊位址,清除取得的待確認條目之更新旗標,而還原出待更新條目(步驟S918)。例如,將圖10所示的MAC轉發表1411還原為圖8所示的MAC轉發表1411。具體而言,假設於步驟S510中取得的雜湊位址為「0x00/0x0」,則將雜湊位址「0x00/0x0」對應的條目(即取得的待確認條目)之更新旗標從邏輯「1」變換為邏輯「0」。若狀態參數非為更新參數,則結束第二階段程序。
參照圖13及圖14。圖14係為本案依據一些實例之在校驗通過下,根據建立參數執行第二階段程序後的MAC轉發表1411的示意圖。在步驟S919中,若狀態參數為建立參數(表示已根據封包的來源MAC位址建立了新的待更新條目),則更新處理電路1432執行步驟S920。若狀態參數非為建立參數,則更新處理電路1432執行步驟S921。在步驟S920中,由於校驗通過,因此更新處理電路1432根據建立參數,對取得的待確認條目進行計時更新及旗標更新。例如,將圖9所示的MAC轉發表1411更新為圖14所示的MAC轉發表1411。具體而言,假設於步驟S510中取得的雜湊位址為「0x04/0x0」,則將雜湊位址「0x04/0x0」對應的條目(即取得的待確認條目)之建立旗標從邏輯「1」變換為邏輯「0」,並將過時參數設置為0秒。
參照圖13及圖15。圖15係為本案依據一些實施例之在校驗通過下,根據移動參數執行第二階段程序後的MAC轉發表1411的示意圖。在步驟S921中,若狀態參數為移動參數(表示輸出入埠遷移檢驗被觸發且通過),則更新處理電路1432執行步驟S922。若狀態參數非為移動參數,則更新處理電路1432執行步驟S924。在步驟S922中,由於校驗通過,因此,更新處理電路1432根據移動參數,對取得的待確認條目進行計時更新、MAC累計更新、埠識別更新及旗標更新。例如,將圖11所示的MAC轉發表1411更新為圖15所示的MAC轉發表1411。具體而言,假設於步驟S510中取得的雜湊位址為「0x00/0x0」,封包尾段EOP之埠識別符為「port B」,則將雜湊位址「0x00/0x0」對應的條目(即取得的待確認條目)之移動旗標從邏輯「1」變換為邏輯「0」,將過時參數設置為0秒,將埠識別參數(「port A」)對應的MAC數量減一(例如將MAC數量從2降低為1),以及以「port B」作為埠識別參數。
參照圖13及圖16。圖16係為本案依據一些實施例之在校驗通過下,根據移動超限參數執行第二階段程序後的MAC轉發表1411的示意圖。在步驟S924中,若狀態參數為移動超限參數(表示輸出入埠遷移超限檢驗被觸發且通過),則更新處理電路1432執行步驟S925。若狀態參數非為移動超限參數,則更新處理電路1432執行步驟S926。在步驟S925中,由於校驗通過,且電子裝置20A~20D所更換後的輸出入埠16A~16D,其對應的MAC數量已達到MAC數量上限,因此,更新處理電路1432根據移動超限參數,將取得的待確認條目從MAC轉發表1411中移除,並進行MAC累計更新,以確保MAC轉發表1411之正確性。例如,將圖12所示的MAC轉發表1411更新為圖16所示的MAC轉發表1411。具體而言,假設於步驟S510中取得的雜湊位址為「0x00/0x0」,則刪除雜湊位址「0x00/0x0」對應的條目(即取得的待確認條目),以及將埠識別參數(「port A」)對應的MAC數量減一(例如將MAC數量從2降低為1)。
參照圖13及圖17。圖17係為本案依據一些實施例之在校驗通過下,根據更新參數執行第二階段程序後的MAC轉發表1411的示意圖。在步驟S926中,若狀態參數為更新參數(表示更新檢驗被觸發且通過),則更新處理電路1432執行步驟S927~S929。若狀態參數非為更新參數,則結束第二階段程序。在步驟S929中,由於校驗通過,因此,更新處理電路1432根據更新參數,對取得的待確認條目進行計時更新及旗標更新。例如,將圖10所示的MAC轉發表1411更新為圖17所示的MAC轉發表1411。具體而言,假設於步驟S510中取得的雜湊位址為「0x00/0x0」,則將雜湊位址「0x00/0x0」對應的條目(即取得的待確認條目)之更新旗標從邏輯「1」變換為邏輯「0」,以及將過時參數設置為0秒。
在一些實施例中,在執行步驟S929之前,更新處理電路1432還先判斷封包尾段EOP之埠識別符與取得的待確認條目之埠識別參數是否相符(步驟S927)。由於在一些情形下,第一封包及第二封包已啟動第一階段程序之後,第一封包及第二封包才啟動第二階段程序(一般情形為第一封包啟動第一階段程序及第二階段程序之後,第二封包才啟動第一階段程序及第二階段程序)。例如,在一示範例中,如圖2所示,由於擷取電路124與第二多工器127的輸出端之間(如訊號路徑L1)具有其他元件(如轉發處理電路125及決策電路126),造成於訊號路徑L1上可能發生延遲。因此二階段學習電路143可能在被第一封包啟動第二階段程序之前,已被第二封包啟動第一階段程序。在另一示範例中,由於第一封包的資料量較大,而第二封包的資料量較小,致使在第一封包及第二封包皆已啟動第一階段程序的情形下,先被第二封包啟動第二階段程序之後,才被第一封包啟動第二階段程序。
舉例來說,假設第一封包及第二封包的來源MAC位址皆為「15-87-5D-6E-7A-D8」,參照圖6可見,編號「5」的條目同時設置有更新旗標及移動旗標。也就是說,第一封包及第二封包已進行過第一階段程序,而第一封包及第二封包尚未進行第二階段程序。假設第一封包及第二封包分別是觸發輸出入遷移檢驗及觸發更新檢驗。此時,由於二階段學習電路143可能在欲進行步驟S929之前已將編號「5」的條目從「port C」變換為其他值。因而造成在欲進行步驟S929時,可能有封包尾段EOP之埠識別符不同於取得的待確認條目之埠識別參數的情形發生。
因此,為了避免前述情形導致錯誤的記錄MAC轉發表1411,而在確認封包尾段EOP之埠識別符與取得的待確認條目之埠識別參數相符時,執行步驟S929。當封包尾段EOP之埠識別符與取得的待確認條目之埠識別參數不相符,則更新處理電路1432根據更新參數及取得的雜湊位址(於步驟S510中取得的雜湊位址),清除取得的待確認條目之更新旗標,而還原出待更新條目(步驟S928)。也就是說,不對MAC轉發表1411進行更新。例如,將圖10的MAC轉發表1411還原為圖8的MAC轉發表1411。藉此,確保MAC轉發表1411儲存正確的條目。
綜上所述,依據一些實施例,網路交換裝置在切貫封包交換的情形下,濾除MAC位址轉發表中錯誤的來源MAC位址,以使在轉發封包的情形下,仍可使MAC位址轉發表中只儲存有正確的來源MAC位址。本發明的網路交換裝置將來源MAC位址學習至MAC位址轉發表的整個程序,無需處理器的協同處理。也就是說,網路交換裝置能在線速下(因不會受限於處理器的處理速度),將來源MAC位址學習至MAC位址轉發表。依據一些實施例,由於網路交換裝置可以是在接收到封包中的來源MAC位址時,即進行來源MAC位址的學習處理(也就是說,可以不必儲存完整個封包後,進行來源MAC位址的學習處理),因此降低了網路交換裝置處理封包時所需的儲存容量,以及提升了網路交換裝置處理封包時的處理速度。
10:網路交換裝置
12:轉傳引擎
120A~120D:前置處理電路
121:第一多工器
122:選擇電路
123:資料段緩衝電路
124:擷取電路
125:轉發處理電路
126:決策電路
127:第二多工器
128:序列管理電路
1281A~1281D:序列管理子電路
129:解多工器
L1、L2:訊號路徑
SOP:封包頭段
OOP:中間資料段
EOP:封包尾段
14:二階段學習引擎
141:記憶體
1411:MAC轉發表
1413:狀態緩衝電路
14131A~14131D:狀態緩衝子電路
1415:指令緩衝電路
143:二階段學習電路
1431:學習處理電路
1432:更新處理電路
1433:計數電路
14331A~14331D:計數子電路
1434:指令電路
1435:仲裁器
16A~16D:輸出入埠
20A~20D:電子裝置
S310~S316:步驟
S410~S414:步驟
S510~S512:步驟
S710~S716:步驟
S910~S929:步驟
[圖1]係為本案依據一些實施例之網路交換裝置的應用示意圖。
[圖2]係為本案依據一些實施例之網路交換裝置的方塊示意圖。
[圖3]係為本案依據一些實施例之MAC位址學習方法的流程示意圖。
[圖4]係為本案依據一些實施例之第一階段程序的流程示意圖。
[圖5]係為本案依據一些實施例之第二階段程序的流程示意圖。
[圖6]係為本案依據一些實施例之MAC轉發表的示意圖。
[圖7]係為本案依據一些實施例之第一階段程序的流程示意圖。
[圖8]係為本案依據一些實施例之尚未被執行第一階段程序之MAC轉發表的示意圖。
[圖9]係為本案依據一些實施例之在滿足第一條件下,執行第一階段程序後的MAC轉發表的示意圖。
[圖10]係為本案依據一些實施例之在滿足第二條件下,執行第一階段程序後的MAC轉發表之示意圖。
[圖11]係為本案之一實施例之在滿足第三條件下,執行第一階段程序後的MAC轉發表之示意圖。
[圖12]係為本案之另一實施例之在滿足第三條件下,執行第一階段程序後的MAC轉發表之示意圖。
[圖13]係為本案依據一些實施例之第二階段程序的流程示意圖。
[圖14]係為本案依據一些實例例之在校驗通過下,根據建立參數執行第二階段程序後的MAC轉發表的示意圖。
[圖15]係為本案依據一些實施例之在校驗通過下,根據移動參數執行第二階段程序後的MAC轉發表的示意圖。
[圖16]係為本案依據一些實施例之在校驗通過下,根據移動超限參數執行第二階段程序後的MAC轉發表的示意圖。
[圖17]係為本案依據一些實施例之在校驗通過下,根據更新參數執行第二階段程序後的MAC轉發表的示意圖。
10:網路交換裝置
12:轉傳引擎
120A~120D:前置處理電路
121:第一多工器
122:選擇電路
123:資料段緩衝電路
124:擷取電路
125:轉發處理電路
126:決策電路
127:第二多工器
128:序列管理電路
1281A~1281D:序列管理子電路
129:解多工器
L1、L2:訊號路徑
SOP:封包頭段
OOP:中間資料段
EOP:封包尾段
14:二階段學習引擎
141:記憶體
1411:MAC轉發表
1413:狀態緩衝電路
14131A~14131D:狀態緩衝子電路
1415:指令緩衝電路
143:二階段學習電路
1431:學習處理電路
1432:更新處理電路
1433:計數電路
14331A~14331D:計數子電路
1434:指令電路
1435:仲裁器
16A~16D:輸出入埠
Claims (18)
- 一種網路裝置,包含:一轉傳引擎,用以接收來自一輸出入埠的一封包,解析出該封包的一封包頭(header)及一封包校驗參數,以及產生對應於該輸出入埠的一埠識別符,該轉傳引擎依據一MAC轉發表轉發該封包至另一該輸出入埠,其中該封包頭具有一來源MAC位址;及一二階段學習引擎,包含:一記憶體,儲存有該MAC轉發表;及一二階段學習電路,用以:在解析出該封包頭時,啟動一第一階段程序,其中,該第一階段程序包含:根據該MAC轉發表及該埠識別符,對該來源MAC位址進行一學習處理而產生一學習結果;根據該學習結果產生一狀態參數;及關聯(Associate)該狀態參數、該埠識別符及該來源MAC位址對應的一雜湊位址,並儲存至該記憶體,其中,在該第一階段程序下,當該學習結果為允許學習時,該二階段學習電路根據該來源MAC位址,而在該MAC轉發表中,對該來源MAC位址對應的該雜湊位址之一待更新條目設置一狀態旗標,以形成出一待確認條目,並根據該狀態旗標產生對應的該狀態參數;及 在解析出該封包校驗參數時,啟動一第二階段程序,其中,該第二階段程序包含:根據該埠識別符,從該記憶體中取得該狀態參數及該雜湊位址;及根據該封包校驗參數、該取得的狀態參數及該取得的雜湊位址,更新該MAC轉發表。
- 如請求項1所述之網路裝置,其中,在該學習結果為不允許學習時,該二階段學習電路產生對應於該封包的一丟棄符,該轉傳引擎根據該丟棄符,丟棄該封包。
- 如請求項1所述之網路裝置,其中,在該第二階段程序下,當該封包校驗參數表示為校驗通過時,該二階段學習電路根據該取得的雜湊位址,從該MAC轉發表中取得對應的該待確認條目,並根據該取得的狀態參數,對該取得的待確認條目進行一計時更新、一MAC累計更新、一埠識別更新、一旗標更新、或其組合。
- 如請求項3所述之網路裝置,其中該計時更新是,該二階段學習電路將該取得的待確認條目之一過時參數設置為一預設值。
- 如請求項3所述之網路裝置,其中該MAC累計更新是,該二階段學習電路累減該取得的待確認條目之一埠識別參數所對應的一MAC數量。
- 如請求項3所述之網路裝置,其中該埠識別更新是,該二階段學習電路將該埠識別符作為該取得的待確認條目之一埠識別參數。
- 如請求項3所述之網路裝置,其中該旗標更新是,該二階段學習電路清除該取得的待確認條目之該狀態旗標。
- 如請求項1所述之網路裝置,其中,在該第一階段程序下,當該學習結果為允許學習時,該二階段學習電路累增該埠識別符對應的一MAC數量。
- 如請求項8所述之網路裝置,其中,在該第二階段程序下,當該封包校驗參數表示為校驗未通過時,該二階段學習電路根據該取得的雜湊位址及該取得的狀態參數,對該待確認條目進行一還原動作,該還原動作具有清除該待確認條目之狀態旗標的動作、累減該埠識別符對應的該MAC數量的動作、從該MAC轉發表中移除該待確認條目的動作、或其組合。
- 一種MAC位址學習方法,適於一網路裝置,該MAC位址學習方法包含:接收來自一輸出入埠的一封包;產生相應於該輸出入埠的一埠識別符;在解析出該封包的一封包頭(header)時,啟動一第一階段程序,其中該封包頭具有一來源MAC位址;在解析出該封包的一封包校驗參數時,啟動一第二階段程序;及依據一記憶體之一MAC轉發表,轉發該封包至另一該輸出入埠;其中,該第一階段程序包含:根據該MAC轉發表及該埠識別符,對該來源MAC位址進行一學習處理而產生一學習結果; 根據該學習結果產生一狀態參數;及關聯(Associate)該狀態參數、該埠識別符及該來源MAC位址對應的一雜湊位址,並儲存至該記憶體,其中,在該第一階段程序下,當該學習結果為允許學習時,根據該來源MAC位址,而在該MAC轉發表中,對該來源MAC位址對應的該雜湊位址之一待更新條目設置一狀態旗標,以形成出一待確認條目,並根據該狀態旗標產生對應的該狀態參數;其中,該第二階段程序包含:根據該埠識別符,從該記憶體中取得該狀態參數及該雜湊位址;及根據該封包校驗參數、該取得的狀態參數及該取得的雜湊位址,更新該MAC轉發表。
- 如請求項10所述之MAC位址學習方法,其中,在該學習結果為不允許學習時,產生對應於該封包的一丟棄符,並根據該丟棄符,丟棄該封包。
- 如請求項10所述之MAC位址學習方法,其中,在該第二階段程序下,當該封包校驗參數表示為校驗通過時,根據該取得的雜湊位址,從該MAC轉發表中取得對應的該待確認條目,並根據該取得的狀態參數,對該取得的待確認條目進行一計時更新、一MAC累計更新、一埠識別更新、一旗標更新、或其組合。
- 如請求項12所述之MAC位址學習方法,其中,該計時更新是,將該取得的待確認條目之一過時參數設置為一預設值。
- 如請求項12所述之MAC位址學習方法,其中,該MAC累計更新是,累減該取得的待確認條目之一埠識別參數所對應的一MAC數量。
- 如請求項12所述之MAC位址學習方法,其中,該埠識別更新是,將該埠識別符作為該取得的待確認條目之一埠識別參數。
- 如請求項12所述之MAC位址學習方法,其中,該旗標更新是,清除該取得的待確認條目之該狀態旗標。
- 如請求項10所述之MAC位址學習方法,其中,在該第一階段程序下,當該學習結果為允許學習時,累增該埠識別符對應的一MAC數量。
- 如請求項17所述之MAC位址學習方法,其中,在該第二階段程序下,當該封包校驗參數表示為校驗未通過時,根據該取得的雜湊位址及該取得的狀態參數,對該待確認條目進行一還原動作,其中,該還原動作具有清除該待確認條目之狀態旗標的動作、累減該埠識別符對應的該MAC數量的動作、從該MAC轉發表中移除該待確認條目的動作、或其組合。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/350,266 US11546260B1 (en) | 2021-06-17 | 2021-06-17 | Network device and media access control address learning method therefor |
US17/350,266 | 2021-06-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI779798B true TWI779798B (zh) | 2022-10-01 |
TW202301841A TW202301841A (zh) | 2023-01-01 |
Family
ID=84464081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110131361A TWI779798B (zh) | 2021-06-17 | 2021-08-24 | 網路裝置及其媒體存取控制位址學習方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11546260B1 (zh) |
CN (1) | CN115499390A (zh) |
TW (1) | TWI779798B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11881935B2 (en) * | 2022-03-02 | 2024-01-23 | Arista Networks, Inc. | Reducing a network device upgrade outage using a reduced hardware resource scaling |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040019876A1 (en) * | 2000-09-22 | 2004-01-29 | Narad Networks, Inc. | Network architecture for intelligent network elements |
US20060182118A1 (en) * | 2005-02-01 | 2006-08-17 | Hong Kong Applied Science and Technology Research Institute Company Limited | System And Method For Efficient Traffic Processing |
TW201933837A (zh) * | 2018-01-19 | 2019-08-16 | 思銳科技股份有限公司 | 虛擬網路隧道內流量資料擷取方法與系統 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5343471A (en) * | 1992-05-11 | 1994-08-30 | Hughes Aircraft Company | Address filter for a transparent bridge interconnecting local area networks |
JP2007208632A (ja) * | 2006-02-01 | 2007-08-16 | Sony Corp | 情報処理装置および方法、プログラム、並びに記録媒体 |
JP2011010065A (ja) * | 2009-06-26 | 2011-01-13 | Fujitsu Ltd | レイテンシ短縮方法及びネットワーク接続装置 |
US10862801B1 (en) * | 2018-11-15 | 2020-12-08 | Juniper Networks, Inc. | Selective media access control (MAC) learning and purging to reduce flooding and replication in a network |
US10764214B1 (en) * | 2018-12-13 | 2020-09-01 | Amazon Technologies, Inc. | Error source identification in cut-through networks |
-
2021
- 2021-06-17 US US17/350,266 patent/US11546260B1/en active Active
- 2021-08-20 CN CN202110960903.4A patent/CN115499390A/zh active Pending
- 2021-08-24 TW TW110131361A patent/TWI779798B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040019876A1 (en) * | 2000-09-22 | 2004-01-29 | Narad Networks, Inc. | Network architecture for intelligent network elements |
US20060182118A1 (en) * | 2005-02-01 | 2006-08-17 | Hong Kong Applied Science and Technology Research Institute Company Limited | System And Method For Efficient Traffic Processing |
TW201933837A (zh) * | 2018-01-19 | 2019-08-16 | 思銳科技股份有限公司 | 虛擬網路隧道內流量資料擷取方法與系統 |
Also Published As
Publication number | Publication date |
---|---|
US20220407806A1 (en) | 2022-12-22 |
US11546260B1 (en) | 2023-01-03 |
TW202301841A (zh) | 2023-01-01 |
CN115499390A (zh) | 2022-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8522111B2 (en) | Optimization of packet buffer memory utilization | |
CN105122745B (zh) | 用于网络设备的高效最长前缀匹配技术 | |
US10673650B2 (en) | Programmable tunnel creation for hardware-based packet processing | |
CN109962847B (zh) | 业务功能链报文的封装方法和装置及计算机可读存储介质 | |
US20050171937A1 (en) | Memory efficient hashing algorithm | |
US8352391B1 (en) | Fast update filter | |
JP6369532B2 (ja) | ネットワーク制御方法、ネットワークシステムと装置及びプログラム | |
US8842672B2 (en) | Systems and methods for modifying network packets to use unrecognized headers/fields for packet classification and forwarding | |
US9667440B2 (en) | Method and system for identifying an incoming interface using openflow protocol | |
WO2016128834A1 (en) | Method and system for identifying an outgoing interface using openflow protocol | |
TWI779798B (zh) | 網路裝置及其媒體存取控制位址學習方法 | |
US9846710B2 (en) | Systems and methods for increasing the scalability of software-defined networks | |
JP6086020B2 (ja) | 通信装置、アドレス学習方法及びアドレス学習プログラム | |
US10862809B2 (en) | Modifying carrier packets based on information in tunneled packets | |
CN113986560B (zh) | 一种在智能网卡/DPU内实现P4与OvS逻辑复用的方法 | |
JP5889218B2 (ja) | データ転送装置及びデータ転送方法 | |
WO2014125636A1 (ja) | 通信装置またはパケット転送方法 | |
CN110741610A (zh) | 具有本地交换的端口扩展器 | |
US20170353587A1 (en) | Filtering apparatus, method, and recording medium | |
US9559857B2 (en) | Preprocessing unit for network data | |
JP2016506217A (ja) | パケット処理方法及び転送要素 | |
JP2013141140A (ja) | 通信装置及び通信装置のためのプログラム | |
JP2016006942A (ja) | テーブル管理装置,及びテーブル管理方法 | |
US20240089202A1 (en) | System and method for forwarding network traffic | |
JP4151217B2 (ja) | データグラム転送装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |