1. A method comprising: running a virtual machine; and configuring a virtual network interface card to route data packets between the virtual machine and a hardware device; wherein the virtual network interface card is configured without re-compiling a virtual machine monitor containing the virtual network interface card, and wherein configuring the virtual network interface card comprises: dynamically loading, into the virtual network interface card, a module that is external to the virtual machine monitor containing the virtual network interface card, the module being a compiled module and comprising data to configure the virtual network interface card to work with the virtual machine; configuring the virtual network interface card in accordance with the data from the module, the virtual network interface card being configured to implement direct memory accesses that are implemented by an actual network interface card that is emulated by the virtual network interface card when configured; and configuring data structures for use in transmitting data packets between the virtual machine and the hardware device.