Categories
Containers OpenStack OVS/OVN

Debugging ML2/OVN database discrepancies

Last week I had a customer with an issue in an OpenStack deployment running with ML2/OVN. Randomly, when creating a virtual machine, the Nova server returned a timeout during the VIF plugin. It took us some time to discover that the IP address assigned to the new port was already assigned to a rogue Logical_Switch_Port […]

Categories
L3/routing OpenStack OVS/OVN

Using a tunnelled network as router gateway in Neutron ML2/OVN

One symptom of narcissism is to make self-referring quotes; thus this is how I’ll start this post. Previously in this fantastic blog, we talked about the high availability router gateway ports in OVN. In this post we briefly commented that the gateway Logical Router Ports are scheduled across the gateway chassis, using any of the […]

Categories
OpenStack OVS/OVN QoS

Tunnelled networks support in Neutron Placement API report

Long time ago (only one year after I started “playing” with OpenStack), Miguel Angel Ajo reported a RFE in Launchpad: strict minimum bandwidth support. After some releases, we finally added this functionality to OpenStack Neutron and now we are able to model and report to Placement API the available bandwidth of the physical interfaces connected […]

Categories
OpenStack OVS/OVN QoS

Neutron ML2/OVN and Placement API (minimum bandwidth scheduling)

Do you know how Nova knows where to spawn a virtual machine? With the Nova scheduler service. This service allows to define a set of filters that should match with the host resources in order to define and spawn the virtual machines. Since Newton (a log time ago…) a new resource tracker was introduced: the […]

Categories
OpenStack OVS/OVN

ML2/OVN mechanism driver and the “secret agents”

Today’s topic is related to the OVN backend driver in OpenStack Neutron. This is the last in-tree ML2 driver added, initially deployed as an external plugin. From the ovn.org website, “OVN (Open Virtual Network) is a series of daemons for the Open vSwitch that translate virtual network configurations into OpenFlow”. OVN is based on Open […]

Categories
L3/routing OpenStack

Routing two external networks

Welcome back! Unlike other posts in this blog, used to advertise my own achievements in OpenStack (really?, how you dare), this post will help you to understand how can you connect one virtual machine to two external networks. Of course, avoiding the direct approach of directly creating two ports on each network. No, let’s do […]

Categories
High availability (HA) OpenStack OVS/OVN

High availability router gateway ports in OVN

Today’s post is… a bit dense, I will admit. And to make things a bit more complex, I’m going to talk about the external ports too but for a reason. Actually this post comes from a bug (no way!) that claims that the external ports are usually bound to chassis different to the router gateway […]

Categories
DHCP OpenStack

Reduce the Neutron DHCP agent redundancy

How long have you been waiting when the DHCP agent service was restarted? If you raised your hand and shouted “too long!”, this is your post. OpenStack Neutron DHCP agent. From the Red Hat OSP16 documentation, “the OpenStack Networking DHCP agent manages the network namespaces that are spawned for each project network to act as […]

Categories
Database OpenStack

Neutron’s quota driver

Some months ago I implemented a new Neutron’s quota driver. The aim of this new driver, as described in the Launchpad bug 1926787 and Bugzilla bug 1955661, was to avoid the permanent database lock contention status generated when using the Neutron’s quota engine. Why that was happening? Follow me… What do we need to count? […]

Categories
OpenStack RabbitMQ

Debugging RabbitMQ issues in OpenStack

Let’s start this new post entry in “professor” mode, doing a statement: “AMQP is the messaging technology chosen by the OpenStack cloud“. This link refers to Nova but is valid for any other OpenStack project. AMQP is used to facilitate the inter process communication. For example, if the Neutron DHCP agent needs to retrieve some […]