Today I'm starting with OpenStack Networking, also known as Neutron, and in a previous life, known as Quantum:
1. What 3 components make up the OpenStack Networking API?
- Network: an isolated layer 2 segment, comparable to VLAN in the physical networking world
- Subnet: A block of v4 or v6 IP addresses and associated configuration state
- Port: A connection point for attaching 1 device, such as the NIC of a virtual server, to a virtual network. Port can also describe the MAC and IP addresses to be used on that port.
2. Does OpenStack allow each tenant (group of users) to have multiple private networks, and allow tenants to choose their own IP addressing scheme, to the point of overlapping addresses with other tenants?
- Yes. This allows customers to build multi-tiered web applications and also allows apps to be migrated to the cloud without changing [private] IP addresses.
3. What is the current set of network plugins as of OpenStack 2014.1 (codename Icehouse)?
- Big Switch Floodlight REST Proxy
- Linux Bridge
- NEC OpenFlow
- Open vSwitch
- VMware NSX
4. What is the main process of an OpenStack Networking server?
- The main process of an OpenStack Networking server is quantum-server, which is a Python daemon that exposes the OpenStack Networking API and passes user requests to the configured OpenStack Networking plugin for further processing. Usually, the plugin requires access to a database for persistent storage.
5. What additional agents are available with OpenStack Networking?
- plugin agent (quantum-*-agent): Runs on each hypervisor, performs local vswitch configuration. Note that some plugins don't require an agent.
- dhcp agent (quantum-dhcp-agent): Provides DHCP service to tenant networks.
- l3 agent (quantum-l3-agent): Provides layer 3/network address translation forwarding. This gives external network access for VMs on tenant networks.
6. How do these agents interact with the main quantum-server process?
- Through RPC (ex. rabbitmq or qpid)
- Through the standard OpenStack Networking API
7. What does OpenStack Networking rely on for authentication and authorization of all API requests?
- OpenStack Identity Project (Keystone)
8. How does OpenStack Compute interact with Openstack Networking?
- OpenStack Compute interacts with OpenStack Networking through calls to its standard API. When creating a VM (virtual machine), nova-compute talks to the OpenStack Networking API to plug each virtual NIC on the VM into a particular network.
9. What are the (up to) 4 physical data center networks included in a standard OpenStack Networking setup?
- Management network: For internal comms between OpenStack components. IPs on this network should only be reachable within the data center.
- Data network: For comms between VMs (virtual machines).
- External network: Provides VMs with Internet access.
- API network: Provides OpenStack APIs to tenants. Should be reachable by anyone on the Internet. May be on the same network as the external network.
10. What three network types can you (or your administrator) choose between?
- VLAN, GRE, and flat
11. How do you view the network namespace (netns) of your network or controller node? (via the command line)
- ip netns [list]
12. How do you interact with each namespace (netns)? (via the command line)
- ip netns exec <namespace> <command>
13. What does each instance need to access the metadata IP address inside a namespace?
- Each instance needs a route for the metadata network that points to the dnsmasq IP address on the same namespaced interface. OpenStack Networking only njects a route if you don't specify a gateway IP in the subnet.
14. If you specify a network type of GRE, what type of tunnel bridge will be created to handle overlay traffic?
15. How do you list the extensions of the system via the command line?
- neutron ext-list -c alias -c name
16. How do you create a network via the command line?
- neutron net-create net1
17. How do you list networks via the command line?
- neutron net-list
18. From the command line, how do you create a network with a network type of local?
- neutron net-create net2 --provider:network-type local
19. How do you create a subnet via the command line?
- neutron subnet-create net1 192.168.2.0/24 --name subnet1
20. Via the command line, how do you create a router?
- neutron router-create router1
21. How do you link the router you just created to the external provider network?
- neutron router-gateway-set ROUTER NETWORK
- neutron router-interface-add ROUTER SUBNET
- neutron port-create net1 --fixed-ip ip_address=192.168.2.40
24. What happens if you create a port without specifying an IP?
- The system will allocate one IP if you haven't specified one.
25. How do you query ports with specific fixed IPs?
- neutron port-list --fixed-ips ip_address=192.168.2.2 ip_address=192.168.2.40