Due to the non-decreasing interest to the post about Private VLANs, I decided to make another one, more detailed – including a diagram and verification techniques.
Introduction
To begin with, recall that VLAN is essentially a broadcast domain. Private VLANs (PVANs) allow splitting the domain into multiple isolated broadcast “subdomains”, introducing sub-VLANs inside a VLAN. As we know, Ethernet VLANs can not communicate directly with each other – they require a L3 device to forward packets between separate broadcast domains. The same restriction applies to PVLANS – since the subdomains are isolated at Level 2, they need to communicate using an upper level (L3/packet forwarding) device – such as router.
In reality, different VLANs normally map to different IP subnets. When we split a VLAN using PVLANs, hosts in different PVLANs still belong to the same IP subnet, yet now they need to use a router (L3 device) to talk to each other (for example, by using Local Proxy ARP). In turn, the router may either permit or forbid communications between sub-VLANs using access-lists. Commonly, these configurations arise in “shared” environments, say ISP co-location, where it’s beneficial to put multiple customers into the same IP subnet, yet provide a good level of isolation between them.
Private VLANs Terminology
The following is the reference diagram that we are going to use to illustrate Private VLAN concepts and functionality.
For our sample configuration, we take VLAN 1000 and divide it into three PVLANs – sub-VLAN 1012 (R1 and R2), sub-VLAN 1034 (R3 and R4) and sub-VLAN 1055 (router R5 only). Router R6 will be used as layer 3 device, to resolve the layer 3 communication issue. We name VLAN 1000 as “Primary” and classify the ports, assigned to this VLAN, based on their types:
- Promiscuous (“P”) port: Usually connects to a router. This port type is allowed to send and receive L2 frames from any other port on the VLAN.
- Isolated (“I”) port: This type of port is only allowed to communicate with “P”-ports – i.e., they are “stub” port. You commonly see these ports connecting to hosts.
- Community (“C”) port: Community ports are allowed to talk to their buddies, sharing the same community (group) and to “P”-ports.
In order to implement sub-VLAN behavior, we need to define how packets are forwarded between different types of ports. We group the VLANs in “Primary” and “Secondary”.
- Primary VLAN (VLAN 1000 in our example). This VLAN is used to forward frames downstream from “P”-ports to all other port types (“I” and “C” ports) in the system. Essentially, Primary VLAN embraces all ports in the domain, but only transports frames from the router to hosts (from “P” to “I” and “C”).
- Secondary Isolated VLAN: forwards frames from “I” ports to “P” ports. Since Isolated ports do not exchange frames with each other, we can use just ONE isolated VLAN to connect all I-Port to the P-port.
- Secondary Community VLANs: Transport frames between community ports (C-ports) within to the same group (community) and forward frames upstream to the P-ports of the primary VLAN.
How Private VLANs Work
Here are the key aspects of Private VLAN functioning:
- The Primary VLAN delivers frames downstream from the router (promisc port) to all mapped hosts.
- The Isolated VLAN transports frames from the stub hosts upstream to the router
- The Community VLANs allow bi-directional frame exchange withing a single group, in addition to forwarding frames upstream towards “P”-ports.
- Ethernet MAC address learning and forwarding procedure remain the same, as well as broadcast/multicast flooding procedure within boundaries of primary/secondary VLANs.
Private VLANs could be trunked. The secondary VLAN numbers are used to tag frames, just as with regular VLANs, and the primary VLAN traffic is trunked as well. However, you need to configure Private VLAN specific settings (bindings, mappings) on every participating swtich, as it’s not possible to use VTPv2 to dissiminate that information . This due to the fact that VTPv2 has no TLVs to carry private VLANs information. VTPv3 was designed to overcome this limitation among others.
Configuring Private VLANs
We have primary VLAN 1000, Isolated VLAN 1005 (R5) Community VLAN 1012 (R1, R2) and Community VLAN 1034 (R3, R4).
Step 1:
First, disable VTP, i.e. enable VTP transparent mode. After disabling VTP, create Primary and Secondary VLANs and bind them into PVLAN domain:
SW1: vtp mode transparent ! ! Creating primary VLAN, which is shared among secondary’s ! vlan 1000 private-vlan primary ! ! Community VLAN for R1 and R2: allows a “subVLAN” within a Primary VLAN ! vlan 1012 private-vlan community ! ! Community VLAN for R3 and R4 ! vlan 1034 private-vlan community ! ! Isolated VLAN: Connects all stub hosts to router. ! Remember - only one isolated vlan per primary VLAN. ! In our case, isolates R5 only. ! vlan 1055 private-vlan isolated ! ! Associating the primary with secondary’s ! vlan 1000 private-vlan association 1012,1034,1055
This step is needed is to group PVLANs into a shared domain and establish a formal association (for syntax checking and VLAN type verifications). Repeat the same operations on SW2, since VTP has been disabled.
Step 2:
Configure host ports and bind them to the respective isolated PVLANs. Note that a host port belongs to different VLANs at the same time: downstream primary and upstream secondary. Also, enable trunking between switches, to allow private VLANs traffic to pass between switches.
SW1: ! ! Community port (links R1 to R2 and “P”-ports) ! interface FastEthernet0/1 description == R1 switchport private-vlan host-association 1000 1012 switchport mode private-vlan host spanning-tree portfast ! ! Community port (links R3 to R4 and “P”-ports) ! interface FastEthernet0/3 description == R3 switchport private-vlan host-association 1000 1034 switchport mode private-vlan host spanning-tree portfast ! ! Isolated port (uses isolated VLAN to talk to “P”-ports) ! interface FastEthernet0/5 description == R5 switchport private-vlan host-association 1000 1055 switchport mode private-vlan host spanning-tree portfast ! ! Trunk port ! interface FastEthernet 0/13 switchport trunk encapsulation dot1q switchport mode trunk SW2: interface FastEthernet0/2 description == R2 switchport private-vlan host-association 1000 1012 switchport mode private-vlan host spanning-tree portfast ! interface FastEthernet0/4 description == R4 switchport private-vlan host-association 1000 1034 switchport mode private-vlan host spanning-tree portfast ! ! Trunk port ! interface FastEthernet 0/13 switchport trunk encapsulation dot1q switchport mode trunk Next, Verify the configuration on SW1: Rack1SW1#show vlan id 1012 VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1012 VLAN1012 active Fa0/13 VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ 1012 enet 101012 1500 - - - - - 0 0 Remote SPAN VLAN ---------------- Disabled Primary Secondary Type Ports ------- --------- ----------------- ------------------------------------------ 1000 1012 community Fa0/1 Rack1SW1#show vlan id 1034 VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1034 VLAN1034 active Fa0/13 VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ 1034 enet 101034 1500 - - - - - 0 0 Remote SPAN VLAN ---------------- Disabled Primary Secondary Type Ports ------- --------- ----------------- ------------------------------------------ 1000 1034 community Fa0/3 Rack1SW1#show vlan id 1055 VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1055 VLAN1055 active Fa0/13 VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ 1055 enet 101055 1500 - - - - - 0 0 Remote SPAN VLAN ---------------- Disabled Primary Secondary Type Ports ------- --------- ----------------- ------------------------------------------ 1000 1055 isolated Fa0/5 Rack1SW1#show interfaces fastEthernet 0/13 trunk Port Mode Encapsulation Status Native vlan Fa0/13 desirable 802.1q trunking 1 Port Vlans allowed on trunk Fa0/13 1-4094 Port Vlans allowed and active in management domain Fa0/13 1,1000,1012,1034,1055 Port Vlans in spanning tree forwarding state and not pruned Fa0/13 1,1000,1012,1034,1055 Verify on SW2: Rack1SW2#show vlan id 1000 VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1000 VLAN1000 active Fa0/13 VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ 1000 enet 101000 1500 - - - - - 0 0 Remote SPAN VLAN ---------------- Disabled Primary Secondary Type Ports ------- --------- ----------------- ------------------------------------------ 1000 1012 community Fa0/2, Fa0/6 1000 1034 community Fa0/4, Fa0/6 1000 1055 isolated Fa0/6 Rack1SW2#show vlan id 1012 VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1012 VLAN1012 active Fa0/13 VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ 1012 enet 101012 1500 - - - - - 0 0 Remote SPAN VLAN ---------------- Disabled Primary Secondary Type Ports ------- --------- ----------------- ------------------------------------------ 1000 1012 community Fa0/2, Fa0/6 Rack1SW2#show vlan id 1034 VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1034 VLAN1034 active Fa0/13 VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ 1034 enet 101034 1500 - - - - - 0 0 Remote SPAN VLAN ---------------- Disabled Primary Secondary Type Ports ------- --------- ----------------- ------------------------------------------ 1000 1034 community Fa0/4, Fa0/6 Rack1SW2#show vlan id 1055 VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1055 VLAN1055 active Fa0/13 VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2 ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------ 1055 enet 101055 1500 - - - - - 0 0 Remote SPAN VLAN ---------------- Disabled Primary Secondary Type Ports ------- --------- ----------------- ------------------------------------------ 1000 1055 isolated Fa0/6 Rack1SW2#show interface fastEthernet 0/13 trunk Port Mode Encapsulation Status Native vlan Fa0/13 desirable 802.1q trunking 1 Port Vlans allowed on trunk Fa0/13 1-4094 Port Vlans allowed and active in management domain Fa0/13 1,1000,1012,1034,1055 Port Vlans in spanning tree forwarding state and not pruned Fa0/13 1,1000,1012,1034,1055
Step 3:
Create a promiscuous port and configure downstream mappings. Here we add secondary VLANs for which traffic is received by this particular “P”-port. Primary VLAN is used to send traffic downstream to all “C” and “I” ports per their associations.
SW2: ! ! Promiscuous port, mapped to all secondary VLANs ! interface FastEthernet0/6 description == R6 switchport private-vlan mapping 1000 1012,1034,1055 switchport mode private-vlan promiscuous spanning-tree portfast Verify the promiscuous port configuration: Rack1SW2#show int fa 0/6 switch | beg private Administrative Mode: private-vlan promiscuous Operational Mode: private-vlan promiscuous Administrative Trunking Encapsulation: negotiate Operational Trunking Encapsulation: native Negotiation of Trunking: Off Access Mode VLAN: 1 (default) Trunking Native Mode VLAN: 1 (default) Administrative Native VLAN tagging: enabled Voice VLAN: none Administrative private-vlan host-association: none Administrative private-vlan mapping: 1000 (VLAN1000) 1012 (VLAN1012) 1034 (VLAN1034) 1055 (VLAN1055) Administrative private-vlan trunk native VLAN: none Administrative private-vlan trunk Native VLAN tagging: enabled Administrative private-vlan trunk encapsulation: dot1q Administrative private-vlan trunk normal VLANs: none Administrative private-vlan trunk private VLANs: none Operational private-vlan: 1000 (VLAN1000) 1012 (VLAN1012) 1034 (VLAN1034) 1055 (VLAN1055)
If you need to configure an SVI on a switch to communicate with private VLAN members, you should add an interface corresponding to Primary VLAN only. Obviously that’s because all secondary VLANs are “subordinates” of primary. After an SVI has been created, you have to map the required secondary VLANs to the SVI (just like with a promiscuous port) in order to make communications possible. You may exclude some mappings from SVI interface, and limit it to communicating only with certain secondary VLANs.
SW1: ! ! SW1 SVI is mapped to all secondary VLANs ! interface Vlan 1000 ip address 10.0.0.7 255.255.255.0 private-vlan mapping 1012,1034,1055 SW2: ! ! SW2 SVI is mapped to 1012/1034 only, so it’s cant communicate with R5 ! interface Vlan1000 ip address 10.0.0.8 255.255.255.0 private-vlan mapping 1012,1034
Now to verify the configuration, configure R1-R6 interfaces in subnet “10.0.0.0/24” and ping broadcast addresses.
Rack1R1#ping 10.0.0.255 repeat 1 Type escape sequence to abort. Sending 1, 100-byte ICMP Echos to 10.0.0.255, timeout is 2 seconds: Reply to request 0 from 10.0.0.7, 4 ms Reply to request 0 from 10.0.0.2, 4 ms Reply to request 0 from 10.0.0.6, 4 ms Reply to request 0 from 10.0.0.8, 4 ms Rack1R3#ping 10.0.0.255 repeat 1 Type escape sequence to abort. Sending 1, 100-byte ICMP Echos to 10.0.0.255, timeout is 2 seconds: Reply to request 0 from 10.0.0.7, 4 ms Reply to request 0 from 10.0.0.4, 4 ms Reply to request 0 from 10.0.0.6, 4 ms Reply to request 0 from 10.0.0.8, 4 ms Rack1R5#ping 10.0.0.255 repeat 1 Type escape sequence to abort. Sending 1, 100-byte ICMP Echos to 10.0.0.255, timeout is 2 seconds: Reply to request 0 from 10.0.0.7, 1 ms Reply to request 0 from 10.0.0.6, 1 ms Rack1R6#ping 10.0.0.255 repeat 1 Type escape sequence to abort. Sending 1, 100-byte ICMP Echos to 10.0.0.255, timeout is 2 seconds: Reply to request 0 from 10.0.0.1, 4 ms Reply to request 0 from 10.0.0.7, 4 ms Reply to request 0 from 10.0.0.2, 4 ms Reply to request 0 from 10.0.0.5, 4 ms Reply to request 0 from 10.0.0.3, 4 ms Reply to request 0 from 10.0.0.4, 4 ms Reply to request 0 from 10.0.0.8, 4 ms
Lastly, there is another feature, called protected port or “Private VLAN edge”. The feature is pretty basic and is available even on low-end Cisco switches. It allows isolating ports in the same VLAN. Specifically, all ports in a VLAN, marked as protected are prohibited from sending frames to each other (but still allowed to send frames to other (non-protected) ports within the same VLAN). Usually, ports configured as protected are also configured not to receive unknown unicast (frame with destination MAC address not in switch’s MAC table) and multicast frames flooding for added security.
Example:
interface range FastEthernet 0/1 - 2 switchport mode access switchport protected switchport block unicast switchport block multicast
About Petr Lapukhov, CCIE #16379:
Petr Lapukhov's career in IT begain in 1988 with a focus on computer programming, and progressed into networking with his first exposure to Novell NetWare in 1991. Initially involved with Kazan State University's campus network support and UNIX system administration, he went through the path of becoming a networking consultant, taking part in many network deployment projects. Petr currently has over 12 years of experience working in the Cisco networking field, and is the only person in the world to have obtained four CCIEs in under two years, passing each on his first attempt. Petr is an exceptional case in that he has been working with all of the technologies covered in his four CCIE tracks (R&S, Security, SP, and Voice) on a daily basis for many years. When not actively teaching classes, developing self-paced products, studying for the CCDE Practical & the CCIE Storage Lab Exam, and completing his PhD in Applied Mathematics.
You can leave a response, or trackback from your own site.
49 Responses to “Private VLANs Revisited”
Leave a Reply


Very useful info.
Thanks.
Excellent work.
The amazing part is that it is FREE for all people without asking any thing…..
I think soon this blog will have everything.
Where is my printer? I need to print this blog Damm…..
Amit Chopra
Great writeup Petr. I was thinking about doing a writeup while studying Private VLANs also because there is not much information on them. But I guess now I can chill and just read your post over and over again
[...] Private VLANs [...]
[...] Read more Leave a Reply [...]
[...] Internetwork Expert Blog- Petr revisits a very popular post about private VLANs: [...]
When enabling SVI on a switch to communicate with private VLAN members, should the “ip routing” command necessary or no?
[...] Private VLANs Revisited [...]
[...] Private VLANs revisited [...]
My Lab Exam coming soon.. I need that materials. Very good and clear. Thanks much.
People should not be alarmed when they see multicast and broadcast traffic on their isolated or community PVLAN ports from other PVLANs based on the same primary.
VTPv3 does carry the PVLAN associations (and VLAN database information for VLAN IDs > 1024 and MST vlan/instance mappings), but of course that’s kind of pointless since no one should be deploying new CatOS switches these days.
To Alexander
Thanks for the excellent point about VTPv3! Even though VTPv3 adds truly “opaque” information distirbution, I didnt mention the new version in the post since it’s not widely deployed/used and probably would not be
Even if ported to IOS, VTP concept in general is incompatible with modern enterprise network design trend, which avoids large L2 domains.
However, Im looking forward to see the emerging Ethernet OAM and further development of EVCs and Metro Ethernet technologis in general. This is where “truly opaque” information distribution protocol may become useful.
[...] is looking for some real information on private vlans, please check out the Cisco Documentation or Internetworkexpert’s blog on private vlans No Comments so far Leave a comment RSS feed for comments on this post. TrackBack URI [...]
[...] Anywho, if anyone is looking for some real information on private vlans, please check out the Cisco Documentation or Internetworkexpert’s blog on private vlans [...]
[...] Thus i revisited both concepts once more. I also found off of IE.com a nice tutorial by petr about private vlans. Well put and nicely done, and i did print it out for future reference, along with labbing it [...]
[...] Vlans theory last night, not only did i read over the doc cd, i also took the liberty of reading petrs Private Vlans blog post. Great stuff, he breaks it down in a very simple manner identifying the differences between, [...]
Hello Petr,
I would like you to help me resolve a big deal with Private VLANs…
I have a Cat3560 with an Access Point on Fast0/1. I would like to serve different VLANs on the Access Point but I would like to suppress traffic between clients on the same VLANs, even if one is connected by a wire or without. Of course I thought immediately to use Private VLANs, but the “switchport mode private-vlan trunk” is not available on this platform…
How could I do that ??? With which other feature eventually ?
Thanks for your help.
–
Pierre-Louis Gingembre
[...] October 3, 2008 at 11:54 am | In Switching | The Scenario is from the IE blog http://blog.internetworkexpert.com/2008/07/14/private-vlans-revisited/ Private VLAN Diagram (from IE [...]
That explanation is hands down the best one I have found. Covers all relevant topic while remaining easily understandable. Many thanks!
Good stuff! To help validate my understanding, will you also include the ’show run interface fa0/6′ on SW2. I know this may seem trivial, but it will complete the config. Thx.
would like to see a diagram with packet flow documenting VLAN getting translated when the packet coming from the promiscuous port to isolated or community ports and similarly packets coming from community ports to promiscous port.
Thank you veryyyyyyyyyyy much realy very useful and great information
Amr frmawy
CCSP
Egypte
thank you very much. need to read it couple of more times though, keep up the good work
lance
CCNA
One more thing about protected ports vs. private-vlan ports, the protected ports must be on the _SAME_ switch or a switch stack, as well as share the same vlan.
Therefore, while private vlans function across switches, protected ports must be on the same switch or switch stack for them to be isolated.
I think a protected port does not isolate ports on the same VLAN on a different switch. It is intended to isolate ports on the same VLAN on the same switch. If there are two protected ports on two different switches connected to each other, then they will be able to communicate. But a frame received on a protected port will not be forwarded through another protected on the same switch.
What about if the connection from SW2 to R6 is a Trunk for several Vlans, how do you mange to set this up using Private Vlans and Sub-interfaces?
How is the traffic coming from the Secondary Vlans to R6 handled?
[...] http://blog.internetworkexpert.com/2008/07/14/private-vlans-revisited/ [...]
hi, is it possible to have ACLs that restrict intercommunity communication within the same primary vlan. Thanks in advance.
You may use VLAN ACLs with Private VLANs, OR you may use L3 ACLs on the SVI that uses “local proxy-arp” to route the traffic between the members of private VLNAs.
Is there a way to use Private VLAN to prevent duplicate IP addresses in a primary VLAN? In other words, can user in one community mistakenly configure an ip assigned for other community and take down services because of duplicate ip address? What’s best way to prevent tis type of outages?
Thank you for helping.
@Diane
Yes it’s still possible, and this can result in the router’s ARP cache being corrupted. You can use something like IP Source Guard to prevent this.
well done Petr. very good explanation
[...] some reading on PVLAN’s and finally configured them and got them working. Here’s the material i was reading. This is [...]
May be worth mentioning, that if you are using an SVI and need IP (L3) communications between two different Communities (under same Primary VLAN). You not only need proxy-arp enabled on the SVI, but also, be sure to enable ip local-proxy-arp under the SVI. I couldn’t even ping between communities at first. Thought I had a deeper issue with it, then realized ip local-proxy-arp needed to be enabled. Until then, the router will receive ARP’s but ignore them. Once ip local-proxy-arp is enabled, the router will answer up for ARP requests to other devices in the same Community VLAN.
Awesome stuff Jason. Thanks so much for contributing to our blog!
[...] which i went through earlier, but i’d forgotten some of the details so i revised it again. HERE’s the [...]
Excellent Explanation of Private Vlan!!, I was alwayed confused in PVLAN. After reading this blog I,m very much clear about Private VLAN.
Thanks Petr Lapukhov for brief information about PVLAN.
I need to implement private vlan solution for the following scenario:
1. Web server vlan.
2. e-mail vlan.
3. user vlan.
4. guest vlan.
the communication will be as follow:
1. user and guest can access web server vlan.
2. user can access e-mail vlan.
3. user and guest never access each other.
what solution could we done for this schema above?
Hi, we have private vlans configured on access switches, PRIMARY + ISOLATED only.
Primary has to be a routed vlan. The SVI will be on the aggregation. I need to know do we need to trunk the isolated vlan between the access switch and aggregation switch? AGGregation will have SVI for primary and mapped to isolated.
or only trunk primary between access and agg will work?
You only trunk Primary VLANs and NEVER secondary VLANs. Therefore, ans is yes! make sure your trunk between ACCESS and AGGregation carries the primary VLAN. Petr -> very effective writing – thank you!
This explanation is very useful.
Does the PVLAN works only in VTP-Trans mode ?
Hi Shiva!
If you use VTP Version 3 – I believe you can use Servers. The Trans mode is a requirement for VTP versions 1 and 2 for sure.
thanks for this usefull example Petr,
In this sample,Does the community vlan 1012 & community vlan 1034 can ping each other(through promiscuous port or not) on the same IP subnet??
Good stuff,easily understandable.
Good document to refer.
i don’t understand how to configure VLAN
very effective way of explanation
very usefull article.The way to explain the things was fantastic and any one can find and download its pdf versions….