# US 10,122,642 B2 · Managing a data stream in a multicore system

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

- Number: US 10,122,642 B2
- Document ID: US10122642B2
- Status: Granted
- Kind: B2
- Application number: 15/280,085
- Filed: 2016-09-29
- Published: 2018-03-29
- Granted: 2018-11-06
- Earliest claimed: 2016-09-29
- Assignees: Intel IP Corporation
- Applicants: Intel IP Corporation
- Inventors: Oded Oliron Liron; Netanel Nati Bar-David; Marina Sharkansky
- Web page: https://patentgrep.com/patent/US10122642B2

## CPC

- H04L 47/34: ensuring sequence integrity, e.g. using sequence numbers
- G06F 16/2358: {Change logging, detection, and notification (replication G06F16/27)}
- G06F 16/24568: {Data stream processing; Continuous queries}
- H04L 47/193: at the transport layer, e.g. TCP related
- H04L 47/41: by acting on aggregated flows or links
- H04L 69/326: in the transport layer [OSI layer 4] (H04L69/16 takes precedence)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques are provided for managing the forwarding of a data stream to respective cores of a multi-core system, in which the incoming data stream is processed in a hardware machine prior to forwarding the data stream to respective cores. The techniques may include the hardware machine executing an algorithm to identify frames in the data stream having a fake hole therein, generating metadata, and attaching the metadata to any frame in which a fake hole is identified. The metadata may instruct a core that receives the respective frame in which a fake hole has been identified to ignore the fake hole in that respective frame. Also in the algorithm, the hardware machine identifies frames in which a real hole exists and maintains a database log of the real holes and the respective cores among the multiple cores that receive the data stream with the real holes therein, together with a notification to the respective core.

## Claims

### Claim 1

A method for managing forwarding of a data stream to respective cores of a multi-core system, comprising:
processing, in a system comprising multiple cores as intended recipients of an incoming data stream, the incoming data stream in a hardware machine prior to forwarding the data stream to respective cores among said multiple cores;
identifying, in said hardware machine, frames in said data stream respectively having a fake hole therein and to generate metadata and to attach metadata to each frame in which a fake hole is identified, said metadata instructing a core that receives the respective frame in which a fake hole has been identified to ignore the fake hole in that respective frame;
identifying, in said hardware machine, frames in which a real hole exists and maintaining a database log of said real holes and the respective cores among said multiple cores that receive said data stream with said real holes therein, together with a notification to the respective core; and
forwarding, from said hardware machine, the data stream to respective cores among said multiple cores, the data stream including (i) each frame in which a fake hole was identified including the metadata instructing the core receiving each respective frame to ignore the fake hole in that respective frame, and (ii) each frame in which a real hole was identified.

### Claim 2 (depends on 1)

A method as claimed in claim 1 comprising identifying said real holes in respective frames in said data stream by analyzing USN (Upper Sequence Number) and NSSN (Normalized Start Sequence Number) per BAID (Block Acknowledgement Identification).

### Claim 3 (depends on 2)

A method as claimed in claim 2 comprising iteratively analyzing USN and NSSN per BAID.

### Claim 4 (depends on 3)

A method as claimed in claim 3 comprising iteratively analyzing USN and NSSN per BAID by:
maintaining an NSSN table and a USN table;
checking said incoming data stream to determine whether a valid frame is present in said incoming data stream based upon whether a BAID is present in said incoming data stream, a BAID having a value within a range between zero and BAID_MAX, with BAID_MAX being equal to a number of supported BA agreements;
if a valid frame is present in said incoming data stream, checking whether an NSSN table update is needed;
if an NSSN table update is needed, updating the NSSN table; and
if an NSSN table update is not needed, checking whether SN>USN and, if so, updating the USN table.

### Claim 5 (depends on 4)

A method as claimed in claim 4 comprising:
if SN is not greater than USN, checking whether NSSN<USN;
if NSSN<USN, setting a QID (Queue Identification) pending bit for said valid frame that designates a destination for a message packet in said valid frame; and
if NSSN is not less than USN, clearing said QID pending bit.

### Claim 6 (depends on 5)

A method as claimed in claim 5 comprising executing said method in said hardware machine based on FREL (Frame Release Logic) information for a MSG_PENDING (Message Pending) core.

### Claim 7 (depends on 4)

A method as claimed in claim 4 comprising implementing said check as to whether a valid frame is present in said incoming data stream by checking each frame for a BAID.

### Claim 8

A method for managing forwarding of a data stream to respective cores of a multi-core system, comprising:
in a system comprising multiple cores as intended recipients of an incoming data stream, processing the incoming data stream in a hardware machine prior to forwarding the data stream to respective cores among said multiple cores;
analyzing in said hardware machine, FREL (Frame Release Logic) information for a MSG_PENDING (Message Pending) core to identify frames in said data stream respectively having a fake hole therein and to generate metadata and to attach metadata to each frame in which a fake hole is identified, said metadata instructing a core that receives the respective frame in which a fake hole has been identified to ignore the fake hole in that respective frame;
identifying, in said hardware machine, frames in which a real hole exists by analyzing USN (Upper Sequence Number) and NSSN (Normalized Start Sequence Number) per BAID (Block Acknowledgement Identification) and maintaining a database log of said real holes and the respective cores among said multiple cores that receive said data stream with said real holes therein, together with a notification to the respective core; and
forwarding, from said hardware machine, the data stream to respective cores among said multiple cores, the data stream including (i) each frame in which a fake hole was identified including the metadata instructing the core receiving each respective frame to ignore the fake hole in that respective frame, and (ii) each frame in which a real hole was identified.

### Claim 9 (depends on 8)

A method as claimed in claim 8 comprising iteratively analyzing USN and NSSN per BAID.

### Claim 10 (depends on 9)

A method as claimed in claim 9 comprising iteratively analyzing USN and NSSN per BAID by maintaining an NSSN table and a USN table;
checking said incoming data stream to determine whether a valid frame is present in said incoming data stream based upon whether a BAID is present in said incoming data stream, a BAID having a value within a range between zero and BAID_MAX, with BAID_MAX being equal to a number of supported BA agreements;
if a valid frame is present in said incoming data stream, checking whether an NSSN table update is needed;
if an NSSN table update is needed, updating the NSSN table; and
if an NSSN table update is not needed, checking whether SN>USN and, if so, updating the USN table.

### Claim 11 (depends on 10)

A method as claimed in claim 10 comprising:
if SN is not greater than USN, checking whether NSSN<USN;
if NSSN<USN, setting a QID (Queue Identification) pending bit for said valid frame that designates a destination for a message packet in said valid frame; and
if NSSN is not less than USN, clearing said QID pending bit.

### Claim 12 (depends on 11)

A method as claimed in claim 11 comprising executing said identifying steps in said hardware machine based on FREL (Frame Release Logic) information for a MSG_PENDING (Message Pending) core.

### Claim 13 (depends on 10)

A method as claimed in claim 10 comprising implementing said check as to whether a valid frame is present in said incoming data stream by checking each frame for a BAID.

### Claim 14

A hardware machine for managing forwarding of a data stream to respective cores of a multi-core system, comprising:
a processor in a system comprising multiple cores as intended recipients of an incoming data stream, the processor configured to:
process the incoming data stream in a hardware machine prior to forwarding the data stream to respective cores among said multiple cores;
identify frames in said data stream respectively having a fake hole therein and to generate metadata and to attach metadata to each frame in which a fake hole is identified, said metadata instructing a core that receives the respective frame in which a fake hole has been identified to ignore the fake hole in that respective frame; and
identify frames in which a real hole exists and maintaining a database log of said real holes and the respective cores among said multiple cores that receive said data stream with said real holes therein, together with a notification to the respective core; and
an output interface configured to forward the data stream to respective cores among said multiple cores, the data stream including (i) each frame in which a fake hole was identified including the metadata instructing the core receiving each respective frame to ignore the fake hole in that respective frame, and (ii) each frame in which a real hole was identified.

### Claim 15 (depends on 14)

A hardware machine as claimed in claim 14, wherein said processor is configured to identify said real holes in respective frames in said data stream by analyzing USN (Upper Sequence Number) and NSSN (Normalized Start Sequence Number) per BAID (Block Acknowledgement Identification).

### Claim 16 (depends on 15)

A hardware machine as claimed in claim 15 wherein said processor is configured to iteratively analyze USN and NSN per BAID.

### Claim 17 (depends on 16)

A hardware machine as claimed in claim 16 wherein said processor is configured to:
maintain an NSSN table and a USN table;
check said incoming data stream to determine whether a valid frame is present in said incoming data stream based upon whether a BAID is present in said incoming data stream, a BAID having a value within a range between zero and BAID_MAX, with BAID_MAX being equal to a number of supported BA agreements;
if a valid frame is present in said incoming data stream, check whether an NSSN table update is needed;
if an NSSN table update is needed, update the NSSN table;
if an NSSN table update is not needed, checking whether SN>USN and, if so, update the USN table.

### Claim 18 (depends on 17)

A hardware machine as claimed in claim 17 wherein said processor is configured to:
if SN is not greater than USN, check whether NSSN<USN;
if NSSN<USN, set a QID (Queue Identification) pending bit for said valid frame that designates a destination for a message packet in said valid frame; and
if NSSN is not less than USN, clear said QID pending bit.

### Claim 19 (depends on 18)

A hardware machine as claimed in claim 18 wherein said processor is configured to execute said identifying steps based on FREL (Frame Release Logic) information for a MSG_PENDING (Message Pending) core.

### Claim 20 (depends on 17)

A hardware machine as claimed in claim 17 wherein said processor is configured to check as to whether a valid frame is present in said data stream by checking for a BAID.
