An OpenStack cloud has a lot of virtual features. Almost every piece of hardware has been virtualized and this makes me think that a cloud is a very "soft" system.
Hubs, switches, routers, interfaces/ports, line cards, gateways, servers, firewalls, wires/cables/bus, motherboards, keyboard, mouse, memory/RAM, processor/CPU, hard drive/ROM, PCI slots, power switches -- All of these have a virtualized version in an OpenStack cloud! They are no longer things that we un-box and install. They are all virtual, software-based, Pythonic Linux processes!
Luckily, they have not virtualized CPU heatsinks, headphones, LCD projectors, power source, antennas, server chassis, laptop cases, web cameras and DVD/Blu-ray players yet!
As much as companies in the fields of software, networking, cloud, SDN, NFV and telecom are trying very hard to virtualize everything, I see that there is also an equal effort to use great hardware to replace virtualization in the cloud industry.
In today's cloud and data center industry, there is clearly a great amount of competition between software and hardware, between virtualization and bare metal. "Bare metal" are the buzzwords and they have become very famous cloud jargons. No more "bare" software! ![](/legacyfs/online/emoticons/wink.png)
Below are a few relevant diagrams.
![pic1.png](/legacyfs/online/fusion/92601_pic1.png)
![pic2.png](/legacyfs/online/fusion/92602_pic2.png)
![pic3.png](/legacyfs/online/fusion/92603_pic3.png)
"It is virtually impossible to virtualize everything". Right ? There is clearly a war between virtualization and bare metal. We all know who wins when there is a war between software and hardware.
Below are the different bare metal technologies that replace virtualized features in an OpenStack cloud. The advantages of bare metal technologies over virtualized features are:
- High performance
- Very high scalability
- High throughput
- Large number of parallel processes
- Very high processing speed
- 100% Dedicated resources (CPU, memory, cache, hard disk, networking ports)
- OpenStack Ironic provisions a bare metal physical server that replaces a virtual machine.
- SR-IOV (supported by Intel and Mellanox cards) and Cisco's VM-FEX extend a physical network adapter directly to a virtual machine bypassing the layer-2 virtual switch (Open vSwitch or Linux Bridge).
- Cisco's ASR 1000 Series Router (ASR1K) plugin can be used to do layer-3 forwarding in OpenStack Neutron and replace Neutron's virtual router (that uses neutron-L3-agent and NAT software) with Cisco's ASR1k.
- Cisco's CPNR (Cisco Prime Network Registrar) plugin can be used with Neutron to replace dnsmasq (virtual DHCP and DNS server in Neutron) with a highly-scalable physical DHCP and DNS enterprise server. The CPNR Neutron plugin has been open-sourced by Cisco on GitHub.
- Cisco's Nexus driver for Neutron can be used to replace neutron's virtual router and virtual layer-2 switch and do layer-2 switching and layer-3 forwarding on a physical Nexus switch (N3k, N5k, N6k, N7k and N9k).
- Cisco's APIC plugin for Neutron can be used to replace neutron's virtual router and virtual layer-2 switch and do layer-2 switching and layer-3 forwarding on Cisco's physical ACI (Application Centric Infrastructure) fabric that uses UCS and Nexus 9000.
- Linux containers and Docker containers can be created on a bare metal physical server with no hypervisor, no virtual machine and no virtual layer-2 switch.
- Neutron's provider networks can be used to do layer-2 switching and layer-3 forwarding on a physical switch and a physical router respectively, and thereby bypassing Neutron's virtual gateway, virtual router and the virtual layer-2 switch.
- NAT hardware acceleration can be used to replace Neutron's NAT software and iptables with a physical layer-3 device.
- SDN and OpenDaylight can be integrated with OpenStack to "virtually" use any bare metal physical device that supports REST/OpenFlow in the cloud.
As far as NFV (Network Functions Virtualization) is concerned, using bare metal technologies is completely the opposite of NFV ("un-NFV" or "NFun-V" ?
).
Below is a table that shows what is "in" and what is "out" when we "un-virtualize" the cloud.
OUT | IN |
---|
Virtual machine | Ironic provisioning a bare metal server |
Virtual layer-2 switch (Open vSwitch or Linux Bridge) | SR-IOV |
Virtual layer-2 switch (Open vSwitch or Linux Bridge) | VM-FEX |
Neutron's virtual router (neutron-L3-agent and NAT software) | Cisco's ASR 1000 Series Router (ASR1K) plugin |
Neutron's virtual DHCP and DNS server (dnsmasq) | Cisco's CPNR (Cisco Prime Network Registrar) plugin |
Neutron virtual router and virtual layer-2 switch | Cisco's Nexus driver for Neutron |
Neutron virtual router and virtual layer-2 switch | Cisco ACI fabric (UCS and Nexus 9000) |
Containers on virtual machine using hypervisor and virtual layer-2 switch | Containers on bare metal physical server |
Neutron's virtual router and virtual gateway | Neutron's provider networks |
Neutron's NAT software and iptables | NAT hardware acceleration |
Low performance, reduced scale limit, low throughput and slow processing | High performance, high scale limit, high throughput and fast processing |
Shared resources (CPU, memory, cache, hard disk, networking ports) | 100% dedicated resources (CPU, memory, cache, hard disk, networking ports) |
Cost-effective cloud | Expensive cloud |
Small network topology | Large network topology |
Cloud that is built quickly | Cloud that needs more time to build |
Minimum hardware expertise | Lot of hardware expertise |
Less hardware to maintain | More hardware to install and maintain |
Less power usage | More power usage |
Environmentally friendly | Not environmentally friendly
|
Money | Great hardware |
As we clearly see in the the table above, using bare metal technologies to un-virtualize a cloud also has some disadvantages.
Do let me know if you virtualize or un-virtualize your cloud in the comments below!