# US 10,454,893 B2 · Data plane packet processing tool chain

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,454,893 B2
- Document ID: US10454893B2
- Status: Granted
- Kind: B2
- Application number: 15/295,670
- Filed: 2016-10-17
- Published: 2017-02-02
- Granted: 2019-10-22
- Earliest claimed: 2011-06-29
- Assignees: VeriSign, Inc.
- Applicants: Verisign, Inc.
- Inventors: John Bosco; Dow Summers; Kenneth Ryan
- Web page: https://patentgrep.com/patent/US10454893B2

## CPC

- H04L 63/0227: {Filtering policies (mail message filtering H04L51/212)}
- H04L 61/4511: using domain name system [DNS]
- H04L 63/0236: {Filtering by address, protocol, port number or service, e.g. IP-address or URL}
- H04L 63/1458: {Denial of Service}
- H04L 69/12: Protocol engines
- H04L 69/329: in the application layer [OSI layer 7]
- H04L 63/166: {at the transport layer}
- H04L 63/168: {above the transport layer}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

This present disclosure relates to systems and methods for providing a data plane processing tool chain for processing packets that can use OSI layers 4 and above in the data plane without using a hypervisor. The disclosure has multiple processing capabilities, including: packet filtering, resolving DNS packets, generating packets, packet forwarding, performing DNS look up, time-stamping DNS packets, writing packets to disk, load-balancing, and protecting against DDOS attacks.

## Claims

### Claim 1

A method, comprising:
reading, using a poll mode driver, a first Domain Name System (DNS) packet from a first queue of a network interface card, wherein the first DNS packet is a DNS query packet;
sending, using the poll mode driver, the first DNS packet to a data plane;
processing the first DNS packet in the data plane, wherein processing the first DNS packet comprises querying a database storing DNS information;
generating, in the data plane, a second DNS packet in response to processing the first DNS packet, wherein the second DNS packet is a DNS response packet corresponding to the DNS query packet; and
sending, using the poll mode driver, the second DNS packet from the data plane to a second queue of the network interface card.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first queue is an RX queue.

### Claim 3 (depends on 1)

The method of claim 1, wherein the second queue is a TX queue.

### Claim 4 (depends on 1)

The method of claim 1, wherein processing the first DNS packet further comprises performing packet filtering in the data plane.

### Claim 5 (depends on 4)

The method of claim 4, wherein the packet filtering comprises:
identifying a source Internet Protocol (IP) address or destination port for the first DNS packet; and
filtering the first DNS packet based on the identified source IP address or destination port.

### Claim 6 (depends on 1)

The method of claim 1, wherein processing the first DNS packet occurs independently of a hypervisor.

### Claim 7 (depends on 1)

The method of claim 1, wherein processing the first DNS packet occurs independently of an operating system.

### Claim 8

A system, comprising:
a processor; and
a memory coupled with the processor, wherein the memory is configured to provide the processor with instructions which when executed cause the processor to perform operations comprising:
reading, using a poll mode driver, a first Domain Name System (DNS) packet from a first queue of a network interface card, wherein the first DNS packet is a DNS query packet;
sending, using the poll mode driver, the first DNS packet to a data plane;
processing the first DNS packet in the data plane, wherein processing the first DNS packet comprises querying a database storing DNS information;
generating, in the data plane, a second DNS packet in response to processing the first DNS packet, wherein the second DNS packet is a DNS response packet corresponding to the DNS query packet; and
sending, using the poll mode driver, the second DNS packet from the data plane to a second queue of the network interface card.

### Claim 9 (depends on 8)

The system of claim 8, wherein the first queue is an RX queue.

### Claim 10 (depends on 8)

The system of claim 8, wherein the second queue is a TX queue.

### Claim 11 (depends on 8)

The system of claim 8, wherein processing the first DNS packet further comprises performing packet filtering in the data plane.

### Claim 12 (depends on 11)

The system of claim 11, wherein the packet filtering comprises:
identifying a source Internet Protocol (IP) address or destination port for the first DNS packet; and
filtering the first DNS packet based on the identified source IP address or destination port.

### Claim 13 (depends on 8)

The system of claim 8, wherein processing the first DNS packet occurs independently of a hypervisor.

### Claim 14 (depends on 8)

The system of claim 8, wherein processing the first DNS packet occurs independently of an operating system.

### Claim 15

A non-transitory computer-readable medium storing instructions that, when executed by at least one processor of a computing system, cause the computing system to perform a method, comprising:
reading, using a poll mode driver, a first Domain Name System (DNS) packet from a first queue of a network interface card, wherein the first DNS packet is a DNS query packet;
sending, using the poll mode driver, the first DNS packet to a data plane;
processing the first DNS packet in the data plane, wherein processing the first DNS packet comprises querying a database storing DNS information;
generating, in the data plane, a second DNS packet in response to processing the first DNS packet, wherein the second DNS packet is a DNS response packet corresponding to the DNS query packet; and
sending, using the poll mode driver, the second DNS packet from the data plane to a second queue of the network interface card.
