nTier Apps was a new feature added in the previous release of CloudStack. nTier Apps feature allows users to create a multi-tier App connected to a single instance of Virtual Router that supports inter-VLAN routing. Users were also able to connect their multi-tier applications to a private Gateway or a Site-to-Site VPN tunnel and route certain traffic to those gateways. Following is the diagram that highlights the first version of the nTier Apps feature currently available in CloudStack.
However, there were some sub-features that were left out of the initial implementation. This requirements document captures additional enhancements that need to be provided for this feature in order for users to deploy this feature more widely and meet different use cases.
Following are the requirements for nTier Apps 2.0 feature.
Note: Please note that this feature is currently only supported for VLAN based Isolation and not for SDN.
Req # |
Requirement |
Priority |
2.1 |
Combine VR and VPC VR Code-base and feature set |
P1 |
2.2 |
Load Balancing on all Tiers |
P1 |
2.3 |
Deployment on VM on a VPC Tier + 1 or more Shared Networks |
P1 |
2.4 |
Support for physical devices to do FW & LB |
P1 |
2.5 |
KVM Hypervisor support |
P1 |
2.6 |
Blacklist of Routes |
P1 |
2.7 |
Support for 8 VPN connections using the same Public IP of VR |
P1 |
2.8 |
Static routes to VPN Gateway |
P2 |
2.9 |
Remote access VPN to VPC |
P1 |
2.10 |
Users from different Accounts should be able to deploy to a VPC |
P2 |
2.11 |
Don't require user to input the super CIDR |
P1 |
2.12 |
Use same public IP for static NAT, PF and LB in VPC |
P1 |
2.13 |
Meter IPSEC data separate from other data |
P1 |
2.14 |
Allow ACL on all layer 4 protocols |
P1 |
2.15 |
Support guest networks outside of RFC 1918 addresses |
P1 |
2.16 |
Support ACL deny rules |
P1 |
2.17 |
Redundant Virtual Router for VPC |
P2 |
2.18 |
Assign a VLAN id to a network |
P1 |
2.19 |
Add more than one Private GW to a VPC |
P1 |
2.20 |
NAT on private GW |
P1 |
2.21 |
ACL on Private GW |
P1 |
Note: I have split 2.20 and 2.21 into two separate tasks. Even though both are P1, we should give more importance to 2.21.
Currently the code base as well as the feature set supported for non-VPC Virtual Router and VPC Virtual Router are different. For example, Remote-Access VPN is supported only by non-VPC VR and Site-2-Site VPN is only suppoted by VPC VR. With this release, both the VR code base should be consolidated and the feature set supported should be the same. This way, going forward, when a new feature is developed, it is automatically supported in VPC and non-VPC environments. Also, features like Firewall and Network ACLs should be supported in all scenarios.
Currently, Load Balancing is only supported using VPC VR and is only supported on on of the Tiers of an nTier Application. With this release, CloudStack should support load balancing on all tiers of an nTier application.
Use Case: Users would like to deploy a multi-tier application with the VR load balancing each of the tiers. As a result, users would be able to provide flexibility and elasticity at each tier of their application
When deploying a virtual machine, the API allows a user to deploy VM on one of the tiers as well as a shared network. The UI doesn't allow this functionality. This feature needs to be enabled in UI.
Use Case: Users might want to deploy all of their VM of a multi-tier app and receive a monitoring service via a Shared Network provided by the provider.
All of the network services are currently only supported by VR in a VPC environment. Users might want Firewall, LB or other service provided by an external network provider. All of the external devices currently supported in a non-VPC environment should be supported in VPC. With requirement 2.1, this should be supported.
Use Case: Similar to the non-VPC use case, users might want to start with VR providing all of the network services. As the load increases on the application, users might want to switch to a hardware-based provider for a specific network service like Firewall or Load Balancer.
Allow support for KVM Hypervisor support. This is a P2 requirement.
Administrators would want to block a list of routes so that they are not assigned to any of the private Gateways. Admins should be provided with an option to provide with a list of routes that are blacklisted and should be be allowed to be enabled on any of the private gateways.
Currently, only 1 VPN GW is supported. This requirement is to track support for up to 8 VPN gateways. This would require UI changes but we need to use the same Public IP for all 8 VPN Connections.
This is a P2 requirement. Allow admins to add static routes on a VPN Gateway.
Isolated Networks allows Remote-access VPN capability for remote users to VPN into the Isolated Network. Similar functionality needs to be provided via the VPC VR.
This is a P2 requirement to allow users to share a VPC between different accounts.
Users want flexibility in defining the IP Network for each of their tiers. Users can specify a sub-network out of the VPC super-net for any specific tier and they are limited to specifying only a network out of the super-net defined while creating a VPC.
Users would want to have one public IP for their application and get all network services like Static NAT, Port Forwarding and/or Load balancing on that public IP. This is important both from a provider perspective (who might want to conserve public IP Addresses) as well as from the consumer perspective (who might get charged based on Public IP Addresses consumed).
Open question: Is this already supported?
Currently, there are only 3 options that a user can specify for the protocol field in the Network ACL APIs/UI. These fields are ICMP, UDP and TCP. This requirement is to make the protocol field more flexible.
Only ACL allow rules are supported as part of Network ACLs. Default is to block all incoming and all outgoing traffic between tiers and between tiers and various gateways (including Public). Users might want to allow most of the traffic and deny only a selected few traffic types.
This is a P2 requirement. This might get addressed as part of requirement 2.1.
Allow admins to specify a VLAN ID while defining a Tier of a VPC.
Similar to requirement 2.7
Allow NAT service on private gateway. Currently, only a private gateway can be defined and then static routes can be defined for that private gateway.
Customer might want to deploy multiple VPCs (with the same super CIDR) and/or guest Tier CIDR. So, there could be a possibility that multiple guest VM (from different VPCs) having the same IP need to reach a enterprise DC via the Private GW. In these cases, NAT service is needed on the private GW.
Only SourceNAT service is a requirement for this release.
Allow ACL services on private gateway. Currently, only a private gateway can be defined and then static routes can be defined for that private gateway.
All of the above features should be supported via UI.
Following upgrade scenarios should be supported: