一种桥接转发方法

文档序号:7625748阅读:257来源:国知局
专利名称:一种桥接转发方法
技术领域
本发明涉及交换技术领域,特别是指一种桥接转发方法。
背景技术
目前以太网桥接转发标准中规定在一个接入域内一个虚拟转发实例(VSI)对应一个虚拟局域网(VLAN)。以太网桥接转发是在一个VLAN内转发报文,如果要在不同VLAN之间转发报文,则必须使用IP路由实现转发。
图1为现有技术中在一个VLAN内桥接转发的流程图,一个VLAN内桥接转发使用目的媒体接入控制(MAC)地址和虚拟局域网标识(VLAN ID)查找MAC地址转发表得到出口信息,并根据出口信息转发报文,具体步骤如下所述步骤101从输入端口接收报文,得到报文的输入VLAN ID;步骤102源MAC地址自学习,在该VLAN ID对应的MAC地址转发表中记录源MAC(SMAC)对应的输入端口;步骤103使用目的MAC(DMAC)查找该VLAN ID对应的MAC地址转发表;步骤104根据步骤103查找的结果,如果查找到单播转发,则执行步骤105;如果查找到多播转发,则执行步骤106;如果查找不到,则执行步骤108;步骤105从MAC地址转发表中查找得到输出端口,跳到步骤110;步骤106从MAC地址转发表中查找得到输出多播组号(MID);步骤107使用MID查找多播表,得到输出端口的集合,跳到步骤110;
步骤108确定广播转发该报文;步骤109得到该报文输入端口所在的VLAN对应的所有输出端口,跳到步骤110;步骤110判断输出端口与输入端口是否相同,如果是,则执行步骤111;否则,执行步骤112;步骤111丢弃该报文;步骤112转发报文至输出端口。
从上述桥接转发过程中,如果确定报文需要广播转发,由于一个VSI只对应一个VLAN,报文也只能在一个VLAN内进行广播转发。
目前对以太网桥接转发有以下几个标准/草案,分别介绍如下。
IEEE 802.1Q是虚拟桥接局域网的正式标准,该标准定义在一个物理桥设备上划分多个逻辑子网VLAN的方法。其中,多个指两个或两个以上。根据802.1Q标准,每个VLAN对应一个逻辑转发表。实现时,一般将一个MAC地址转发表按VLAN ID划分成多个逻辑转发表。在以太帧结构中加入4个字节,这4个字节统称为虚拟局域网标签(VLAN Tag)。在该4个字节中,用12比特表示VLAN ID。
IEEE802.1ad标准在IEEE802.1Q的基础上增加了Q-in-Q,VLAN转换(VLAN Translation)。Q-in-Q是指运营商设备在边缘上为上述IEEE 802.1Q报文再增加一层VLAN Tag,报文本来的Tag称为CE-VLAN,运营商设备新增加的Tag称为P-VLAN。使用两层VLAN,使得用户使用的CE-VLAN与运营商使用的P-VLAN相互独立。VLAN Translation是指在网桥的一个端口上将一个VLAN ID转换成另一个VLAN ID。
draft-ietf-12vpn-vpls-ldp-xx.txt草案规定P-VLAN与虚拟专用局域网服务(VPLS)之间的对应关系为一对一。
综上所述,现有技术存在以下缺点(1)在一个接入域内,VLAN与VSI是一一对应关系,不支持多个VLAN对应一个VSI的多对一的对应关系;
(2)以太网报文只能在一个VLAN内进行桥接转发,以太网桥接转发的现有技术中不支持多个VLAN间桥接转发,如果跨VLAN进行转发,必须使用IP路由;(3)以太网报文只能桥接广播到一个VLAN,不支持桥接广播到多个VLAN。

发明内容
有鉴于此,本发明的主要目的在于提供一种桥接转发方法,实现多个VLAN之间桥接转发。
为达到上述目的,本发明提供一种桥接转发方法,该方法包括将一个或一个以上由端口和虚拟局域网VLAN构成的组合对应一个虚拟转发实例VSI,该方法包括以下步骤A.从输入端口接收报文,获取该报文的输入虚拟局域网标识VLAN ID;B.使用输入端口和输入VLAN ID查找所述端口和VLAN与VSI的对应关系,确定对应的VSI;C.使用VSI和报文中的目的媒体接入控制MAC地址查找MAC地址转发表,查找得到输出端口和输出VLAN ID,并根据所得到的输出端口和输出VLAN ID转发报文。
其中,步骤A所述获取报文的VLAN ID的步骤包括判断报文中是否携带VLAN ID,如果是,则获取报文中的VLAN ID;否则,获取与输入端口相关的缺省VLAN ID,并在该报文中添加该VLAN ID。
其中,步骤C所述MAC地址转发表是通过学习建立,建立的步骤包括学习报文中的源MAC地址、输入端口和输入VLAN ID,并记录到VSI对应的MAC地址转发表中。
其中,步骤C所述查找MAC地址转发表时使用VSI和报文中的目的MAC地址之外,进一步包括输入VLAN ID。
其中,步骤C所述查找得到输出端口和输出VLAN ID的步骤包括查找得到唯一的输出端口和输出VLAN ID;步骤C所述转发报文的步骤包括将输出VLAN ID添加到报文中,或用输出VLAN ID替换报文中输入VLAN ID之后,转发该报文至输出端口。
其中,步骤C所述查找得到输出端口和输出VLAN ID的步骤包括如果查找MAC地址转发表的结果为输出多播组号MID,则使用MID查找多播表,得到输出端口和输出VLAN ID的集合;步骤C所述转发报文的步骤包括复制所得到的输出VLAN ID个数的报文,将各输出VLAN ID添加到各报文中,或用各输出VLAN ID替换各报文中的输入VLAN ID之后,转发各报文至各输出端口。
其中,步骤C所述查找得到输出端口和输出VLAN ID的步骤包括如果在MAC地址转发表中未直接查找到对应的输出端口和输出VLAN ID,则将VSI对应的所有输出端口和输出VLAN ID作为查找得到的输出端口和输出VLAN ID;步骤C所述转发报文的步骤包括复制所得到的输出VLAN ID个数的报文,将各输出VLAN ID添加到各报文中,或用各输出VLAN ID替换各报文中的输入VLAN ID之后,转发各报文至各输出端口。
其中,所述转发报文至输出端口之前进一步包括判断输出端口与输入端口是否相同,并判断输出VLAN ID和输入VLAN ID是否相同,如果上述两个判断结果都为是,则丢弃该报文;否则,转发该报文至输出端口。
其中,步骤C所述从报文中学习到的输入VLAN ID对应成一个标签值或标签索引,然后在VSI对应的MAC地址转发表中记录输入VLAN ID对应的标签值或标签索引;步骤C所述得到输出VLAN ID的步骤包括得到标签值或标签索引,然后根据该标签值或标签索引得到对应的输入VLAN ID。
其中,所述VLAN为同一个以太网端口的一个或一个以上VLAN,或同一个以太接入网的不同端口的一个或一个以上VLAN,或一个以上以太接入网的不同端口的一个或一个以上VLAN。
其中,所述VLAN ID为一层或二层或二层以上。
本发明提供的桥接转发方法中,设置了{端口,VLAN}与VSI的对应关系,并在{端口,VLAN}之间进行桥接转发,实现了在多个VLAN之间的桥接转发,实现了多个VLAN对应一个VSI的多对一的对应关系,包括一对一的对应关系。广播报文也可以在VSI对应的所有端口和VLAN之间广播,支持了桥接广播到多个VLAN。在报文转发过程中,判断输入、输出端口与输入、输出VLAN ID是否相同,有效地进行了源端口过滤。本发明还支持多层VLAN ID之间的桥接转发。


图1所示为现有技术中报文桥接转发流程图;图2所示为本发明中作为实施例一的多个VLAN间桥接转发流程图;图3所示为本发明中作为实施例二的多个VLAN间桥接转发流程图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚明白,下面举具体实施例,对本发明作进一步详细的说明。
本发明对传统的VLAN内报文转发方法进行扩展,以实现在多个VLAN间的桥接转发。本发明规定一个VSI是由若干个{端口,VLAN}组成,每个{端口,VLAN}看成一个虚端口,实现在虚端口之间完成报文桥接转发的功能。一个VSI可以由一个端口的一个或多个VLAN组成,也可以由多个端口的一个或多个VLAN组成。其中,VLAN的来源包括多种情况来自同一个以太网端口的一个或多个VLAN;来自同一个以太接入网的不同端口的一个或多个VLAN;来自多个以太接入网的不同端口的一个或多个VLAN。
实施例1图2为在多个VLAN间实现桥接转发的流程图,详细描述其步骤如下步骤201从输入端口接收报文;
步骤202分析报文中是否携带有VLAN ID,如果是,则获取报文中VLAN ID;否则,获取与输入端口相关的缺省的VLAN ID,并为该报文添加该VLAN ID;步骤203使用{输入端口,输入VLAN ID}查找映射表,确定对应的VSI,VSI用虚拟转发实例标识(VSI ID)表示,查找映射表得到的结果为对应的VSI ID,为了方便描述,定义{输入端口,输入VLAN ID}为输入虚端口;步骤204源MAC自学习,在VSI对应的MAC地址转发表中记录SMAC对应的输入端口和输入VLAN ID;步骤205从报文中获取DMAC,并使用{VSI ID,DMAC}查找MAC地址转发表,或者,从报文中获取DMAC和输入VLAN ID,并使用{VSI ID,DMAC,输入VLAN ID}查找MAC地址转发表;步骤206根据步骤205查找的结果,如果查找结果为单播转发,则执行步骤207;如果查找结果为多播转发,则执行步骤209;如果查找不到,则执行步骤213;步骤207从MAC地址转发表中查找得到{输出端口,输出VLAN ID},为了方便描述,将{输出端口,输出VLAN ID}定义为输出虚端口;步骤208用输出VLAN ID替换报文中输入VLAN ID,跳到步骤217;步骤209从MAC地址转发表中查找得到输出多播组号MID;步骤210使用MID查找多播表,得到输出虚端口的集合,即{输出端口i,输出VLAN IDi},其中i=1...n,i为输出虚端口的序号,n为查找多播表得到的输出虚端口的总数;步骤211接收的报文复制n份;步骤212用输出VLAN IDi替换对应报文中输入VLAN ID,跳到步骤217;步骤213从MAC地址转发表中查找不到,则确定该报文需要广播;步骤214得到VSI对应的所有输出虚端口,即{输出端口j,输出VLANIDj},其中j=1...m,j为输出虚端口的序号,m为广播输出虚端口的总数;步骤215接收的报文复制m份;步骤216用输出VLAN IDj替换对应报文中输入VLAN ID,跳到步骤217;步骤217判断输出虚端口与输入虚端口是否完全相同,即判断输出端口与输入端口是否相同,并判断输出VLAN ID和输入VLAN ID是否相同,如果输出端口与输入端口相同,且输出VLAN ID与输入VLAN ID相同,则执行步骤218;如果输出端口与输入端口相同而输出VLAN ID与输入VLANID不同,或者输出VLAN ID与输入VLAN ID相同而输出端口与输入端口不同,则执行步骤219;步骤218丢弃该报文;步骤219转发该报文至输出端口。
上述方法中,步骤208、步骤212、步骤216中,用输出VLAN ID替换报文中VLAN ID。如果与IEEE 802.1ad协议中所述Q-in-Q业务配合使用,则保留原来的VLAN ID,而添加一层新的输出VLAN ID,即再加入4个字节,在该4个字节中用12比特表示该输出VLAN ID。
上述方法中,源端口抑制的步骤可以在得到输出虚端口后和替换VLANID之前进行。例如在单播转发情况下,步骤207中得到输出虚端口之后,就可以判断输出虚端口与输入虚端口是否完全相同,如果完全相同,则丢弃报文,结束流程;如果不完全相同,则执行步骤208所述的用输出VLAN ID替换报文中VLAN ID。
步骤203中所述映射表是为了规定多个虚端口的集合与VSI的对应关系而建立的,映射表中表项的形式为{端口,VLAN ID,VSI ID},查找映射表时查找关键字为{端口,VLAN ID},查找结果为与该虚端口对应的VSI ID。
如步骤204所述,MAC地址转发表是通过学习而建立的,在交换机内部可以建立一个MAC地址转发表,该MAC地址转发表中记录多个VSI中所学习到的内容,对应每一个VSI的部分用VSI ID区分;也可以建立多个MAC地址转发表,每个MAC地址转发表对应一个VSI。进行源MAC学习时,学习报文的输入端口和输入VLAN ID,并将学习信息写入到VSI对应的MAC地址转发表中。在MAC地址转发表中表项的形式为{VSI ID,MAC地址,端口,VLAN ID},查找MAC地址转发表时查找关键字为{VSI ID,DMAC}或{VSI ID,DMAC,输入VLAN ID},查找结果为对应的{输出端口,输出VLAN ID}。
在MAC地址转发表中,VLAN ID可以通过标签值或标签索引的形式间接地记录或查找,其中,存在VLAN ID与标签值或标签索引的对应关系。例如,将学习到的VLAN ID根据对应关系转换成一个标签值或标签索引,然后将该标签值或标签索引记录到MAC地址转发表中对应表项中。利用查找关键字查找输出虚端口时,如果输出VLAN ID用标签值或标签索引表示,则根据对应关系得到输出VLAN ID。
步骤210所述多播表是在交换机内部通过协议而软件建立的,多播表中表项的形式为{MID,输出端口,输出VLAN ID},查找多播表时查找关键字为MID,查找结果为与该MID对应的所有{输出端口,输出VLAN ID}的集合。
步骤214所述得到VSI对应的所有输出虚端口是通过查找广播表得到的,广播表也是在交换机内部通过协议而软件建立的,广播表中表项的形式为{VSI ID,输出端口,输出VLAN ID},查找广播表时查找关键字为VSI ID,查找结果为与该VSI ID对应的所有{输出端口,输出VLAN ID}的集合。
实施例2实施例1中描述了输入VLAN ID为一个的桥接转发。但是,在有些应用环境中,输入VLAN ID和输出VLAN ID不只一层,有两层或两层以上。例如,根据IEEE 802.1ad标准的应用中,报文中携带有2层VLANID,在这种应用环境下,输入VLAN ID为2层,输出VLAN ID也可能需要2层。实施例2中,将若干{输入端口,输入外层VLAN,输入内层VLAN}绑定到一个VSI。下面结合图3详细介绍输入VLAN ID和输出VLAN ID都为2层的情况下的桥接转发的步骤。
步骤301从输入端口接收报文;步骤302分析报文中是否携带有VLAN ID,如果是,则获取报文中VLAN ID,分别为外层VLAN ID和内层VLAN ID;否则,获取与输入端口相关的缺省的外层VLAN ID和内层VLAN ID,并为该报文添加外层VLANID和内层VLAN ID;步骤303使用输入虚端口,即使用{输入端口,输入外层VLAN ID,输入内层VLAN ID}查找映射表,确定对应的VSI ID;步骤304源MAC自学习,在VSI对应的MAC地址转发表中记录SMAC对应的输入端口、输入外层VLAN ID以及输入内层VLAN ID;步骤305从报文中获取DMAC,并使用{VSI ID,DMAC}查找MAC地址转发表,或者,从报文中获取DMAC、输入外层VLAN ID以及输入内层VLAN ID,并使用{VSI ID,DMAC,输入外层VLAN ID,输入内层VLANID}查找MAC地址转发表;步骤306根据步骤305查找的结果,如果查找结果为单播转发,则执行步骤307;如果查找结果为多播转发,则执行步骤309;如果查找不到,则执行步骤313;步骤307从MAC地址转发表中查找得到输出虚端口,即{输出端口,输出外层VLAN ID,输出内层VLAN ID};步骤308用输出外层VLAN ID替换报文中输入外层VLAN ID,用输出内层VLAN ID替换报文中输入内层VLAN ID,跳到步骤317;步骤309从MAC地址转发表中查找得到输出多播组号MID;步骤310使用MID查找多播表,得到输出虚端口的集合,即{输出端口i,输出外层VLAN IDi,输出内层VLAN IDi},其中i=1...n,i为输出虚端口的序号,n为查找多播表得到的输出虚端口的总数;步骤311接收的报文复制n份;步骤312用输出外层VLAN IDi替换对应报文中输入外层VLAN ID,用输出内层VLAN IDi替换对应报文中输入内层VLAN ID,跳到步骤317;
步骤313从MAC地址转发表中查找不到,则确定该报文需要广播;步骤314得到VSI对应的所有输出虚端口,即{输出端口j,输出外层VLAN IDj,x输出内层VLAN IDj},其中j=1...m,j为输出虚端口的序号,m为广播输出虚端口的总数;步骤315接收的报文复制m份;步骤316用输出外层VLAN IDj替换对应报文中输入外层VLAN ID,用输出内层VLAN IDj替换对应报文中输入内层VLAN ID,跳到步骤317;步骤317判断输出虚端口与输入虚端口是否完全相同,即判断输出端口与输入端口是否相同,并判断输出外层VLAN ID和输入外层VLAN ID是否相同,并判断输出内层VLAN ID和输入内层VLAN ID是否相同,如果上述三者判断结果都相同,则执行步骤318;如果上述三者判断结果不都相同,则执行步骤319;步骤318丢弃该报文;步骤319转发该报文至输出端口。
综上所述,本发明将多个{端口,VLAN}组成一个集合,使得该集合属于一个VSI,以太网报文在同一个VSI的各{端口,VLAN}间相互转发,实现了多个VLAN间的桥接转发。桥接转发的总体思路是从输入端口接收报文之后,获取报文中的VLAN ID;然后使用{输入端口,输入VLAN ID}查找上述{端口,VLAN}与VSI的对应关系,确定对应的VSI;使用{VSI,目的MAC}查找MAC地址转发表得到{输出端口,输出VLAN ID},并根据所得到的{输出端口,输出VLAN ID}转发报文。其中,VLAN可以为一个,也可以为两个或多个VLAN的组合。例如,将若干{端口,外层VLAN,内层VLAN}和{端口,VLAN}绑定到一个VSI。
从输入报文中可以得到一层VLAN ID或二层VLAN ID或更多VLANID。
如果是1层VLAN ID,则使用{输入端口,输入VLAN ID}查表得到VSI;如果是2层VLAN ID,则使用{输入端口,输入外层VLAN ID,输入内层VLAN ID}查表得到VSI。
源MAC自学习过程中,将从报文中获取的VLAN ID依次记录在MAC地址转发表中。在转发过程中查找MAC地址转发表时,得出的输出VLANID可能为一层VLAN ID,也可能为两层或更多层,这与MAC地址学习过程中所记录的VLAN ID有关。
在报文转发时,用对应层的输出VLAN ID替换对应层的输入VLAN ID,或者是添加输出VLAN ID之后,转发至输出端口。
在进行源端口过滤时,比较输出端口与输入端口,并且比较对应层的输出VLAN ID和输入VLAN ID,根据上述比较结果,如果比较结果完全相同,则丢弃报文,否则转发报文。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种桥接转发方法,其特征在于,将一个或一个以上由端口和虚拟局域网VLAN构成的组合对应一个虚拟转发实例VSI,该方法包括以下步骤A.从输入端口接收报文,获取该报文的输入虚拟局域网标识VLAN ID;B.使用输入端口和输入VLAN ID查找所述端口和VLAN与VSI的对应关系,确定对应的VSI;C.使用VSI和报文中的目的媒体接入控制MAC地址查找MAC地址转发表,查找得到输出端口和输出VLAN ID,并根据所得到的输出端口和输出VLAN ID转发报文。
2.根据权利要求1所述的方法,其特征在于,步骤A所述获取报文的VLANID的步骤包括判断报文中是否携带VLAN ID,如果是,则获取报文中的VLANID;否则,获取与输入端口相关的缺省VLAN ID,并在该报文中添加该VLANID。
3.根据权利要求1所述的方法,其特征在于,步骤C所述MAC地址转发表是通过学习建立,建立的步骤包括学习报文中的源MAC地址、输入端口和输入VLAN ID,并记录到VSI对应的MAC地址转发表中。
4.根据权利要求1所述的方法,其特征在于,步骤C所述查找MAC地址转发表时使用VSI和报文中的目的MAC地址之外,进一步包括输入VLAN ID。
5.根据权利要求1所述的方法,其特征在于,步骤C所述查找得到输出端口和输出VLAN ID的步骤包括查找得到唯一的输出端口和输出VLAN ID;步骤C所述转发报文的步骤包括将输出VLAN ID添加到报文中,或用输出VLAN ID替换报文中输入VLAN ID之后,转发该报文至输出端口。
6.根据权利要求1所述的方法,其特征在于,步骤C所述查找得到输出端口和输出VLAN ID的步骤包括如果查找MAC地址转发表的结果为输出多播组号MID,则使用MID查找多播表,得到输出端口和输出VLAN ID的集合;步骤C所述转发报文的步骤包括复制所得到的输出VLAN ID个数的报文,将各输出VLAN ID添加到各报文中,或用各输出VLAN ID替换各报文中的输入VLAN ID之后,转发各报文至各输出端口。
7.根据权利要求1所述的方法,其特征在于,步骤C所述查找得到输出端口和输出VLAN ID的步骤包括如果在MAC地址转发表中未直接查找到对应的输出端口和输出VLAN ID,则将VSI对应的所有输出端口和输出VLAN ID作为查找得到的输出端口和输出VLAN ID;步骤C所述转发报文的步骤包括复制所得到的输出VLAN ID个数的报文,将各输出VLAN ID添加到各报文中,或用各输出VLAN ID替换各报文中的输入VLAN ID之后,转发各报文至各输出端口。
8.根据权利要求5、6或7所述的方法,其特征在于,所述转发报文至输出端口之前进一步包括判断输出端口与输入端口是否相同,并判断输出VLANID和输入VLAN ID是否相同,如果上述两个判断结果都为是,则丢弃该报文;否则,转发该报文至输出端口。
9.根据权利要求5、6或7所述的方法,其特征在于,步骤C所述从报文中学习到的输入VLAN ID对应成一个标签值或标签索引,然后在VSI对应的MAC地址转发表中记录输入VLAN ID对应的标签值或标签索引;步骤C所述得到输出VLAN ID的步骤包括得到标签值或标签索引,然后根据该标签值或标签索引得到对应的输入VLAN ID。
10.根据权利要求1所述的方法,其特征在于,所述VLAN为同一个以太网端口的一个或一个以上VLAN,或同一个以太接入网的不同端口的一个或一个以上VLAN,或一个以上以太接入网的不同端口的一个或一个以上VLAN。
11.根据权利要求1所述的方法,其特征在于,所述VLAN ID为一层或二层或二层以上。
全文摘要
本发明公开了一种桥接转发方法,将一个或一个以上端口和虚拟局域网VLAN构成的组合对应一个虚拟转发实例VSI,在多个{端口,VLAN}之间完成报文桥接转发、MAC地址学习以及源端口过滤。该方法包括以下步骤从输入端口接收报文,获取该报文的输入虚拟局域网标识VLAN ID;使用输入端口和输入VLAN ID查找所述端口和VLAN与VSI的对应关系,得到对应的VSI;使用VSI和报文中的目的MAC地址查找MAC地址转发表,查找得到输出端口和输出VLAN ID,并根据所得到的输出端口和输出VLANID转发报文。根据本发明公开的方法,实现了以太网报文在多个VLAN之间的桥接转发。
文档编号H04L12/56GK1852240SQ20051011288
公开日2006年10月25日 申请日期2005年10月19日 优先权日2005年10月19日
发明者杜文华 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1