Cisco Virtual Network Management Center (VNMC) provides centralized multidevice and policy management for Cisco network virtual services. 

When combined with the Cisco Nexus 1000V Switch, ASA 1000V Cloud Firewall, or the Cisco Virtual Security Gateway (VSG), it enables:

Currently the 1000v series and the VSG are supported on VMWare hypervisors. 
This would be the deployment model with CloudStack:

Use Cases / Flow

For 4.2

  1. Cloud operator adds VNMC as a network element using admin API addCiscoVnmcResource, specifying username and password
  2. Cloud operator adds ASA1000v appliances (one per guest network) using admin API addCiscoAsa1000vResource.
  3. Cloud operator creates isolated guest network offering with source nat using ASA1000v as the service provider for firewall, source nat, port forwarding and static NAT. CloudStack system vm is used for DHCP, userdata and metadata, password server

Beyond 4.2

  1. Cloud operator creates VPC network offering with source nat using ASA1000v as the service provider for firewall, source nat, port forwarding, ACL and routing. CloudStack system vm is used for DHCP, userdata and metadata, password server.
  2. Network offerings as above, with LB added, and using Cloudstack System VM as LB provider
  3. Network offerings as above, with LB added, and using Netscaler VPX as LB provider

VNMC interaction

The VNMC controller is a VMWare appliance that presents an XML API to control the Cisco virtual appliance porfolio.
The GUI is a Flash-based web application that utilizes the XML API to interact with the controller. By enabling the flash debugger (see http://s.apache.org/v5) we can capture the precise XML commands required by CloudStack.

Design details

CiscoVnmcResource

The resource translates abstract network configuration commands such as SetStaticNatRule into concrete XML api calls to the VNMC controller

CiscoVnmcElement

The network element participates in L2 orchestration by extending NetworkElement. When a network is created, the element needs to

The Cisco ASA1000v can function as a DHCP server, however it cannot guarantee a specific ip<->mac address mapping. Therefore the CloudStack systemvm will be used for this purpose.

The CiscoVnmcElement also implement the IpDeployer and various service provider interfaces to satisfy the requirements of the network offering.

Additionally the following are also provided:

Nexus 1000v + VNMC + ASA 1000v deployment model

Prereqs

Deployment model

In current CS there is a 1:1 mapping between Vmware cluster and n1kv switch. This model will be used by asa1kv appliances as well as they also need n1kv. There can be multiple asa1kv appliances associated with the same Vmware cluster (and corresponding n1kv).

There will be a 1:1 mapping between guest network and asa1kv appliance. This guest network can span multiple Vmware clusters (multiple n1kv switches). (Note: The scenario where a guest network spans multiple Vmware clusters with n1kv is not a tested scenario currently.)

HV limitation

Since asa1kv works with n1kv and this is available only for Vmware HV, guest networks with asa1kv will only be supported on Vmware only.

VNMC setup (external to CS)

VNMC appliance needs to be setup externally and then registered with CS using admin API.

ASA setup (external to CS)

ASA1000v appliance needs ot be setup externally and then registered with CS using admin API. Typically admin will create a pool of ASA1000v appliances and register them with CS.

Following inputs to be provided for setting up ASA:

Inside port profile configuration on Nexus1000v

Outside port profile configuration on Nexus1000v

After the ASA instance is powered on the VNMC needs to be registered from ASA console

ASA limitation

  1. ASA inside and outside interfaces cannot act as trunk interfaces to support multiple VLANs. What this mean for CS is that multiple guest networks cannot be trunked to the inside interface. So in order to support VPC, some alternate needs to be thought out for deploying ASA. The same applies to outside interface as well implying that a single public subnet can be used with ASA deployments.
  2. ASA outside interface ip cannot be used in any NAT rule. This means that source NAT ip allocated to a guest network in CS cannot be used as ASA outside ip.

Guest network implement() logic

Guest network gets implemented when first guest VM is deployed

Guest network implementation

All the above steps will be idempotent.

For guest VM the following change is required while creating the port profile in VSM

Create port profile for guest VM and associate edge security profile created as part of implement() of network element

API changes

VNMC lifecycle APIs
ASA lifecycle 1000v APIs

Typically lifecycle of ASA is tied to the associated guest network. But since ASA setup requires license check, CLI configurations it is not possible to spin it up as part of guest network creation. The list of ASA1000v appliances needs to be provisioned into CloudStack using admin APIs. During network creation available ASA instance is assigned to it from the list and released when network gets destroyed. The pool will be created using lifecycle APIs

As part of response, if the ASA is associated with a guest network, the uuid for the same is also returned. From this the cloud operator can find out if the appliance is available or not.

DB changes

An entry need to be created in physical_network_service_providers table. I saw that currently these entries are created from the UI using API addNetworkServiceProvider (for e.g. for JuniperSRX).
A network offering needs to be created for using for using CiscoVNMC to provide firewall, source nat, port forwarding.

UI changes

A new provider needs to be added for Cisco VNMC (similar to SRX). This will provide services for firewall, source nat, port forwarding and static nat. Rest of the services will be provided by VR.
There will be APIs to manage lifecycle of VNMC appliances (add, delete, list). These also needs to be plugged to the UI. Also there will be APIs to manage lifecycle of ASA appliances.

Open items (for future support if required)

VSG

The VSG can be used to provide security group isolation.

There is an alternate feature proposal where SG isolation for Vmware will be done using PVLANs. Needs to be re-visited if there is no need for VSG integration.

VXLAN support

VXLAN based network isolation.

Links

http://www.cisco.com/en/US/docs/security/asa/quick_start/asa1000V/setup_vnmc.html