发明内容
本发明提供了一种实现VLAN内下行用户隔离的方法及设备,建立和维护一个二层转发表,在表中添加PVLAN ID、SVLAN ID,使得实现PVLAN内下行端口隔离无需进行MAC拷贝,直接查询该表即可实现转发。
本发明提供一种实现VLAN内下行用户隔离的方法,应用于包括至少两个相互隔离的从虚拟局域网SVLAN、至少一个主虚拟局域网PVLAN、及连接所述SVLAN和PVLAN的交换设备的系统中,所述方法包括以下步骤:
在交换设备建立PVLAN和SVLAN之间的绑定关系;
为交换设备的各端口设置端口所属VLAN信息;
设置包含网络设备地址以及网络设备所属VLAN信息的转发表项;
在交换设备的端口接收到网络设备发出的待转发报文时,根据所述报文的属性信息查询并维护所述转发表项,在所述端口所在VLAN内以及与该VLAN绑定的其他VLAN内查询目的网络设备,进行报文转发。
所述为交换设备的各端口设置端口所属VLAN信息具体包括:
为交换设备的各端口设置端口标识信息,利用所述端口标识信息标识各端口所属的SVLAN和PVLAN。
所述设置包含网络设备地址以及网络设备所属VLAN信息的转发表项中的网络设备地址为MAC地址,具体包括:
交换设备对报文的源MAC地址进行学习,再填入所述报文的VLAN信息和入端口信息。
交换设备对报文的源MAC地址进行学习具体包括:
根据接收报文进行源MAC匹配查找,如果没有,则建立新表项;如果有匹配表项,则确定是否对所述表项进行刷新。
所述根据接收报文进行源MAC匹配查找之后还包括:
判断所述表项中的VLAN是否与所述接收报文的端口所属VLAN相同,如果不同,则用所述接收报文的端口所属VLAN替换表项中VLAN;
如果相同,则判断表项中的目的端口号是否与所述接收报文的目的端口号相同,如果不同,则用所述接收报文的目的端口号替换表项中的目的端口号,如果相同,则匹配查找成功。
在所述交换设备中设置端口寄存器,用于存储各个端口的从虚拟局域网标识SVLAN_ID、主虚拟局域网标识PVLAN_ID和出端口信息DPORT;
对于来自SVLAN端口的报文,所述接收报文的端口参数中的MAC为报文源MAC地址、PVLAN为所述端口寄存器中的PVLAN_ID、SVLAN为所述端口寄存器中的SVLAN_ID、DPORT为所述端口ID;
对于来自PVLAN端口的报文,所述接收报文的端口参数中的MAC为报文源MAC地址、PVLAN为所述端口寄存器中的PVLAN_ID、SVLAN为0、DPORT为所述端口ID。
所述在端口所在VLAN内以及与该VLAN绑定的其他VLAN内查询目的网络设备具体包括:
根据接收报文进行目的MAC匹配查找,如果有,则按照所述目的MAC转发所述报文,如果没有,则广播所述报文,使目的网络设备收到所述广播报文后,返回响应消息,完成目的MAC地址的查询。
所述建立PVLAN和SVLAN之间的绑定关系具体包括:
在所述交换设备配置PVLAN和SVLAN绑定;
所述交换设备将上行口加入PVLAN,设置PVLAN和与该PVLAN绑定的SVLAN的报文进行untag转发;
所述交换设备将下行口加入SVLAN,设置该SVLAN和与该SVLAN绑定的PVLAN的报文进行untag转发。
本发明还提供了一种实现VLAN内下行用户隔离的交换设备,应用于包括至少两个相互隔离的SVLAN、至少一个PVLAN的系统中,包括:
绑定关系建立单元,用于建立PVLAN和SVLAN之间的绑定关系;
转发表项设置单元,用于为交换设备的各端口设置端口所属VLAN信息,并设置包含网络设备地址以及网络设备所属VLAN信息的转发表项;
报文转发单元,用于接收到网络设备发出的待转发报文时,根据所述报文的属性信息查询并维护所述转发表项,在所述端口所在VLAN内以及与该VLAN绑定的其他VLAN内查询目的网络设备,进行报文转发。
所述绑定关系建立单元具体包括:
上行口绑定子单元,将上行口加入PVLAN,设置PVLAN和与该PVLAN绑定的SVLAN的报文进行untag转发;
下行口绑定子单元,将下行口加入SVLAN,设置该SVLAN和与该SVLAN绑定的PVLAN的报文进行untag转发。
所述绑定关系建立单元还包括:
标识设置子单元,用于为交换设备的各端口设置端口标识信息,利用所述端口标识信息标识各端口所属的SVLAN和PVLAN。
所述转发表项设置单元具体包括:
源MAC匹配查找子单元,用于根据接收报文进行源MAC匹配查找,如果没有,则建立新表项;如果有匹配表项,则根据定时器确定是否对该表项进行刷新;
目的MAC匹配查找子单元,用于相据接收报文进行目的MAC匹配查找,如果有,则按照所述目的MAC转发所述报文,如果没有,则广播所述报文。
所述报文转发单元具体包括:
转发表项维护子单元,用于接收到网络设备发出的待转发报文时,根据所述报文的属性信息查询并维护所述转发表项;
目的查询子单元,用于在所述端口所在VLAN内以及与该VLAN绑定的其他VLAN内查询目的网络设备,并进行报文转发。
有现有技术相比,本发明具有以下优点:
本发明实施例中,充分利用交换机的二层转发表表项资源,极大增加可接入的用户数量;避免软件大量MAC拷贝带来的对系统的压力,增加系统稳定性和可维护性;另外,在相同用户规模下,由于二层表项大大缩减,查表更快,提高转发效率。
具体实施方式
本发明的核心思想是:在交换设备中建立和维护一个二层转发表项,在表项中添加PVLAN_ID、SVLAN_ID,使得实现PVLAN内下行口隔离无需进行MAC拷贝,直接查询该表项即可实现转发。
下面结合附图和实施例,对本发明的具体实施方式作进一步详细的说明。以图1中的SW1为例进行说明,为了满足图1的应用需求,SW1划分了三个VLAN:VLAN2、VLAN3、VLAN4。
步骤s101,在交换设备建立PVLAN和SVLAN之间的绑定关系,并为交换设备的各端口设置端口所属VLAN信息,并在交换设备中设置一用于记录各VLAN之间的绑定关系的数据结构(SVLAN_EN,SVLAN_ID,PVLAN_ID)。例如,在SW1建立PVLAN(主虚拟局域网)VLAN2与SVLAN(从虚拟局域网)VLAN3和VLAN4的绑定关系,即:VLAN2为PVLAN,而VLAN3、VLAN4为与VLAN2绑定的SVLAN。
对于上行口P4和P5,这两个端口加入PVLAN(VLAN2,即该端口的PVID=2),软件处理上要求上行口允许PVLAN(VLAN2)和与该PVLAN绑定的SVLAN(VLAN3和VLAN4)的报文进行untag(不打标记)转发,端口P4的数据结构(SVLAN_EN,SVLAN_ID,PVLAN_ID)=(0,0,2)。
对于下行口P1,用户配置该端口加入SVLAN(VLAN3,即该端口的PVID=3),软件处理上要求下行口允许该SVLAN(VLAN3)和与该SVLAN绑定的PVLAN(VLAN2)的报文进行untag转发,当用户将下行口加入一个SVLAN后,该端口的寄存器SVLAN_EN位被设为1,端口P1的数据结构(SVLAN_EN,SVLAN_ID,PVLAN_ID)=(1,3,2);
对于下行口P2,与P1的数据结构相同,不在赘述;
对于下行口P3,端口数据结构(SVLAN_EN,SVLAN_ID,PVLAN_ID)=(1,4,2)。
其中,数据结构(SVLAN_EN,SVLAN_ID,PVLAN_ID)可存储于PVLAN/SVLAN使能和映射关系寄存器中,本实施例中该寄存器占用25bit,在不同的实施例中,该寄存器的长度可以变化。如表1所示,寄存器中的0bit为从VLAN使能位SVLAN_EN,该使能位的不同取值可以表示端口是否使能,例如在本实施例中,将该bit位设为1时端口使能SVLAN,为0时在端口上不使能SVLAN(缺省值为0);1-12bit为SVLAN_ID的值(缺省值为0),该值是在端口加入SVLAN时设置的,取值为SVLAN_ID;13bit-24bit为PVLAN_ID的值(缺省值为端口PVLAN_ID),该值是在端口加入SVLAN时设置的,取值为SVLAN捆绑的PVLAN_ID。
表1:
SVLAN_EN |
PVLAN |
SVLAN |
0bit |
1-12bit |
13-24bit |
步骤s102,设置包含网络设备地址以及网络设备所属VLAN信息的转发表项。在初始状态下,SW1中的二层转发表为空,只有当SW1收到报文后,才开始建立二层转发表,转发表建立是通过交换设备对报文的源MAC(SMAC)学习之后,再填入报文的VLAN和入端口信息等完成的,建立的转发表项是为了交换设备收到目的为该MAC的报文查表项转发;一个报文进入交换设备后,会对转发表项进行两次查表操作:第一次为源MAC匹配查找,目的是查明该报文源MAC要不要学习,即如果没有匹配表项则要建立新表项,有匹配表项再看该表项是否要刷新;第二次为目的MAC匹配查找,目的是将报文转发给该去的地方,如果找不到该去的地方就广播,使收到该广播报文的目的网络设备返回响应消息,完成目的网络设备的查找。
步骤s103,在交换设备的端口接收到网络设备发出的待转发报文时,根据所述报文的属性信息查询并维护所述转发表项,在所述端口所在VLAN内以及与该VLAN绑定的其他VLAN内查询目的网络设备,进行报文转发。
另外,转发表项建立后还可以对二层转发表中的表项进行老化。动态表项老化机制与现行设备相同,老化定时器超时前如果没有报文源MAC匹配该表项,则该表项老化删除。静态MAC配置下发到二层转发表,表项根据端口数据结构中的PVLAN_ID和SVLAN_ID来添加PVLAN、SVLAN字段。另外,SW1中二层转发表中的MAC表项删除可依据MAC、PVLAN、SVLAN、PORT、STATUS等条件单独查表删除或组合查表删除。
其中步骤s102中转发表项设置过程,对于来自PVLAN和SVLAN的报文有所区别。报文进入某端口二层转发逻辑,交换设备先要判断该端口是否为SVLAN端口,如果使能和映射关系寄存器中该端口SVLAN_EN为1,则说明该端口是下行口,进入下行口源MAC匹配查找流程;SVLAN_EN如果为0,则说明该端口是上行口(或普通端口),进入上行口源MAC匹配查找流程。
上行口源MAC匹配查找流程如图3所示,具体包括以下步骤:
步骤s201,上行口源MAC匹配查找:按源MAC、PVLAN_ID匹配二层转发表项MAC、PVLAN进行查找,如果没有匹配,则转步骤s202,存在匹配表项,则转步骤s203。
步骤s202,对报文源MAC进行学习,在二层转发表添加动态表项:MAC=报文源MAC,PVLAN=PVLAN_ID,SVLAN=0,DPORT=入PORT ID,并设置MAC老化定时器。
步骤s203,存在匹配表项,交换设备需判断表项SVLAN是否为0,如果为0,则转步骤s204,如果不为0,则转步骤s205。
步骤s204,SVLAN为0时,交换设备还需判断DPORT与入PORT是否相同,如果DPORT与入PORT相同说明源MAC已经存在,转步骤s206。如果不相同,则转步骤s205。
步骤s205,当表项为静态配置表项,表项不变,将报文丢弃,转发流程中止;当表项为动态表项,对报文源MAC进行学习覆盖原表项:MAC=报文源MAC,PVLAN=PVLAN_ID,SVLAN=0,DPORT=入PORT ID。并设置MAC老化定时器。
步骤s206,DPORT与入PORT相同说明二层转发表中的为源MAC的表项已经存在,对于静态表项不进行处理,对于动态表项进行刷新MAC老化定时器,转步骤s207。
经过上述步骤s201至步骤s206的二层表项建立过程,当每个端口都收到各自连接的主机的报文后,SW1上形成如表2所示的二层转发表。
表2:
MAC |
PVLAN |
SVLAN |
DPORT |
STATUS |
MAC1 |
2 |
3 |
P1 |
dynamic |
MAC2 |
2 |
3 |
P2 |
dynamic |
MAC3 |
2 |
4 |
P3 |
dynamic |
MAC4 |
2 |
0 |
P4 |
dynamic |
MAC5 |
2 |
0 |
P5 |
dynamic |
表2中的转发表项比原有方案节约转发表项7项,接近60%。并且如果大量用户和上行服务器的组网环境下,这个数值会更大。即采用新方案后,同样系统可以接入更多用户,为运营商节约成本、增加利润。另外,无需软件进行大量的MAC拷贝工作,减轻系统负担、提升可靠性。相同用户规模下,由于二层表项大大缩减,查表更快,提高转发效率。
步骤s207,按DMAC和PVLAN查找是否存在匹配表项,如果存在,则转步骤s209,否则转步骤s208。
步骤s208,在端口加入的VLAN内广播该报文。
步骤s209,判断目的MAC地址表项中的SVLAN与报文入端口寄存器的SVLAN_ID是否相等,或报文入端口寄存器的SVLAN_ID为0,或目的MAC表项中提取的SVLAN为0;如果满足,则转步骤s210,否则继续查找下一表项。
步骤s210,将报文按表项所指DPORT转发。
其中,下行口源MAC匹配查找流程如图4所示,具体包括以下步骤:
步骤s301,按源MAC进行匹配查找,判断二层转发表中是否存在与该源MAC匹配的表项,如果没有匹配表项,说明二层转发表中没有建立该源MAC的表项,转步骤s302,如果存在匹配表项,则转步骤s303。
步骤s302,对该接收报文的源MAC进行学习,在二层转发表中添加动态表项:MAC=报文SMAC,PVLAN=PVLAN_ID,SVLAN=SVLAN_ID,DPORT=入口PORT ID;并设置MAC老化定时器,然后转步骤s308。
步骤s303,存在匹配表项,判断二层转发表中的表项SVLAN是否与使能和映射关系寄存器的SVLAN_ID相同,如果相同,则转步骤s304,如果不同,则转步骤s305。
步骤s304,判断二层转发表中的DPORT与该报文的入PORT是否相同,如果相同,则转步骤s306,如果不同,则说明该报文的入端口发生了变化,转步骤s307。
步骤s305,SVLAN与SVLAN_ID不同,需判断二层转发表项的PVLAN与端口PVLAN_ID是否相同。如果PVLAN与PVLAN_ID相同,则说明源MAC所属的SVLAN发生了变化,转步骤s308,PVLAN与PVLAN_ID不同,则表明源MAC不匹配该表项,返回步骤s301继续查找下一条表项。
步骤s306,DPORT与入PORT相同说明二层转发表中的为源MAC的表项已经存在,对于静态表项不进行处理,对于动态表项进行刷新MAC老化定时器,转步骤s308。
步骤s307,当表项为静态配置表项时,二层转发表中的表项不变,将该报文丢弃,转发流程中止;当表项为动态表项,对报文源MAC进行学习,覆盖原二层转发表中的表项:MAC=源MAC,PVLAN=PVLAN_ID,SVLAN=SVLAN_ID,DPORT=入PORT_ID,并设置MAC老化定时器;转步骤s308。
步骤s308,按DMAC和PVLAN查找是否存在匹配表项,如果存在,则转步骤s309,否则转步骤s311。
步骤s309,判断目的MAC地址表项中的SVLAN与报文入端口寄存器的SVLAN_ID是否相等,或报文入端口寄存器的SVLAN_ID为0,或目的MAC表项中提取的SVLAN为0;如果满足,则转步骤s310,否则转步骤s308继续查找下一表项。
步骤s310,将报文按表项所指DPORT转发。
步骤s311,在端口加入的VLAN内广播该报文。
以图1所示的组网应用来说明本发明上行口源MAC匹配查找流程。当PC1访问SERVER2时,PC1发出源MAC地址为MAC1,目的MAC地址为SERVER2的MAC5的报文进入SW1,在SW1中进行源MAC地址学习,根据端口的PVLAN/SVLAN使能和映射关系寄存器SVLAN_EN=1,提取了SLVAN=3、PVLAN=2的信息建立了二层表项如表3:
表3
MAC |
PVLAN |
SVLAN |
DPORT |
STATUS |
MAC1 |
2 |
3 |
P1 |
dynamic |
根据MAC5+VLAN2(PVLAN)查找目的MAC地址为SERVER2的MAC5时,发现无法找到则将报文在SVLAN中进行广播,SERVER2收到PC1广播过来的报文;由于在使能和映射关系寄存器设置时,将SVLAN和PVLAN进行了绑定,因此,SERVER2可以收到来自PC1的广播报文。
以图1所示的组网应用来说明本发明下行口源MAC匹配查找流程。SERVER2发出回应PC1的报文源MAC地址为MAC5,目的MAC地址为PC1的MAC1的报文进入SW1,在SW1中进行源MAC地址学习,根据端口的PVLAN/SVLAN使能和映射关系寄存器SVLAN_EN=0,提取了SLVAN=0、PVLAN=2建立了二层表项如表4:
表项4
MAC |
PVLAN |
SVLAN |
DPORT |
STATUS |
MAC5 |
2 |
0 |
P5 |
dynamic |
根据MAC1+VLAN2(PVLAN)查找目的MAC地址为PC1的MAC1时,找到了表项3中的MAC=MAC1、PVLAN=2、SVLAN=3的表项,根据规则报文入端口的SVLAN和二层表项中进行匹配;提取的SVLAN相等或者任一为0都视为命中,(即目的MAC地址表项中的SVLAN与由源MAC地址中提取的SVLAN相等或者源MAC地址中提取的SVLAN为0或者目的MAC地址表项中SVLAN为0)则报文按照这条表项往端口P1进行转发,PC1收到了SERVER2发出的回应报文。
后续PC1再次访问SERVER2时会命中表项4进行单播转发。并且,PC2和PC3访问Server2也会匹配这条表项单播转发。
另外,PC2、PC3访问PC1过程,如上例,系统可以通过硬件学习分别建立匹配PC2的MAC的转发表项,如表5;建立匹配PC3的MAC的转发表项,如表6。
表5:
MAC |
PVLAN |
SVLAN |
DPORT |
STATUS |
MAC2 |
2 |
3 |
P2 |
dynamic |
表6:
MAC |
PVLAN |
SVLAN |
DPORT |
STATUS |
MAC3 |
2 |
4 |
P3 |
dynamic |
在匹配目的MAC1时,PC2发出的报文可以命中上例的表项3,因为从入口提取的SVLAN与表项3的相等,PC2和PC1可以实现互访;而PC3发出的报文却因为,两个SVLAN都不为0且又不相等,无法匹配,只能在VLAN4内广播,PC1无法收到,PC1与PC3实现了隔离。
本发明还提供了一种实现VLAN内下行用户隔离的交换设备,如图5所示,应用于包括至少两个从SVLAN、至少一个主PVLAN的系统中,包括:绑定关系建立单元100,用于建立PVLAN和SVLAN之间的绑定关系;转发表项设置单元200,用于为交换设备的各端口设置端口所属VLAN信息,并设置包含网络设备地址以及网络设备所属VLAN信息的转发表项;报文转发单元300,用于接收到网络设备发出的待转发报文时,根据所述报文的属性信息查询并维护所述转发表项,在所述端口所在VLAN内以及与该VLAN绑定的其他VLAN内查询目的网络设备,进行报文转发。
所述绑定关系建立单元100具体包括:上行口绑定子单元110,用于将上行口加入PVLAN,设置PVLAN和与该PVLAN绑定的SVLAN的报文进行untag转发;下行口绑定子单元120,用于将下行口加入SVLAN,设置该SVLAN和与该SVLAN绑定的PVLAN的报文进行untag转发;标识设置子单元130,用于为交换设备的各端口设置端口标识信息,利用所述端口标识信息标识各端口所属的SVLAN和PVLAN。
所述转发表项设置单元200具体包括:源MAC匹配查找子单元210,用于根据接收报文进行源MAC匹配查找,如果没有,则建立新表项;如果有匹配表项,则根据一系列判断确定是否对该表项进行刷新;目的MAC匹配查找子单元220,用于根据接收报文进行目的MAC匹配查找,如果有,则按照所述目的MAC转发所述报文,如果没有,则广播所述报文。
报文转发单元300具体包括:转发表项维护子单元310,用于接收到网络设备发出的待转发报文时,根据所述报文的属性信息查询并维护所述转发表项;目的查询子单元320,用于在所述端口所在VLAN内以及与该VLAN绑定的其他VLAN内查询目的网络设备,并进行报文转发。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。