IP Library Granted Patent US 7,924,840
Granted Patent B1
US 7,924,840 · App. 12/645,324 · Granted Apr 12, 2011

Virtualizing the operation of intelligent network interface circuitry

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,924,840
App. No.
12/645,324
Granted
Apr 12, 2011
Kind
B1
Abstract

The present invention is in the field of virtualization of Network Interface Cards and Controllers (NIC) that connect to for example a host computer that can have multiple functions and OS's (referred to as guest functions and guest-OS's) running on it simultaneously and, in particular, relates to the virtualization of the operation of a single NIC such that it can be used simultaneously by multiple guests in such a manner that memory references due to the network traffic originating from and destined to a particular guest is kept separate from other network traffic, and that allows the Media Access Controller (MAC) within the NIC to operate such that it only accepts network packets that are destined to one of the guest-functions or guest-OS's, and the MAC is not required to operate in promiscuous mode where it accept all incoming packets in order to implement the virtualization features.

Claims (61)

1. A method of operating network interface circuitry, wherein the network interface circuitry is configured to couple a host computer to a network to facilitate communication over the network between the host computer and a peer, the method comprising:

by the network interface circuitry,

receiving data from the peer via the network; and

processing the received data, including:

where there is a layer-2 classification rule associated with characteristics of the received data, automatically applying the classification rule to the received data to determine an indication of a control block corresponding to a guest operating system operating within a virtual environment on the host computer;

using the determined indication of the control block to determine, from information in the control block, an indication of a destination queue associated with the host computer and corresponding to the guest operating system; and

demultiplexing the received layer-2 packets according to the determined indications of the destination queues associated with the host computer.

2. The method of claim 1 , further comprising:

applying to the received data a layer-3 classification rule associated with characteristics of the received data, thereby filtering ingress packets that have layer-2 characteristics not consistent with the layer-3 characteristics.

3. The method of claim 2 , further comprising:

applying to the received data a VLAN classification rule associated with characteristics of the received data, thereby filtering ingress packets that have layer-2 characteristics and layer-3 characteristics that are not consistent with the VLAN characteristics.

4. The method of claim 2 , further comprising:

applying to the received data a layer-4 classification rule associated with characteristics of the received data, thereby filtering ingress packets that have layer-2 and layer-3 characteristics not consistent with the layer-4 characteristics.

5. The method of claim 4 , wherein:

the layer-4 protocol is TCP and the received data includes a TCP SYN flag.

6. The method of claim 5 , wherein:

the layer-4 classification rule is associated with at least the local TCP port number in the received data.

7. The method of claim 4 , further comprising:

applying to the received data a VLAN classification rule associated with characteristics of the received data, thereby filtering ingress packets that have layer-2 characteristics, layer-3 characteristics and layer-4 characteristics that are not consistent with the VLAN characteristics.

8. A method of operating network interface circuitry, wherein the network interface circuitry is configured to couple a host computer, executing a plurality of guest functions, to a network to facilitate communication over the network between the host computer and a peer, the method comprising:

by the network interface circuitry,

receiving data packets from the peer via the network; and

processing the received data packets, including:

for each data packet, processing a classification rule associated with characteristics of the received data packet and automatically applying the classification rule to the received data packet to determine an indication of a control block corresponding to a guest function operating within a virtual environment on the host computer;

using the determined indication of the control block to determine, from the control block, an indication of a behavior to apply to the received data packet; and

applying the determined indicated behavior to the received data packet.

9. The method of claim 8 , wherein:

the received data packets are network layer packets encapsulating packets at a higher layer than the network layer, and

the method further comprises initially applying, to the received data packets, a classification rule associated with characteristics of the received data at the network layer, thereby filtering received data packets that have higher layer characteristics not consistent with the network layer characteristics, whereby the initially applying precludes a need to determine an indication of a control block for data packets having higher layer characteristics not consistent with the network layer characteristics.

10. The method of claim 9 , wherein:

the received data packets are network layer packets encapsulating packets at a higher layer than the network layer

processing the classification rule associated with characteristics of the received data packets and automatically applying the classification rule to the received data packets to determine at least one set of at least one destination queue associated with the host computer includes classifying the packets according to a network layer header and at least one header associated with the higher layer.

11. The method of claim 8 , wherein:

the received data packets are network layer packets encapsulating packets at a higher layer than the network layer; and

the method further comprises performing protocol processing at the higher layer within the network interface circuitry.

12. The method of claim 8 , wherein:

applying the determined indicated behavior to the received data packet includes demultiplexing the received data packets according to separate destination queues associated with the host computer includes directly placing at least a portion of a received packet into memory associated with the separate guest function with which the separate destination queue is associated.

13. The method of claim 8 , wherein:

the host computer is executing a virtual operating system on top of which a plurality of operating system instances are executing, each operating system instance being an instance of a guest-OS having at least one of the guest-functions associated therewith;

at least one of the set of destination queues is associated with the virtual operating system; and

the classification rules are such that broadcast and/or multiplex packets are demultiplexed according to the at least one of the set of destination queues that is associated with the virtual operating system.

14. The method of claim 13 , wherein:

for at least one of the guest-OS instances, that guest-OS instance is itself a guest-function associated with that guest-OS instance.

15. The method of claim 13 , wherein:

the classification rules are further such that the demultiplexing operation includes providing an indication of at least a particular one of the plurality of guest-functions.

16. The method of claim 8 , wherein:

the classification rules are such that broadcast and/or multicast packets are demultiplexed according to the sets of destination queues configured to receive the broadcast and/or multicast packets.

17. The method of claim 16 , wherein:

the classification rules are such that multicast packets, which cannot be demultiplexed to at least one set of destination queues configured to receive the multicast packets, are filtered.

18. The method of claim 8 , further comprising:

for at least one of the destination queues, controlling a rate at which the data is provided from that destination queue to the host.

19. A method of operating network interface circuitry, wherein the network interface circuitry is configured to couple a host computer, executing at least one operating system, to a network to facilitate communication over the network between the host computer and at least one peer, the method comprising: by the network interface circuitry, receiving data from a plurality of guest functions operating on the host in conjunction with the at least one operating system; processing the received data and classifying the received data at least based on from which guest function a particular portion of the received data was received; and transmitting data including the received data out to the network at a nominal rate associated with the class with which the received data has been classified, wherein controlling the nominal rate of transmitting the data out to the network is based on managing transmit modulation event tokens corresponding to the class with which the nominal rate is associated.

20. A method of operating network interface circuitry, wherein the network interface circuitry is configured to couple a host computer, executing a plurality of guest operating system instances, each guest operating system instance having associated with it at least one guest function, to a network to facilitate communication over the network between the host computer and a peer, the method comprising: by the network interface circuitry, receiving data from the guest functions; processing the data and classifying the data at least based on from which guest function a particular portion of the data was received; transmitting the data out to the network at a nominal rate associated with the class with which the data has been classified, wherein controlling the nominal rate of transmitting the data out to the network is based on managing transmit modulation event tokens corresponding to the class with which the nominal rate is associated.

21. The method of claim 20 , wherein:

for at least one of the guest functions, that guest function is a guest operating system instance.

22. A network interface controller configured to couple a host computer to a network to facilitate communication over the network between the host computer and a peer, the network interface controller comprising:

means for receiving data from the peer via the network; and

means for processing the received data, including:

where there is a layer-2 classification rule associated with characteristics of the received data, automatically applying the classification rule to the received data to determine an indication of a control block corresponding to a guest operating system operating within a virtual environment on the host computer;

means for using the determined indication of the control block to determine, from information in the control block, an indication of a destination queue associated with the host computer and corresponding to the guest operating system; and

means for demultiplexing the received layer-2 packets according to the determined indications of the destination queues associated with the host computer.

Assignments (12)
CHANGE OF NAME Recorded May 5, 2026
From: CHELSIO COMMUNICATIONS, INC.
To: SPEEDNIC LLC
Reel/Frame 075561/0001 →
RELEASE OF SECURITY INTEREST Recorded Dec 26, 2025
From: CSNK WORKING CAPITAL FINANCE CORP.
To: CHELSIO COMMUNICATIONS, INC.
Reel/Frame 074070/0784 →
RELEASE OF SECURITY INTEREST Recorded Dec 18, 2025
From: WESTERN ALLIANCE BANK, AN ARIZONA CORPORATION
To: CHELSIO COMMUNICATIONS, INC.
Reel/Frame 073264/0525 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE FIRST PAGE OF THE INTELLECTUAL PROPERTY SECURITY AGREEMENT HAS AN INCORRECT DATE THAT NEEDS TO BE CORRECTED PREVIOUSLY RECORDED ON REEL 050050 FRAME 0396. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Aug 15, 2019
From: CHELSIO COMMUNICATIONS, INC.
To: WESTERN ALLIANCE BANK, AN ARIZONA CORPORATION
Reel/Frame 050112/0234 →
SECURITY INTEREST Recorded Aug 14, 2019
From: CHELSIO COMMUNICATIONS, INC.
To: WESTERN ALLIANCE BANK, AN ARIZONA CORPORATION
Reel/Frame 050050/0396 →
RELEASE OF SECURITY INTEREST Recorded Apr 25, 2017
From: NOVIRIAN CAPITAL
To: CHELSIO COMMUNICATIONS, INC.
Reel/Frame 042142/0232 →
SECURITY INTEREST Recorded Jul 29, 2016
From: CHELSIO COMMUNICATIONS, INC.
To: NOVIRIAN CAPITAL
Reel/Frame 039296/0550 →
RELEASE OF SECURITY INTEREST Recorded Jul 15, 2016
From: EAST WEST BANK
To: CHELSIO COMMUNICATIONS, INC.
Reel/Frame 039360/0596 →
SECURITY INTEREST Recorded Oct 21, 2014
From: CHELSIO COMMUNICATIONS, INC.
To: SILICON VALLEY BANK
Reel/Frame 033990/0451 →
RELEASE OF SECURITY INTEREST Recorded Oct 21, 2014
From: EAST WEST BANK
To: CHELSIO COMMUNICATIONS, INC.
Reel/Frame 033989/0930 →
SECURITY AGREEMENT Recorded May 9, 2013
From: CHELSIO COMMUNICATIONS, INC.
To: EAST WEST BANK
Reel/Frame 030389/0982 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2010
From: EIRIKSSON, ASGEIR THOR; MICHAILDIS, DIMITRIOS; NOUREDDINE, WAEL
To: CHELSIO COMMUNICATIONS, INC.
Reel/Frame 024562/0524 →