IP Library Granted Patent US 10,104,005
Granted Patent B2
US 10,104,005 · App. 13/644,433 · Granted Oct 16, 2018

Data buffering

Inventors: Steven Leslie Pope (Cambridge, GB); David James Riddoch (Cambridge, GB)
Assignee: Solarflare Communications, Inc.
H04L47/62G06F9/45533G06F9/544H04L29/06H04L47/27H04L47/30H04L69/16
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,104,005
App. No.
13/644,433
Granted
Oct 16, 2018
Kind
B2
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 interface 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 (59)

1. A method for bridging between a first data link carrying data units in accordance with a first data protocol and a second data link for carrying data units in accordance with a second protocol by a bridging device, the first and second protocols being such that data units in accordance with each protocol include protocol data and traffic data and the bridging device comprising one or more processors configured to provide a first interface entity for interfacing with the first data link, a second interface entity for interfacing with the second data link, and a protocol processing entity, the bridging device further comprising a memory having a plurality of buffer regions accessible by the first interface entity, the second interface entity and the protocol processing entity, the method comprising:

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

receiving a call from the protocol processing entity, at the first interface entity, and returning in response thereto a message comprising a reference to the first memory buffer region and at least some protocol data, control of said first memory buffer region 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 first memory buffer region being handed over to said 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 over the second data link in data units in accordance with the second data protocol.

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

3. A method as claimed in claim 2 , 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.

4. A method as claimed in claim 1 , wherein:

the first interface entity, the second interface entity and the protocol processing entity are each arranged to access a buffer region only when they have control of it; and the method comprises:

the first interface entity storing a received data unit of the first protocol in a buffer of which it has control and subsequently passing control of that buffer to the protocol processing entity;

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

the second interface entity passing control of a buffer to the first interface entity when it has transmitted the traffic data contained in that buffer over the second data link in data units in accordance with the second data protocol.

5. A method as claimed in claim 1 , 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 the protocol data of the second protocol to the second interface entity; and

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

6. A method as claimed in claim 5 , 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 the first 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.

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

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

9. A method as claimed in claim 1 , wherein the first and second protocols are the same.

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

11. A method as claimed in claim 1 , wherein the first and second interface entities each communicate with the respective data link via the same hardware interface.

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

13. A method as claimed in claim 1 , 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.

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

15. A method as claimed in claim 1 , 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 the second protocol.

16. A method as claimed in claim 4 , wherein:

each buffer region of said plurality of buffers is identifiable by a virtual reference;

the step of the first interface entity passing control of a buffer to the protocol processing entity comprising 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.

17. A method as claimed in claim 1 , further comprising:

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

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 first memory buffer region; and

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

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

19. A bridging device for bridging between a first data link carrying data units in accordance with a first data protocol and a second data link for carrying 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 and the bridging device comprising:

one or more processors configured to provide a first interface entity for interfacing with the first data link, a second interface entity for interfacing with the second data link, and a protocol processing entity;

the first interface entity being arranged to:

receive data units in accordance with the first protocol;

store those data units in a first memory buffer region; and

in response to receipt of a call from the protocol processing entity, return a message thereto comprising a reference to the first memory buffer region and at least some protocol data, control of said first memory buffer region being handed over to said protocol processing entity:

the protocol processing entity being arranged to:

perform protocol processing for those data units; and

control of said first memory buffer region being handed over to said second interface entity; and

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

20. A bridging device for bridging between a first data link carrying data units in accordance with a first data protocol and a second data link for carrying 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 bridging device comprising:

an interface for interfacing with said first data link; 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 over the first data link, and respond to at least one message from said protocol processing entity with a reference to a memory buffer region in which one or more data units are stored, control of said memory buffer region 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 of the bridging device 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.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 25, 2019
From: SOLARFLARE COMMUNICATIONS, INC.
To: XILINX, INC.
Reel/Frame 051108/0209 →
RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jul 31, 2019
From: ALLY BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 049918/0440 →
RELEASE OF SECURITY INTEREST Recorded Jun 15, 2017
From: PACIFIC WESTERN BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 042820/0890 →
SECURITY INTEREST Recorded Mar 7, 2017
From: SOLARFLARE COMMUNICATIONS, INC.
To: ALLY BANK
Reel/Frame 041902/0527 →
SECURITY INTEREST Recorded Apr 6, 2016
From: SOLARFLARE COMMUNICATIONS, INC.
To: PACIFIC WESTERN BANK
Reel/Frame 038363/0589 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 23, 2013
From: POPE, STEVEN; RIDDOCH, DAVID
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 029682/0542 →
Priority Claims (1)
GB 0602033.3 · Feb 1, 2006 · national
Continuity (3)
Continuation 12215437 · Jun 26, 2008
Continuation PCTGB2006004946 · Dec 28, 2006
Related Publication 20130121183A1 · May 16, 2013