TripleO Isolated Network Architecture

I am a Core developer on the OpenStack TripleO project, the deployment mechanism that allows an operator to remotely deploy and configure the operating system and OpenStack software on a set of unconfigured hosts. I designed the architecture to separate the control and data planes, and to separate tenant network traffic from system traffic. Isolating the administrative traffic makes it easier to meet security guidelines for PCI-DSS, SOX, HIPPA, and other governance frameworks.

I’ve developed many incremental improvements to the OpenStack deployment networking. In OpenStack Mitaka, I added IPv6 networking. In the Pike release I added composable networks (custom routed networks). In Queens, my team and I implemented provisioning hosts across distributed routed networks. In Rocky, we are tying all these together and adding enhanced support for deploying custom environments for Kubernetes, and enabling edge computing topologies.


I am the de facto maintainer of os-net-config. This utility configures host-level networking based on a YAML or JSON template, and is utilized in TripleO. This makes it possible to create a template for networking that will apply to all hosts within a role. Configuration of Ethernet or InfiniBand interfaces, VLANs, bonds, teams, and bridges are supported, as well as DPDK and SR-IOV. Bonding or bridging may be done with either Open vSwitch or the Linux kernel, and some third-party software-defined networking drivers are supported, including Big Switch and Nuage.

Downloadable Software:

Software which I have written and made publicly available. All software is released under various forms of the Creative Commons license, so read the headers or license.txt carefully. The extension “_.txt” has been added to the end of scripts so that they will display in the browser; remove this suffix when saving the files.

This is a fairly complete implementation of an object-oriented Hello World script for Python. It demonstrates basic handling of command-line parameters, classes, and methods. It doesn’t do much, but it should be an obvious template for creating the most basic of Python scripts.

Python Threaded Ping. This is a demonstration of using threads in Python. It is actually a useful script, if one needs to ping a large number of hosts and print the results in an easily parseable format. Mostly, though, it shows how to build a thread pool that will wait for each thread to finish before creating a new task handler.

Software-Related Articles:

Better Python Programming Through vim

A configuration for GVIM and an assortment of plugins which improve Python productivity in vim and GVIM. This article shows how to add syntax highlighting, code autocompletion, auto-indentation, and useful keyboard shortcuts to vim or GVIM.