Version 1 (March 2013): Jira-733
Proposed update (July 2014): Jira-6697
Version 1 (March 2013): kj-bsc-plugin
Update (July 2014): TBD
In Mar. 2013 a Big Switch Network (BSN) plugin was implemented in Cloudstack to provide VNS-based connectivity (L2 isolation) service, working with the Big Switch controller at that time: https://issues.apache.org/jira/browse/CLOUDSTACK-733.
Since then, the Big Switch controller has gone through major evolution. This page describes the proposed work to update the BSN plugin to be compatible with the Big Switch controller to date (July 2014), known as the Big Cloud Fabric (BCF) controller. The BCF Controller's basic network entity is called a logical segment; hence, the isolation method proposed by the new plugin will be referred to as a BCF_SEGMENT.
The plugin is scheduled to be included in the Cloudstack 4.6 release.
Purpose
This is functional specification of BigSwitch Network Plugin, which has Jira ID 733
The 2014 update (Jira-6697) addresses the following:
The update will work with:
Date | Revision | Author | Description of the change |
---|---|---|---|
1/15/2013 | 0.1 | Kanzhe Jiang | Initial Draft |
8/22/2014 | 0.2 | KC Wang | BCF Update |
Term | Definition | Notes |
---|---|---|
BCF | Big Cloud Fabric | |
BSC | BigSwitch Controller | deprecated |
BVS | Big Virtual Switch | deprecated |
CS | CloudStack |
There won't be any change to the existing CloudStack workflow. In a typical deployment, a physical and/or virtual fabric is managed by the Big Switch BCF controller(s). When a guest network is created, the plugin will create a corresponding segment in the BCF controller. When a guest VM is launched, the VM is automatically assigned to its configured guest network(s). The BCF application will provide network isolation and connectivities among VMs.
CloudStack provides plugin framework that allow different resources to be integrated with the CloudStack core. A Big Switch networking plugin will be developed to add openflow-based network virtualization into cloudstack. There are two main modules in NetworkIng plugin, NetworkGuru and NetworkElement. NetworkGuru is the network abstraction that defines the interfaces that manage the life cycle of a network, and permits implementations of various network isolation technologies and ip address technologies.
Each tenant network in CS will be mapped to a virtual network on the controller. Currently, this isolation method is the same as using VLAN. In CloudStack workflow, each tenant will be assigned a range of VLANs as part of the tenant configuration. When a tenant network is created, a vlan from the tenant's vlan pool is associated with the network. BCF plugin creates a logical segment using cloudstack assigned VLAN as its segment membership rule. Non-VLAN based isolation will not be covered in this release and can be added to the plugin as additional option in the near future.
The plugin will invoke REST APIs to create tenants (corresponding to cloudstack accounts), segments (corresponding to cloudstack networks), and endpoints (for each NIC).
Web Services APIs
None
BCF option will be added with Network creation.
Pseudo Code for the BVSNetworkGuru
Code Block |
---|
BVSNetworkGuru:design() { if the network isolation type is not BVS, return null; if the controller is not available, return null; return super.design() } BVSNetworkGuru:implement() { create network id; Send a REST request to create the network, http://controllerIp:/quantum/v1.1/tenants/:tenant/networks } BVSNetworkGuru:shutdown() { Send a REST request to delete the network, http://controllerIp:/quantum/v1.1/tenants/:tenant/networks/:network } |
Pseudo Code for the BVSNetworkElement
Code Block |
---|
BVSNetworkElement:prepare() { Send a REST request to create the host config for the VM, http://controllerIp:/quantum/v1.1/tenants/:tenant/networks/:network/ports/:port/attachment with vm's MAC } BVSNetworkElement:release() { Send a REST request to delete the host config for the VM, http://controllerIp:/quantum/v1.1/tenants/:tenant/networks/:network/ports/:port/attachment } |