This document discusses portgroups support in Ironic to provide link aggregation and fault tolerance capabilities. It describes the need for bonded interfaces to achieve high bandwidth and reliability. Key topics covered include Linux bonding driver modes, switch-side LAG configuration, creating port groups in Ironic, and associating ports. A demo shows static portgroups working in flat and multi-tenant network scenarios. Future work may allow dynamic portgroup configuration and additional bonding modes.
DSPy a system for AI to Write Prompts and Do Fine Tuning
Portgroups support and fault tolerance in Ironic
1. Portgroups support in Ironic
25 Feb 2017
Nguyen Hung Phuong (email: phuongnh@vn.fujitsu.com)
Luong Anh Tuan (email: tuanla@vn.fujitsu.com)
Fujitsu Vietnam Limited
Copyright 2017 Fujitsu Vietnam Limited
2. Agenda
• Ironic Neutron Integration
• Portgroups support in Ironic
• Demo
• Future work for portgroups
• Q&A
Copyright 2017 Fujitsu Vietnam Limited1
3. Agenda
• Ironic Neutron Integration
• Portgroups support in Ironic
• Demo
• Future work for portgroups
• Q&A
Copyright 2017 Fujitsu Vietnam Limited2
4. Ironic Neutron Integration - Ironic introduction
OpenStack Ironic is a set of projects that perform bare metal provisioning and
related activities.
Ironic is a virtualization driver for Nova like KVM, XEN, …
Ironic virtualization dirver starts a Nova instance in a real machine instead of virtual ones.
Copyright 2017 Fujitsu Vietnam Limited3
5. Ironic Neutron Integration - Ironic introduction
Why do we need Ironic?
In some cases, user has some requirements:
1. Performance-sensitive applications that want to maximize efficiency, reduce overhead from virtualization,
and avoid CPU, Network, or IO fluctuations from neighboring instances.
2. Security-sensitive applications, or applications with regulatory compliance requirements that can not be run
on shared hardware.
3. Applications whose licensing costs depend on # of CPUs on the Host, regardless of whether virtualization is
in play.
4. Applications that need direct IO access to specialized PCI devices which are not yet virtualizable.
Why do user need bare metal service?
• Mission-critical legacy applications that aren’t designed for cloud architectures
• Real-time and “near real-time” systems
• HPC (High-Performance computing)
• BigData and related Data Science and Machine Learning projects
• Tasks accessing devices and resources that cannot be virtualized
Copyright 2017 Fujitsu Vietnam Limited4
6. Ironic Neutron Integration - Ironic introduction
Use Cases
1. An Enterprise user wants to use bare metal machine to get consistent performance not affected by
another machine, nor impacted by hypervisor.
2. An Enterprise user wants to have a secure and clean bare metal machine deployed no matter who
used it before.
3. An Enterprise user wants to create networks elastically so he/she can use network like I have these
networks not affected by other companies.
4. An Enterprise user wants to back up internal disk of bare metal and create a snapshot. This can be
backed up to an external storage managed by Cinder.
5. An Enterprise user wants to use bare metal machine integrated with block storage service so that I
can use external storage service.
Copyright 2017 Fujitsu Vietnam Limited5
7. Ironic Neutron Integration - Ironic introduction
Use Cases (cont...)
6. An Enterprise user wants to see bare metal machine from console log and operate from console so
that I can analyze problems at booting time and so on.
7. An Enterprise user wants to continue my operation immediately when a bare metal machine fails
without any manual operations such as switchover. Similar to HA VM user story, The user should
not have to design the fail-over mechanism themselves. The system should monitor and detect
bare metal machine failure and automatically fail-over to a spare bare metal machine.
8. An Enterprise user wants to use a bare metal machine with the network services such as FWaaS,
LBaaS, Security Group, VPNaaS, and connection to VMs in virtual network(VXLAN) in the same
manner of VMs.
What do Ironic provide?
Ironic brings the advantages of both bare metal and virtualization: performance and manageability.
Copyright 2017 Fujitsu Vietnam Limited6
8. Ironic Neutron Integration - Ironic overview
Ironic provides bare metal provisioning service in a very similar fashion in
comparison to other Nova hypervisors.
Horizon
Nova
Hypervisor
VM VM VM
Horizon
Nova
Ironic
BM BM BM
Copyright 2017 Fujitsu Vietnam Limited
CLI CLI
7
9. Ironic Neutron Integration
Ironic used to provision servers only on flat networks, no network isolation
between tenants. Ironic Neutron integration will allow end users to utilize a
baremetal instance in the same isolated (e.g. VLAN, VXLAN) networks as their
virtual machines are.
Ironic Neutron integration also provide Link aggressive function(Portgroup) in
Ironic.
Currently Ironic has supported multi tenant with VLAN networks from Newton
cycle.
http://specs.openstack.org/openstack/ironic-specs/specs/approved/ironic-ml2-
integration.html
Copyright 2017 Fujitsu Vietnam Limited8
10. Agenda
• Ironic Neutron Integration
• Portgroups support in Ironic
• Demo
• Future work for portgroups
• Q&A
Copyright 2017 Fujitsu Vietnam Limited9
11. Portgroups support in Ironic - Story
In today’s enterprise networks,
networking is business critical.
Servers require durable and high-
speed network connectivity. Some
applications like database require
high-speed networking. Allowing
customers to increase bandwidth
is the key to protect customer
from bottlenecks as traffic
demand peaks on the network.
Copyright 2017 Fujitsu Vietnam Limited10
12. Portgroups support in Ironic - Story
If your server’s NIC got failure, it can result in a shutdown of your business,
impacting employee productivity, revenues, and brand reputation. Lost data
can also result in contract penalties and stiff fines for non-compliance. Have a
solution for this issue will bring you peace of mind. Let professionals make
the hardware replacement later at suitable time and you will save a lot of
your time and mind. You will enjoy many things more if you have less things
to worry about.
Copyright 2017 Fujitsu Vietnam Limited
Baremetal node
BMC
NIC-1 NIC-2
FAILOVER
0% OF TRAFIC
NORMAL
100% OF TRAFIC
Normal mode
Baremetal node
BMC
NIC-1 NIC-2
NORMAL
0% OF TRAFIC
NIC failure
FAILOVER
100% OF TRAFIC
Port-1 Port-2 Port-1 Port-2
11
13. Portgroups support in Ironic
Ironic currently supports only single NIC deployments. Single NIC architecture
doesn't allow to have good fault tolerance and aggregate link speed capabilities.
We need to have a support of bonded interfaces to reach good fault tolerance and
allow aggregate link speeds.
RFE document:
https://bugs.launchpad.net/ironic/+bug/1618754
Trello card
https://trello.com/c/KvVjeK5j/29-portgroups-support
Deployment guide
https://docs.openstack.org/developer/ironic/deploy/portgroups.html
Copyright 2017 Fujitsu Vietnam Limited12
14. Portgroups support in Ironic
LAG (Link Aggregation Group) & LACP (Link Aggregation Control Protocol)
Link Aggregation Groups (LAG) and Link Aggregation Control Protocol (LACP) are methods to provide
more than one link between two switches and automate its configuration and maintenance,
respectively.
LAG – Link Aggregation Groups, is a process of
inter-connecting two switches with two or more
links between them (or between a switch and a server),
so that multiple links are combined into one bigger
virtual link that can carry a higher (combined)
bandwidth. All these multiple links participating
in a Link Aggregation Group act like a single large
(virtual) link.
Copyright 2017 Fujitsu Vietnam Limited13
15. Portgroups support in Ironic
LAG (Link Aggregation Group) & LACP (Link Aggregation Control Protocol)
LACP – Link Aggregation Control Protocol
LACP is similar to LAG, where multiple ports/links between two switches combine to provide higher
bandwidth links between them. Additionally, ports that are LACP enabled can automatically configure
themselves into trunk groups, without any manual configuration/intervention.
The main purpose of LACP is to automatically add/delete individual links to the aggregate bundle, while
adding new links and also after recovering from link failures. LACP can monitor to verify if all the links
are connected to the right group. Basically, LACP helps automate the configuration and maintenance of
LAG’s.
Copyright 2017 Fujitsu Vietnam Limited14
16. Portgroups support in Ironic
Linux bonding driver
Round-robin (balance-rr) Transmit network packets in sequential order from the first available
network interface (NIC) slave through the last. This mode provides load balancing and fault
tolerance.
Active-backup (active-backup) Only one NIC slave in the bond is active. A different slave becomes
active if, and only if, the active slave fails. The single logical bonded interface's MAC address is
externally visible on only one NIC (port) to avoid distortion in the network switch. This mode
provides fault tolerance.
Broadcast (broadcast) Transmit network packets on all slave network interfaces. This mode provides
fault tolerance.
Copyright 2017 Fujitsu Vietnam Limited15
17. Portgroups support in Ironic
Linux bonding driver
802.3ad: This mode provides load balancing and fault tolerance. It creates an aggregation group that
shares the same speed and duplex settings. It utilizes all slave ethernet interfaces in the active
aggregator, it is based on the 802.3ad specification.
Copyright 2017 Fujitsu Vietnam Limited16
18. Portgroups support in Ironic
Deployment
Switch-side configuration: needs to be done manually, and the mode and properties configured on
the switch have to correspond to the mode and properties that will be configured on the ironic side.
Port groups configuration in the Bare Metal service:
• Creating a port group.
• Associate ports with the created port group
Boot an instance (or node directly, in case of using standalone ironic) providing an image that has
cloud-init version 0.7.7 or later and supports bonding.
Testing.
Copyright 2017 Fujitsu Vietnam Limited17
19. Portgroups support in Ironic
Switch-side configuration
Switch-side configuration: Needs to be done manually, and the
mode and properties configured on the switch have to
correspond to the mode and properties that will be configured
on the ironic side.
Show information 4 ports connect to Switch:
• port1.0.3 <->OpenStack Server
• port1.0.4 <-> iRMC port
• port1.0.11 <-> NIC MAC: 90:1b:0e:0f:ff:60
• port1.0.12 <-> NIC MAC: 90:1b:0e:10:00:4d
Configuration channel-group for port1.0.11 and port1.0.12
Copyright 2017 Fujitsu Vietnam Limited
channel-group
18
20. Portgroups support in Ironic
Switch-side configuration
Setup channel-group po1
Show running-config
Copyright 2017 Fujitsu Vietnam Limited
channel-group po1
19
21. Portgroups support in Ironic
Create Ironic Node
./icreate_pg.sh
Copyright 2017 Fujitsu Vietnam Limited20
22. Portgroups support in Ironic
21
Deployment
Boot an instance (or node directly, in case of using standalone ironic) providing an image that has
cloud-init version 0.7.7 or later and supports bonding.
Copyright 2017 Fujitsu Vietnam Limited
23. Agenda
• Ironic Neutron Integration
• Portgroups support in Ironic
• Demo
• Future work for portgroups
• Q&A
Copyright 2017 Fujitsu Vietnam Limited22
24. Demo
Ubuntu Server 14.04: Setting up NIC Teaming for load balancing and high
availability
https://www.youtube.com/watch?v=Gimrwh_NQKI
Ubuntu - Configure link aggregation ( LACP )
https://www.youtube.com/watch?v=v0me2svkiIg
Link aggregation between Cisco and Ubuntu
https://www.youtube.com/watch?v=oafGOr36sJU
Copyright 2017 Fujitsu Vietnam Limited23
25. Demo
Demo that shows how static portgroups works at the moment:
Flat network scenario:
https://youtu.be/vBlH0ie6Lm4
• Switch configuration: 1:11 - 2:20
• Boot an instance: 2:34
• Testing: 8:10 – 9:06
Multi-tenant network scenario:
https://youtu.be/Kk5Cc_K1tV8
Copyright 2017 Fujitsu Vietnam Limited24
26. Agenda
• Ironic Neutron Integration
• Portgroups support in Ironic
• Demo
• Future work for portgroups
• Q&A
Copyright 2017 Fujitsu Vietnam Limited25
27. Future work for portgroups
User may pass the port group mode and properties to ML2 drivers so that they can do the
configuration automatically (Dynamic portgroups support).
https://review.openstack.org/#/c/415003
Additional Bonding mode.
Ironic devstack portgroups support.
Tempest tests for portgroups
Copyright 2017 Fujitsu Vietnam Limited26
28. Agenda
• Ironic Neutron Integration
• Portgroups support in Ironic
• Demo
• Future work for portgroups
• Q&A
Copyright 2017 Fujitsu Vietnam Limited27
LACP is a dynamic protocol. It is sufficient if multiple ports on various devices are LACP enabled, once. LACP is a standard and hence LACP can be implemented between multi-vendor switches. LACP should be enabled on the trunk ports initially in order for both the participating switches/devices that support the standard, to use it. If there are more links (between two devices) than what is supported by the vendor for LACP, the additional links are placed in stand-by mode and activated automatically when a link fails.