CN112087388A - 一种l2数据报文的转发方法 - Google Patents
一种l2数据报文的转发方法 Download PDFInfo
- Publication number
- CN112087388A CN112087388A CN202010826998.6A CN202010826998A CN112087388A CN 112087388 A CN112087388 A CN 112087388A CN 202010826998 A CN202010826998 A CN 202010826998A CN 112087388 A CN112087388 A CN 112087388A
- Authority
- CN
- China
- Prior art keywords
- forwarding
- message
- mac address
- packet
- bitmap
- 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.)
- Granted
Links
Images
Classifications
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种L2数据报文的转发方法,涉及数据通信技术领域,其在L2转发模块与L2转发表之间增加一过滤器,在数据报文转发过程中,仅在其第一个报文进行地址学习,利用所述过滤器过滤掉其第一个报文以外的报文的学习过程。本发明方法在转发数据报文的过程中,当仅数据流的第一个报文需要进行地址学习,后续报文无需进行地址学习时,可以过滤掉绝大多数的读写表查找操作,交换芯片可以降低功耗;也可以减少读写冲突,进一步提升性能。
Description
技术领域
本发明涉及数据通信技术领域,具体而言,涉及一种L2数据报文的转发方法。
背景技术
经典的L2转发设计架构如图1所示,由L2转发模块与L2转发表构成。L2转发表逻辑上为一张HASH表,查找键值为MAC地址+VID,HASH表分成n张物理表,每一张物理表称之为一个Bank。目前,L2转发模块转发流程由下面几个步骤构成:
1)判断源MAC地址是否已经学习:根据源MAC地址+VID查找L2转发表,命中即表明地址已经学习;未命中,则表明地址尚未学习。
2)学习源MAC地址:如果未命中,则将地址学习到L2转发表,具体实现方式为写转发表,键值为源MAC地址+VID。
3)查找目的口:根据目的MAC地址+VID查找L2转发表,如果命中,则根据表中的目的口进行转发;否则进行泛洪。
当进行读或写操作时,要读或写的内容位于bank0的概率为1/n;同理位于bank1的概率也为1/n…。当同时进行读或写操作时,且读或写的内容位于相同的bank的概率为1/n2,这个概率为冲突概率。当发生冲突时,流水线必须延迟其中一个操作,当另一个操作完成时,才继续执行被延迟的操作,这会造成性能损失。随着bank的数量增大时,冲突的概率呈指数级地降低,当bank数量达到一定数量后,冲突概率达到可以接受的程度。
目前,通过bank的方式已经解决了大部分读写冲突的问题,性能也提升了许多,但是仍然存在一些问题。正常转发过程中,交换芯片仅在来了一条新的数据流时,需要进行地址学习,其余时刻实际上是不需要进行学习的,因为地址已经学习在L2转发表中了。所以转发过程中,地址学习即步骤1)与2),在大部分时间内都是多余的操作,这部分引入了冲突来源,并且增加了芯片的功耗。
发明内容
本发明在于提供一种L2数据报文的转发方法,其能够缓解上述问题。
为了缓解上述的问题,本发明采取的技术方案如下:
一种L2数据报文的转发方法,在L2转发模块与L2转发表之间增加一过滤器,在两地址已确定的设备之间进行数据报文流的转发时,仅在第一个报文转发过程中进行地址学习,利用所述过滤器过滤掉其它报文的学习过程。
本方案的技术效果是:仅在新数据流的第一个报文进行学习,后续的报文学习过程被过滤器过滤掉,大大减少了重复无用的查表、写表操作,降低了芯片的功耗,降低了读写表冲突的可能性,改善了芯片性能。
进一步地,所述过滤器包括由寄存器bit构成的数组BITMAP[N],其每一个bit的值代表L2转发表中是否存在某条表项,其中,1代表存在,0代表不存在。
本方案的技术效果是:仅在数据流建立过程中存在地址学习并转发过程,即一个报文执行了读、写、读三次L2转发表操作。后续稳定后,仅存在转发过程,即一个报文只执行一次读L2转发表操作,不再有表读写冲突的情况。
进一步地,所述数组BITMAP[N]的大小N等于L2转发表的表项数量。
本方案的技术效果是:N等于L2转发表的数量时,由于HASH函数特性,绝大多数的BITMAP的bit唯一对应一条L2转发表项;少量bit存在HASH冲突,对应多个L2转发表项。当N的值小于L2转发表项时,冲突的概率随着N的值减小而增大。而当N大于L2转发表项时,并不能完全避免冲突,故选择等于N等于L2转发表表项数量。
进一步地,所述L2转发模块转发报文的具体过程包括以下步骤:
S1、根据报文的源MAC地址和VID计算第一HASH值;
S2、对第一HASH值做模运算,得到寄存器索引index1;
S3、若BITMAP[index1]=0,则继续执行步骤S4,若BITMAP[index1]=1,则跳转至步骤S5;
S4、判断报文的源MAC地址是否已经学习,若其已学习,则执行步骤S5,若其未学习,则待其学习后,BITMAP[index1]赋值为1,并执行步骤S5;
S5、根据报文的目的MAC地址+VID查找L2转发表,如果命中,则根据L2转发表中的目的口转发报文,转发流程结束,如果未命中,则继续执行步骤S6;
S6、根据报文的目的MAC地址和VID计算第二HASH值,对第二HASH值做模运算,得到寄存器索引index2;
S7、若BITMAP[index2]=1,则将BITMAP[index2]赋值为0后,执行步骤S8,若BITMAP[index2]=0,则直接执行步骤S8;
S8、泛洪,转发流程结束。
本方案的技术效果是:能够过滤掉绝大多数的读写表查找操作,当出现HASH冲突时,通过将冲突MAC地址对应的寄存器状态值清零后,可重新学习,避免出现不能学习到MAC地址的情况。
进一步地,所述步骤S4中,需根据报文的源MAC地址+VID查找L2转发表,若命中即表明报文的源MAC地址已经学习,若未命中,则表明报文的源MAC地址未学习。
进一步地,在根据报文的源MAC地址+VID查找L2转发表时,若未命中,则将报文的源MAC地址学习到L2转发表,其实现方式为写L2转发表,键值为源MAC地址+VID。
进一步地,计算所述HASH值所采用的HASH算法为CRC32或者CRC16。
进一步地,所述寄存器索引的计算公式为:index=HASH值%N。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举本发明实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是现有经典的L2转发设计架构图;
图2是本发明实施例L2转发设计架构图;
图3是本发明实施例L2数据报文的转发方法流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图2和图3,本发明实施例一种L2数据报文的转发方法,在L2转发模块与L2转发表之间增加一过滤器,在两地址已确定的设备之间进行数据报文流的转发时,仅在第一个报文转发过程中进行地址学习,利用过滤器过滤掉其它报文的学习过程。
在本实施例中,过滤器包括由寄存器bit构成的数组BITMAP[N],其每一个bit的值代表L2转发表中是否存在某条表项,其中,1代表存在,0代表不存在。
其中,数组BITMAP[N]的大小N等于L2转发表的表项数量,例如,L2转发表包含4K转发表项,则BITMAP由4K bit构成。
如图3所示,本发明实施L2转发模块转发报文的具体过程包括以下步骤:
S1、根据报文的源MAC地址和VID,采用CRC32或CRC16算法计算第一HASH值。
在本实施例中,计算HASH值所采用的HASH算法不做强制要求,可以为CRC32或者CRC16等。
S2、对第一HASH值做模运算,得到寄存器索引index1。
在本实施例中,寄存器索引的计算公式为:index=HASH值%N。
S3、若BITMAP[index1]=0,则继续执行步骤S4,若BITMAP[index1]=1,则跳转至步骤S5。
在本实施例中,BITMAP[index1]=0,表明地址尚未被学习,因此需要学习。BITMAP[index1]=1,则表明源MAC地址已经学习,直接进行后续查找目的口的操作,这样就可省略地址学习过程,也就是省略了大量的读表操作。
S4、判断报文的源MAC地址是否已经学习,若其已学习,则执行步骤S5,若其未学习,则待其学习后,BITMAP[index1]赋值为1,并执行步骤S5。
在本实施例中,根据报文的源MAC地址+VID查找L2转发表,若命中即表明报文的源MAC地址已经学习,若未命中,则表明报文的源MAC地址未学习,则将报文的源MAC地址学习到L2转发表,其实现方式为写L2转发表,键值为源MAC地址+VID。
S5、根据报文的目的MAC地址+VID查找L2转发表,如果命中,则根据L2转发表中的目的口转发报文,转发流程结束,如果未命中,则继续执行步骤S6。
S6、根据报文的目的MAC地址和VID计算第二HASH值,对第二HASH值做模运算,得到寄存器索引index2。
S7、若BITMAP[index2]=1,则将BITMAP[index2]赋值为0后,执行步骤S8,若BITMAP[index2]=0,则直接执行步骤S8。
S8、泛洪,转发流程结束。
在步骤S3中,存在误判的可能性。原因是HASH冲突,即有两个地址算出了相同的index。当学习某个地址MAC1时,对应的BITMAP[index]为1,但是这个地址MAC1是一个新的数据流地址,而BITMAP[index]是因为之前学习地址MAC2而被置位。MAC1与MAC2发生了HASH冲突,导致MAC1不会被真正学到L2转发表中。为了解决HASH冲突时,学不到MAC1这类问题,需要再次计算HASH值,根据HASH值计算寄存器索引,若该索引下的寄存器值为1,则清零后,下一个报文再进行地址学习,HASH冲突地址就可以被正常学习到L2转发表中。
上面方法能解决HASH冲突问题的关键在于:通信是双向的。A向B发送消息,必然也有B发送到A的消息。A发送消息到B时,如果A的MAC地址由于HASH冲突,未被学习;那么当B发送消息向A时,必然由于L2转发表中找不A的MAC地址而泛洪,同时会将A的MAC地址对应的BITMAP[index]清零。那么,当下一个A发送到B的报文到达时,一定能够将A的MAC地址学习到L2转发表中。
本发明实施例中,BITMAP仅使用了一个HASH函数,但其实可以使用多个HASH函数进行过滤,这种过滤器称为布隆过滤器。其行为如下所述:
1)用M个HASH函数计算MAC地址+VID,得到M个HASH值,最终得到M个BITMAP的index;
2)检测M个index对应的BITMAP值,即BITMAP[index1]、BITMAP[index2]…BITAMP[indexM],当这些值同时为1时,代表MAC地址存在于L2表中;
3)BITMAP清零时,同时对M个index对应的值清零。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种L2数据报文的转发方法,其特征在于,在L2转发模块与L2转发表之间增加一过滤器,在两地址已确定的设备之间进行数据报文流的转发时,仅在第一个报文转发过程中进行地址学习,利用所述过滤器过滤掉其它报文的学习过程。
2.根据权利要求1所述L2数据报文的转发方法,其特征在于,所述过滤器包括由寄存器bit构成的数组BITMAP[N],其每一个bit的值代表L2转发表中是否存在某条表项,其中,1代表存在,0代表不存在。
3.根据权利要求2所述L2数据报文的转发方法,其特征在于,所述数组BITMAP[N]的大小N等于L2转发表的表项数量。
4.根据权利要求3所述L2数据报文的转发方法,其特征在于,所述L2转发模块转发报文的具体过程包括以下步骤:
S1、根据报文的源MAC地址和VID计算第一HASH值;
S2、对第一HASH值做模运算,得到寄存器索引index1;
S3、若BITMAP[index1]=0,则继续执行步骤S4,若BITMAP[index1]=1,则跳转至步骤S5;
S4、判断报文的源MAC地址是否已经学习,若其已学习,则执行步骤S5,若其未学习,则待其学习后,BITMAP[index1]赋值为1,并执行步骤S5;
S5、根据报文的目的MAC地址+VID查找L2转发表,如果命中,则根据L2转发表中的目的口转发报文,转发流程结束,如果未命中,则继续执行步骤S6;
S6、根据报文的目的MAC地址和VID计算第二HASH值,对第二HASH值做模运算,得到寄存器索引index2;
S7、若BITMAP[index2]=1,则将BITMAP[index2]赋值为0后,执行步骤S8,若BITMAP[index2]=0,则直接执行步骤S8;
S8、泛洪,转发流程结束。
5.根据权利要求4所述L2数据报文的转发方法,其特征在于,所述步骤S4中,需根据报文的源MAC地址+VID查找L2转发表,若命中即表明报文的源MAC地址已经学习,若未命中,则表明报文的源MAC地址未学习。
6.根据权利要求5所述L2数据报文的转发方法,其特征在于,在根据报文的源MAC地址+VID查找L2转发表时,若未命中,则将报文的源MAC地址学习到L2转发表,其实现方式为写L2转发表,键值为源MAC地址+VID。
7.根据权利要求4所述L2数据报文的转发方法,其特征在于,计算所述HASH值所采用的HASH算法为CRC32或者CRC16。
8.根据权利要求4所述L2数据报文的转发方法,其特征在于,所述寄存器索引的计算公式为:index=HASH值%N。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010826998.6A CN112087388B (zh) | 2020-08-17 | 2020-08-17 | 一种l2数据报文的转发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010826998.6A CN112087388B (zh) | 2020-08-17 | 2020-08-17 | 一种l2数据报文的转发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112087388A true CN112087388A (zh) | 2020-12-15 |
CN112087388B CN112087388B (zh) | 2022-03-08 |
Family
ID=73729729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010826998.6A Active CN112087388B (zh) | 2020-08-17 | 2020-08-17 | 一种l2数据报文的转发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112087388B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101022392A (zh) * | 2007-03-06 | 2007-08-22 | 华为技术有限公司 | 一种基于虚拟局域网的数据交换方法及设备 |
CN101197787A (zh) * | 2008-01-03 | 2008-06-11 | 杭州华三通信技术有限公司 | 一种报文信息学习方法和装置 |
CN101340445A (zh) * | 2008-08-22 | 2009-01-07 | 中兴通讯股份有限公司 | 一种为mac地址重复用户提供服务的方法及装置 |
CN103731355A (zh) * | 2013-12-31 | 2014-04-16 | 迈普通信技术股份有限公司 | 避免mac地址学习时哈希冲突的方法及系统 |
CN104468362A (zh) * | 2014-12-01 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | 一种mac地址学习时哈希冲突的同步方法 |
CN105376154A (zh) * | 2014-08-11 | 2016-03-02 | 博科通讯系统有限公司 | 渐进式mac地址学习 |
EP3099022A1 (en) * | 2014-02-20 | 2016-11-30 | Huawei Technologies Co., Ltd. | Packet forwarding method and device |
CN108777662A (zh) * | 2018-06-20 | 2018-11-09 | 迈普通信技术股份有限公司 | 表项管理方法及装置 |
CN108848034A (zh) * | 2018-07-17 | 2018-11-20 | 新华三技术有限公司 | 一种网络设备及表项学习方法 |
CN109768909A (zh) * | 2019-03-26 | 2019-05-17 | 杭州迪普科技股份有限公司 | 报文转发方法和装置 |
-
2020
- 2020-08-17 CN CN202010826998.6A patent/CN112087388B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101022392A (zh) * | 2007-03-06 | 2007-08-22 | 华为技术有限公司 | 一种基于虚拟局域网的数据交换方法及设备 |
CN101197787A (zh) * | 2008-01-03 | 2008-06-11 | 杭州华三通信技术有限公司 | 一种报文信息学习方法和装置 |
CN101340445A (zh) * | 2008-08-22 | 2009-01-07 | 中兴通讯股份有限公司 | 一种为mac地址重复用户提供服务的方法及装置 |
CN103731355A (zh) * | 2013-12-31 | 2014-04-16 | 迈普通信技术股份有限公司 | 避免mac地址学习时哈希冲突的方法及系统 |
EP3099022A1 (en) * | 2014-02-20 | 2016-11-30 | Huawei Technologies Co., Ltd. | Packet forwarding method and device |
CN105376154A (zh) * | 2014-08-11 | 2016-03-02 | 博科通讯系统有限公司 | 渐进式mac地址学习 |
CN104468362A (zh) * | 2014-12-01 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | 一种mac地址学习时哈希冲突的同步方法 |
CN108777662A (zh) * | 2018-06-20 | 2018-11-09 | 迈普通信技术股份有限公司 | 表项管理方法及装置 |
CN108848034A (zh) * | 2018-07-17 | 2018-11-20 | 新华三技术有限公司 | 一种网络设备及表项学习方法 |
CN109768909A (zh) * | 2019-03-26 | 2019-05-17 | 杭州迪普科技股份有限公司 | 报文转发方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112087388B (zh) | 2022-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109921996B (zh) | 一种高性能的OpenFlow虚拟流表查找方法 | |
EP1782206B1 (en) | Error protection for lookup operations in content-addressable memory entries | |
US7606236B2 (en) | Forwarding information base lookup method | |
US7167471B2 (en) | Network processor with single interface supporting tree search engine and CAM | |
US7581059B2 (en) | Controlling a searchable range within a network search engine | |
WO2018036457A1 (zh) | 一种哈希冲突的处理方法、装置及交换设备和存储介质 | |
US7526709B2 (en) | Error detection and correction in a CAM | |
US20120102055A1 (en) | Regular expression matching method and system, and searching device | |
US6725216B2 (en) | Partitioning search key thereby distributing table across multiple non-contiguous memory segments, memory banks or memory modules | |
US20040156362A1 (en) | Address learning to enable high speed routing table lookups | |
US20090282167A1 (en) | Method and apparatus for bridging | |
US4059850A (en) | Memory system word group priority device with least-recently used criterion | |
CN108306835A (zh) | 一种以太网交换机的输入缓存结构及数据转发方法 | |
CN109981464B (zh) | 一种在fpga中实现的tcam电路结构及其匹配方法 | |
US7477639B2 (en) | High speed routing table learning and lookup | |
CN111526134B (zh) | 一种报文检测系统、方法及装置 | |
US20210065833A1 (en) | Method of Error Detection in a Ternary Content Addressable Memory | |
CN113986560B (zh) | 一种在智能网卡/DPU内实现P4与OvS逻辑复用的方法 | |
CN112637072B (zh) | 一种用于交换芯片地址存储及查找的快速并行电路及方法 | |
CN112087388B (zh) | 一种l2数据报文的转发方法 | |
US7400623B2 (en) | Method and apparatus for managing medium access control (MAC) address | |
CN111541617B (zh) | 一种用于高速大规模并发数据流的数据流表处理方法及装置 | |
CN112818185A (zh) | 一种基于sram的最长前缀匹配硬件系统查找的方法 | |
JP2006246488A (ja) | ネットワーク・ルータ、アドレス処理方法及びコンピュータ・プログラム | |
CN107896193B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |