Shared input-output device
AssigneeIntel Corporation
InventorsGregory D. Cummings, Luke Chang
Life of this patent
Estimating the term…
Abstract
In some embodiments, a shared IO device includes a plurality of packet filters associated with a plurality of virtual systems sharing the shared I/O device and a plurality of filter receive queues assigned to the plurality of packet filters. A processor is responsive to a receive packet to determine if the receive packet matches one of the plurality of packet filters and the processor, upon determining that there is a matched packet filter, is adapted to place the receive packet in the filter receive queue assigned to the matched packet filter.
Claims20
A method, comprising:
- determining, by a network adapter of a host computer, whether respective ones of a plurality of receive packets match a packet filter associated with one of a plurality of virtual operating systems operating on the host machine, the plurality of virtual operating systems sharing the network adapter via an input output container (IO container) that is separate and distinct from the network adapter,
- wherein the packet filter is based on a media access control (MAC) address of the one of the plurality of virtual operating systems;
- placing, by the network adapter, one or more matching ones of the plurality of receive packets into a filter receive queue of the network adapter assigned to the packet filter in response to a determination that the one or more matching ones of the plurality of receive packets match the packet filter;
- and
- transferring, by the network adapter, the one or more matching receive packets from the filter receive queue to a buffer of the IO container associated with the packet filter,
- wherein the buffer is managed by a physical device driver of the IO container, and
- wherein the physical device driver is configured to:
- count the one or more matching receive packets from the filter receive queue;
- transfer the one or more matching receive packets as a group of receive packets to a physical interface of a virtual switch/bridge (VBS) with an indication indicating that the group of receive packets are from the filter receive queue assigned to the matching packet filter;
- and
- prior to said count, examine a received interrupt signal from the network adapter to determine that the one or more matching receive packets are from the filter receive queue assigned to the matching packet filter.
A network adapter, comprising:
- a memory configured to host a plurality of packet filters associated with a plurality of virtual operating systems sharing the network adapter via an input output (IO) container that is separate and distinct from the network adapter,
- wherein the network adapter and the IO container are configured to reside in a host computer configured to operate the plurality of virtual operating systems,
- wherein respective ones of the plurality of packet filters are associated with corresponding ones of the plurality of virtual operating systems and are based on respective media access control (MAC) addresses of the plurality of virtual operating systems,
- wherein the memory is further configured to host a plurality of filter receive queues correspondingly assigned and respectively operatively coupled to the plurality of packet filters;
- and
- one or more processors coupled to the memory and configured to cause the network adapter to:
- determine whether respective ones of a plurality of packets received by the network adapter match one of the plurality of packet filters;
- upon a determination that one or more matching ones of the plurality of packets match the one of the plurality of packet filters, place the one or more matching packets in one of the plurality of filter receive queues assigned to the matching one of the plurality of packet filters;
- and
- transfer the one or more matching packets from the one of the plurality of filter receive queues to a buffer of the IO container associated with one of the plurality of virtual operating systems corresponds to the matching one of the plurality of packet filters;
- wherein the buffer is managed by a physical device driver of the IO container, and
- wherein the physical device driver is configured to:
- count the one or more matching packets from the filter receive queue;
- transfer the one or more matching packets as a group of receive packets to a physical interface of a virtual switch/bridge (VBS) with an indication indicating that the group of receive packets are from the filter receive queue assigned to the matching packet filter;
- and
- prior to the count, examine a received interrupt signal from the network adapter to determine that the one or more matching packets are from the filter receive queue assigned to the matching packet filter.
A system, comprising:
- one or more host processors configured to operate a plurality of virtual operating system;
- a host memory coupled to the one or more host processors configured to host an input output (IO) container operatively coupled to the plurality of virtual operating systems, the IO container including a plurality of buffers respectively associated with the plurality of virtual operating systems;
- and
- a network adapter coupled to the IO container, wherein the network adapter includes an adapter processor and an adapter memory coupled to the adapter processor;
- wherein the IO container is configured to allow shared access of the network adapter by the plurality of virtual operating systems;
- wherein the adapter memory is configured to host a plurality of packet filters respectively associated with the plurality of buffers, and a plurality of filter receive queues respectively assigned to the plurality of packet filters;
- wherein respective ones of the plurality of packet filters are associated with corresponding ones of the plurality of virtual operating systems, and are based on media access control (MAC) addresses of the plurality of virtual operating systems;
- wherein the network adapter is configured to receive a plurality of packets, and the adapter processor is configured to:
- match one or more of the plurality of receive packets to one of the plurality of packet filters,
- move the one or more filter-matched receive packets to one of the plurality of filter receive queues assigned to the matching one of the plurality of packet filters,
- move the one or more filter-matched receive packets in the matching one of the plurality of filter receive queues to one of the plurality of buffers corresponding to the matching packet filter,
- wherein the IO container includes a physical device driver having an operation system (OS) specific physical interface, and a virtual switch/bridge (VBS) coupled to the OS specific interface and including a plurality of virtual interfaces respectively correspond to the plurality of virtual operating systems;
- wherein the physical device driver is configured to move the one or more filter-matched receive packets from the filter-associated buffer corresponding to the matching packet filter to the OS specific interface;
- and
- wherein the VBS is configured to move the one or more filter-matched receive packets from the OS specific interface to one of the virtual interfaces.
An article of manufacture, comprising:
- a tangible and non-transitory machine-readable medium;
- a first plurality of instructions stored in the machine-readable medium, which, in response to execution by a network adapter of a host machine, cause the network adapter to perform operations comprising:
- comparing respective ones of a plurality of receive packets with a plurality of packet filters respectively associated with a plurality of virtual operating systems sharing the network adapter and operating on the host machine to determine whether one of the packet filters matches the respective ones of the plurality of receive packets,
- wherein the plurality of virtual operating systems shares the network adapter via an input output (IO) container that is separate and distinct from the network adapter,
- wherein the packet filters reside in the network adapter, are correspondingly associated with the plurality of virtual operating systems, and are based on media access control (MAC) addresses of the plurality of virtual operating systems;
- in response to a determination that one of the packet filters matches one or more matching ones of the plurality of receive packets, placing the one or more matching receive packet into a filter receive queue assigned to the matching packet filter;
- and
- transferring the one or more matching receive packets from the filter receive queue to a buffer residing in the IO container, wherein the buffer is associated with one of the plurality of virtual operating systems corresponding to the matched packet filter and managed by a physical device driver of the IO container;
- and
- a second plurality of instructions stored in the machine-readable medium, which, in response to execution by the physical device driver of a host machine, cause the physical device driver to perform operations comprising:
- counting the one or more matching receive packets from the filter receive queue;
- and
- transferring the one or more matching receive packets as a group of receive packets to a physical interface of a virtual switch/bridge (VBS) with an indication indicating that the group of receive packets are from the filter receive queue assigned to the matching packet filter;
- and
- prior to the counting, examining a received interrupt signal from the network adapter to determine that the one or more matching receive packets are from the filter receive queue assigned to the matching packet filter.
Dependencies are inferred from the claim text.