IP Library Granted Patent US 10,348,652
Granted Patent B2
US 10,348,652 · App. 15/418,717 · Granted Jul 9, 2019

Systems and methods for propagating metadata of in-flight packets within kernel space

Inventors: Erin C. MacNeil (Carp, CA); Sreekanth Rupavatharam (Campbell, CA); Hariprasad Shanmugam (Kanata, CA)
Assignee: Juniper Networks, Inc.
H04L49/9026G06F3/065G06F3/067G06F3/0619G06F3/0656G06F9/545H04L12/4633H04L69/161H04L49/3009
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 10,348,652
App. No.
15/418,717
Granted
Jul 9, 2019
Kind
B2
Abstract

The disclosed computer-implemented method may include (1) identifying, in kernel space on a network device, a packet that is destined for a remote device, (2) passing, along with the packet, metadata for the packet to a packet buffer in kernel space on the network device, (3) framing, by the kernel module in kernel space, the packet such that the packet egresses via a tunnel interface driver on the network device, (4) encapsulating, by the tunnel interface driver, the packet with the metadata, and then (5) forwarding, by the tunnel interface driver, the packet to the remote device based at least in part on the metadata with which the packet was encapsulated. Various other methods, systems, and computer-readable media are also disclosed.

Claims (72)

1. A method comprising:

identifying, in kernel space on a network device, a packet that is destined for a remote device external to the network device;

obtaining Type Length Value (TLV) metadata for the packet from a user-space application in user space on the network device, wherein the TLV metadata:

was generated by the user-space application in user space on the network device; and

includes information that identifies the remote device as the destination of the packet;

passing, along with the packet, the TLV metadata for the packet to a packet buffer in kernel space on the network device;

framing, by a kernel module in kernel space, the packet such that the packet egresses via a tunnel interface driver on the network device;

encapsulating, by the kernel module in kernel space, the packet with the TLV metadata;

associating the TLV metadata with the packet such that the TLV metadata is accessible in connection with the packet throughout a protocol stack that comprises a plurality of network layers;

propagating the TLV metadata with the packet across the plurality of network layers included in the protocol stack to the tunnel interface driver to enable the tunnel interface driver to access the TLV metadata in connection with the packet as the packet arrives at the tunnel interface driver;

making a routing decision to forward the packet to the remote device due at least in part to the remote device being identified as the destination of the packet by information included in the TLV metadata; and

forwarding, by the tunnel interface driver, the packet to the remote device based at least in part on the routing decision.

2. The method of claim 1 , wherein the TLV metadata comprises a route that leads to the remote device.

3. The method of claim 1 , further comprising extending the packet buffer in kernel space on the network device to facilitate attaching the TLV metadata to the packet by way of the kernel module; and

wherein:

the packet buffer includes the packet;

encapsulating the packet with the TLV metadata comprises attaching the TLV metadata to the packet buffer; and

tunneling the packet and the TLV metadata to the tunnel interface driver comprises

passing the packet buffer to the tunnel interface driver.

4. The method of claim 3 , wherein extending the packet buffer comprises adding at least one additional data field to the packet buffer such that any network layer within the protocol stack on the network device is able to attach the TLV metadata to the packet buffer via the additional data field.

5. The method of claim 1 , wherein the packet that is destined for the remote device originated from the user-space application in user space on the network device; and

further comprising enabling the user-space application to select the remote device as the destination of the packet.

6. The method of claim 1 , wherein passing the TLV metadata along with the packet to the kernel module comprises:

loading the packet and the TLV metadata into a socket buffer in user space on the network device; and

providing the socket buffer to the kernel module.

7. The method of claim 1 , further comprising:

identifying, at the tunnel interface driver, another packet received from the remote device;

forwarding, by the tunnel interface driver, the other packet along with other metadata for the other packet to the kernel module in kernel space; and

passing, by the kernel module, the other packet and the other metadata to a user-space application in user space on the network device to enable the user-space application to consume the TLV metadata in connection with the packet.

8. The method of claim 1 , wherein:

the packet that is destined for the remote device originated from another remote device; and

further comprising:

enabling any network layer within the protocol stack on the network device to attach the TLV metadata to the packet; and

forwarding, by the tunnel interface driver, the packet along with the TLV metadata to the other remote device without ever passing the packet to user space on the network device.

9. A system comprising:

a kernel module, stored in memory, that:

identifies, in kernel space on a network device, a packet that is destined for a remote device external to the network device;

obtains Type Length Value (TLV) metadata for the packet from a user-space application in user space on the network device, wherein the TLV metadata:

was generated by the user-space application in user space on the network device; and

includes information that identifies the remote device as the destination of the packet;

passes, along with the packet, the TLV metadata for the packet to a packet buffer in kernel space on the network device;

frames the packet such that the packet egresses via a tunnel interface driver on the network device;

encapsulates the packet with the TLV metadata;

associates the TLV metadata with the packet such that the TLV metadata is accessible in connection with the packet throughout a protocol stack that comprises a plurality of network layers; and

propagates the TLV metadata with the packet across the plurality of network layers included in the protocol stack to the tunnel interface driver to enable the tunnel interface driver to access the TLV metadata in connection with the packet as the packet arrives at the tunnel interface driver;

wherein the tunnel interface driver:

makes a routing decision to forward the packet to the remote device due at least in part to the remote device being identified as the destination of the packet by information included in the TLV metadata; and

forwards the packet to the remote device based at least in part on the routing decision; and

at least one physical processor that executes the kernel module and the tunnel interface driver.

10. The system of claim 9 , wherein the TLV metadata comprises a route that leads to the remote device.

11. The system of claim 9 , wherein:

the kernel module extends the packet buffer in kernel space on the network device to facilitate attaching the TLV metadata to the packet by way of the kernel module;

the packet buffer includes the packet; and

the kernel module:

attaches the TLV metadata to the packet buffer; and

passes the packet buffer to the tunnel interface driver.

12. The system of claim 11 , wherein the kernel module adds at least one additional data field to the packet buffer such that any network layer within the protocol stack on the network device is able to attach the TLV metadata to the packet buffer via the additional data field.

13. The system of claim 9 , wherein:

the packet that is destined for the remote device originated from the user-space application in user space on the network device; and

the kernel module enables the user-space application to select the remote device as the destination of the packet.

14. A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

identify, in user space on a network device, a packet that originates from a user-space application and is destined for a remote device external to the network device;

obtain Type Length Value (TLV) metadata for the packet from a user-space application in user space on the network device, wherein the TLV metadata:

was generated by the user-space application in user space on the network device; and

includes information that identifies the remote device as the destination of the packet;

pass, along with the packet, the TLV metadata for the packet to a packet buffer in kernel space on the network device;

frame, by a kernel module in kernel space, the packet such that the packet egresses via a tunnel interface driver on the network device;

encapsulate, by the kernel module in kernel space, the packet with the TLV metadata;

associate the TLV metadata with the packet such that the TLV metadata is accessible in connection with the packet throughout a protocol stack that comprises a plurality of network layers;

propagate the TLV metadata with the packet across the plurality of network layers included in the protocol stack to the tunnel interface driver to enable the tunnel interface driver to access the TLV metadata in connection with the packet as the packet arrives at the tunnel interface driver;

make a routing decision to forward the packet to the remote device due at least in part to the remote device being identified as the destination of the packet by information included in the TLV metadata; and

forward, by the tunnel interface driver, the packet to the remote device based at least in part on the routing decision.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 28, 2017
From: MACNEIL, ERIN C.; RUPAVATHARAM, SREEKANTH; SHANMUGAM, HARIPRASAD
To: JUNIPER NETWORKS, INC.
Reel/Frame 041114/0164 →
Continuity (1)
Related Publication 20180219805A1 · Aug 2, 2018
Cited By (1)
US 12,255,808