OpenStack Networking
OpenStack Networking
for OpenStack
In today's data centers, networks are composed of more devices than ever before.
Servers, switches, routers, storage systems, and security appliances now exist
as virtual machines and virtual network appliances. These devices place a large
strain on traditional network management systems, as they are unable to provide
a scalable, automated approach to managing next-generation networks. Users now
expect more control and flexibility of the infrastructure with quicker provisioning,
all of which OpenStack promises to deliver.
This chapter will introduce many features that OpenStack Networking provides
as well as various network architectures supported by OpenStack.
Neutron, the code name of OpenStack Networking, is a standalone service that can
be installed independently of other OpenStack services such as Nova (compute
service), Glance (image service), Keystone (identity service), Cinder (block storage),
and Horizon (dashboard). OpenStack Networking services can be split among
multiple hosts to provide resiliency and redundancy, or they can be configured to
operate on a single node.
[1]
www.it-ebooks.info
Preparing the Network for OpenStack
Like many other OpenStack services, Neutron requires access to a database for
persistent storage of the network configuration.
Switching
A virtual switch is defined as a software application that connects virtual machines
to virtual networks at layer 2, or the data-link layer, of the OSI model. Neutron
supports multiple virtual switching platforms, including Linux bridges provided by
the bridge kernel module and Open vSwitch. Open vSwitch, also known as OVS,
is an open source virtual switch that supports standard management interfaces and
protocols, including NetFlow, SPAN, RSPAN, LACP, and 802.1q VLAN tagging.
However, many of these features are not exposed to the user through the OpenStack
API. In addition to VLAN tagging, users can build overlay networks in software
using L2-in-L3 tunneling protocols, such as GRE or VXLAN. Open vSwitch can be
used to facilitate communication between instances and devices outside the control
of OpenStack, which include hardware switches, network firewalls, storage devices,
dedicated servers, and more. Additional information on the use of Linux bridges
and Open vSwitch as switching platforms for OpenStack can be found in Chapter 4,
Building a Virtual Switching Infrastructure.
[2]
www.it-ebooks.info
Chapter 1
Routing
OpenStack Networking provides routing and NAT capabilities through the use of
IP forwarding, iptables, and network namespaces. Inside a network namespace, we
can find sockets, bound ports, and interfaces that were created in the namespace.
Each network namespace has its own routing table, interfaces, and iptables processes
that provide filtering and network address translation. By leveraging network
namespaces to separate networks, there is no concern of overlapping subnets
between networks created by tenants. Configuring a router within Neutron enables
instances to interact and communicate with outside networks or other networks
in the cloud. Router namespaces are also leveraged by the advanced networking
services Firewall as a Service and Virtual Private Network as a Service, which
will be discussed later in this book. More information on routing within OpenStack
can be found in Chapter 7, Creating Standalone Routers with Neutron; Chapter 8, Router
Redundancy Using VRRP; and Chapter 9, Distributed Virtual Routers.
Load balancing
First introduced in the Grizzly release of OpenStack, Load Balancing as a Service,
also known as LBaaS, provides users with the ability to distribute client requests
across multiple instances or servers. Users can create monitors, set connection limits,
and apply persistence profiles to traffic traversing a virtual load balancer. The Kilo
release of OpenStack introduced version 2 of the LBaaS API in an experimental
status. The v2 API is a vast improvement over version 1, and by the Liberty release,
it should be stable. OpenStack Networking is equipped with a plugin for LBaaS that
utilizes HAProxy in the open source reference implementation. More information on
the use of load balancers within Neutron can be found in Chapter 10, Load Balancing
Traffic to Instances.
Firewalling
In the current release of OpenStack, there are two methods of providing security to
instances: security groups and firewalls. When using security groups, instances are
placed into groups that share common functionality and rule sets. Iptables rules are
configured on compute nodes and filter traffic in and out of Linux bridges connected
to each instance. In a reference implementation, when using virtual firewalls
provided by Firewall as a Service, also known as FWaaS, security is handled at the
edge of the network on a Neutron router rather than at the compute node. Through
the Liberty release of OpenStack, the FWaaS API remains in an experimental status
with no guaranteed backward compatibility in future releases. More information
on securing instances can be found in Chapter 6, Managing Security Groups, and
Chapter 11, Firewall as a Service.
[3]
www.it-ebooks.info
Preparing the Network for OpenStack
OpenStack Networking can serve many roles within different clouds but is better at
some technologies than others. The purpose of the cloud itself, along with security
requirements and available hardware, will play a big part in determining the
architecture of the network and OpenStack's role in the network.
[4]
www.it-ebooks.info
Chapter 1
• Controller node
• Network node
• Compute node
Before the installation of OpenStack can begin, the physical network infrastructure
must be configured to support the networks needed for an operational cloud. In
the following diagram, I have highlighted the area of responsibility for the network
administrator:
Figure 1.1
[5]
www.it-ebooks.info