# Agent-Based Virtual Machine Migration for Load Balancing and Co-Resident Attack in Cloud Computing
## 2 Related Works  
### Load Balancing in Cloud Computing  
Load balancing is a critical issue in cloud computing [19; 20], and various approaches have been proposed to address it, including network traffic load balancing [21], energy-aware load balancing [22], and stream processing load balancing [23]. Current solutions focus on balancing CPU and memory resources by leveraging live VM migration and considering the heterogeneity of servers and the variability of VM resource utilization. However, these solutions often overlook the fact that a single host may be configured to host multiple VMs, making the co-located VMs vulnerable to co-resident attacks in the event of a cyber assault. Traditionally, cloud computing load balancing mechanisms are centralized. However, this approach may become a bottleneck of the system, highlighting the need for a more decentralized approach to load balancing. Deploying VMs on a heterogeneous collection of hosts can be treated as a multidimensional boxing problem [24; 25], and mathematical approximations exist for this problem. However, these solutions are not directly applicable to the load balancing problem in cloud computing since they assume empty hosts and do not consider the number of moves required to balance the load through VM migration [26]. To address these issues, [PERSON] et al. [26] presented a VM allocation approach that monitors and forecasts host resource utilization using a simulated annealing algorithm and predefined heuristics to determine the source and target hosts for VM migration. However, their proposed centralized architecture has scalability limitations, and maintaining the resource utilization of hosts close to the entire system average may result in computational resource waste of computing-intensive hosts (because the same computational load is allocated as for ordinary hosts), which may not be optimal in heterogeneous commercial cloud computing environments. Load balancing methods for cloud computing have been approached from various perspectives, with a trade-off between load balancing and the number of VMs to migrate being a common concern. For example, Red Hat Enterprise Virtualization Manager [27] uses live migration of VMs for load balancing, employing a uniformly distributed heuristic load balancing strategy that migrates the VMs to the host with the lowest CPU usage. In contrast, VMware's resource scheduler [28] utilizes affinity criteria based on past information about the resource utilization of VMs and then statically matches the VM and the host. Load balancing methods that rely on resource use prediction [29; 30; 31; 32; 33; 34] are influenced by the dynamic performance changes of heterogeneous commercial hardware in cloud settings. The performance of a cloud computing is impacted by various factors, such as network circumstances and workload type, making it challenging to estimate cloud performance. The load-balancing technique based on resource prediction requires a valid sample of the factors. Thus, this method utilizes behavioral patterns [29], historical workload data [31], and VM resource utilization traces [30] to achieve load balancing. [PERSON] et al. [35] proposed an Agent-based load balancing strategy, where an Agent placed on a VM monitors the location of consumer requests, and the VM is transferred to the external network once the number of consumer requests from the external network exceeds the number of (threshold-based) local requests. However, relocating VMs based only on consumers' locations may not improve the cloud's overall load balancing. In contrast, the Agent-based load balancing system [35] uses the real-time movement of VMs. The Agent managing the host is categorized as idle, overloaded, or underloaded, where the idle Agent is deemed balanced and does not participate in load balancing, and the underloaded and overloaded Agents collaborate to move VMs from the overloadedAgent to the underloaded Agent.