A virtual machine (VM) is an environment, usually a program or operating system, that does not physically exist but is created within another environment. In this context, the VM is called a “guest” while the environment it runs within is called a “host.” Virtual machines can be created to execute an instruction set different than that of the host environment. One host environment can run multiple virtual machines simultaneously. Since virtual machines are separated from the physical resources they use (i.e., memory, CPU cycles), the host environment is often able to dynamically assign those resources among them.
The practice of running many VMs on the same physical server can improve the resource utilization and bring down the total cost of ownership. However, since each VM should be located to have adequate network bandwidth with other VMs, and with the external entities, increasing the number of VMs in a system can have the result of creating a packet throughput bottleneck and prohibitively high CPU utilization.
For the reasons stated above, and for other reasons that will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for efficient packet switching in a multiple core server system.