...
Brocade VDX switches running Network Operating System 5.0 or above are supported. The following models are supported: VDX 8770, VDX 8770-8, VDX 8770-4, VDX 6740, and VDX 6740T, VDX 2740. It uses REST APIs at the backend for configuring and getting the operational status of the Brocade switch. The plugin orchestrates physical switches at appropriate times in the life cycle of a virtual machine. Tenant isolation is provided via VLAN.
...
The Brocade Network Plugin orchestrates Brocade’s switches using REST APIs.
The plugin uses pre-configured properties file to provide the details of Brocade switches (is configured with Brocade VDX Switch details (like IP Address, UserName, Username/Password) . In order to find out which switches are connected to the hypervisor hosts, the plugin uses the properties file to specify the pod to switch mapping.
There will be two properties file to maintain the following information:
The properties file format is:
switchIP0=username,password
The following is the example of the properties file:
172.23.43.29=user1,pass1
172.23.43.30=user2,pass2
The properties file format is:
zoneName_podName=switchIP1,switchIP2
The following is the example of the properties file:
zone1_pod1=172.23.43.29,172.23.43.30
...
using APIs or GUI for Brocade VCS Service Provider. The APIs are listed in WebServices APIs section below.
Parameter Name | Description | Required |
hostname | Hostname of the Brocade Vcs Switch. | true |
username | Credentials to access the Brocade Vcs Switch | true |
password | Credentials to access the Brocade Vcs Switch | true |
physicalnetworkid | The Physical Network ID | true |
Parameter Name | Description |
addbrocadevcsdeviceresponse | Response object |
Parameter Name | Description | Required |
vcsdeviceid | device id of the Brocade Vcs Switch | true |
Parameter Name | Description |
deletebrocadevcsdeviceresponse | Response object |
Parameter Name | Description | Required |
vcsdeviceid | device id of the Brocade VCs Switch | false |
physicalnetworkid | The Physical Network ID | false |
Parameter Name | Description |
hostname | hostname of the Brocade Vcs Switch |
brocadedevicename | device name |
vcsdeviceid | device id of the Brocade VCs Switch |
physicalnetworkid | the physical network to which this Brocade Vcs belongs to |
provider | Name of the provider |
Specify the required information in the property files as described above. The following tests should be verified for feature:
...
Following use cases are covered by this plugin implementation:
...
To provide a virtualized network in the cloud, traffic originating from the VMs of tenants must be isolated. The isolation of traffic can done using VLANs. These VLANs needs to be configured both at the hypervisor hosts and the physical switch. CloudStack automatically creates and destroys interfaces bridged to VLANs on the hypervisor hosts. Brocade Network Plugin will be focused on providing guest traffic isolation via VLANs by configuring the same to the Brocade switches via AMPP.
The plugin is configured by providing the properties files with required information as described in configuration sectionwith Brocade VDX Switch details using APIs or GUI for Brocade VCS Service Provider. It is implemented as a NetworkGuru in CloudStack. When the CloudStack Management Server comes up it loads all the available NetworkGurus. When Brocade Network Guru is loaded, it reads both the properties files.
When an isolated Network is created, the NetworkOrchestrator in CloudStack checks the capabilities of all the NetworkGurus and selects the one based on the isolated Network configurations and calls it to implement the network. The BrocadeGuestNetworkGuru would expose it’s capabilities for isolated guest Networks and availability of the properties file.
To orchestrate Brocade’s switches, the plugin uses REST APIs.
Figure 1 shows the virtual network orchestration using the Brocade Network plugin.
...
Following tables are A new table is created for maintaining the information, mapping the network created in CloudStack to the Switch IP.
the plugin:
Schema
`id` bigint unsigned NOT NULL AUTO`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`uuid` varchar(255) UNIQUE,
`physical_network`network_id` bigint unsigned unsigned NOT NULL COMMENT COMMENT 'id of the physical network in to which brocade vcs switch is added',
`provider_name` varchar(255) NOT NULL COMMENT 'Service Provider name corresponding to this brocade vcs switch',
`device_name` varchar(255) NOT NULL COMMENT 'name of the brocade vcs switch',
`host_id` bigint unsigned unsigned NOT NULL COMMENT COMMENT 'host id of the host on which port profile for the network is created',
`switch_ip` varchar(255) COMMENT 'switch IP on which port profile for the network is created',
coresponding to the external brocade vcs switch',
PRIMARY KEY (`id`)
2. brocade_network_vlan_map: For maintaining the mapping of the network and it’s vlanid.
Schema
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`network_id` bigint unsigned NOT NULL COMMENT 'id of the network',
`vlan_id` int(10) COMMENT 'vlan id of the network',
PRIMARY KEY (`id`)
Class Diagram
Figure 2 shows the class diagram for the Brocade Network plugin. The following classes are added for the plugin:
...
Figure 3 shows the sequence diagram for port profile creation, VM MAC address association to port profile and enabling monitoring of the switch. The NetworkOrchestrator invokes the BrocadeGuestNetworkGuru to implement the isolated network at the time of first VM creation. The BrocadeVdxGuestNetworkGuru finds the switches used for this network based on Zone and Pod of the network from the pod-switch properties file. It checks if the switch is already configured by doing does a lookup from the database table for network-switch mapping. If not available, it reads the switch details from the pre-configured properties file, configures a BrocadeVdxResource for this switch and adds it to the ResourceManager and to the database table for network-switch mapping. The ResourceManager calls the AgentManager to create an agent for this resource and enables the periodic pinging (monitoring) of the switch for its availabilityswitches based on the physical network used for this network. The BrocadeGuestNetworkGuru then creates an instance of CreatePortProfileCommand and sends it to AgentManager. The AgentManager uses the agent created for this host to call the BrocadeVdxResource to execute this command by using the BrocadeVdxApi. The BrocadeVdxApi interacts with the switch using REST API to create port profile for this network on the switch.
The NetworkOrchestrator invokes the BrocadeGuestNetworkGuru to reserve the resource for the VM at the time of VM creation. The BrocadeVdxGuestNetworkGuru does a lookup from the database table for network-switch mapping to find the switch switches based on the network where VM is createdphysical network used for this network. The BrocadeGuestNetworkGuru then creates an instance of AssociateMacToPortProfileCommand for the VM MAC address association with network’s port profile and sends it to AgentManager. The AgentManager uses the agent created for this host to call the BrocadeVdxResource to execute this command by using the BrocadeVdxApi. The BrocadeVdxApi interacts with the switch using REST API to associate the VM MAC address to port profile for this network on the switch.
Figure 4 shows
Figure 4 showsthe sequence diagram for port profile deletion, VM MAC address disassociation from port profile of the network
and disabling monitoring of the switch. The NetworkOrchestrator invokes the BrocadeGuestNetworkGuru to deallocate the resources for the VM at the time of destroying VM. The BrocadeVdxGuestNetworkGuru does a lookup from the database table for
network-switch mapping to find the switchswitches based on the
network where VM is deletedphysical network used for this network. The BrocadeGuestNetworkGuru then creates an instance of DisassociateMacFromPortProfileCommand for the VM MAC address disassociation from network’s port profile and sends it to AgentManager. The AgentManager uses the agent created for this host to call the BrocadeVdxResource to execute this command by using the BrocadeVdxApi. The BrocadeVdxApi interacts with the switch using REST API to disassociate the VM MAC address from port profile for this network on the switch.
The NetworkOrchestrator invokes the BrocadeGuestNetworkGuru to trash the resources at the time of deleting isolated network
.. The BrocadeVdxGuestNetworkGuru does a lookup from the database table for
network-switch mapping to find the switchswitches based on the physical network used for this network. The BrocadeGuestNetworkGuru then creates an instance of DeletePortProfileCommand and sends it to AgentManager. The AgentManager uses the agent created for this host to call the BrocadeVdxResource to execute this command by using the BrocadeVdxApi. The BrocadeVdxApi interacts with the switch using REST API to delete port profile for this network on the switch.
The BrocadeGuestNetworkGuru also deletes the network-switch mapping from network-switch mapping database table. If there are no isolated networks using this physical switch, the BrocadeGuestNetworkGuru deletes this resourceFigure 5 shows the sequence diagram for adding Brocade Switch and enabling monitoring of the Switch. The BrocadeVdxElement configures a BrocadeVdxResource for the switch and adds it to the ResourceManager. The ResourceManager calls the AgentManager to create an agent for this resource and enables the periodic pinging (monitoring) of the switch for its availability.
Figure 6 shows the sequence diagram for deleting Brocade Switch and disabling monitoring of the Switch. The BrocadeVdxElement deletes the resource for this switch from the ResourceManager. The ResourceManager calls the AgentManager to delete an agent for this resource and disable the periodic pinging (monitoring) of the switch for its availability.