Introduction

Purpose:

CloudStack provides rich set of L4-L7 network services like firewall, load balancing, Source NAT, Static NAT and port forwarding to isolated networks in the advanced zone. For public cloud scenarios, CloudStack can provision a dedicated VR (Virtual Router) providing L4-L7 services for the isolated networks of the tenants. Quadrant 1 in below model is typically how public cloud network services are modeled. In contrast to public clouds, in enterprise/private clouds it is not uncommon to expect hardware appliances like firewall and load balancers devices to provide L4-L7 network services. Also in enterprise cloud environment there is lesser need for isolation, so its possible in a simplest of deployment a single shared network can be used by multiple accounts. There is need for CloudStack to be able to provide network services for deployments that map to quadrant 3, i.e. shared networks using physical LB and FW appliances for network services.

                                                  

In CloudStack shared networks can be created in both advanced zone and basic zone. In basic zone, only one shared network can be created. CloudStack provides Static NAT (with EIP) and LB (with ELB) network services (along with DNS, DHCP, IPAM) in shared network in basic zone. In advanced zone, admin can create one or more shared networks and make them available to the users. But for the shared networks in advanced zone only DNS, DHCP and IPAM services is provided by CloudStack.

This proposal is to enable Firewall, NAT and load balancing network services in the shared networks that gets created in the advanced zone. So with the functionality cloud admins shall have the ability to

  1. create shared network in basic zone with EIP, ELB, security group, DNS, DHCP, IPAM services  
  2. create shared networks in advanced zone, with only DNS, DHCP, IPAM services
  3. create shared network in advanced zone with LB, FW, NAT, DNS, DHCP and IPAM services.

Purpose of this document is provide functional specification to enable L4-L7 services in shared network created in advanced zone  (#3 in above listing). Bug CLOUDSTACK-312 is opened to track this.

Usecase:

1) An enterprise admin would like to setup a private cloud for his enterprise where multiple divisions can self-service creating new VM instances and providing internet connectivity to their VM's. He wish to keep simple network deployment model with out the need of configuring multiple VLAN's as there is no need to isolate the traffic of individual divisions. He creates a deployment with CloudStack and creates a shared network and make the network available to all divisions. He provides no further network offering with which users can create additional networks. Admin set's up FW and LB device in two-arm mode as shown in below diagram. Individual divisions then start creating VM's. They can self service their networking needs by acquiring public IP and enable LB, FW, NAT service to their VM's.

                                                     

2) An enterprise admin would like to setup a private cloud for his enterprise where multiple divisions can self-service creating new VM instances and providing internet connectivity to their VM's. He would like to ensure that each division gets a isolated network and internet connectivity as well. He creates a deployment with CloudStack and creates a enterprise level shared network and make the network available to all divisions. He also creates a network offering with isolated guest traffic type, with no NAT, LB and firewall services and makes the network offering available to all divisions. Admin set's up FW and LB device in two-arm mode as shown in below diagram. Individual divisions starts creating their fenced isolated networks. For the VM's that need external connectivity VM's are setup dual homed in isolated network and shared enterprise network. Each division can self service their networking needs by acquiring public IP and enable LB, FW, NAT service to their VM's.

                                                      

In both the use cases CloudStack can orchestrate configuring firewall, nat, lb rules on the FW and LB devices and provide the firewall and load-balancing services to the VM's on the shared network. 

Glossary:

L4-L7 services: In this document, L4-L7 services would refer to any of the load balancing, source NAT, static NAT, port forwarding, firewall network services that are provided by CloudStack

shared network: though a 'shared network' can be created in the basic zone and the advanced zone, in this document shared network generally refers to shared network in the advanced zone unless its explicitly called out as shared network in basic zone.

Scope:

Functional Specification

Services to be supported in shared networks in advanced zone:

Operation flow of enabling L4-L7 services in shared network:

Admin (shared networks can only be created by Admin account) goes through following operations to enable network services in the shared networks.

An account in the deployment goes through following operations to use network services for the VM's owned by him which are on the shared network.

API Changes:

Shared Network life cycle changes:

Following sections specify the changes that shall be done at each stage off shared network lifecycle with LB, PF, NAT, Firewall services in advanced zone.

Upgrade:

On upgrade, existing shared network will continue to provide DNS, DHCP, IPAM services only in advanced zone. Only the newly created shared networks in the advanced zone L4-L7 services can be enabled. There is no schema changes required for this feature.

UI Change:

Assumptions: