From 36512433f92892940ccbf40b233a211286637363 Mon Sep 17 00:00:00 2001 From: Matt Kassawara Date: Thu, 20 Mar 2014 22:07:45 -0600 Subject: [PATCH] Restructured and updated Neutron initial networks section As part of the installation guide improvement project, I performed the following operations on the Neutron initial networks section: 1) Added new diagram to help visualize network components and their locations within the environment. 2) Added explanation for each procedure. 3) Added use of 'openrc' files. 4) Clarified phrasing and wording. Change-Id: I69946a009807681115ebe23c011495ffb8b9467e Partial-Bug: #1291071 Implements: blueprint networking-install-guide-improvements --- doc/glossary/glossary-terms.xml | 24 +- .../installguide_neutron-initial-networks.png | Bin 0 -> 49415 bytes .../installguide_neutron-initial-networks.svg | 621 ++++++++++++++++++ .../section_neutron-initial-networks.xml | 309 +++++---- 4 files changed, 811 insertions(+), 143 deletions(-) create mode 100644 doc/install-guide/figures/installguide_neutron-initial-networks.png create mode 100644 doc/install-guide/figures/installguide_neutron-initial-networks.svg diff --git a/doc/glossary/glossary-terms.xml b/doc/glossary/glossary-terms.xml index 806aefacdd..0cdcb1cb36 100644 --- a/doc/glossary/glossary-terms.xml +++ b/doc/glossary/glossary-terms.xml @@ -2056,8 +2056,8 @@ gateway - Hardware or software that translates between two - different protocols. + An IP address, typically assigned to a router, that + passes network traffic between different networks. @@ -2534,6 +2534,13 @@ instance. + + interface + + A physical or virtual device that provides connectivity + to another device or medium. + + interface ID @@ -3960,6 +3967,13 @@ instances among available hosts. + + router + + A physical or virtual network device that passes + network traffic between different networks. + + routing key @@ -4396,6 +4410,12 @@ possible. + + subnet + + Logical subdivision of an IP network. + + SUSE Linux Enterprise Server (SLES) diff --git a/doc/install-guide/figures/installguide_neutron-initial-networks.png b/doc/install-guide/figures/installguide_neutron-initial-networks.png new file mode 100644 index 0000000000000000000000000000000000000000..8b40d4c38b34fcad152a8314c56f18000c2531c7 GIT binary patch literal 49415 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 U$<@;lj*lWMtteG0@%-ig0t=nBZU6uP literal 0 HcmV?d00001 diff --git a/doc/install-guide/figures/installguide_neutron-initial-networks.svg b/doc/install-guide/figures/installguide_neutron-initial-networks.svg new file mode 100644 index 0000000000..44b4b7abbe --- /dev/null +++ b/doc/install-guide/figures/installguide_neutron-initial-networks.svg @@ -0,0 +1,621 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + Network Interfaces + + Network Nodenetwork + + External Network Interfaceeth2: (unnumbered) + + Compute Nodecompute1 + + Tenant Virtual Network (demo-net)Subnet: 192.168.1.0/24 (demo-subnet)Gateway: 192.168.1.1 + + External Virtual Network (ext-net)Subnet: 203.0.113.0/24 (ext-subnet)Gateway: 203.0.113.1 + + Instance Tunnel Interfaceeth1: 10.0.1.21/24 + Network Interfaces + + External Physical NetworkSubnet: 203.0.113.0/24 + + + Instance Tunnel Interfaceeth1: 10.0.1.31/24 + Tenant Virtual Router (demo-router) + + Instance (demo1)Subnet: 192.168.1.0/24 (demo-subnet) + + External Physical RouterIP Address: 203.0.113.1 + + + + + + + + + + + Internet + + + External Physical Switch + + diff --git a/doc/install-guide/section_neutron-initial-networks.xml b/doc/install-guide/section_neutron-initial-networks.xml index 6f5347b0ca..9a5b3b2dba 100644 --- a/doc/install-guide/section_neutron-initial-networks.xml +++ b/doc/install-guide/section_neutron-initial-networks.xml @@ -5,153 +5,180 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml" version="5.0"> - Create initial networks + Create initial networks + Before launching your first instance, you must create the + necessary virtual network infrastructure to which the instance will + connect, including the + external network + and + tenant network. + See . After + creating this infrastructure, we recommend that you + verify + connectivity and resolve any issues before proceeding further. + +
+ Initial networks + + + + + +
+
+ External network + The external network typically provides internet access for + your instances. By default, this network only allows internet + access from instances using + Network Address Translation (NAT). You can + enable internet access to individual instances + using a floating IP address and suitable + security group rules. The admin + tenant owns this network because it provides external network + access for multiple tenants. You must also enable sharing to allow + access by those tenants. - In these sections, replace SPECIAL_OPTIONS with any options specific to your OpenStack Networking plug-in choices. See here to check if your plug-in requires any special options. + Perform these commands on the controller node. + To create the external network: - Create the ext-net external network. This - network represents a slice of the outside world. VMs are not directly - linked to this network; instead, they connect to internal networks. - Outgoing traffic is routed by OpenStack Networking to the external - network. Additionally, floating IP addresses from the subnet for - ext-net might be assigned to VMs so that the - external network can contact them. Neutron-based services route the - traffic appropriately. - $ neutron net-create ext-net --router:external=True SPECIAL_OPTIONS + Source the admin tenant credentials: + $ source admin-openrc.sh - Create the associated subnet with the same gateway and - CIDR as EXTERNAL_INTERFACE. It - does not have DHCP because it represents a slice of the - external world: - $ neutron subnet-create ext-net \ - --allocation-pool start=FLOATING_IP_START,end=FLOATING_IP_END \ - --gateway=EXTERNAL_INTERFACE_GATEWAY --enable_dhcp=False \ - EXTERNAL_INTERFACE_CIDR - - - Create one or more initial tenants, for example: - $ keystone tenant-create --name DEMO_TENANT - See for further details. - See for - further details. - - - Create the router attached to the external network. This - router routes traffic to the internal subnets as - appropriate. You can create it under a given tenant: Append - --tenant-id option with a value of - DEMO_TENANT_ID to the - command. - Use the following to quickly get the - DEMO_TENANT tenant-id: - $ keystone tenant-list | grep DEMO_TENANT | awk '{print $2;}' - Then create the router: - $ neutron router-create ext-to-int --tenant-id DEMO_TENANT_ID - - - Connect the router to ext-net by - setting the gateway for the router as - ext-net: - $ neutron router-gateway-set EXT_TO_INT_ID EXT_NET_ID - - - Create an internal network for - DEMO_TENANT (and associated - subnet over an arbitrary internal IP range, such as, - 10.5.5.0/24), and connect it to the - router by setting it as a port: - $ neutron net-create --tenant-id DEMO_TENANT_ID demo-net SPECIAL_OPTIONS -$ neutron subnet-create --tenant-id DEMO_TENANT_ID demo-net 10.5.5.0/24 --gateway 10.5.5.1 -$ neutron router-interface-add EXT_TO_INT_ID DEMO_NET_SUBNET_ID + Create the network: + $ neutron net-create ext-net --shared --router:external=True + + + Like a physical network, a virtual network requires a + subnet assigned to it. The external network + shares the same subnet and gateway associated + with the physical network connected to the external interface on the + network node. You should specify an exclusive slice of this subnet + for router and floating IP addresses to prevent + interference with other devices on the external network. + Replace FLOATING_IP_START and + FLOATING_IP_END with the first and last + IP addresses of the range that you want to allocate for floating IP + addresses. Replace EXTERNAL_NETWORK_CIDR + with the subnet associated with the physical network. Replace + EXTERNAL_NETWORK_GATEWAY with the gateway + associated with the physical network, typically the ".1" IP address. + You should disable DHCP on this subnet because + instances do not connect directly to the external network and floating + IP addresses require manual assignment. + + To create a subnet on the external network: + + Create the subnet: + $ neutron subnet-create ext-net --name ext-subnet \ + --allocation-pool start=FLOATING_IP_START,end=FLOATING_IP_END \ + --disable-dhcp --gateway EXTERNAL_NETWORK_GATEWAY EXTERNAL_NETWORK_CIDR + For example, using 203.0.113.0/24 with + floating IP address range 203.0.113.101 to + 203.0.113.200: + $ neutron subnet-create ext-net --name ext-subnet \ + --allocation-pool start=203.0.113.101,end=203.0.113.200 \ + --disable-dhcp --gateway 203.0.113.1 203.0.113.0/24 -
- Plug-in-specific Neutron network options -
- Open vSwitch Network configuration options -
- GRE tunneling network options - - While this guide currently enables network - namespaces by default, you can disable them if you have - issues or your kernel does not support them. If you - disabled namespaces, you must perform some additional - configuration for the L3 agent. - After you create all the networks, tell the L3 agent - what the external network ID is, as well as the ID of - the router associated with this machine (because you are - not using namespaces, there can be only one router for - each machine). To do this, edit the - /etc/neutron/l3_agent.ini - file: - gateway_external_network_id = EXT_NET_ID -router_id = EXT_TO_INT_ID - Then, restart the L3 agent: - # service neutron-l3-agent restart - - When creating networks, you should use the - options: - --provider:network_type gre --provider:segmentation_id SEG_ID - SEG_ID should be - 2 for the external network, and just - any unique number inside the tunnel range specified before - for any other network. - - These options are not needed beyond the first - network, as OpenStack Networking services automatically - increment the segmentation ID and copy the network type - option for any additional networks. - -
-
- VLAN network options - - Some NICs have Linux drivers that do not handle - VLANs properly. See the - ovs-vlan-bug-workaround and - ovs-vlan-test man pages for more - information. Additionally, you might try turning off - rx-vlan-offload and - tx-vlan-offload by using - ethtool on the - DATA_INTERFACE. Another - potential caveat to VLAN functionality is that VLAN tags - add an additional 4 bytes to the packet size. If your - NICs cannot handle large packets, make sure to set the - MTU to a value that is 4 bytes less than the normal - value on the - DATA_INTERFACE. - If you run OpenStack inside a virtualized - environment (for testing purposes), switching to the - virtio NIC type (or a similar - technology if you are not using KVM/QEMU to run your - host VMs) might solve the issue. - - When creating networks, use these options: - --provider:network_type vlan --provider:physical_network physnet1 --provider:segmentation_id SEG_ID - SEG_ID should be - 2 for the external network, and just - any unique number inside the vlan range specified above - for any other network. - - These options are not needed beyond the first - network, as Neutron automatically increments the - segmentation ID and copies the network type and physical - network options for any additional networks. They are - only needed if you wish to modify those values in any - way. - -
-
-
+
+ Tenant network + The tenant network provides internal network access for instances. + The architecture isolates this type of network from other tenants. The + demo tenant owns this network because it only + provides network access for instances within it. + + Perform these commands on the controller node. + + + To create the tenant network: + + Source the demo tenant credentials: + $ source demo-openrc.sh + + + Create the network: + $ neutron net-create demo-net + + + Like the external network, your tenant network also requires + a subnet attached to it. You can specify any valid subnet because the + architecture isolates tenant networks. Replace + TENANT_NETWORK_CIDR with the subnet + you want to associate with the tenant network. Replace + TENANT_NETWORK_GATEWAY with the gateway you + want to associate with this network, typically the ".1" IP address. By + default, this subnet will use DHCP so your instances can obtain IP + addresses. + + To create a subnet on the tenant network: + + Create the subnet: + $ neutron subnet-create demo-net --name demo-subnet \ + --gateway TENANT_NETWORK_GATEWAY TENANT_NETWORK_CIDR + Example using 192.168.1.0/24: + $ neutron subnet-create demo-net --name demo-subnet \ + --gateway 192.168.1.1 192.168.1.0/24 + + + A virtual router passes network traffic between two or more virtual + networks. Each router requires one or more + interfaces and/or gateways + that provide access to specific networks. In this case, you will create + a router and attach your tenant and external networks to it. + + To create a router on the tenant network and attach the external + and tenant networks to it: + + Create the router: + $ neutron router-create demo-router + + + Attach the router to the demo tenant + subnet: + $ neutron router-interface-add demo-router demo-subnet + + + Attach the router to the external network by setting it as + the gateway: + $ neutron router-gateway-set demo-router ext-net + + +
+
+ Verify connectivity + We recommend that you verify network connectivity and resolve any + issues before proceeding further. Following the external network + subnet example using 203.0.113.0/24, the tenant + router gateway should occupy the lowest IP address in the floating + IP address range, 203.0.113.101. If you configured + your external physical network and virtual networks correctly, you + you should be able to ping this IP address from any + host on your external physical network. + + If you are building your OpenStack nodes as virtual machines, + you must configure the hypervisor to permit promiscuous mode on the + external network. + + + To verify network connectivity: + + Ping the tenant router gateway: + $ ping -c 4 203.0.113.101 +PING 203.0.113.101 (203.0.113.101) 56(84) bytes of data. +64 bytes from 203.0.113.101: icmp_req=1 ttl=64 time=0.619 ms +64 bytes from 203.0.113.101: icmp_req=2 ttl=64 time=0.189 ms +64 bytes from 203.0.113.101: icmp_req=3 ttl=64 time=0.165 ms +64 bytes from 203.0.113.101: icmp_req=4 ttl=64 time=0.216 ms + +--- 203.0.113.101 ping statistics --- +4 packets transmitted, 4 received, 0% packet loss, time 2999ms +rtt min/avg/max/mdev = 0.165/0.297/0.619/0.187 ms + + +
+