To create floating IP pool on VLAN tagged physical network:
First create a VXLAN network (L2 network):
openstack network create internal
+---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2017-01-03T11:22:33Z | | description | | | headers | | | id | 14cd4143-89a6-4d79-aefe-c148bae892cf | | ipv4_address_scope | None | | ipv6_address_scope | None | | mtu | 1450 | | name | internal | | port_security_enabled | True | | project_id | 87f8c0ed08534b1da737f85d055a0912 | | project_id | 87f8c0ed08534b1da737f85d055a0912 | | provider:network_type | vxlan | | provider:physical_network | None | | provider:segmentation_id | 74 | | revision_number | 3 | | router:external | Internal | | shared | False | | status | ACTIVE | | subnets | | | tags | [] | | updated_at | 2017-01-03T11:22:33Z | +---------------------------+--------------------------------------+ Create subnet: openstack subnet create vxlan_10.0.0.0 --network internal --subnet-range 10.0.0.0/24
+-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | allocation_pools | 10.0.0.2-10.0.0.254 | | cidr | 10.0.0.0/24 | | created_at | 2017-01-03T11:24:35Z | | description | | | dns_nameservers | | | enable_dhcp | True | | gateway_ip | 10.0.0.1 | | headers | | | host_routes | | | id | 9591dedc-2cd8-431b-9973-bf25a74d5a3c | | ip_version | 4 | | ipv6_address_mode | None | | ipv6_ra_mode | None | | name | vxlan_10.0.0.0 | | network_id | 14cd4143-89a6-4d79-aefe-c148bae892cf | | project_id | 87f8c0ed08534b1da737f85d055a0912 | | project_id | 87f8c0ed08534b1da737f85d055a0912 | | revision_number | 2 | | service_types | [] | | subnetpool_id | None | | updated_at | 2017-01-03T11:24:35Z | +-------------------+--------------------------------------+
Now let’s create VLAN network (physical):
openstack network create vlan-102 --share --provider-physical-network vlan --provider-network-type vlan --provider-segment 102 --external
+---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2017-01-03T10:58:08Z | | description | | | headers | | | id | 41c4bda4-b8d4-43f3-88c7-9ba9ad6c6314 | | ipv4_address_scope | None | | ipv6_address_scope | None | | is_default | False | | mtu | 1500 | | name | vlan-102 | | port_security_enabled | True | | project_id | 87f8c0ed08534b1da737f85d055a0912 | | project_id | 87f8c0ed08534b1da737f85d055a0912 | | provider:network_type | vlan | | provider:physical_network | vlan | | provider:segmentation_id | 102 | | revision_number | 3 | | router:external | External | | shared | True | | status | ACTIVE | | subnets | | | tags | [] | | updated_at | 2017-01-03T10:58:08Z | +---------------------------+--------------------------------------+
“-provider-physical-network vlan” is taken from openstack_user_config.yml
– network:
container_bridge: “br-vlan”
container_type: “veth”
container_interface: “eth12”
type: “vlan”
net_name: “vlan”
range: “102:102”
group_binds:
– neutron_linuxbridge_agent
It can also be found in neutron-server-container:
grep -n network_vlan_ranges /etc/neutron/plugins/ml2/ml2_conf.ini 18:network_vlan_ranges = vlan:102:102
Create a subnet:
openstack subnet create --network vlan102 --subnet-range 192.168.102.0/24 --allocation-pool start=192.168.102.1,end=192.168.102.250 --gateway 192.168.102.254 vlan102_192.168.102.0
+-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | allocation_pools | 192.168.102.1-192.168.102.250 | | cidr | 192.168.102.0/24 | | created_at | 2017-01-03T11:13:29Z | | description | | | dns_nameservers | | | enable_dhcp | True | | gateway_ip | 192.168.102.254 | | headers | | | host_routes | | | id | be4681b7-1301-46e1-9fda-0191063802fd | | ip_version | 4 | | ipv6_address_mode | None | | ipv6_ra_mode | None | | name | vlan102_192.168.102.0 | | network_id | 697bebb8-b633-4cee-ac94-409433268f22 | | project_id | 87f8c0ed08534b1da737f85d055a0912 | | project_id | 87f8c0ed08534b1da737f85d055a0912 | | revision_number | 2 | | service_types | [] | | subnetpool_id | None | | updated_at | 2017-01-03T11:13:29Z | +-------------------+--------------------------------------+
Since virtual machines will have only internal (VXLAN) network attached to them, we need to create a router for IPs from external network to be “glued” to internal network at Neutron side:
openstack router create primary_router
+-------------------------+--------------------------------------+ | Field | Value | +-------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2017-01-03T11:34:32Z | | description | | | distributed | False | | external_gateway_info | null | | flavor_id | None | | ha | True | | headers | | | id | fc299974-5836-46aa-baf7-a78eabe99486 | | name | primary_router | | project_id | 87f8c0ed08534b1da737f85d055a0912 | | project_id | 87f8c0ed08534b1da737f85d055a0912 | | revision_number | 2 | | routes | | | status | ACTIVE | | updated_at | 2017-01-03T11:34:32Z | +-------------------------+--------------------------------------+
Add VXLAN and VLAN subnets to router:
neturon router-gateway-set primary_router vlan102 neutron router-interface-add primary_router