CN115499390A - 网络装置及其媒体存取控制地址学习方法 - Google Patents
网络装置及其媒体存取控制地址学习方法 Download PDFInfo
- Publication number
- CN115499390A CN115499390A CN202110960903.4A CN202110960903A CN115499390A CN 115499390 A CN115499390 A CN 115499390A CN 202110960903 A CN202110960903 A CN 202110960903A CN 115499390 A CN115499390 A CN 115499390A
- Authority
- CN
- China
- Prior art keywords
- mac
- parameter
- packet
- learning
- entry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
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/252—Store and forward 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/251—Cut-through or wormhole 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]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
- Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
- Electrically Operated Instructional Devices (AREA)
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是为本案依据一些实施例的网络交换装置的应用示意图。
图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转发表的示意图。
具体实施方式
参照图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的各栏位的说明,具体如下所示。
[表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所示,假设端口识别符为「portA」,则「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:步骤。
Claims (20)
1.一种网络装置,包含:
一转传引擎,用以接收来自一输出输入端口的一封包,解析出该封包的一封包头(header)及一封包校验参数,以及产生对应于该输出输入端口的一端口识别符,该转传引擎依据一MAC转发表转发该封包至另一该输出输入端口,其中该封包头具有一来源MAC地址;及
一二阶段学习引擎,包含:
一存储器,储存有该MAC转发表;及
一二阶段学习电路,用以:
在解析出该封包头时,启动一第一阶段程序,其中,该第一阶段程序包含:
根据该MAC转发表及该端口识别符,对该来源MAC地址进行一学习处理而产生一学习结果;
根据该学习结果产生一状态参数;及
关联(Associate)该状态参数、该端口识别符及该来源MAC地址对应的一散列地址,并储存至该存储器;及
在解析出该封包校验参数时,启动一第二阶段程序,其中,该第二阶段程序包含:
根据该端口识别符,从该存储器中取得该状态参数及该散列地址;及
根据该封包校验参数、该取得的状态参数及该取得的散列地址,更新该MAC转发表。
2.如权利要求1所述的网络装置,其中,在该学习结果为不允许学习时,该二阶段学习电路产生对应于该封包的一丢弃符,该转传引擎根据该丢弃符,丢弃该封包。
3.如权利要求1所述的网络装置,其中,在该第一阶段程序下,当该学习结果为允许学习时,该二阶段学习电路根据该来源MAC地址,而在该MAC转发表中,对该来源MAC地址对应的该散列地址的一待更新条目设置一状态旗标,以形成出一待确认条目,并根据该状态旗标产生对应的该状态参数。
4.如权利要求3所述的网络装置,其中,在该第二阶段程序下,当该封包校验参数表示为校验通过时,该二阶段学习电路根据该取得的散列地址,从该MAC转发表中取得对应的该待确认条目,并根据该取得的状态参数,对该取得的待确认条目进行一计时更新、一MAC累计更新、一端口识别更新、一旗标更新、或其组合。
5.如权利要求4所述的网络装置,其中该计时更新是,该二阶段学习电路将该取得的待确认条目的一过时参数设置为一预设值。
6.如权利要求4所述的网络装置,其中该MAC累计更新是,该二阶段学习电路累减该取得的待确认条目的一端口识别参数所对应的一MAC数量。
7.如权利要求4所述的网络装置,其中该端口识别更新是,该二阶段学习电路将该端口识别符作为该取得的待确认条目的一端口识别参数。
8.如权利要求4所述的网络装置,其中该旗标更新是,该二阶段学习电路清除该取得的待确认条目的该状态旗标。
9.如权利要求3所述的网络装置,其中,在该第一阶段程序下,当该学习结果为允许学习时,该二阶段学习电路累增该端口识别符对应的一MAC数量。
10.如权利要求9所述的网络装置,其中,在该第二阶段程序下,当该封包校验参数表示为校验未通过时,该二阶段学习电路根据该取得的散列地址及该取得的状态参数,对该待确认条目进行一还原动作,该还原动作具有清除该待确认条目的状态旗标的动作、累减该端口识别符对应的该MAC数量的动作、从该MAC转发表中移除该待确认条目的动作、或其组合。
11.一种MAC地址学习方法,适于一网络装置,该MAC地址学习方法包含:
接收来自一输出输入端口的一封包;
产生相应于该输出输入端口的一端口识别符;
在解析出该封包的一封包头(header)时,启动一第一阶段程序,其中该封包头具有一来源MAC地址;
在解析出该封包的一封包校验参数时,启动一第二阶段程序;及
依据一存储器的一MAC转发表,转发该封包至另一该输出输入端口;
其中,该第一阶段程序包含:
根据该MAC转发表及该端口识别符,对该来源MAC地址进行一学习处理而产生一学习结果;
根据该学习结果产生一状态参数;及
关联(Associate)该状态参数、该端口识别符及该来源MAC地址对应的一散列地址,并储存至该存储器;
其中,该第二阶段程序包含:
根据该端口识别符,从该存储器中取得该状态参数及该散列地址;及
根据该封包校验参数、该取得的状态参数及该取得的散列地址,更新该MAC转发表。
12.如权利要求11所述的MAC地址学习方法,其中,在该学习结果为不允许学习时,产生对应于该封包的一丢弃符,并根据该丢弃符,丢弃该封包。
13.如权利要求11所述的MAC地址学习方法,其中,在该第一阶段程序下,当该学习结果为允许学习时,根据该来源MAC地址,而在该MAC转发表中,对该来源MAC地址对应的该散列地址的一待更新条目设置一状态旗标,以形成出一待确认条目,并根据该状态旗标产生对应的该状态参数。
14.如权利要求13所述的MAC地址学习方法,其中,在该第二阶段程序下,当该封包校验参数表示为校验通过时,根据该取得的散列地址,从该MAC转发表中取得对应的该待确认条目,并根据该取得的状态参数,对该取得的待确认条目进行一计时更新、一MAC累计更新、一端口识别更新、一旗标更新、或其组合。
15.如权利要求14所述的MAC地址学习方法,其中,该计时更新是,将该取得的待确认条目的一过时参数设置为一预设值。
16.如权利要求14所述的MAC地址学习方法,其中,该MAC累计更新是,累减该取得的待确认条目的一端口识别参数所对应的一MAC数量。
17.如权利要求14所述的MAC地址学习方法,其中,该端口识别更新是,将该端口识别符作为该取得的待确认条目的一端口识别参数。
18.如权利要求14所述的MAC地址学习方法,其中,该旗标更新是,清除该取得的待确认条目的该状态旗标。
19.如权利要求13所述的MAC地址学习方法,其中,在该第一阶段程序下,当该学习结果为允许学习时,累增该端口识别符对应的一MAC数量。
20.如权利要求19所述的MAC地址学习方法,其中,在该第二阶段程序下,当该封包校验参数表示为校验未通过时,根据该取得的散列地址及该取得的状态参数,对该待确认条目进行一还原动作,其中,该还原动作具有清除该待确认条目的状态旗标的动作、累减该端口识别符对应的该MAC数量的动作、从该MAC转发表中移除该待确认条目的动作、或其组合。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/350,266 | 2021-06-17 | ||
US17/350,266 US11546260B1 (en) | 2021-06-17 | 2021-06-17 | Network device and media access control address learning method therefor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115499390A true CN115499390A (zh) | 2022-12-20 |
Family
ID=84464081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110960903.4A Pending CN115499390A (zh) | 2021-06-17 | 2021-08-20 | 网络装置及其媒体存取控制地址学习方法 |
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 |
Family Cites Families (8)
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 |
US7072360B2 (en) * | 2000-09-22 | 2006-07-04 | 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 |
JP2007208632A (ja) * | 2006-02-01 | 2007-08-16 | Sony Corp | 情報処理装置および方法、プログラム、並びに記録媒体 |
JP2011010065A (ja) * | 2009-06-26 | 2011-01-13 | Fujitsu Ltd | レイテンシ短縮方法及びネットワーク接続装置 |
TW201933837A (zh) * | 2018-01-19 | 2019-08-16 | 思銳科技股份有限公司 | 虛擬網路隧道內流量資料擷取方法與系統 |
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
Also Published As
Publication number | Publication date |
---|---|
US11546260B1 (en) | 2023-01-03 |
TWI779798B (zh) | 2022-10-01 |
US20220407806A1 (en) | 2022-12-22 |
TW202301841A (zh) | 2023-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11677664B2 (en) | Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine | |
US8522111B2 (en) | Optimization of packet buffer memory utilization | |
US6157641A (en) | Multiprotocol packet recognition and switching | |
US7957390B2 (en) | Detection of signatures in disordered message segments | |
US9363234B2 (en) | Fast update filter | |
CN108306835B (zh) | 一种以太网交换机的输入缓存及数据转发方法 | |
JP4675913B2 (ja) | 無線通信システムにおけるバースト処理装置及び方法 | |
CN105122745A (zh) | 用于网络设备的高效最长前缀匹配技术 | |
US8179792B1 (en) | Packet de-duplication | |
WO2016181461A1 (ja) | 転送装置、通信システム、通信方法、および、通信プログラム | |
CN115499390A (zh) | 网络装置及其媒体存取控制地址学习方法 | |
KR20140131333A (ko) | 스트림 인식 및 필터링 | |
KR101129348B1 (ko) | 순방향 에러 정정 방법 | |
US7406089B1 (en) | Data verification using signature | |
US10581761B2 (en) | Segmentation and reassembly of network packets for switched fabric networks | |
JP5889218B2 (ja) | データ転送装置及びデータ転送方法 | |
US20180337863A1 (en) | Modifying Carrier Packets based on Information in Tunneled Packets | |
KR20180088531A (ko) | 네트워크 프로토콜 업데이트들에 적응하기 위한 시스템 및 방법 | |
CN107395479B (zh) | 无损环网交换机、无损自愈环网及其数据通讯方法 | |
JPH10341419A (ja) | Mpeg2トランスポートストリーム分離方法と回路 | |
US9559857B2 (en) | Preprocessing unit for network data | |
US11775342B2 (en) | System and method for processing information hierarchy management | |
US20060200731A1 (en) | System and method of error detection for unordered data delivery | |
EP3264716B1 (en) | State transition compression mechanism to efficiently compress dfa based regular expression signatures | |
CN109891833B (zh) | 传送装置和帧传送方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |