背景技术
随着网络的日益发展,对网络安全的要求也越来越高,因此在通过交换机和路由器等通信设备转发流量时,需要提供流量隔离的方案,尤其是对接入设备,包括二层VLAN(VirtualLocal Area Network,虚拟局域网)接入和三层IP接入,需要做到基于端口和VLAN的隔离。
对于二层接入网络,最常见的就是端口隔离,随着VPLS(Virtual Private LAN Service,虚拟专有LAN服务)的广泛应用,要求将VPLS的PW(Pseudo Wire,虚链路)也当做普通端口来看待,实现PW之间的隔离。在VPLS中,可以通过水平分割技术在同一个域内实现Hub之间的隔离。参见图1,在LAN(Local Area Network,局域网)内,NPE1(Network FacingProvider Edge,面向网络的提供商边缘设备)收到site(站点)内的CE(Customer Edge,客户端边缘设备)发送的报文后,通过水平分割技术可以向PE2(Provider Edge,提供商边缘设备)和PE3转发流量,但是PE2不可以向PE3转发流量,这样可以防止在NPE1、PE2和PE3之间形成环路。但是,对于VLAN之间的隔离,水平分割技术没有明确的方案。
现有技术中,可以通过PVLAN(Private Virtual Local Area Network,私有虚拟局域网)来实现VLAN之间的隔离。在PVLAN中,有以下三种端口:
混合(Promiscuous)端口,可以和PVLAN内的任何端口通信;
隔离(Isolated)端口,隔离端口只能和混合端口二层通信,而不能和其它任何端口通信,从混合端口发向隔离端口的二层流量被允许通过,而其它端口发向隔离端口的流量被阻断;从隔离端口接收到的流量,只能发向混合端口;
团体(Community)端口,将几个端口定义成一个团体,同一个团体内的各个端口可以相互通信,也可以和混合端口通信,但不能和其它团体的端口通信,也不能和隔离端口通信。
上述PVLAN端口的特性是通过三种VLAN定义和实现的:
Primary VLAN(组VLAN),来自混合端口,流向其它任何端口的流量在Primary VLAN中传送,可以认为混合端口的PVID为Primary VLAN的ID;
Isolated VLAN(隔离VLAN),来自隔离端口,流向混合端口的流量在Isolate VLAN中传送,可以认为隔离端口的PVID为IsolatedVLAN的ID;
Community VLAN(团体VLAN),来自团体端口,流向混合端口或团体端口的流量在CommunityVLAN中传送,可以认为,隔离端口的PVID为Community VLAN的ID;
Isolated VLAN和Community VLAN又被称为Secondary VLAN(子VLAN)。
在实现本发明的过程中,发明人发现上述现有技术至少存在以下缺点:
PVLAN在实现端口隔离时,至少需要定义Primary VLAN、Isolated VLAN和CommunityVLAN,需要占用较多的VLAN资源,不方便实现同一个VLAN内的端口隔离。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例首先根据用户需求对端口分组,在接入设备接收到报文后,根据报文的入端口和出端口所属的组的属性判断入端口和出端口之间是否互通,如果不互通,则不从出端口转发该报文,实现简单,节省资源。
实施例1
本实施例中,首先定义组的概念和组的属性,其中,组的属性包括以下几种:组内属性,例如组内是否互通;组间属性,例如两组之间是否互通;组间互通与组间不能互通的优先级。本实施例中以组间互通的优先级高于组间不互通为例进行说明,将组间互通分为两种不同的情况:组间互通[互通]或组间互通[隔离],其中,组间互通[互通]表示当两组的组间属性分别为组间互通和组间不互通时,两组之间可以互通,即以组间互通为准;组间互通[隔离]表示当两组的组间属性分别为组间互通和组间不互通时,两组之间隔离。不同属性之间的互通关系如表1所示:
表1
|
组间互通[互通] |
组间互通[隔离] |
组间不能互通 |
组间互通[互通] |
互通 |
互通 |
互通 |
组间互通[隔离] |
互通 |
互通 |
隔离 |
组间不能互通 |
互通 |
隔离 |
隔离 |
从表1可以看出,对于组间属性为组间互通[互通]的组,它仍然可以与组间属性为组间不能互通的组之间进行通信。
参见图2,本发明实施例提供了一种端口隔离的方法,具体包括:
101:接入设备根据用户的需要将端口分组。
其中,接入设备根据用户的需要将端口分组,并定义组的属性;
例如,参见图1,在NPE1上,vlan1-1、vlan1-2、vlan2、svc1和svc2接入同一个VSI(VirtualSwitch Instance,虚拟交换实例),要求将svc1、vlan1-1和vlan2划分为一组,且svc1、vlan1-1和vlan2之间隔离;将svc2与vlan1-2划分为一组,且svc2与vlan1-2之间互通,同时两组之间隔离并且两组能与hub vc1和hub vc2互通,则在NPE1上将vlan1-1、vlan1-2、vlan2、svc1、svc2、hub vc1和hub vc2对应的端口分成三组,假设vlan1-1、vlan1-2、vlan2、svc1、svc2、hub vc1和hub vc2对应的的端口分别为端口1、端口2、端口3、端口4、端口5、端口6和端口7,则分组后的端口信息为:
将端口1、端口3和端口4分成一组,设为组0,组0的组内属性为组内不能互通,组间属性为组间不能互通;
将端口2和端口5分成一组,设为组1,组1的组内属性为组内互通,组间属性为组间不能互通;
将端口6和端口7分成一组,设为组2,组2的组内属性为组内不能互通,组间属性为组间互通[互通]。
102:接入设备根据分组的结果为每组分配一个组标识(id),并建立端口和组id的对应关系。
其中,接入设备可以以表格的形式保存端口和组id的对应关系,组id可以通过6bits的二进制编码表示。假设为101中组0分配的组id为000 001,为组1分配的组id为000 010,为组2分配的组id为000 100,参见表2,为端口和组id的对应关系表。
表2
端口 |
组id |
1 |
000 001 |
2 |
000 010 |
3 |
000 001 |
4 |
000 001 |
5 |
000 010 |
6 |
000 100 |
7 |
000 100 |
103:接入设备收到报文后,根据报文的目的地址找到该报文的出端口。
接入设备在转发报文的同时学习源MAC(Media Access Control,媒体接入控制)地址并建立MAC地址转发表项,生成MAC地址与出端口的映射关系,该过程属于现有技术,本实施例中不再赘述,通过MAC地址学习,接入设备在收到数据报文后,会根据报文的目的MAC地址找到该报文的出端口。
104:接入设备找到出端口后,再分别找到报文的入端口所属的第一端口组和出端口所属的第二端口组。
接入设备根据报文的入端口和出端口以及端口和组id的对应关系,分别找到入端口对应的第一组id和出端口对应的第二组id,由于每组的组id都是确定的,所以根据第一组id就可以确定对应的第一端口组,根据第二组标识就可以确定对应的第二端口组。
例如,参见图1,如果NPE1从端口1收到报文,根据报文的目的地址找到的的出端口为端口6,从表2中可以找到端口1对应的组id为000 001,属于组0;端口6对应的组id为000 100,属于组2。
105:接入设备根据第一端口组和第二端口组的属性判断入端口和出端口之间是否互通,如果入端口和出端口之间互通,则执行106;否则,执行107。
其中,接入设备根据第一端口组和第二端口组的属性判断入端口和出端口之间是否互通具体为:
当第一端口组和第二端口组是同一组时,如果该组的组内属性为互通,则入端口和出端口之间互通;如果该组的组内属性为不互通,则入端口和出端口之间不互通;
当第一端口组和第二端口组不是同一组时,如果第一端口组和第二端口组的组间属性都为互通,则入端口和出端口之间互通;如果第一端口组和第二端口组的组间属性都为不互通,则入端口和出端口之间不互通;如果第一端口组和第二端口组的组间属性一个为互通,一个为不互通,则根据优先级高的组间属性确定入端口和出端口之间是否互通。
进一步地,根据优先级高的组间属性确定入端口和出端口之间是否互通具体为:
当优先级高的组间属性为互通时,入端口和出端口之间互通;
当优先级高的组间属性为不互通时,入端口和出端口之间不互通。
例如,参见表3,为101中分组完成后,根据组的属性得到的各组在转发报文时的互通关系。
表3
入端口组\出端口组 |
组0 |
组1 |
组2 |
组0 |
隔离 |
隔离 |
互通 |
组1 |
隔离 |
隔离 |
互通 |
组2 |
互通 |
互通 |
隔离 |
在104中,端口1属于组0,端口6属于组2,组0的组间属性为组间不能互通,组2的组间属性为组间互通[互通],组2的组间属性的优先级高于组0的组间属性的优先级,所以组0和组2之间是互通的,即端口1和端口6之间是互通的,执行106。
106:接入设备通过出端口转发收到的报文。
107:接入设备不通过出端口转发收到的报文。
本实施例以对物理端口分组为例进行说明,进一步地,端口还可以为逻辑端口,逻辑端口可以看作是物理端口和VLAN的组合,对于逻辑端口的转发,可以按照port+vlan分配组id,即根据端口和端口的VLAN标识分配组id。因为一个物理端口可以属于不同的VLAN,这样可以使分组更加细化,例如,端口1属于vlan1和vlan2,根据需要可以将端口1+vlan1分为组1,将端口1+vlan2分为组2;对于同一VLAN内的物理端口,可以根据需要定义各端口组的属性,从而可以实现同一个VLAN内的端口隔离。
本实施例提供的端口隔离的方法不仅可以适用于二层网络进行流量隔离,还可以适用于其它接入转发的情况,例如,三层IP转发。
本发明实施例根据用户的需求将端口分组,在接收到报文后,找到报文的入端口对应的第一端口组和出端口对应的第二端口组,通过判断出第一端口组和第二端口组的属性确定入端口和出端口之间是否互通,如果不互通则不从出端口转发报文,实现简单,节省资源,不仅可以适用于二层网络,还可以用于三层IP转发。
实施例2
参见图3,本发明实施例提供了一种端口隔离的设备,该设备包括:
查找模块,用于收到报文后,根据报文的目的地址找到该报文的出端口,并分别找到报文的入端口所属的第一端口组和出端口所属的第二端口组;
判断模块,用于根据查找模块找到的第一端口组和第二端口组的属性判断入端口和出端口之间是否互通,如果入端口和出端口之间不互通,则不通过出端口转发报文。
进一步地,所述查找模块可以具体包括:
查找单元,用于收到报文后,根据报文的目的地址找到该报文的出端口,并根据报文的入端口和出端口以及端口和组标识的对应关系,分别找到报文的入端口对应的第一组标识和出端口对应的第二组标识;
确定单元,用于根据查找单元找到的第一组标识确定对应的第一端口组,根据查找单元找到的第二组标识确定对应的第二端口组。
上述判断模块可以具体包括:
第一判断单元,用于当第一端口组和第二端口组是同一组时,判断组的组内属性是否为互通,如果判断结果是组内属性为互通,则入端口和出端口之间互通;如果判断结果是组内属性为不互通,则入端口和出端口之间不互通,当入端口和出端口之间不互通时,不通过出端口转发报文;
第二判断单元,用于当第一端口组和第二端口组不是同一组时,判断第一端口组和第二端口组的组间属性,如果第一端口组和第二端口组的组间属性都为互通,则入端口和出端口之间互通;如果第一端口组和第二端口组的组间属性都为不互通,则入端口和出端口之间不互通;如果第一端口组和第二端口组的组间属性一个为互通,一个为不互通,则根据优先级高的组间属性确定入端口和出端口之间是否互通,当入端口和出端口之间不互通时,不通过出端口转发报文。
上述第二判断单元可以具体包括:
第一判断子弹元,用于当第一端口组和第二端口组不是同一组时,判断第一端口组和第二端口组的组间属性是否都为互通,如果是,则入端口和出端口之间互通;
第二判断子单元,用于当第一端口组和第二端口组不是同一组时,判断第一端口组和第二端口组的组间属性是否都为不互通,如果是,则入端口和出端口之间不互通,不通过出端口转发报文;
第三判断子单元,用于当第一端口组和第二端口组不是同一组时,判断第一端口组和第二端口组的组间属性是否一个为互通,一个为不互通,如果是,当优先级高的组间属性为互通时,入端口和出端口之间互通;当优先级高的组间属性为不互通时,入端口和出端口之间不互通,当入端口和出端口之间不互通时,不通过出端口转发报文。
本实施例通过查找模块查找出报文的入端口所属的第一端口组和出端口所属的第二端口组后,判断模块根据第一端口组和第二端口组的属性判断出入端口和出端口之间不互通时,不从出端口转发报文,在实现端口隔离时节省了资源。
本发明实施例可以通过软件实现,相应的软件可以存储到可读取的存储介质中,例如,计算机的硬盘、软盘或光盘中。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。