Thursday, February 14, 2008

Understanding Private VLANs

 

Private VLAN concepts are quite simple, but Cisco’s implemenation and configuration steps are a bit confusing - with all the “mappings” and “associations” stuff. Here comes a short overview of how private VLANs work.

Tobegin with, let’s look at the concept of VLAN as a broadcast domain. What Private VLANs (PVANs) do, is split the domain into multiple isolated broadcast subdomains. It’s a simple nesting concept - VLANs inside a VLAN. As we know, Ethernet VLANs are not allowed to communicate directly, they need L3 device to forward packets between broadcast domains. The same concept applies to PVLANS - since the subdomains are isolated at level 2, they need to communicate using an upper level (L3 and packet forwarding) entity - such as router. However, there is difference here. Regular VLANs usually correspond to a single IP subnet. When we split VLAN using PVLANs, hosts in different PVLANs still belong to the same IP subnet, but they need to use router (another L3 device) to talk to each other (for example, by means of local Proxy ARP). In turn, router may either permit or forbid communications between sub-VLANs using access-lists.
Whywould anyone need Private VLANs? Commonly, this kind of 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.

Forour sample configuration, we will take VLAN 100 and divide it into two PVLANs - sub-VLANs 101 and 102. Take the regular VLAN and call it primary (VLAN 100 in our example), then divide ports, assigned to this VLAN, by their types:

Promiscuous(P): Usually connects to a router - a type of a port which is allowed to send and receive frames from any other port on the VLAN
Isolated(I): This type of port is only allowed to communicate with P-ports - they are “stub”. This type of ports usually connects to hosts
Community(C): Community ports are allowed to talk to their buddies, sharing the same group (of course they can talk to P-ports)

Inorder to implement sub-VLAN behavior, we need to define how packets are forwarded between different port types. First comes the Primary VLAN - simply the original VLAN (VLAN 100 in our example). This type of VLAN is used to forward frames downstream from P-ports to all other port types (I and C ports). In essense, Primary VLAN entails all port in domain, but is only used to transport frames from router to hosts (P to I and C). Next comes Secondary VLANs, which correspond to Isolated and Community port groups. They are used to transport frames in the opposite direction - from I and C ports to P-port.

IsolatedVLAN: 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.
CommunityVLANs: Transport frames between community ports (C-ports) within to the same group (community) and forward frames uptstream to the P-ports of the primary VLAN.

Thisis how it works:

Primary VLANs is used to deliver frames downstream from router to all hosts; Isolated VLAN transports frames from stub hosts upstream to the router; Community VLANs allow frames exchange withing a single group and also forward frames in upstream direction towards P-port. All the basic MAC address learning and unknown unicast flooding princinples remain the same.

Let’smove to the configuration part (Primary VLAN 100, Isolated VLAN 101 and Community VLAN 102).

Step1:

Create Primary and Secondary VLANs and group them into PVLAN domain:

!! Creating VLANs: Primary, subject to subdivision 
!
vlan 100 private-vlan primary

!
! Isolated VLAN: Connects all stub hosts to router!vlan 101
private-vlan isolated!! Community VLAN: allows a subVLAN within a Primary VLAN
!
vlan 102 private-vlan community

!
! Associating!vlan 100
private-vlan assoc 101,102

What this step is needed for, is to group PVLANs into a domain and establish a formal association (for syntax checking and VLAN type verifications).

Step2:

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.

!! Isolated port (uses isoalated VLAN to talk to P-port) 
!
interface FastEthernet x/y switchport mode private-vlan host
switchport private-vlan host-association 100 101!! Community ports: use community VLAN
!
interface range FastEthernet x/y - z switchport mode private-vlan host
switchport private-vlan host-association 100 102

Step 3:

Create a promiscuous port, and configure downstream mapping. Here we add secondary VLANs for which traffic is received by this P-port. Primary VLAN is used to send traffic downstream to all C/I ports as per their associations.

!! Router port 
!
interface FastEthernet x/y switchport mode private-vlan promisc
switchport private-vlan mapping 100 add 101,102

if you need to configure an SVI on the switch, you should add an interface correspoding to Primary VLAN only. Obviously that’s because of all secondary VLANs being simply “subordiantes” of primary. In our case the config would look like this:

interface Vlan 100 
ip address 172.16.0.1 255.255.255.0

Lastly, there is another feature, worths to be mentioned, called protected port or Private VLAN edge. The feature is pretty basic and avaiable even on low-end Cisco switches, allows to isolate 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 configurated 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

ShareThis