A virtual machine system sometimes consists of multiple physical machines and runs multiple hypervisors on a single machine. Each hypervisor can support multiple virtual machines, with each virtual machine running a guest to perform tasks for a user. From time to time a system administrator may want to move (“migrate”) a guest from one hypervisor to another for maintenance or performance reasons. The migration may be a “live migration,” which means that the guest can be moved without disconnecting its client or application.
When a guest migrates to a different hypervisor, its network location is considered as changed. A changed network location means that the different hypervisor (“target hypervisor”) is now responsible for forwarding packets to the guest. Switching components (also referred to as “network devices”) in the network to which the target hypervisor is coupled are notified of the guest's new association with the target hypervisor so that the guest can continue to receive packets after migration.
One current approach is to have the source hypervisor send the guest's network addresses to the target hypervisor. In response, the target hypervisor sends one or more notification packets to the network devices, notifying the network devices of the guest's network addresses. Thus, when a network device receives a packet destined for any of these addresses, the network device can forward the packet to the target hypervisor, which then relays the packet to the guest. Conventionally, each notification packet sent from the target hypervisor to the network devices contains one network address of the guest. Since a guest can have multiple different network addresses (e.g., in the tens or hundreds), such notification can take tens or hundreds of packets to complete. These notification packets can burden the network and reduce available bandwidth for normal network traffic.