发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种实现VLAN网桥桥接技术的方法,即使FDB(Filter Database,过滤数据库)只存在一个访问端口时,仍然能够保证对数据报文的线速学习和转发,避免数据报文过度泛洪而导致的网络性能下降,节省老化整个FDB中所有条目的时间。
为达到以上目的,本发明采取的技术方案是:一种实现VLAN网桥桥接技术的方法,包括如下步骤:S1.VLAN网桥从输入端口接收报文,获取该报文的源MAC地址、目的MAC地址和输入虚拟局域网标识;S2.CPU通过地址学习操作,读访问过滤数据库,获取条目内容;S3.判断地址老化操作或CPU是否存在对过滤数据库的写访问请求,若是,进入S4;若否,进入S6;S4.根据上次地址老化操作写访问过滤数据库的地址或上次CPU写访问过滤数据库的地址,决定是否更新地址学习操作读访问过滤数据库而获取的条目内容;S5.通过地址老化操作或CPU写访问过滤数据库,清除写访问请求指示,进入S7;S6.通过地址老化操作或CPU读访问过滤数据库,获取条目内容,产生写访问过滤数据库的条目内容和请求;S7.VLAN网桥二层进行查找操作,读访问过滤数据库;S8.通过地址学习操作,写访问过滤数据库。
在上述技术方案的基础上,所述条目内容内容包括条目内容状态、MAC地址、输入虚拟局域网标识和转发的目的端口号。
在上述技术方案的基础上,所述S4中,判断上次地址老化操作写访问过滤数据库的地址或上次CPU写访问过滤数据库的地址,是否等于本次地址学习操作读取过滤数据库的地址,若是,则更新本次地址学习操作读访问过滤数据库的条目内容为写访问内容;若否,保持地址学习操作获取过滤数据库的条目内容不变。
在上述技术方案的基础上,所述S4中,若是更新本次地址学习操作读访问过滤数据库的条目内容为写访问内容,则所述S5中还要将更新后的条目内容写入过滤数据库。
在上述技术方案的基础上,所述S6中,地址老化操作或CPU采用轮询的方式访问过滤数据库,判断上次地址老化操作是否存在读访问过滤数据库的操作,若是,则本次使能CPU读访问过滤数据库;若否,使能地址老化读访问过滤数据库,并判断条目内容状态。
在上述技术方案的基础上,所述S6中,若所述条目内容状态为有效,则更新条目内容状态至半老化,产生写访问过滤数据库请求;若条目内容状态为半老化,则更新条目内容状态为无效,产生写访问过滤数据库请求;若条目内容状态为其他,进入S7。
在上述技术方案的基础上,所述S6中,当CPU读访问过滤数据库时,配置条目内容,产生写访问过滤数据库请求。
在上述技术方案的基础上,所示S7中,VLAN网桥二层进行查找操作,将报文的目的MAC地址和输入虚拟局域网标识,分别与读访问过滤数据库获取的条目内容进行比较,若目的MAC地址和输入虚拟局域网标识均与读访问过滤数据库获取的条目内容匹配,且条目内容状态为有效,则将数据报文转发至查找到的目的端口;否则,在VLAN域内进行泛洪操作。
在上述技术方案的基础上,所述S8中,通过地址学习操作将报文的源MAC地址、输入虚拟局域网标识和源端口,分别与地址学习操作获取的条目内容进行比较,查看是否匹配,如果源MAC地址、VLAN_ID和源端口均与条目内容匹配,则更新过滤数据库中的条目内容状态为有效,并写访问过滤数据库;如果源MAC地址和VLAN ID均与所述条目内容匹配,但是端口不一致,替换条目内容中的端口,并写访问过滤数据库。
在上述技术方案的基础上,所述查看是否匹配时,如果条目内容状态为无效,则将报文的源MAC地址、输入虚拟局域网标识和端口信息写入过滤数据库;其他情况,不进行写入过滤数据库的操作。
本发明的有益效果在于:即使数据库只存在一个访问端口时,仍然能够数据报文的线速学习和无阻塞线性转发,避免数据报文过度泛洪而导致的网络性能下降;同时采用轮询机制,实现地址老化或CPU对FDB的读访问和写访问操作,节省老化整个FDB中所有条目的时间;保证大容量FDB执行地址老化操作的时间精度,为实现未来超大带宽网络的网桥交换提供了保证。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1和图2所示,本发明一种实现VLAN网桥桥接技术的方法,包括如下步骤:
S1.VLAN网桥从输入端口接收报文,获取该报文的源MAC地址、目的MAC地址和输入虚拟局域网标识(以下简称为VLAN ID)。
S2.CPU通过地址学习操作,读访问过滤数据库(以下简称FDB),获取条目内容,条目内容包括条目内容状态、MAC地址、VLAN ID和转发的目的端口号。
S3.判断地址老化操作或CPU是否存在对FDB的写访问请求,若是,进入S4;若否,进入S6。
S4.根据上次地址老化操作写访问FDB的地址或上次CPU写访问FDB的地址,决定是否更新地址学习操作读访问FDB而获取的条目内容,其具体步骤如下:
S41.判断上次地址老化操作写访问FDB的地址或上次CPU写访问FDB的地址,是否等于本次地址学习操作读取FDB的地址,若是,进入S42;若否,进入S43。
S42.更新本次地址学习操作读访问FDB的条目内容为写访问内容。
S43.保持地址学习操作获取FDB的条目内容不变。
S5.通过地址老化操作或CPU写访问FDB,清除写访问请求指示,进入S7;其中,若是更新本次地址学习操作读访问FDB的条目内容为写访问内容,则要将更新后的条目内容写入FDB,进入S7。
S6.通过地址老化操作或CPU读访问FDB,获取条目内容,产生写访问FDB的条目内容和请求指示;其具体步骤如下:
S61.地址老化操作或CPU采用轮询的方式访问FDB,判断上次地址老化操作是否存在读访问过FDB的操作,若否,进入S62;若是,进入65。
S62.使能地址老化读访问FDB,并判断条目内容状态,若条目内容状态为半老化,进入S63;若条目内容状态为有效,进入S64;若条目内容状态为其他,则进入S7。
S63.更新条目内容状态为无效,产生写访问FDB请求,进入S7。
S64.更新条目内容状态至半老化,产生写访问FDB请求,进入S7。
S65.本次使能CPU读访问FDB;
S66.配置条目内容,产生写访问FDB请求,进入S7。
S7.VLAN网桥二层进行查找操作,读访问FDB;具体步骤如下:
S71.将报文的目的MAC地址和VLAN ID,分别与读访问FDB获取的条目内容进行比较,若目的MAC地址和VLAN ID均与读访问FDB获取的条目内容匹配,且条目内容状态为有效,则进入S72;否则,进入S73。
S72.将数据报文转发至查找到的目的端口,进入S8。
S73.在VLAN域内进行泛洪操作,进入S8。
S8.通过地址学习操作,写访问FDB;其具体步骤为:
S81.通过地址学习操作将报文的源MAC地址、VLAN ID和源端口,分别与地址学习操作获取的条目内容进行比较,查看是否匹配,如果均与地址学习操作获取的条目内容匹配,进入S82;如果源MAC地址和VLANID与地址学习操作获取的条目内容匹配,但是端口信息不一致,进入S83;如果条目内容状态为无效,进入S84;其他情况,不进行写入FDB的操作。
S82.更新FDB中的条目内容状态为有效,并写访问FDB。
S83.替换条目内容中的端口信息,并写访问FDB。
S84.将报文的源MAC地址、VLAN ID和端口信息写入FDB。
下面通过具体实施例详细说明本发明内容。
本实施例中,描述四份报文的网桥处理过程,其中初始状态下FDB的内容如表1所示,包括地址、条目内容状态、MAC地址、VLAN ID和端口(即PORT)。
表1
地址 |
条目内容状态 |
MAC地址 |
VLAN ID |
PORT |
A |
半老化 |
MAC1 |
VID100 |
PORT2 |
B |
有效 |
MAC2 |
VID100 |
PORT2 |
C |
半老化 |
MAC5 |
VID200 |
PORT1 |
D |
有效 |
MAC6 |
VID200 |
PORT2 |
其他 |
无效 |
|
|
|
第一份报文,具体处理过程如下:
S1.从PORT1接收报文,获取报文的源MAC地址为MAC1,数据帧本身会携带目的MAC地址,通过DMAC来确定转发端口,本实施例中目的MAC地址为MAC2,VLAN_ID为VID100;
S2.地址学习操作,基于报文的MAC1和VID100读取FDB,获取地址A的条目内容;
S3.由于上次不存在地址老化操作和CPU对FDB的写访问请求,跳转到S61;
S61.由于上次不存在地址老化操作对FDB的读访问请求,跳转到S62;
S62.地址老化操作读取FDB,获取地址A的条目内容,发现该条目内容状态为半老化,转到S63;
S63.地址老化操作,更新条目内容状态为无效,并产生FDB的写访问请求,进入S71;
S71.二层查找操作,基于报文的MAC2和VID100查找FDB,发现存在匹配项,进入S72;
S72.将数据报文转发到查找匹配的2号端口,进入S81;
S81.地址学习操作,基于报文的MAC1、VID100和PORT1,查找FDB,发现MAC1和VID100均与地址学习操作获取的条目内容匹配,但端口不匹配,进入S83;
S83.完成FDB中地址A的写访问操作,更新端口信息为PORT1,其他内容保持不变。
完成上述步骤后,FDB的内容如表2所示:
表2
地址 |
条目内容状态 |
MAC地址 |
VLAN ID |
PORT |
A |
有效 |
MAC1 |
VID100 |
PORT1 |
B |
有效 |
MAC2 |
VID100 |
PORT2 |
C |
半老化 |
MAC5 |
VID200 |
PORT1 |
D |
有效 |
MAC6 |
VID200 |
PORT2 |
其他 |
无效 |
|
|
|
第二份报文,具体处理过程如下:
S1.从PORT1接收报文,获取报文的源MAC地址为MAC3,目的MAC地址为MAC4,VLAN_ID为VID200;
S2.地址学习操作,基于报文的MAC3和VID200读取FDB,假设同样也获取地址A的条目内容;
S3.上次老化操作存在对FDB的写访问请求,跳转到S41;
S41.上次地址老化写访问地址和本次地址学习操作读取FDB的地址相等,即同为地址A;
S42.更新本次地址学习操作获取FDB的条目内容为写访问内容,即该条目内容状态更新为无效,并清除写访问请求指示;
S5.地址老化操作,完成FDB中地址A的写访问操作,更新条目内容状态为无效,其他内容保持不变,进入S7;
S71.二层查找操作,基于报文的MAC4和VID200查找FDB,发现不存在匹配项,进入S72;
S72.在VLAN域内进行泛洪操作;
S81.地址学习操作,基于报文的MAC3、VID200和PORT1查找FDB,此时地址A对应的条目内容已经发生改变,其条目内容状态为无效,进入S84;
S84.地址学习操作,完成FDB中地址A的写访问操作,更新条目内容状态为有效,还包括报文的MAC3、VID200以及PORT1信息。
完成上述操作后,FDB的内容见表3所示:
表3
地址 |
条目内容状态 |
MAC地址 |
VLAN ID |
PORT |
A |
有效 |
MAC3 |
VID200 |
PORT1 |
B |
有效 |
MAC2 |
VID100 |
PORT2 |
C |
半老化 |
MAC5 |
VID200 |
PORT1 |
D |
有效 |
MAC6 |
VID200 |
PORT2 |
其他 |
无效 |
|
|
|
第三份报文,具体处理过程如下:
S1.从PORT1接收报文,获取报文的源MAC地址为MAC5,目的MAC地址为MAC6,VLAN_ID为VID200;
S2.地址学习操作,基于报文的MAC5和VID200读取FDB,假设同样也获取地址C的条目内容;
S3.由于上次地址老化操作对FDB的写访问请求已经被清除,跳转到S61;
S61.由于上次存在地址老化操作对FDB的读访问请求,跳转到S65;
S65.CPU读访问FDB,获取地址C的条目内容;
S66.CPU根据配置仅更新条目内容状态为无效,其他内容保持不变,并产生对FDB的写访问请求,进入S71;
S71.二层查找操作,基于报文的MAC6和VID200查找FDB,发现存在匹配项,进入S72;
S72.将数据报文转发到查找匹配的2号端口,进入S81;
S81.地址学习操作,基于报文的MAC5、VID200和PORT1查找FDB,发现MAC5和VID200均与地址学习操作获取的条目内容匹配,进入S82;
S82. 地址学习操作,完成FDB中地址C的写访问操作,更新条目内容状态为有效,其他内容保持不变。
完成上述操作后,FDB的内容如表4所示:
表4
地址 |
条目内容状态 |
MAC地址 |
VLAN ID |
PORT |
A |
有效 |
MAC3 |
VID200 |
PORT1 |
B |
有效 |
MAC2 |
VID100 |
PORT2 |
C |
有效 |
MAC5 |
VID200 |
PORT1 |
D |
有效 |
MAC6 |
VID200 |
PORT2 |
其他 |
无效 |
|
|
|
第四份报文,具体处理过程如下:
S1.从PORT1接收报文,获取报文的源MAC地址为MAC7,目的MAC地址为MAC8,VLAN_ID为VID100;
S2.地址学习操作,基于报文的MAC7和VID100读取FDB,假设同样也获取地址C的条目内容;
S3.上次存在CPU写访问FDB的请求,跳转到S41;
S41.上次CPU写访问地址和本次地址学习操作读取FDB的地址相等,即同为地址C;
S42.更新本次地址学习操作获取FDB的条目内容为写访问内容,即该条目内容状态更新为无效,并清除写访问请求指示;
S5. CPU完成FDB中地址C的写访问操作,更新条目内容状态为无效,其他内容保持不变,进入S71;
S71.二层查找操作,基于报文的MAC8和VID100查找FDB,发现不存在匹配项,进入S72;
S72.在VLAN域内进行泛洪操作;
S81.地址学习操作,基于报文的MAC7、VID100和PORT1查找FDB,此时地址C对应的条目内容已经发生改变,其条目内容状态为无效,进入S84;
S84.地址学习操作,完成FDB中地址C的写访问操作,更新条目内容状态为有效,还包括报文的MAC7、VID100以及PORT1信息。
完成上述操作后,FDB的内容见表5所示:
表5
地址 |
条目内容状态 |
MAC地址 |
VLAN ID |
PORT |
A |
有效 |
MAC3 |
VID200 |
PORT1 |
B |
有效 |
MAC2 |
VID100 |
PORT2 |
C |
有效 |
MAC7 |
VID100 |
PORT1 |
D |
有效 |
MAC6 |
VID200 |
PORT2 |
其他 |
无效 |
|
|
|
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。