# US 12,184,535 B1 · Increasing robustness of connections by offloading keep alive protocol data units

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

- Number: US 12,184,535 B1
- Document ID: US12184535B1
- Status: Granted
- Kind: B1
- Application number: 18/112,886
- Filed: 2023-02-22
- Granted: 2024-12-31
- Earliest claimed: 2023-02-22
- Assignees: Juniper Networks, Inc.
- Applicants: Juniper Networks, Inc.
- Inventors: Amit Arora; Erin C. MacNeil; Harmeet Singh; Sairam Neelam
- Web page: https://patentgrep.com/patent/US12184535B1

## CPC

- H04L 45/04: {Interdomain routing, e.g. hierarchical routing}
- H04L 45/026: {Details of "hello" or keep-alive messages}
- H04L 45/44: Distributed routing
- H04L 67/145: avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A network device may establish, via a routing protocol daemon (RPD) of the network device, border gateway protocol (BGP) sockets with peer network devices and may establish a socket between the RPD and a periodic packet management daemon (PPMD) of the network device. The network device may provide file descriptors of the BGP sockets from the RPD to the PPMD, via the socket, and may provide, from the RPD and via the BGP sockets, non-keep alive protocol data units (PDUs) to the peer network devices. The network device may provide, from the PPMD and via the BGP sockets, keep alive PDUs to the peer network devices.

## Claims

### Claim 1

A method, comprising:
establishing, via a routing protocol daemon (RPD) of a network device, border gateway protocol (BGP) sockets with peer network devices;
establishing, by the network device, a socket between the RPD and a periodic packet management daemon (PPMD) of the network device;
providing, by the network device, file descriptors of the BGP sockets from the RPD to the PPMD, via the socket established between the RPD and the PPMD;
providing, from the RPD and via the BGP sockets, non-keep alive protocol data units (PDUs) to the peer network devices; and
providing, from the PPMD and via the BGP sockets, keep alive PDUs to the peer network devices.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
determining whether a full non-keep alive PDU is available; and
preventing a partial non-keep alive PDU from being provided based on determining that the full non-keep alive PDU is not available.

### Claim 3 (depends on 2)

The method of claim 2, wherein preventing the partial non-keep alive PDU from being provided comprises:
preventing the partial non-keep alive PDU from being provided based on enablement of an option that only accepts full non-keep alive PDUs.

### Claim 4 (depends on 2)

The method of claim 2, wherein preventing the partial non-keep alive PDU from being provided comprises:
preventing the partial non-keep alive PDU from being provided based on sharing a lock between the RPD and the PPMD for each of the BGP sockets.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
determining whether a full non-keep alive PDU is available; and
providing, from the RPD and via one of the BGP sockets, the full non-keep alive PDU to one of the peer network devices based on determining that the full non-keep alive PDU is available.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
determining whether a full keep alive PDU is available; and
preventing a partial keep alive PDU from being provided based on determining that the full keep alive PDU is not available.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
determining whether a full keep alive PDU is available; and
providing, from the PPMD and via one of the BGP sockets, the full keep alive PDU to one of the peer network devices based on determining that the full keep alive PDU is available.

### Claim 8

A network device, comprising:
one or more memories; and
one or more processors to:
establish, via a routing protocol daemon (RPD) of a network device, protocol sockets with peer network devices;
establish a socket between the RPD and a periodic packet management daemon (PPMD) of the network device;
provide file descriptors of the protocol sockets from the RPD to the PPMD, via the socket established between the RPD and the PPMD;
provide, from the RPD and via the protocol sockets, non-keep alive protocol data units (PDUs) to the peer network devices; and
provide, from the PPMD and via the protocol sockets, keep alive PDUs to the peer network devices.

### Claim 9 (depends on 8)

The network device of claim 8, wherein the one or more processors are further to:
determine whether the RPD is providing continuous non-keep alive PDUs to one of the peer network devices; and
prevent a keep alive PDU from being provided to the one of the peer network devices based on determining that the RPD is providing continuous non-keep alive PDUs to the one of the peer network devices.

### Claim 10 (depends on 9)

The network device of claim 9, wherein the one or more processors, to determine whether the RPD is providing continuous non-keep alive PDUs to the one of the peer network devices, are to:
determine whether the RPD is providing continuous non-keep alive PDUs to the one of the peer network devices based on whether a socket send buffer, associated with the RPD, is empty.

### Claim 11 (depends on 8)

The network device of claim 8, wherein the one or more processors are further to:
determine whether the RPD is providing continuous non-keep alive PDUs to one of the peer network devices; and
provide, from the PPMD and via one of the protocol sockets, a keep alive PDU to the one of the peer network devices based on determining that the RPD is not providing continuous non-keep alive PDUs to the one of the peer network devices.

### Claim 12 (depends on 11)

The network device of claim 11, wherein the one or more processors, to determine whether the RPD is providing continuous non-keep alive PDUs to the one of the peer network devices, are to one of:
determine that the RPD is providing continuous non-keep alive PDUs to the one of the peer network devices based on a socket send buffer, associated with the RPD, not being empty; or
determine that the RPD is not providing continuous non-keep alive PDUs to the one of the peer network devices based on the socket send buffer, associated with the RPD, being empty.

### Claim 13 (depends on 8)

The network device of claim 8, wherein the socket established between the RPD and the PPMD is a Unix domain socket connection.

### Claim 14 (depends on 8)

The network device of claim 8, wherein the one or more processors, to provide the file descriptors of the protocol sockets from the RPD to the PPMD, are to:
provide the file descriptors of the protocol sockets from the RPD to the PPMD, via a socket-level control message rights socket option.

### Claim 15

A non-transitory computer-readable medium storing a set of instructions, the set of instructions comprising:
one or more instructions that, when executed by one or more processors of a network device, cause the network device to:
establish, via a routing protocol daemon (RPD) of a network device, border gateway protocol (BGP) sockets with peer network devices;
establish a socket between the RPD and a periodic packet management daemon (PPMD) of the network device;
provide file descriptors of the BGP sockets from the RPD to the PPMD, via the socket established between the RPD and the PPMD and a socket-level control message rights socket option;
provide, from the RPD and via the BGP sockets, non-keep alive protocol data units (PDUs) to the peer network devices; and
provide, from the PPMD and via the BGP sockets, keep alive PDUs to the peer network devices.

### Claim 16 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the one or more instructions further cause the network device to:
determine whether a full non-keep alive PDU is available; and
prevent a partial non-keep alive PDU from being provided based on determining that the full non-keep alive PDU is not available.

### Claim 17 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the one or more instructions further cause the network device to:
determine whether a full non-keep alive PDU is available; and
provide, from the RPD and via one of the BGP sockets, the full non-keep alive PDU to one of the peer network devices based on determining that the full non-keep alive PDU is available.

### Claim 18 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the one or more instructions further cause the network device to:
determine whether a full keep alive PDU is available; and
prevent a partial keep alive PDU from being provided based on determining that the full keep alive PDU is not available.

### Claim 19 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the one or more instructions further cause the network device to:
determine whether a full keep alive PDU is available; and
provide, from the PPMD and via one of the BGP sockets, the full keep alive PDU to one of the peer network devices based on determining that the full keep alive PDU is available.

### Claim 20 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the one or more instructions further cause the network device to:
determine whether the RPD is providing continuous non-keep alive PDUs to one of the peer network devices; and
prevent a keep alive PDU from being provided to the one of the peer network devices based on determining that the RPD is providing continuous non-keep alive PDUs to the one of the peer network devices.
