Update doc and add release note for vxlan
1. What is the problem? The spec and implementaion of vxlan network support have been submitted, but we lack updating related documents and adding a release note. 2. What is the solution to the problem? Update related documents and add a release note. 3. What the features need to be implemented to the Tricircle to realize the solution? N/A Change-Id: I392022226b06e75f7813befc78927cb5779e0a45
This commit is contained in:
parent
f1b7880349
commit
cc770090c0
|
@ -27,6 +27,7 @@ ADMIN_PASSWORD=password
|
|||
HOST_IP=10.250.201.24
|
||||
|
||||
Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS=(network_vlan_ranges=bridge:2001:3000,extern:3001:4000)
|
||||
Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS=(vni_ranges=1001:2000)
|
||||
OVS_BRIDGE_MAPPINGS=bridge:br-vlan
|
||||
|
||||
# Specify Central Region name
|
||||
|
|
|
@ -31,6 +31,7 @@ KEYSTONE_SERVICE_HOST=10.250.201.24
|
|||
KEYSTONE_AUTH_HOST=10.250.201.24
|
||||
|
||||
Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS=(network_vlan_ranges=bridge:2001:3000,extern:3001:4000)
|
||||
Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS=(vni_ranges=1001:2000)
|
||||
OVS_BRIDGE_MAPPINGS=bridge:br-vlan,extern:br-ext
|
||||
|
||||
# Specify Central Region name
|
||||
|
|
|
@ -175,7 +175,6 @@ function start_central_neutron_server {
|
|||
type_drivers+=,vlan
|
||||
tenant_network_types+=,vlan
|
||||
iniset $NEUTRON_CONF.$server_index tricircle network_vlan_ranges `echo $Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS | awk -F= '{print $2}'`
|
||||
iniset $NEUTRON_CONF.$server_index tricircle bridge_network_type vlan
|
||||
fi
|
||||
if [ "$Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS" != "" ]; then
|
||||
type_drivers+=,vxlan
|
||||
|
@ -185,6 +184,7 @@ function start_central_neutron_server {
|
|||
iniset $NEUTRON_CONF.$server_index tricircle type_drivers $type_drivers
|
||||
iniset $NEUTRON_CONF.$server_index tricircle tenant_network_types $tenant_network_types
|
||||
iniset $NEUTRON_CONF.$server_index tricircle enable_api_gateway False
|
||||
# default value of bridge_network_type is vxlan
|
||||
|
||||
recreate_database $Q_DB_NAME$server_index
|
||||
$NEUTRON_BIN_DIR/neutron-db-manage --config-file $NEUTRON_CONF.$server_index --config-file /$Q_PLUGIN_CONF_FILE upgrade head
|
||||
|
|
|
@ -148,16 +148,18 @@ configured in central Neutron's neutron.conf.
|
|||
- (String) core plugin central Neutron server uses, should be set to tricircle.network.central_plugin.TricirclePlugin
|
||||
* - **[tricircle]**
|
||||
-
|
||||
* - ``bridge_network_type`` = ``vlan``
|
||||
- (String) Type of l3 bridge network, this type should be enabled in tenant_network_types and is not local type, for example, vlan.
|
||||
* - ``bridge_network_type`` = ``vxlan``
|
||||
- (String) Type of l3 bridge network, this type should be enabled in tenant_network_types and is not local type, for example, vlan or vxlan.
|
||||
* - ``default_region_for_external_network`` = ``RegionOne``
|
||||
- (String) Default region where the external network belongs to, it must exist, for example, RegionOne.
|
||||
* - ``network_vlan_ranges`` = ``None``
|
||||
- (String) List of <physical_network>:<vlan_min>:<vlan_max> or <physical_network> specifying physical_network names usable for VLAN provider and tenant networks, as well as ranges of VLAN tags on each available for allocation to tenant networks, for example,bridge:2001:3000.
|
||||
* - ``tenant_network_types`` = ``local,vlan``
|
||||
- (String) Ordered list of network_types to allocate as tenant networks. The default value "local" is useful for single pod connectivity. For example, local and vlan.
|
||||
* - ``type_drivers`` = ``local,vlan``
|
||||
- (String) List of network type driver entry points to be loaded from the tricircle.network.type_drivers namespace. For example, local and vlan.
|
||||
- (String) List of <physical_network>:<vlan_min>:<vlan_max> or <physical_network> specifying physical_network names usable for VLAN provider and tenant networks, as well as ranges of VLAN tags on each available for allocation to tenant networks, for example, bridge:2001:3000.
|
||||
* - ``tenant_network_types`` = ``local,vxlan``
|
||||
- (String) Ordered list of network_types to allocate as tenant networks. The default value "local" is useful for single pod connectivity, for example, local vlan and vxlan.
|
||||
* - ``type_drivers`` = ``local,vxlan``
|
||||
- (String) List of network type driver entry points to be loaded from the tricircle.network.type_drivers namespace, for example, local vlan and vxlan.
|
||||
* - ``vni_ranges`` = ``None``
|
||||
- (String) Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges of VXLAN VNI IDs that are available for tenant network allocation, for example, 1001:2000
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -167,10 +167,12 @@ Installation with Central Neutron Server
|
|||
[client] admin_tenant, "project name of admin account", demo
|
||||
[client] admin_user_domain_name, "user domain name of admin account", Default
|
||||
[client] admin_tenant_domain_name, "project name of admin account", Default
|
||||
[tricircle] type_drivers, "list of network type driver entry points to be loaded", "local,vlan"
|
||||
[tricircle] tenant_network_types, "ordered list of network_types to allocate as tenant networks", "local,vlan"
|
||||
[tricircle] type_drivers, "list of network type driver entry points to be loaded", "local,vlan,vxlan"
|
||||
[tricircle] tenant_network_types, "ordered list of network_types to allocate as tenant networks", "local,vlan,vxlan"
|
||||
[tricircle] network_vlan_ranges, "physical_network names and VLAN tags range usable of VLAN provider", "bridge:2001:3000"
|
||||
[tricircle] bridge_network_type, "l3 bridge network type which is enabled in tenant_network_types and is not local type", vlan
|
||||
[tricircle] vni_ranges, "VxLAN VNI range", "1001:2000"
|
||||
[tricircle] bridge_network_type, "l3 bridge network type which is enabled in tenant_network_types and is not local type", vxlan
|
||||
[tricircle] default_region_for_external_network, "Default Region where the external network belongs to", RegionOne
|
||||
[tricircle] enable_api_gateway, "whether the API gateway is enabled", False
|
||||
|
||||
.. note:: Change keystone_service_host to the address of Keystone service.
|
||||
|
|
|
@ -16,26 +16,28 @@ to say, local type network doesn't support cross-pod l2 networking.
|
|||
With multi-pod installation of the Tricircle, you can try out cross-pod l2
|
||||
networking and cross-pod l3 networking features.
|
||||
|
||||
As the first step to support cross-pod l2 networking, we have added VLAN
|
||||
To support cross-pod l2 networking, we have added both VLAN and VxLAN
|
||||
network type to the Tricircle. When a VLAN type network created via the
|
||||
central Neutron server is used to boot virtual machines in different pods, local
|
||||
Neutron server in each pod will create a VLAN type network with the same VLAN
|
||||
ID and physical network as the central network, so each pod should be configured
|
||||
with the same VLAN allocation pool and physical network. Then virtual machines
|
||||
in different pods can communicate with each other in the same physical network
|
||||
with the same VLAN tag.
|
||||
with the same VLAN tag. Similarly, for VxLAN network type, each pod should be
|
||||
configured with the same VxLAN allocation pool, so local Neutron server in each
|
||||
pod can create a VxLAN type network with the same VxLAN ID as is allocated by
|
||||
the central Neutron server.
|
||||
|
||||
Cross-pod l3 networking is supported in two ways in the Tricircle. If two
|
||||
networks connected to the router are of local type, we utilize a shared provider
|
||||
VLAN network to achieve cross-pod l3 networking. Later we may also use VxLAN
|
||||
network or multi-segment VLAN network. When a subnet is attached to a router via
|
||||
the central Neutron server, the Tricircle not only creates corresponding subnet
|
||||
and router in the pod, but also creates a VLAN type "bridge" network. Both
|
||||
tenant network and "bridge" network are attached to the router. Each tenant will
|
||||
have one allocated VLAN, which is shared by the tenant's "bridge" networks
|
||||
across pods. The CIDRs of "bridge" networks for one tenant are also the same, so
|
||||
the router interfaces in "bridge" networks across different pods can communicate
|
||||
with each other via the provider VLAN network. By adding an extra route as
|
||||
networks connected to the router are of local type, we utilize a shared
|
||||
VLAN or VxLAN network to achieve cross-pod l3 networking. When a subnet is
|
||||
attached to a router via the central Neutron server, the Tricircle not only
|
||||
creates corresponding subnet and router in the pod, but also creates a "bridge"
|
||||
network. Both tenant network and "bridge" network are attached to the router.
|
||||
Each tenant will have one allocated VLAN or VxLAN ID, which is shared by the
|
||||
tenant's "bridge" networks across pods. The CIDRs of "bridge" networks for one
|
||||
tenant are also the same, so the router interfaces in "bridge" networks across
|
||||
different pods can communicate with each other. By adding an extra route as
|
||||
following::
|
||||
|
||||
destination: CIDR of tenant network in another pod
|
||||
|
@ -67,9 +69,11 @@ Prerequisite
|
|||
|
||||
In this guide we take two nodes deployment as an example. One node to run the
|
||||
Tricircle API, the central Neutron server and one pod, the other one node to run
|
||||
another pod. Both nodes have two network interfaces, for management network and
|
||||
provider VLAN network. For VLAN network, the physical network infrastructure
|
||||
should support VLAN tagging. If you would like to try north-south networking,
|
||||
another pod. For VLAN network, both nodes should have two network interfaces,
|
||||
which are connected to the management network and provider VLAN network. The
|
||||
physical network infrastructure should support VLAN tagging. For VxLAN network,
|
||||
you can combine the management plane and data plane, in this case, only one
|
||||
network interface is needed. If you would like to try north-south networking,
|
||||
too, you should prepare one more network interface in the second node for the
|
||||
external network. In this guide, the external network is also VLAN type, so the
|
||||
local.conf sample is based on VLAN type external network setup. For the resource
|
||||
|
@ -111,6 +115,12 @@ RegionOne,
|
|||
|
||||
Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS=(network_vlan_ranges=bridge:2001:3000,extern:3001:4000)
|
||||
|
||||
- if you would like to also configure vxlan network, you can set
|
||||
Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS. the format of it is
|
||||
(vni_ranges=<min vxlan>:<max vxlan>)::
|
||||
|
||||
Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS=(vni_ranges=1001:2000)
|
||||
|
||||
- the format of OVS_BRIDGE_MAPPINGS is <physical network name>:<ovs bridge name>,
|
||||
you can change these names, but remember to adapt your change to the
|
||||
commands showed in this guide. You do not need specify the bridge mapping
|
||||
|
@ -118,6 +128,8 @@ RegionOne,
|
|||
|
||||
OVS_BRIDGE_MAPPINGS=bridge:br-vlan
|
||||
|
||||
this option can be omitted if only VxLAN networks are needed
|
||||
|
||||
- set TRICIRCLE_START_SERVICES to True to install the Tricircle service and
|
||||
central Neutron in node1::
|
||||
|
||||
|
@ -129,7 +141,8 @@ RegionOne,
|
|||
sudo ovs-vsctl add-port br-vlan eth1
|
||||
|
||||
br-vlan is the OVS bridge name you configure on OVS_PHYSICAL_BRIDGE, eth1 is
|
||||
the device name of your VLAN network interface
|
||||
the device name of your VLAN network interface, this step can be omitted if
|
||||
only VxLAN networks are provided to tenants.
|
||||
|
||||
- 5 Run DevStack. In DevStack folder, run ::
|
||||
|
||||
|
@ -169,12 +182,22 @@ In pod2 in node2 for OpenStack RegionTwo,
|
|||
|
||||
Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS=(network_vlan_ranges=bridge:2001:3000,extern:3001:4000)
|
||||
|
||||
- if you would like to also configure vxlan network, you can set
|
||||
Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS. the format of it is
|
||||
(vni_ranges=<min vxlan>:<max vxlan>)::
|
||||
|
||||
Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS=(vni_ranges=1001:2000)
|
||||
|
||||
- the format of OVS_BRIDGE_MAPPINGS is <physical network name>:<ovs bridge name>,
|
||||
you can change these names, but remember to adapt your change to the commands
|
||||
showed in this guide::
|
||||
|
||||
OVS_BRIDGE_MAPPINGS=bridge:br-vlan,extern:br-ext
|
||||
|
||||
if you only use vlan network for external network, it can be configured like::
|
||||
|
||||
OVS_BRIDGE_MAPPINGS=extern:br-ext
|
||||
|
||||
- set TRICIRCLE_START_SERVICES to False(it's True by default) so Tricircle
|
||||
services and central Neutron will not be started in node2::
|
||||
|
||||
|
@ -196,7 +219,8 @@ In pod2 in node2 for OpenStack RegionTwo,
|
|||
|
||||
br-vlan and br-ext are the OVS bridge names you configure on
|
||||
OVS_PHYSICAL_BRIDGE, eth1 and eth2 are the device names of your VLAN network
|
||||
interfaces, for the "bridge" network and the external network.
|
||||
interfaces, for the "bridge" network and the external network. Omit br-vlan
|
||||
if you only use vxlan network as tenant network.
|
||||
|
||||
- 5 Run DevStack. In DevStack folder, run ::
|
||||
|
||||
|
|
|
@ -141,6 +141,7 @@ Create net1 which will work as the L2 network across RegionOne and RegionTwo.
|
|||
|
||||
.. code-block:: console
|
||||
|
||||
If net1 is vlan based cross-OpenStack L2 network
|
||||
$ neutron --os-region-name=CentralRegion net-create --provider:network_type vlan --provider:physical_network bridge --availability-zone-hint az1 --availability-zone-hint az2 net1
|
||||
+---------------------------+--------------------------------------+
|
||||
| Field | Value |
|
||||
|
@ -161,6 +162,27 @@ Create net1 which will work as the L2 network across RegionOne and RegionTwo.
|
|||
| tenant_id | ce444c8be6da447bb412db7d30cd7023 |
|
||||
+---------------------------+--------------------------------------+
|
||||
|
||||
If net1 is vxlan based cross-OpenStack L2 network
|
||||
$ neutron --os-region-name=CentralRegion net-create --provider:network_type vxlan --availability-zone-hint az1 --availability-zone-hint az2 net1
|
||||
+---------------------------+--------------------------------------+
|
||||
| Field | Value |
|
||||
+---------------------------+--------------------------------------+
|
||||
| admin_state_up | True |
|
||||
| availability_zone_hints | az1 |
|
||||
| | az2 |
|
||||
| id | 0093f32c-2ecd-4888-a8c2-a6a424bddfe8 |
|
||||
| name | net1 |
|
||||
| project_id | ce444c8be6da447bb412db7d30cd7023 |
|
||||
| provider:network_type | vxlan |
|
||||
| provider:physical_network | |
|
||||
| provider:segmentation_id | 1036 |
|
||||
| router:external | False |
|
||||
| shared | False |
|
||||
| status | ACTIVE |
|
||||
| subnets | |
|
||||
| tenant_id | ce444c8be6da447bb412db7d30cd7023 |
|
||||
+---------------------------+--------------------------------------+
|
||||
|
||||
Create subnet in net1.
|
||||
|
||||
.. code-block:: console
|
||||
|
|
|
@ -202,6 +202,7 @@ Create net3 which will work as the L2 network across RegionOne and RegionTwo.
|
|||
|
||||
.. code-block:: console
|
||||
|
||||
If net3 is vlan based cross-OpenStack L2 network
|
||||
$ neutron --os-region-name=CentralRegion net-create --provider:network_type vlan --provider:physical_network bridge --availability-zone-hint az1 --availability-zone-hint az2 net3
|
||||
|
||||
+---------------------------+--------------------------------------+
|
||||
|
@ -223,6 +224,27 @@ Create net3 which will work as the L2 network across RegionOne and RegionTwo.
|
|||
| tenant_id | 532890c765604609a8d2ef6fc8e5f6ef |
|
||||
+---------------------------+--------------------------------------+
|
||||
|
||||
If net3 is vxlan based cross-OpenStack L2 network
|
||||
$ neutron --os-region-name=CentralRegion net-create --provider:network_type vxlan --availability-zone-hint az1 --availability-zone-hint az2 net3
|
||||
|
||||
+---------------------------+--------------------------------------+
|
||||
| Field | Value |
|
||||
+---------------------------+--------------------------------------+
|
||||
| admin_state_up | True |
|
||||
| availability_zone_hints | az1 |
|
||||
| | az2 |
|
||||
| id | 0f171049-0c15-4d1b-95cd-ede8dc554b44 |
|
||||
| name | net3 |
|
||||
| project_id | 532890c765604609a8d2ef6fc8e5f6ef |
|
||||
| provider:network_type | vxlan |
|
||||
| provider:physical_network | |
|
||||
| provider:segmentation_id | 1031 |
|
||||
| router:external | False |
|
||||
| shared | False |
|
||||
| status | ACTIVE |
|
||||
| subnets | |
|
||||
| tenant_id | 532890c765604609a8d2ef6fc8e5f6ef |
|
||||
+---------------------------+--------------------------------------+
|
||||
|
||||
Create a subnet in net3.
|
||||
|
||||
|
|
|
@ -44,6 +44,11 @@ configure the local.conf like this::
|
|||
TRICIRCLE_START_SERVICES=True
|
||||
enable_plugin tricircle https://github.com/openstack/tricircle/
|
||||
|
||||
If you also want to configure vxlan network, suppose the vxlan range for tenant
|
||||
network is 1001~2000, add the following configuration to the above local.conf::
|
||||
|
||||
Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS=(vni_ranges=1001:2000)
|
||||
|
||||
In the node which will run local Neutron without Tricircle services, configure
|
||||
the local.conf like this::
|
||||
|
||||
|
@ -57,12 +62,17 @@ You may have noticed that the only difference is TRICIRCLE_START_SERVICES
|
|||
is True or False. All examples given in this document will be based on these
|
||||
settings.
|
||||
|
||||
If you also want to configure vxlan network, suppose the vxlan range for tenant
|
||||
network is 1001~2000, add the following configuration to the above local.conf::
|
||||
|
||||
Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS=(vni_ranges=1001:2000)
|
||||
|
||||
In both RegionOne and RegionTwo, external network is able to be provisioned,
|
||||
the settings will look like this in /etc/neutron/plugins/ml2/ml2_conf.ini::
|
||||
|
||||
network_vlan_ranges = bridge:101:150,extern:151:200
|
||||
|
||||
vni_ranges = 1:1000
|
||||
vni_ranges = 1001:2000(or the range that you configure)
|
||||
|
||||
bridge_mappings = bridge:br-vlan,extern:br-ext
|
||||
|
||||
|
@ -72,10 +82,11 @@ Please be aware that the physical network name for tenant VLAN network is
|
|||
In central Neutron's configuration file, the default settings look like as
|
||||
follows::
|
||||
|
||||
bridge_network_type = vlan
|
||||
network_vlan_ranges = bridge:101:150
|
||||
tenant_network_types = local,vlan
|
||||
type_drivers = local,vlan
|
||||
bridge_network_type = vxlan
|
||||
network_vlan_ranges = bridge:101:150,extern:151:200
|
||||
vni_ranges = 1001:2000
|
||||
tenant_network_types = local,vlan,vxlan
|
||||
type_drivers = local,vlan,vxlan
|
||||
|
||||
The default network type in central Neutron is local network, i.e, one
|
||||
network can only be presented in one local Neutron. In which region the
|
||||
|
@ -87,9 +98,9 @@ configuration.
|
|||
|
||||
If you want to create a L2 network across multiple Neutron, then you
|
||||
have to speficy --provider-network-type vlan in network creation
|
||||
command for vlan network type. Currently only vlan network
|
||||
type could work as the bridge network. VxLAN network to support L2 networking
|
||||
across Neutron will be introduced later.
|
||||
command for vlan network type, or --provider-network-type vxlan for vxlan
|
||||
network type. Both vlan and vxlan network type could work as the bridge
|
||||
network. The default bridge network type is vxlan.
|
||||
|
||||
You can create L2 network for different purposes, and the supported network
|
||||
types for different purposes are summarized as follows.
|
||||
|
@ -104,8 +115,8 @@ types for different purposes are summarized as follows.
|
|||
* - Local L2 network for instances
|
||||
- VLAN, VxLAN
|
||||
* - Cross Neutron L2 network for instances
|
||||
- VLAN
|
||||
- VLAN, VxLAN
|
||||
* - Bridge network for routers
|
||||
- VLAN
|
||||
- VLAN, VxLAN
|
||||
* - External network
|
||||
- VLAN
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
features:
|
||||
- |
|
||||
Support VxLAN network type for tenant network and bridge network to be
|
||||
stretched into multiple OpenStack clouds
|
|
@ -70,11 +70,11 @@ from tricircle.network import security_groups
|
|||
|
||||
tricircle_opts = [
|
||||
cfg.ListOpt('type_drivers',
|
||||
default=['local'],
|
||||
default=['local,vxlan'],
|
||||
help=_('List of network type driver entry points to be loaded '
|
||||
'from the tricircle.network.type_drivers namespace.')),
|
||||
cfg.ListOpt('tenant_network_types',
|
||||
default=['local'],
|
||||
default=['local,vxlan'],
|
||||
help=_('Ordered list of network_types to allocate as tenant '
|
||||
'networks. The default value "local" is useful for '
|
||||
'single pod connectivity.')),
|
||||
|
@ -91,7 +91,7 @@ tricircle_opts = [
|
|||
'enumerating ranges of VXLAN VNI IDs that are '
|
||||
'available for tenant network allocation.')),
|
||||
cfg.StrOpt('bridge_network_type',
|
||||
default='',
|
||||
default='vxlan',
|
||||
help=_('Type of l3 bridge network, this type should be enabled '
|
||||
'in tenant_network_types and is not local type.')),
|
||||
cfg.StrOpt('default_region_for_external_network',
|
||||
|
|
Loading…
Reference in New Issue