blob: aaa1158fe3d8caf859db0c62a77723b896dce7fe [file] [log] [blame]
.. Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information#
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
Isolation in Advanced Zone Using Private VLANs
-----------------------------------------------
About PVLANs (Secondary VLANs)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The clasic use-case for PVLANs is a shared backup network, where you wish all users'
hosts to be able to communicate with a backup host, but not with each other.
|pvlans.png|
For further reading:
- `Understanding Private
VLANs <http://www.cisco.com/en/US/docs/switches/lan/catalyst3750/software/release/12.2_25_see/configuration/guide/swpvlan.html#wp1038379>`_
- `Cisco Systems' Private VLANs: Scalable Security in a Multi-Client
Environment <http://tools.ietf.org/html/rfc5517>`_
- `Private VLAN (PVLAN) on vNetwork Distributed Switch - Concept
Overview (1010691) <http://kb.vmware.com>`_
Supported Secondary VLAN types
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Of the three types of Private VLAN (promiscuous, community and isolated),
CloudStack supports **one promiscuous** PVLAN, **one isolated** PVLAN and **multiple community** PVLANs **per
primary VLAN**.
PVLANs are currently supported on shared and layer 2 networks.
The PVLAN concept is supported on KVM (when using OVS), XenServer (when using OVS), and VMware hypervisors
.. note::
OVS on XenServer and KVM does not support PVLAN natively. Therefore,
CloudStack managed to simulate PVLAN on OVS for XenServer and KVM by
modifying the flow table.
Prerequisites
~~~~~~~~~~~~~
- Use a PVLAN supported switch.
See `Private VLAN Catalyst Switch Support
Matrix <http://www.cisco.com/en/US/products/hw/switches/ps708/products_tech_note09186a0080094830.shtml>`_ for
more information.
- All the layer 2 switches, which are PVLAN-aware, are connected to
each other, and one of them is connected to a router. All the ports
connected to the host would be configured in trunk mode. Open
Management VLAN, Primary VLAN (public) and Secondary Isolated VLAN
ports. Configure the switch port connected to the router in PVLAN
promiscuous trunk mode, which would translate an isolated VLAN to
primary VLAN for the PVLAN-unaware router.
Note that only Cisco Catalyst 4500 has the PVLAN promiscuous trunk
mode to connect both normal VLAN and PVLAN to a PVLAN-unaware switch.
For the other Catalyst PVLAN support switch, connect the switch to
upper switch by using cables, one each for a PVLAN pair.
- Configure private VLAN on your physical switches out-of-band.
- Before you use PVLAN on XenServer and KVM, enable Open vSwitch (OVS).
Creating a PVLAN-Enabled Network
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PVLAN-enabled networks can be either shared or layer 2 networks.
For a general description of how to create a shared network see `"configuring a shared guest network" <#configuring-a-shared-guest-network>`_.
On top of the parameters required to create a *normal* shared or layer 2 network, the following
parameters must be set:
- **VLAN ID**: The unique ID of the primary VLAN that you want to use.
- **Secondary Isolated VLAN ID**: The PVLAN ID to use within the primary VLAN.
- **PVLAN Type**: The PVLAN type corresponding to the PVLAN ID to use within the primary VLAN.
Creating a PVLAN-enabled network can be done in multiple ways depending on the PVLAN type:
- For a **promiscuous** PVLAN:
- Set the secondary VLAN ID to the same VLAN ID as the primary VLAN that the promiscuous PVLAN will be inside (available only via API, not UI), or
- Set the PVLAN type to "Promiscuous" and do not set the secondary VLAN ID.
- For an **isolated** PVLAN:
- Set the secondary VLAN ID to the PVLAN ID which you wish to use inside the primary VLAN (available only via API, not UI), or
- Set the PVLAN type to "Isolated" and set the secondary VLAN ID to the PVLAN ID which you wish to use inside the primary VLAN.
- For a **community** PVLAN:
- Set the PVLAN type to "Community" and set the secondary VLAN ID to the PVLAN ID which you wish to use inside the primary VLAN.
.. |pvlans.png| image:: /_static/images/pvlans.png
:alt: Diagram of PVLAN communications