Change local type as the last network type candidate
1. What is the problem The segment ID of local type network is allocated in the local Neutron server, so it's possible that segment IDs of bridge network and local network conflict, which results to failure when creating bridge network. 2. What is the solution for the problem Since network AZ is implemented, we can deprecate the "local" network type and only create a local network by specifying AZ as region name. Before such deprecation, we change local type as the last network type candidate to avoid users create a local type network by mistake. 3. What features need to be implemented to the Tricircle to realize the solution N/A Change-Id: I55a1b6a93bd43e28c05530161e23de26a8bb8f60 Partial-Bug: #1692415
This commit is contained in:
@@ -279,23 +279,29 @@ function start_central_neutron_server {
|
||||
iniset $NEUTRON_CONF.$server_index client auto_refresh_endpoint True
|
||||
iniset $NEUTRON_CONF.$server_index client top_region_name $CENTRAL_REGION_NAME
|
||||
|
||||
local type_drivers=local
|
||||
local tenant_network_types=local
|
||||
if [ "$Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS" != "" ]; then
|
||||
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}'`
|
||||
fi
|
||||
local type_drivers=''
|
||||
local tenant_network_types=''
|
||||
if [ "$Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS" != "" ]; then
|
||||
type_drivers+=,vxlan
|
||||
tenant_network_types+=,vxlan
|
||||
iniset $NEUTRON_CONF.$server_index tricircle vni_ranges `echo $Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS | awk -F= '{print $2}'`
|
||||
fi
|
||||
if [ "$Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS" != "" ]; then
|
||||
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}'`
|
||||
fi
|
||||
if [ "Q_ML2_PLUGIN_FLAT_TYPE_OPTIONS" != "" ]; then
|
||||
type_drivers+=,flat
|
||||
tenant_network_types+=,flat
|
||||
iniset $NEUTRON_CONF.$server_index tricircle flat_networks `echo $Q_ML2_PLUGIN_FLAT_TYPE_OPTIONS | awk -F= '{print $2}'`
|
||||
fi
|
||||
type_drivers+=,local
|
||||
tenant_network_types+=,local
|
||||
# remove the heading ","
|
||||
type_drivers=$(echo $type_drivers | sed 's/^,//')
|
||||
tenant_network_types=$(echo $tenant_network_types | sed 's/^,//')
|
||||
|
||||
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
|
||||
|
@@ -154,9 +154,9 @@ configured in central Neutron's neutron.conf.
|
||||
- (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,vxlan``
|
||||
* - ``tenant_network_types`` = ``vxlan,local``
|
||||
- (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``
|
||||
* - ``type_drivers`` = ``vxlan,local``
|
||||
- (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
|
||||
|
@@ -169,8 +169,8 @@ 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,vxlan,flat"
|
||||
[tricircle] tenant_network_types, "ordered list of network_types to allocate as tenant networks", "local,vlan,vxlan,flat"
|
||||
[tricircle] type_drivers, "list of network type driver entry points to be loaded", "vxlan,vlan,flat,local"
|
||||
[tricircle] tenant_network_types, "ordered list of network_types to allocate as tenant networks", "vxlan,vlan,flat,local"
|
||||
[tricircle] network_vlan_ranges, "physical network names and VLAN tags range usable of VLAN provider", "bridge:2001:3000"
|
||||
[tricircle] vni_ranges, "VxLAN VNI range", "1001:2000"
|
||||
[tricircle] flat_networks, "physical network names with which flat networks can be created", bridge
|
||||
|
@@ -31,17 +31,16 @@ support service redundancy in case of region level failure.
|
||||
How to create this network topology
|
||||
===================================
|
||||
|
||||
Create provider network phy_net1, which will be located in az1, including
|
||||
RegionOne.
|
||||
Create provider network phy_net1, which will be located in RegionOne.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ neutron --os-region-name=CentralRegion net-create --provider:network_type vlan --provider:physical_network extern --availability-zone-hint az1 phy_net1
|
||||
$ neutron --os-region-name=CentralRegion net-create --provider:network_type vlan --provider:physical_network extern --availability-zone-hint RegionOne phy_net1
|
||||
+---------------------------+--------------------------------------+
|
||||
| Field | Value |
|
||||
+---------------------------+--------------------------------------+
|
||||
| admin_state_up | True |
|
||||
| availability_zone_hints | az1 |
|
||||
| availability_zone_hints | RegionOne |
|
||||
| id | b7832cbb-d399-4d5d-bcfd-d1b804506a1a |
|
||||
| name | phy_net1 |
|
||||
| project_id | ce444c8be6da447bb412db7d30cd7023 |
|
||||
@@ -84,17 +83,16 @@ Create subnet in phy_net1.
|
||||
| updated_at | 2017-01-11T08:43:48Z |
|
||||
+-------------------+------------------------------------------------+
|
||||
|
||||
Create provider network phy_net2, which will be located in az2, including
|
||||
RegionTwo.
|
||||
Create provider network phy_net2, which will be located in RegionTwo.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ neutron --os-region-name=CentralRegion net-create --provider:network_type vlan --provider:physical_network extern --availability-zone-hint az2 phy_net2
|
||||
$ neutron --os-region-name=CentralRegion net-create --provider:network_type vlan --provider:physical_network extern --availability-zone-hint RegionTwo phy_net2
|
||||
+---------------------------+--------------------------------------+
|
||||
| Field | Value |
|
||||
+---------------------------+--------------------------------------+
|
||||
| admin_state_up | True |
|
||||
| availability_zone_hints | az2 |
|
||||
| availability_zone_hints | RegionTwo |
|
||||
| id | 731293af-e68f-4677-b433-f46afd6431f3 |
|
||||
| name | phy_net2 |
|
||||
| project_id | ce444c8be6da447bb412db7d30cd7023 |
|
||||
@@ -328,7 +326,7 @@ List available flavors in RegionTwo.
|
||||
| d4 | ds4G | 4096 | 20 | 0 | | 4 | 1.0 | True |
|
||||
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
|
||||
|
||||
Boot instance1 in RegionOne, and connect this instance to net1 and phy_net2.
|
||||
Boot instance2 in RegionTwo, and connect this instance to net1 and phy_net2.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
|
@@ -129,26 +129,28 @@ Create subnet in ext-net1.
|
||||
| updated_at | 2017-01-10T04:49:16Z |
|
||||
+-------------------+--------------------------------------------------+
|
||||
|
||||
Create router R1.
|
||||
Create local router R1 in RegionOne
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ neutron --os-region-name=CentralRegion router-create R1
|
||||
+-----------------------+--------------------------------------+
|
||||
| Field | Value |
|
||||
+-----------------------+--------------------------------------+
|
||||
| admin_state_up | True |
|
||||
| created_at | 2017-01-10T04:50:06Z |
|
||||
| description | |
|
||||
| external_gateway_info | |
|
||||
| id | 7ce3282f-3864-4c55-84bf-fc5edc3293cb |
|
||||
| name | R1 |
|
||||
| project_id | c0e194dfadd44fc1983fd6dd7c8ed384 |
|
||||
| revision_number | 1 |
|
||||
| status | ACTIVE |
|
||||
| tenant_id | c0e194dfadd44fc1983fd6dd7c8ed384 |
|
||||
| updated_at | 2017-01-10T04:50:06Z |
|
||||
+-----------------------+--------------------------------------+
|
||||
$ neutron --os-region-name=CentralRegion router-create --availability-zone-hint RegionOne R1
|
||||
+-------------------------+--------------------------------------+
|
||||
| Field | Value |
|
||||
+-------------------------+--------------------------------------+
|
||||
| admin_state_up | True |
|
||||
| availability_zone_hints | RegionOne |
|
||||
| availability_zones | |
|
||||
| created_at | 2017-01-10T04:50:06Z |
|
||||
| description | |
|
||||
| external_gateway_info | |
|
||||
| id | 7ce3282f-3864-4c55-84bf-fc5edc3293cb |
|
||||
| name | R1 |
|
||||
| project_id | c0e194dfadd44fc1983fd6dd7c8ed384 |
|
||||
| revision_number | 1 |
|
||||
| status | ACTIVE |
|
||||
| tenant_id | c0e194dfadd44fc1983fd6dd7c8ed384 |
|
||||
| updated_at | 2017-01-10T04:50:06Z |
|
||||
+-------------------------+--------------------------------------+
|
||||
|
||||
Set the router gateway to ext-net1 for R1.
|
||||
|
||||
@@ -175,16 +177,16 @@ Set the router gateway to ext-net1 for R1.
|
||||
| updated_at | 2017-01-10T04:51:19Z |
|
||||
+-----------------------+------------------------------------------------------------------------------------------------------------+
|
||||
|
||||
Create network net1.
|
||||
Create local network net1 in RegionOne.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ neutron --os-region-name=CentralRegion net-create net1
|
||||
$ neutron --os-region-name=CentralRegion net-create --availability-zone-hint RegionOne net1
|
||||
+---------------------------+--------------------------------------+
|
||||
| Field | Value |
|
||||
+---------------------------+--------------------------------------+
|
||||
| admin_state_up | True |
|
||||
| availability_zone_hints | |
|
||||
| availability_zone_hints | RegionOne |
|
||||
| id | beaf59eb-c597-4b69-bd41-8bf9fee2dc6a |
|
||||
| name | net1 |
|
||||
| project_id | c0e194dfadd44fc1983fd6dd7c8ed384 |
|
||||
|
@@ -162,8 +162,8 @@ Set the router gateway to ext-net1 for R1.
|
||||
| updated_at | 2017-01-12T07:04:36Z |
|
||||
+-----------------------+------------------------------------------------------------------------------------------------------------+
|
||||
|
||||
Create local network net1 which will reside in RegionOne. You can use az1 or
|
||||
RegionOne as the value of availability-zone-hint.
|
||||
Create local network net1 which will reside in RegionOne, so you use RegionOne
|
||||
as the value of availability-zone-hint.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
|
@@ -4,8 +4,8 @@ North South Networking via Single External Network
|
||||
|
||||
The following figure illustrates one typical networking mode, the north
|
||||
south networking traffic for the tenant will be centralized through
|
||||
single external network. Only one virtual router is needed even if
|
||||
the tenant's network are located in multiple OpenStack regions.
|
||||
single external network. Only one virtual non-local router R1 is needed
|
||||
even if the tenant's network are located in multiple OpenStack regions.
|
||||
|
||||
Only Neutron and Tricircle Local Neutron Plugin are required to be deployed
|
||||
in RegionThree if you want to make the external network being floating and
|
||||
@@ -188,8 +188,8 @@ Set the router gateway to ext-net1 for R1.
|
||||
$ neutron --os-region-name=CentralRegion router-gateway-set R1 ext-net1
|
||||
Set gateway for router R1
|
||||
|
||||
Create local network net1 which will reside in RegionOne. You can use az1 or
|
||||
RegionOne as the value of availability-zone-hint.
|
||||
Create local network net1 which will reside in RegionOne, so you use RegionOne
|
||||
as the value of availability-zone-hint.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
|
@@ -44,11 +44,6 @@ 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::
|
||||
|
||||
@@ -93,16 +88,17 @@ follows::
|
||||
network_vlan_ranges = bridge:101:150,extern:151:200
|
||||
vni_ranges = 1001:2000
|
||||
flat_networks = bridge,extern
|
||||
tenant_network_types = local,vlan,vxlan,flat
|
||||
type_drivers = local,vlan,vxlan,flat
|
||||
tenant_network_types = vxlan,vlan,flat,local
|
||||
type_drivers = vxlan,vlan,flat,local
|
||||
|
||||
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
|
||||
local network will be located, it's up to in which region the first instance
|
||||
will be booted in this network. After that, it'll fail if you want to boot
|
||||
instance in another region to this network. The local network could be VLAN
|
||||
or VxLAN or GRE network by default, it's up to your local Neutron's
|
||||
configuration.
|
||||
If you want to create a local network, it is recommend that you specify
|
||||
availability_zone_hint as region name when creating the network, instead of
|
||||
specifying the network type as "local". The "local" type has two drawbacks.
|
||||
One is that you can not control the exact type of the network in local Neutron,
|
||||
it's up to your local Neutron's configuration. The other is that the segment
|
||||
ID of the network is allocated by local Neutron, so it may conflict with a
|
||||
segment ID that is allocated by central Neutron. Considering such problems, we
|
||||
have plan to deprecate "local" type.
|
||||
|
||||
If you want to create a L2 network across multiple Neutron servers, then you
|
||||
have to speficy --provider-network-type vlan in network creation
|
||||
|
@@ -75,11 +75,11 @@ from tricircle.network import security_groups
|
||||
|
||||
tricircle_opts = [
|
||||
cfg.ListOpt('type_drivers',
|
||||
default=['local,vxlan'],
|
||||
default=['vxlan,local'],
|
||||
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,vxlan'],
|
||||
default=['vxlan,local'],
|
||||
help=_('Ordered list of network_types to allocate as tenant '
|
||||
'networks. The default value "local" is useful for '
|
||||
'single pod connectivity.')),
|
||||
|
Reference in New Issue
Block a user