IP Library Patent Application 16119053
Patent Application
App. No. 16/119,053

DATA BUFFERING

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 None
App. No.
16/119,053
Abstract

A method is disclosed for bridging between a first data link carrying data units of a first data protocol and a second data link for carrying data units of a second protocol by means of a bridging device. This method may comprise receiving by means of a first entity data units of a first protocol, and storing those data units in the memory. Then, accessing by means of a protocol processing entity the protocol data of data units stored in the memory and thereby performing protocol processing for those data units under the first protocol. The method also accesses by means of a second interface entity the traffic data of data units stored in the memory and thereby transmits that traffic data over the second data link in data units of the second data protocol.

Claims (57)

1 - 27 . (canceled)

28 . A method comprising:

receiving, at a first interface entity, data units in accordance with a first protocol, and storing at least traffic data of those data units in a memory buffer, wherein the data units in accordance with each protocol include protocol data and traffic data;

receiving a call from a protocol processing entity, at the first interface entity, and returning in response thereto a message comprising a reference to the memory buffer and at least some protocol data, control of said memory buffer being handed over to said protocol processing entity;

performing, in response to said message, by the protocol processing entity, protocol processing for those data units, control of said memory buffer being handed over to a second interface entity; and

accessing, by the second interface entity, the traffic data of data units stored in the memory buffer and thereby transmitting that traffic data through an output in data units in accordance with a second protocol.

29 . A method as claimed in claim 28 , wherein the protocol processing entity is arranged to perform protocol processing for the data units stored in the memory buffer without it accessing the traffic data of those units stored in said memory buffer.

30 . A method as claimed in claim 29 , wherein the first protocol is such that protocol data of a data unit of the first protocol includes check data that is a function of the traffic data of the data unit, and the method comprises:

applying the function by the first interface entity to the content of a data unit of the first protocol received by the first interface entity to calculate first check data;

transmitting the first check data to the protocol processing entity; and

comparing by the protocol processing entity the first check data calculated for a data unit with the check data included in the protocol data of that data unit.

31 . A method as claimed in claim 28 , wherein:

the memory buffer is at least one memory buffer;

the first interface entity, the second interface entity and the protocol processing entity are each arranged to access a first memory buffer of the at least one memory buffer only when they have control of the first memory buffer; and

the method comprises:

the first interface entity storing a received data unit of the first protocol in a given memory buffer, of the at least one memory buffer, of which it has control and subsequently passing control of the given memory buffer to the protocol processing entity;

the protocol processing entity passing control of a given memory buffer to the second interface entity when it has performed protocol processing of the or each data unit stored in the given memory buffer; and

the second interface entity passing control of a given memory buffer to the first interface entity when it has transmitted the traffic data contained in the given memory buffer through the output in data units in accordance with the second data protocol.

32 . A method as claimed in claim 28 , comprising:

generating, by the protocol processing entity, protocol data of the second protocol for the data units to be transmitted under the second protocol;

communicating that protocol data to the second interface entity; and

the second interface entity including that protocol data in the said data units in accordance with the second protocol.

33 . A method as claimed in claim 32 , wherein the second protocol is such that protocol data of a data unit of the second protocol includes check data that is a function of the traffic data of the data unit, and

the method comprises:

applying the function by the second interface entity to the content of a data unit of the second protocol to be transmitted by the second interface entity to calculate first check data;

combining that check data with protocol data received from the protocol processing entity to form second protocol data; and

the second interface entity including the second protocol data in the said data units in accordance with the second protocol.

34 . A method as claimed in claim 28 , wherein one of the first and second protocols is TCP.

35 . A method as claimed in claim 28 , wherein one of the first and second protocols is Fibrechannel.

36 . A method as claimed in claim 28 , wherein the first and second protocols are the same protocol.

37 . A method as claimed in claim 28 , wherein the first and second interface entities each communicate with the respective data link via a respective hardware interface.

38 . A method as claimed in claim 28 , wherein the protocol processing comprises terminating a link of the first protocol.

39 . A method as claimed in clam 28 , wherein the protocol processing comprises:

inspecting the traffic data of the first protocol;

comparing the traffic data of the first protocol with one or more pre-set rules; and

if the traffic data does not satisfy the rules preventing that traffic data from being transmitted by the second interface entity.

40 . An apparatus comprising:

one or more processors configured to provide a first interface entity for interfacing with an input, a second interface entity for interfacing with an output, and a protocol processing entity, wherein the input carries data units in accordance with a first protocol and the output carries data units in accordance with a second protocol, the first and second protocols being such that data units in accordance with each protocol include protocol data and traffic data;

the first interface entity being arranged to receive data units in accordance with the first protocol, store those data units in a memory buffer, and in response to receipt of a call from the protocol processing entity, return a message thereto comprising a reference to the memory buffer and at least some protocol data, control of said memory buffer being handed over to said protocol processing entity;

the protocol processing entity being arranged to perform protocol processing for those data units, control of said memory buffer being handed over to said second interface entity; and

the second interface entity being arranged to access the traffic data of the data units stored in the memory buffer and thereby transmit that traffic data through the output in data units in accordance with a second data protocol.

41 . An apparatus comprising:

an interface for interfacing with an input, wherein the input carries data units in accordance with a first protocol, the first protocol being such that data units in accordance with the first protocol include protocol data and traffic data; and

one or more processors configured to provide a protocol processing entity, wherein said interface is configured to perform at least some protocol processing for data units received at the input, and respond to at least one message from said protocol processing entity with a reference to a memory buffer in which one or more data units are stored, control of said memory buffer being handed over to said protocol processing entity by removing said memory buffer from an owned buffer list of the interface and adding said memory buffer to an owned buffer list of the protocol processing entity, and the protocol processing entity is arranged to cause said one or more processors to perform protocol processing for said data units stored in said memory buffer without accessing the traffic data of those data units stored in said memory buffer.

42 . A method as claimed in claim 28 , wherein the first interface entity comprises a first transport library, and the second interface entity comprises a second transport library.

43 . A method as claimed in claim 28 , further comprising:

in response to receiving a message from the protocol processing entity at the second interface entity, processing protocol data to form protocol data of a second protocol.

44 . A method as claimed in claim 31 , wherein:

each memory buffer is identifiable by a virtual reference;

the step of the first interface entity passing control of a buffer to the protocol processing entity comprises passing to the protocol processing entity a virtual reference to that buffer; and

the step of the protocol processing entity passing control of a buffer to the second interface entity comprises passing to the second interface entity a virtual reference to that buffer.

45 . A method as claimed in claim 28 , further comprising:

the protocol processing entity periodically issuing calls to the first interface entity to initiate protocol processing of data units stored in said memory buffer;

the first interface entity, in response to receiving one or more of said calls, returning a response message to the protocol processing entity comprising at least one of:

protocol data of data units stored in the memory buffer; and/or

an indication of a location in memory of the traffic data of data units stored in the memory buffer.

46 . A method as claimed in claim 28 , wherein the one or more processors are configured to provide the first interface entity, second interface entity, and protocol processing entity at user level.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 25, 2019
From: SOLARFLARE COMMUNICATIONS, INC.
To: XILINX, INC.
Reel/Frame 051108/0209 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 13, 2018
From: POPE, STEVEN; RIDDOCH, DAVID
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 047483/0438 →