# GANA-VDC: Application-Aware with Bandwidth Guarantee in Cloud Datacenters
## 4 GANA-VDC System Architecture
### Proposed VN Optimization Mechanism  
Virtually, in the cloud data center environment, VMs mapping of a VDC to a physical switch most likely overlaps another VDC. Therefore, to attain a global network topology, LLDP messages do not need to be sent by each VDC controller; instead, it can rely on another VDC, which has already requested the topology drastically reducing the workload on FlowVisor. In our work, we built a Green VDC Mapping Graph (GVMG) to represent inclusion advantages, a list to indicate VDCs with identical mappings supporting network topology request load balance. If the switches to which the VDC_B VMs map have those of VDC_A, the mapped switch of VDC_A demonstrates the maximum subset or has some switch, not in other subsets; thus, the paths between the mapped switches are identical. Afterward, a directed link is drawn from VDC_A to VDC_B illustrating the significance of this approach. In the fat tree module, if two mappings have to share same switches, then mapping links must be the same as any two adjacent switches exist on one link. Thus, we can ignore the paths between mapped switches to indicate an inclusive relationship. As shown in Figure 6, the initializing of VDC_A VMs map to switch_1 and switch_2, the VMs of VDC_B map to switch_3 and switch_4, and VDC_C VMs map to switch_2 and switch_4 (Figure 6A). No direct links among these VDCs exist due to no inclusive relationship. Now, we introduce VDC_D with its VMs mapped to switch_1, switch_2, switch_3, and switch_4. As the maximum subsets contain VDC_1, VDC_B, and VDC_C, we draw three corresponding direct links (Figure 6B). Next, we introduce VDC_E with its VMs mapped to switch_1, switch_2, and switch_4; its maximum subsets contain VDC_1 and VDC_C, thus we add a direct link from VDC_A to VDC_E and another direct link from VDC_C to VDC_E. Meanwhile, as VDC_E has maximum subsets of VDC_D (Figure 6C), we finally introduce VDC_F with identical mapping to VDC_E, and then the list of VDC_E added element VDC_F, where it can request network topology from VDC_E. When the mapping of VDC_G to coincide with VDC_E, it can request network topology from one randomized VDC in the list and be added to the list as a candidate for load balance (Figure 6A). Accordingly, we propose the hierarchical state maintenance and query algorithm (Algorithm 1). Figure 6: GVMG Mechanism example. ```
Input: Mapping VDC(\(VDC_{i}\)), current Green VDC Mapping Graph (GVMG) Output: Updated Green VDC Mapping Graph (GVMG). Begin
1 vn_mappings \(\leftarrow\) getVN2 PNMapping(\(VDC_{i}\)) start_nodes \(\leftarrow\) getMinDisjointSet(GVMG) search_nodes \(\leftarrow\) getFilteredNodes(vn_mappings, start_nodes) requested_node \(\leftarrow\) null
5 for each node in search_nodes do node.visited \(\leftarrow\) true
7 requested_node \(\leftarrow\) DFS_visit(node)
8 endfor
9 if requested_node!= null then
10 selected_node \(\leftarrow\) requested_node.list.getRandomizedNode()
11 generated_node \(\leftarrow\) request_VN_topology(selected_node) requested_node.list.add(generated_node)
13 Else
14 new_node \(\leftarrow\) do_LLDP_NetworkDiscovery() GVMG.add(new_node)
15 endif
16 DFS_visit(\(node_{i}\))
17 current_node \(\leftarrow\) node\({}_{i}\) current_node.visited \(\leftarrow\) true
18 ifvn_mappings.links == current_node.links and
19 vn_mappings.switches == current_node.switches then
20 requested_node \(\leftarrow\) current_node
21 Else
22 children_nodes \(\leftarrow\) current_node. children
23 for each node in children_nodes do
24 ifnode.visited!= true then
25 DFS_visit(node)
26 endif
27 endfor
28 endif
29 endfor
30 endif
31 end DFS_visit
```  
**Algorithm 1**VN_Topology_Request (VDC\({}_{i}\))  
Generally, the per-tenant network topology graph is always updated based on link events to observe the working state. If the underlying physical links go offline, the corresponding link event is triggered, and the relative network topology graphs will be accordingly adjusted.