发明内容
本发明要解决的是现有技术中与应用Isolated-User VLAN的端口连接的设备得不到该端口VLAN信息的问题。
本发明所述第一种包括主虚拟局域网Primary VLAN和至少一个次级虚拟局域网Secondary VLAN的隔离用户虚拟局域网的实现方法,包括以下步骤:
Secondary VLAN端口接收到以Primary VLAN端口为出端口的报文;
在将报文转发出Primary VLAN端口前,确定Primary VLAN端口为Trunk端口时,或者确定Primary VLAN端口为Hybrid端口且发送报文携带VLAN标签时,在报文中增加Priamry VLAN标签。
优选地,所述方法还包括:当从Primary VLAN端口接收到具有PrimaryVLAN标签的报文时,根据报文中的目的地址直接进行转发。
优选地,所述将报文转发出Primary VLAN端口前具体为:在去掉报文中Secondary VLAN标签后,从Primary VLAN端口发送报文前。
可选地,所述将报文转发出Primary VLAN端口前具体为:在去掉报文中Secondary VLAN标签前;
所述在报文中增加Primary VLAN的标签具体为:在报文中SecondaryVLAN标签之后插入Primary VLAN标签。
优选地,设置从Primary VLAN端口发送的报文携带Primary VLAN标签。
优选地,所述方法还包括:在将报文转发出Secondary VLAN端口前,在报文中增加Secondary VLAN标签。
本发明所述第二种包括Primary VLAN和至少一个Secondary VLAN的隔离用户虚拟局域网的实现方法,包括以下步骤:
Primary VLAN端口接收到以Secondary VLAN端口为出端口的报文;
在将报文转发出Secondary VLAN端口前,确定Secondary VLAN端口为Trunk端口时,或者确定Secondary VLAN端口为Hybrid端口且发送报文携带VLAN标签时,在报文中增加Secondary VLAN标签。
优选地,所述方法还包括:当从Secondary VLAN端口接收到具有Secondary VLAN标签的报文时,根据报文中的目的地址直接进行转发。
优选地,所述在将报文转发出Secondary VLAN端口前具体为:在去掉报文中Primary VLAN标签后,从Secondary VLAN端口发送报文前。
可选地,所述在将报文转发出Secondary VLAN端口前具体为:在去掉报文中Primary VLAN标签前;
所述在报文中增加Secondary VLAN的标签具体为:在报文中PrimaryVLAN标签之后插入Secondary VLAN标签。
优选地,所述方法还包括:设置从Secondary VLAN端口发送的报文具有Secondary VLAN标签。
本发明提供的一种具有隔离用户虚拟局域网功能的网络设备,包括至少一个Primary VLAN端口、Primary标签处理模块、Primary标签设置模块和转发模块,其中:
Primary VLAN端口用来进行隔离用户虚拟局域网的上行报文收发;
Primary标签设置模块用来配置从该Primary VLAN端口发送的报文中带有或不带有VLAN标签;
Primary标签处理模块用来根据Primary标签设置模块的配置向该PrimaryVLAN端口输出携带或不携带Primary VLAN标签的发送报文;
转发模块连接Primary标签处理模块,用来转发报文。
优选地,当从Primary VLAN端口接收的报文中具有VLAN标签时,Primary标签处理模块将其输出至转发模块;当从Primary VLAN端口接收的报文中不具有VLAN标签时,Primary标签处理单元在该报文中增加PriamryVLAN标签后将其输出至转发模块。
优选地,所述网络设备还包括至少一个Secondary VLAN端口、Secondary标签处理模块和Secondary标签设置模块,其中:
Secondary VLAN端口用来进行隔离用户虚拟局域网的下行报文收发;
Secondary标签设置模块用来配置从该Secondary VLAN端口发送的报文中带有或不带有VLAN标签;
Secondary标签处理模块连接转发模块,用来根据Secondary标签设置模块的配置向该Secondary VLAN端口输出携带或不携带Secondary VLAN标签的发送报文。
优选地,当从Secondary VLAN端口接收的报文中具有VLAN标签时,Secondary标签处理模块将其输出至转发模块;当从Secondary VLAN端口接收的报文中不具有VLAN标签时,Secondary标签处理单元在该报文中增加Secondary VLAN标签后将其输出至转发模块。
本发明通过在从Isolated-User VLAN的Primary VLAN端口和/或Secondary VLAN端口发送的报文中增加Primary VLAN标签或SecondaryVLAN标签,使得Isolated-User VLAN的上行与下行报文中能够带有PrimaryVLAN或Secondary VLAN的标签,从而在不改变现有的转发流程和转发决策的条件下,极大地扩展了Isolated-User VLAN的应用。
具体实施方式
在网络设备之间,VLAN信息通过报文中的VLAN标签进行传递。VLAN标签中包括VLAN的标识,网络设备可以通过VLAN标签识别出发送该报文的节点所在的VLAN。例如,VLAN标签在以太网报文中的实现最为常见的有以下两种:
第一种是IEEE 802.1Q协议规定的帧结构,如下表所示:
目的MAC地址 |
源MAC地址 |
TPID |
TCI |
帧类型 |
数据部分 |
上表中,在原以太网帧结构的源MAC地址与帧类型之间,增加了包括2字节TPID(Tag protocol Identifier,标签协议标识符)和2字节TCI(Tag ControlInformation,标签控制信息)的VLAN标签。其中,TPID固定为值0x8100,表明该帧中带有802.1Q标记信息;TCI中包括12位VLAN标识符VID,VID唯一地标识了该帧所属的VLAN;
第二种是Cisco(思科)公司的ISL(Inter Switch Link)协议规定的帧结构,如下表所示:
ISL Header |
目的MAC地址 |
源MAC地址 |
帧类型 |
数据部分 |
上表中,在原以太网帧结构的前端增加了26字节的ISL Header(ISL包头)作为VLAN标签,其中包括唯一标识该帧所属VLAN的VLAN ID(VLAN标识符)。
对应于所发送的报文是否携带VLAN标签,网络设备上的端口分为以下三种:
A.Access(接入)端口:当某个端口对某个VLAN是Access端口时,报文进入该端口时,会在报文中增加该VLAN的标签;而当报文由该端口发送前,会去掉报文中的VLAN标签;
B.Trunk(汇聚)端口:当某个端口对某个VLAN是Trunk端口时,该端口通常属于多个VLAN,可以设置其中一个为该端口的缺省VLAN;除了属于该端口缺省VLAN的报文外,由该端口发送的报文中携带有该报文所属VLAN的标签;
C.Hybrid(混合)端口:Hybrid端口比Trunk端口增加了一个功能,即可以设置从Hybrid端口发送的报文携带或不携带VLAN标签。
在现有技术的实现中,所有的Isolated-User VLAN端口都只能是Access端口。本发明要实现Primary VLAN和/或Secondary VLAN的信息对与其相连的设备可见,即是要实现Primary VLAN标签上行和Secondary VLAN标签下行,换言之,使得Isolated-User VLAN端口除了Access端口外,也可以是Trunk端口或Hybrid端口。
需要说明的是,在不同公司的产品中Isolated-User VLAN有不同的名称,例如在Cisco公司的交换设备中称之为Private VLAN(专用)。本发明可以应用于所有能够将多个VLAN映射为一个VLAN,以实现隔离用户功能的网络设备,本发明中采用隔离用户VLAN作为此类实现的总称,而不应将其作为对本发明应用范围的限定。
本发明的实施例一中,实现Primary VLAN标签上行的报文发送方法的流程如图2所示。在步骤S210,设置从Primary VLAN端口发送的报文是否携带Primary VLAN标签。
通常,当Primary VLAN端口只属于一个Primary VLAN时,从该端口发送的报文不需要携带Primary VLAN标签;而当Primary VLAN端口为两个或两个以上的Primary VLAN提供上行连接时,则至少一个Primary VLAN的报文从该端口发送时应携带Primary VLAN标签。
为了使本发明尽可能与现有技术兼容,推荐采用将Primary VLAN端口设置为对某个Primary VLAN的Access端口、Trunk端口或Hybrid端口来设置从该端口发送的报文是否携带VLAN标签。当设置某个Primary VLAN端口对某个Primary VLAN为Access端口、或为Hybrid端口且发送报文不携带VLAN标签时,即设置从该Primary VLAN端口发送的该Primary VLAN报文中不携带VLAN标签;当设置某个Primary VLAN端口对某个Primary VLAN为Trunk端口、或为Hybrid端口且发送报文携带VLAN标签时,通常即设置了从该Primary VLAN端口发送的该Primary VLAN报文中携带VLAN标签,例外的情况是该Primary VLAN为该Trunk端口的缺省VLAN。
还可以将携带Primary VLAN标签或不携带Primary VLAN标签作为缺省工作模式,在这种情况下,当工作于缺省工作模式时,步骤S210可以省略。
在步骤S220,带有Secondary VLAN标签的报文被转发至Primary VLAN端口。
在步骤S230,去掉报文中的Secondary VLAN标签。
步骤S220和步骤S230与现有技术中对以Secondary VLAN端口为入端口、以Primary VLAN端口为出端口的报文的处理流程相同,此处不再赘述。
在步骤S240,判断在步骤S210中是否设置为从Primary VLAN端口发送的报文携带VLAN标签,如果是,执行步骤S250;如果否,则与现有技术中对报文的处理流程相同,转步骤S260。如果Primary VLAN端口发送携带VLAN标签的报文为唯一的工作模式,则步骤S240可以省略。
在步骤S250,在报文中增加其所属Primary VLAN的标签。根据该报文采用的协议,在协议规定的位置加入Primary VLAN标签。
在步骤S260,将报文发送出Primary VLAN端口。
对从Primary VLAN端口接收的报文,判断该报文中是否携带VALN标签,如果否,则按照现有技术中的处理流程,在该报文中加入Primary VLAN标签并转发;如果是,则直接根据该报文的目的地址转发。
一些网络设备不支持在从端口发送报文前,在去掉报文中的VLAN标签后再加入另一个VLAN标签,此时可以采用本发明实施例二中实现PrimaryVLAN标签上行的报文发送方法,其流程如图3所示。
实施例二中的步骤S310和步骤S320分别与实施例一中的步骤S210和步骤S220相同,不再重复。
在步骤S330,判断是否将从Primary VLAN端口发送的报文设置为携带VLAN标签,如果是,执行步骤S340;如果否,则对报文的处理流程与现有技术中相同,转步骤S350。
同样,如果Primary VLAN端口发送携带VLAN标签的报文为唯一的工作模式,则步骤S330可以省略。
在步骤S340,在报文中Secondary VLAN标签之后插入Primary VLAN标签。
该报文中Secondary VLAN标签所在的位置即是协议规定的VLAN标签位置,因此在Secondary VLAN标签后面、与Secondary VLAN标签相邻的位置插入Primary VLAN标签,这样在步骤S350按现有技术中报文处理流程去掉Secondary VLAN标签后,该报文即成为携带Primary VLAN标签的报文。
以采用802.1Q协议的报文为例,在插入Primary VLAN标签后,其帧结构如下表所示:
目标MAC地址 |
源MAC地址 |
SecondaryVLANTPID |
SecondaryVLANTCI |
PrimaryVLANTPID |
PrimaryVLANTCI |
帧类型 |
数据部分 |
在步骤S350,去掉报文中的Secondary VLAN标签。
在步骤S360,将报文发送出Primary VLAN端口。
对从Primary VLAN端口接收的报文的处理流程与实施例一中相同,不再重复。
对应于实施例一,本发明的实施例三用来实现Secondary VLAN标签下行,其流程如图4所示。在步骤S410,设置从Secondary VLAN端口发送的报文是否携带Secondary VLAN标签。
为了使本发明尽可能与现有技术兼容,推荐采用将Secondary VLAN端口设置为对某个Secondary VLAN的Access端口、Trunk端口或Hybrid端口来设置从该端口发送的报文是否携带VLAN标签。当设置某个Secondary VLAN端口对某个Secondary VLAN为Access端口、或为Hybrid端口且发送报文不携带VLAN标签时,即设置从该Secondary VLAN端口发送的该SecondaryVLAN报文中不携带VLAN标签;当设置某个Secondary VLAN端口对某个Secondary VLAN为Trunk端口、或为Hybrid端口且发送报文携带VLAN标签时,通常即设置了从该Secondary VLAN端口发送的该Secondary VLAN报文中携带VLAN标签,例外的情况是该Secondary VLAN为该Trunk端口的缺省VLAN。
还可以将携带Secondary VLAN标签或不携带Secondary VLAN标签作为缺省工作模式,在这种情况下,当工作于缺省工作模式时,步骤S410可以省略。
在步骤S420,带有Primary VLAN标签的报文被转发至Secondary VLAN端口。
在步骤S430,去掉报文中的Primary VLAN标签。
步骤S420和步骤S430与现有技术中对以Primary VLAN端口为入端口、以Secondary VLAN端口为出端口的报文的处理流程相同,此处不再赘述。
在步骤S440,判断在步骤S410中是否设置为从Secondary VLAN端口发送的报文携带VLAN标签,如果是,执行步骤S450;如果否,则与现有技术中对报文的处理流程相同,转步骤S460。
如果Secondary VLAN端口发送携带VLAN标签的报文为唯一的工作模式,则步骤S440可以省略。
在步骤S450,在报文中增加其所属Secondary VLAN的标签。根据该报文采用的协议,在协议规定的位置加入Secondary VLAN标签。
在步骤S260,将报文发送出Secondary VLAN端口。
对从Secondary VLAN端口接收的报文,判断该报文中是否携带VLAN标签,如果否,则按照现有技术中的处理流程,在该报文中加入SecondaryVLAN标签并转发;如果是,则直接根据该报文的目的地址转发。
对应于实施例二,对不支持在从端口发送报文前,在去掉报文中的VLAN标签后再加入另一个VLAN标签的网络设备,可以采用本发明实施例四的方法实现Secondary VLAN标签下行。其流程如图5所示。
实施例四的步骤S510和步骤S520分别与实施例三中的步骤S410和步骤S420相同,不再重复。
在步骤S530,判断是否将从Secondary VLAN端口发送的报文设置为携带VLAN标签,如果是,执行步骤S540;如果否,则对报文的处理流程与现有技术中相同,转步骤S550。
同样,如果Secondary VLAN端口发送携带VLAN标签的报文为唯一的工作模式,则步骤S530可以省略。
在步骤S540,在报文中Primary VLAN标签之后插入Secondary VLAN标签。
该报文中Primary VLAN标签所在的位置即是协议规定的VLAN标签位置,因此在Primary VLAN标签后面、与Primary VLAN标签相邻的位置插入Secondary VLAN标签,这样在步骤S550按现有技术中报文处理流程去掉Primary VLAN标签后,该报文即成为携带Secondary VLAN标签的报文。
以采用802.1Q协议的报文为例,在插入Secondary VLAN标签后,其帧结构如下表所示:
目标MAC地址 |
源MAC地址 |
PrimaryVLANTPID |
PrimaryVLANTCI |
SecondaryVLANTPID |
SecondaryVLANTCI |
帧类型 |
数据部分 |
在步骤S550,去掉报文中的Primary VLAN标签。
在步骤S560,将报文发送出Secondary VLAN端口。
对从Secondary VLAN端口接收的报文的处理流程与实施例三中相同,不再重复。
不难理解,本发明的实施例一和实施例二可以分别与实施例三或实施例四组合应用,使得用户可以根据实际应用的需要设置从Primary VLAN端口和Secondary VLAN端口发送的报文携带或不携带VLAN标签。
图6为应用本发明的网络设备的结构图。转发模块640分别与Primary标签处理模块620、Secondary标签处理模块640连接,Primary标签处理模块620分别与Primary VLAN端口610和Primary标签设置模块630连接,Secondary标签处理模块660分别与Secondary VLAN端口650和Secondary标签设置模块670连接。
Primary VLAN端口610用来收发Isolated-User VLAN的上行报文,Secondary VLAN端口650用来收发Isolated-User VLAN的下行报文。
Primary标签设置模块630提供将从Primary VLAN端口610发送的报文配置为携带Primary VLAN标签或不携带Primary VLAN标签的功能;同样,Secondary标签设置模块670提供将从Secondary VLAN端口650发送的报文配置为携带Secondary VLAN标签或不携带Secondary VLAN标签的功能。
转发模块640根据报文中的目的地址报文进行转发。
当Primary VLAN端口610接收到报文时,将其输出至Primary VLAN标签处理模块620。如果接收报文中有VLAN标签,Primary VLAN标签处理模块620直接将其输出至转发模块640;如果接收报文中没有VLAN标签,Primary VLAN标签处理模块620在其中加入Primary VLAN标签后,将其输出至转发模块640。
转发模块640将以Primary VLAN端口610为出端口的报文输出至PrimaryVLAN标签处理模块620。Primary VLAN标签处理模块620向Primary标签设置模块630查询配置,当配置为发送报文携带VLAN标签时,Primary VLAN标签处理模块620向Primary VLAN端口610输出携带Primary VLAN标签的发送报文;当配置为发送报文不带VLAN标签时,Primary VLAN标签处理模块620向Primary VLAN端口610输出不携带Primary VLAN标签的发送报文。
当Secondary VLAN端口650接收到报文时,将其输出至Secondary VLAN标签处理模块660。如果接收报文中有VLAN标签,Secondary VLAN标签处理模块660直接将其输出至转发模块640;如果接收报文中没有VLAN标签,Secondary VLAN标签处理模块660在其中加入Secondary VLAN标签后,将其输出至转发模块640。
转发模块640将以Secondary VLAN端口650为出端口的报文输出至Secondary VLAN标签处理模块660。Secondary VLAN标签处理模块660向Secondary标签设置模块670查询配置,当配置为发送报文携带VLAN标签时,Secondary VLAN标签处理模块660向Secondary VLAN端口650输出携带Secondary VLAN标签的发送报文;当配置为发送报文不携带VLAN标签时,Secondary VLAN标签处理模块660向Secondary VLAN端口650输出不携带Secondary VLAN标签的发送报文。
Primary VLAN标签处理模块620和Secondary VLAN标签处理模块660中可以采用本发明实施例一至四的方法进行标签处理。
在上述四个本发明实现方法的实施例和应用本发明的网络设备中,当Primary VLAN端口配置为在发送报文中携带VLAN标签时,如果该PrimaryVLAN中有超过一个的Primary VLAN端口,则Primary VLAN端口之间携带VLAN标签的报文转发方法与现有技术中相同。同理,在同属一个SecondaryVLAN的Secondary VLAN端口之间转发携带VLAN标签的报文也可以采用现有技术中的实现方法。
在应用本发明后,设Primary VLAN的ID为Pvlan,Secondary VLAN的ID为Svlan,Primary VLAN端口为Pport,Secondary VLAN端口为Sport,在用户配置将Svlan映射到Pvlan后,还可以通过以下命令设置VLAN标签的上行与下行:
Pport Access Pvlan:配置上行报文不携带VLAN标签;
Pport Trunk Pvlan:配置上行报文携带VLAN标签;
Pport Hybrid Pvlan untagged:配置上行报文不携带VLAN标签;
Pport Hybrid Pvlan tagged:配置上行报文携带VLAN标签;
Sport Access Svlan:配置下行报文不携带VLAN标签;
Sport Trunk Svlan:配置下行报文携带VLAN标签;
Sport Hybrid Svlan untagged:配置下行报文不携带VLAN标签;
Sport Hybrid Svlan tagged:配置下行报文携带VLAN标签。
在应用本发明后,对图1所示的网络结构中,在交换机130上设置4个Secondary VLAN:Svlan1、Svlan2、Svlan3和Svlan4,分别包端口括Sport1、Sport2、Sport3和Sport4;设置2个Primary VLAN:包括Pport1和服务器111连接端口的Pvlan1和包括Pport1和服务器112连接端口的Pvlan2。将Svlan1和Svlan2映射到Pvlan1,Svlan3和Svlan4映射到Pvlan2,配置从Pport1端口发送的报文携带Primary VLAN标签,则可以实现用户141和142在访问服务器111的同时与服务器112隔离,并且用户143和144在访问服务器112的同时与服务器111隔离。
本发明在不改变现有技术实现的前提下,通过简单的处理即可方便地实现Isolate-User Vlan的VLAN标签上行和下行需求,使得Isolated-User VLAN在组网中具有与其他VLAN相同的功能,扩展了Isolated-User VLAN的应用范围;同时,本发明对现有的转发流程和转发流程与MAC表项处理没有做任何改动,保持了与现有技术的兼容性。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。