Home / OpenStack

Bonding network interfaces for redundancy-Openstack

Rating: 5.0Blog-star
Views: 3163
by Ravindra Savaram
Last modified: March 29th 2021

The reference architecture includes bonded network interfaces, which use multiple physical network interfaces for better redundancy and throughput. Running multiple services across multiple machines and implementing appropriate HA methods ensure a high degree of tolerance to failure within our environment, but if it’s the physical network that fails and not the service, outages will occur if traffic cannot flow to and from that service. Adding in NIC bonding (also known as teaming or link aggregation) can help alleviate these issues by ensuring traffic flows through diverse routes and switches as appropriate.

Network Interface Bonding - Openstack

NIC Bonding 

NIC bonding requires co-ordination between system administrators and the network administrators, who are responsible for the switches. There are various methods available for NIC bonding. The method presented here is the active-passive mode, which describes that traffic will normally flow through a single switch, leaving the other teamed NIC to take no traffic until it is required.

Setting up NIC bonding in Ubuntu 12.04 requires an extra package installation to allow bonding.

If you would like to Enrich your career with an OpenStack certified professional, then visit Mindmajix - A Global online training platform: “Openstack Training Online”  Course.  This course will help you to achieve excellence in this domain.

  • We install this in the usual manner, as follows:
sudo apt-get update

sudo apt-get -y install ifenslave

[ Related Article: What is Openstack ]

  • With this installed, we simply configure networking as normal in Ubuntu but add in the required elements for bonding. To do this, we edit the /etc/network/interfaces file with the following contents (for active-passive mode bonding)—here we’re bonding eth1 and eth2 to give us bond0 with an address of 172.16.0.111:
auto eth1
iface eth1 inet manual bond-master bond0 bond-primary eth1 eth2
auto eth2
iface eth2 inet manual bond-master bond0 bond-primary eth1 eth2
auto bond0
iface bond0 inet static address 172.16.0.111 netmask 255.255.0.0 network 172.16.0.0 broadcast 172.16.255.255 bond-slaves none bond-mode 1
bond-miimon 100
  • To ensure that the correct bonding mode is used, we add the following contents into /etc/modprobe.d/bonding.conf which describes an active/passive bond (mode=1) with a monitoring interval of 100 msec:

[ Related Article: Openstack Interview Questions for Beginners ]

alias bond0 bonding
options bonding mode=1 miimon=100
  • We can now restart our networking, which in turn will bring up our bonded interface with the required IP address, as specified:
sudo service networking restart

Bonding Network Interfaces 

Bonding network interfaces in Ubuntu to cater to switch failure is relatively straightforward, providing co-ordination with how the switches are set up and configured. With different paths to different switches configured, and each network interface going to separate switches, a high level of fault tolerance to network-level events such as a switch failure can be achieved.

To do this, we simply configure our bonding in the traditional /etc/network/interfaces file under Ubuntu, but we specify which NICs are teamed with which bonded interface. Each bonded interface configured has at least one unique pair of interfaces assigned to it, and then we configure that bonded interface, bond0, with the usual IP address, netmask, and so on. We tag a few options specifically to notify Ubuntu that this is a bonded interface of a particular model.

To ensure the bonding module that gets loaded as part of the kernel has the right mode assigned to it, we configure the module in /etc/modprobe.d/bonding.conf. When the bonding module loads along with the network interface, we end up with a server that is able to withstand isolated switch failures.

About Author

author
NameRavindra Savaram
Author Bio

Ravindra Savaram is a Content Lead at Mindmajix.com. His passion lies in writing articles on the most popular IT platforms including Machine learning, DevOps, Data Science, Artificial Intelligence, RPA, Deep Learning, and so on. You can stay up to date on all these technologies by following him on LinkedIn and Twitter.