IP Library Granted Patent US 7,630,368
Granted Patent B2
US 7,630,368 · App. 11/479,946 · Granted Dec 8, 2009

Virtual network interface card loopback fastpath

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,630,368
App. No.
11/479,946
Granted
Dec 8, 2009
Kind
B2
Abstract

A method for routing packets includes receiving an outbound packet issued by a first virtual machine, wherein the first virtual machine is located on a host, determining a packet destination associated with the outbound packet, querying a routing table for a routing entry corresponding to the packet destination, wherein the routing table comprises a first routing entry referencing an external host and a second routing entry referencing a second virtual machine, wherein the second virtual machine is located on the host, if the routing entry corresponding to the packet destination is the first routing entry, passing the packet to the external host, and if the routing entry corresponding to the packet destination is the second routing entry, passing the packet to the second virtual machine.

Claims (47)

1. A method for routing packets, comprising:

receiving an outbound packet issued by a first virtual machine, wherein the first virtual machine is associated with a first virtual network interface card, and wherein the first virtual machine and the first virtual network interface card are located on a host;

determining a packet destination associated with the outbound packet;

querying a routing table for a routing entry corresponding to the packet destination, wherein the routing table comprises: a first routing entry referencing an external host and a second routing entry referencing a second virtual machine, wherein the second virtual machine is associated with a second virtual network interface card, and wherein the second virtual machine and the second virtual network interface card are located on the host;

if the routing entry corresponding to the packet destination is the first routing entry:

passing the packet to the external host; and

if the routing entry corresponding to the packet destination is the second routing entry:

passing the packet to the second virtual machine, wherein the packet is transmitted through the first virtual network interface card to the second virtual network interface card before being delivered to the second virtual machine.

2. The method of claim 1 , wherein the packet is passed to a next hop to the external host if the routing entry corresponding to the packet destination is the first routing entry.

3. The method of claim 1 , wherein the second routing entry is provided by an operating system associated with the host.

4. The method of claim 1 , wherein the second virtual machine is associated with an Internet Protocol (IP) address.

5. The method of claim 1 , wherein the packet is passed to the second virtual machine using a function pointer and a cookie.

6. The method of claim 5 , wherein the cookie comprises a memory address corresponding to a memory space associated with the second virtual machine.

7. The method of claim 1 , wherein the packet is passed to the second virtual machine by writing the packet to a memory space of the second virtual machine.

8. A system for routing packets, comprising:

a first virtual machine and a second virtual machine located on a host;

a first virtual network interface card located on the host and associated with the first virtual machine;

a second virtual network interface card located on the host and associated with the second virtual machine; and

a first routing table associated with the first virtual machine, wherein the first routing table comprises: a first routing entry referencing a first external host and a second routing entry referencing the second virtual machine; and

a second routing table associated with the second virtual machine, wherein the second routing table comprises: a third routing entry referencing a second external host and a fourth routing entry referencing the first virtual machine,

wherein the host is configured to:

receive an outbound packet issued by the first virtual machine;

determine a packet destination associated with the outbound packet;

query the routing table for a routing entry corresponding to the packet destination;

if the routing entry corresponding to the packet destination is the first routing entry:

pass the packet to the external host; and

if the routing entry corresponding to the packet destination is the second routing entry:

pass the packet to the second virtual machine, wherein the packet is transmitted through the first virtual network interface card to the second virtual network interface card before being delivered to the second virtual machine.

9. The system of claim 8 , wherein the packet is passed to a next hop to the first external host if the routing entry corresponding to the packet destination is in the first routing entry.

10. The system of claim 8 , wherein the second routing entry is provided by an operating system associated with the host.

11. The system of claim 8 , wherein the first routing entry and the second routing entry comprise:

a function pointer to a passing function and a cookie.

12. The system of claim 11 , wherein the cookie comprises a memory address corresponding to a memory space of the second virtual machine.

13. A computer readable medium encoded with instructions capable of being executed by a computer for causing the computer to execute a method for routing packets, the computer readable program code configured to:

receive an outbound packet issued by a first virtual machine, wherein the first virtual machine is associated with a first virtual network interface card, and wherein the first virtual machine and the first virtual network interface card are located on a host;

determine a packet destination associated with an outbound packet;

query a routing table for a routing entry corresponding to the packet destination, wherein the routing table comprises: a first routing entry referencing an external host and a second routing entry referencing a second virtual machine, wherein the second virtual machine is associated with a second virtual network interface card, and wherein the second virtual machine and the second virtual network interface card located on the host;

if the routing entry corresponding to the packet destination is the first routing entry:

pass the packet to the external host; and

if the routing entry corresponding to the packet destination is the second routing entry:

pass the packet to the second virtual machine, wherein the packet is transmitted through the first virtual network interface card to the second virtual network interface card before being delivered to the second virtual machine.

14. The computer usable medium of claim 13 , wherein the packet is passed to a next hop to the external host if the routing entry corresponding to the packet destination is the first routing entry.

15. The computer usable medium of claim 13 , wherein the second routing entry is provided by an operating system associated with the host.

16. The computer usable medium of claim 13 , wherein the second virtual machine is associated with an Internet Protocol (IP) address.

17. The computer usable medium of claim 13 , wherein the packet is passed to the second virtual machine using a function pointer and a cookie.

18. The computer usable medium of claim 17 , wherein the cookie comprises a memory address corresponding to a memory space associated with the second virtual machine.

19. The computer usable medium of claim 13 , wherein the packet is passed to the second virtual machine by writing the packet to a memory space of the second virtual machine.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037305/0133 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 21, 2006
From: TRIPATHI, SUNAY; NORDMARK, ERIK; DROUX, NICOLAS G.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 018150/0966 →