写在前面
Vlan里面有两个常见的概念:透传与终结。所谓vlan透传就是某个vlan不仅在一台交换机上有效,它还要通过某种方法延伸到别的以太网交换机上,在别的设备上照样有效,vlan透传可以通过802.1Q技术实现。
终结的意思相对,某个vlan的有效域不能再延伸到别的设备,或者不能通过某条链路延伸到别的设备。vlan的终结可以使用PVLAN技术。
本文主要浅析下PVLAN的概念以及实验验证下。
基本概念
把vlan终结掉,也就是确定vlan的边界在哪里终止,pvlan技术可以很好的实现这个功能,同时达到节省vlan的目的。cisco的PVLAN意思是private vlan,华为的意思是primary vlan. 不同叫法,基本相同的实现。
PVLAN中的vlan分成两类:primary vlan和secondary vlan(子vlan)。实现了接入用户二层报文的隔离,同时上层交换机下发的报文可以被每一个用户接收到,简化了配置,节省了vlan资源。
本文用以下拓扑来实验说明:
pvlan中总是会有一个primary vlan,primary vlan中有promiscuous port。所有的端口都能和promiscuous port通信。在primary vlan中可以存在一个或多个secondary vlan,secondary vlan有两种类型:
- community vlan: community vlan中的成员端口可以相互通信,并且可以和promiscuous port通信
- isolated vlan:成员端口之间不能通信,但是可以和promiscuous port通信。
secondary vlan始终可以和promiscuous port通信,但是不同的secondary vlan之间是相互隔离的。
配置
实验拓扑如上所示。做一些简单说明:
- primary vlan的数值是100
- secondary community vlan的数值是101
- secondary isolated vlan的数值是102
- vpc3和vpc4在community vlan中可以相互通信,并且可以和连接到promiscuous port的vpc2通信
- vpc5和vpc6在isolated vlan中只能和vpc2通信
- vpc2可以和所有其它vpc通信
接下来就是配置了。
首先创建primary vlan和secondary vlan。
1 2 3 4 5 6 7 8 9 10 11 12 13
| S(config)#vtp mode off // 首先关闭vtp,只有vtpv3支持pvlan,干脆关掉免得复杂 Setting device to VTP Off mode for VLANS.
S(config)#vlan 100 S(config-vlan)#private-vlan primary // 创建primary vlan S(config-vlan)#private-vlan association add 101 // 与secondary vlan关联 S(config-vlan)#private-vlan association add 102
S(config)#vlan 101 S(config-vlan)#private-vlan community // 创建secondary community vlan
S(config)#vlan 102 S(config-vlan)#private-vlan isolated // 创建secondary isolated vlan
|
接下来配置接口所属的vlan.
1 2 3 4 5 6 7 8 9 10 11 12
| S(config)#interface range ethernet 0/1-2 // community vlan所属的两个端口, 属于CV 101 S(config-if-range)#switchport mode private-vlan host // 指明这些端口是主机端口,类似于access port S(config-if-range)#switchport private-vlan host-association 100 101 // 指明端口所属的primary vlan是100,secondary vlan是101
S(config)#interface ethernet 0/0 S(config-if)#switchport mode private-vlan promiscuous // 指明该端口是promiscuous port S(config-if)#switchport private-vlan mapping 100 101 // 将primary vlan与secondary vlan映射
S(config)#interface ethernet 0/3 S(config)#interface ethernet 1/0 S(config-if)#switchport mode private-vlan host // 配置端口属于secondary isolated vlan S(config-if)#switchport private-vlan host-association 100 102
|
查看下配置的状态:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| // 对于promiscuous port S#show interfaces ethernet 0/0 switchport | include mapping Administrative private-vlan mapping: 100 (VLAN0100) 101 (VLAN0101) 102 (VLAN0102)
// 对于host端口 S#show interfaces ethernet 0/1 switchport | include host-association Administrative private-vlan host-association: 100 (VLAN0100) 101 (VLAN0101)
// 对于isolated端口 S#show interfaces ethernet 0/3 switchport | include host-association Administrative private-vlan host-association: 100 (VLAN0100) 102 (VLAN0102)
// 查看primary vlan和secondary vlan,以及secondary的类型 S#show vlan private-vlan
Primary Secondary Type Ports ------- --------- ----------------- ------------------------------------------ 100 101 community Et0/0, Et0/1, Et0/2 100 102 isolated Et0/3, Et1/0
|
接下来ping测试一下:
1 2 3 4 5 6 7 8 9 10 11 12
| // 对于community vlan的成员 vpc3> ping 192.168.1.2 -c 1 // 可以ping通promiscuous port
84 bytes from 192.168.1.2 icmp_seq=1 ttl=64 time=1.775 ms
vpc3> ping 192.168.1.4 -c 1 // 可以ping通同secondary community的成员
84 bytes from 192.168.1.4 icmp_seq=1 ttl=64 time=1.159 ms
vpc3> ping 192.168.1.5 -c 1 // 不能ping通其它secondary vlan的成员
host (192.168.1.5) not reachable
|
vpc2同样可以ping通vpc3和vpc4,这里就不贴出来了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| // 对于isolated vlan的成员 vpc5> ping 192.168.1.6 -c 1 // 不能ping通同vlan的其它成员
host (192.168.1.6) not reachable
vpc5> ping 192.168.1.2 -c 1 // 可以ping通promiscuous port
84 bytes from 192.168.1.2 icmp_seq=1 ttl=64 time=0.815 ms
// promiscuous port则可以ping通isolated vlan内的所有成员 vpc2> ping 192.168.1.5 -c 1
84 bytes from 192.168.1.5 icmp_seq=1 ttl=64 time=1.050 ms
vpc2> ping 192.168.1.6 -c 1
84 bytes from 192.168.1.6 icmp_seq=1 ttl=64 time=0.475 ms
|
总结一下:
pvlan的实现:
- 一定存在一个primary vlan, 里面有一个端口promiscuous port则可以ping通isolated
- 可以存在多个secondary vlan,secondary vlan之间不能通信,但都可与promiscuous port通信
- secondary vlan分为community vlan和isolated vlan与secondary
- community vlan成员之间可以相互通信
- isolated vlan成员之间不能相互通信
- 所有secondary vlan成员都能与promiscuous port通信
- pvlan作用域可以延伸到其它交换机,但是要保证交换机之间的链路是trunk,并允许primary vlan和secondary vlan通过
- 上行设备只关心primary vlan而不会感知secondary vlan,从而节省vlan资源
参考资料
PVLAN技术白皮书