IP Library Granted Patent US 10,027,601
Granted Patent B2
US 10,027,601 · App. 14/729,127 · Granted Jul 17, 2018

Flow-based packet modification

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,027,601
App. No.
14/729,127
Granted
Jul 17, 2018
Kind
B2
Abstract

Communication apparatus includes a host interface, which is configured to be connected to a peripheral component bus, and a network interface, which is configured to be connected to a network. Packet processing circuitry is coupled between the host interface and the network interface and is configured to receive from a first interface, selected from among the host interface and the network interface, a data packet comprising a header containing multiple fields having respective values, to identify, responsively to a value of at least one of the fields, a corresponding entry in a header modification table, and to modify the header in accordance with the identified entry. The data packet with the modified header is transmitted through a second interface selected from among the host interface and the network interface.

Claims (39)

1. Communication apparatus, comprising:

a host interface, which is configured to be connected to a peripheral component bus so as to communicate via the bus with a central processing unit (CPU) and a memory of a host computer;

a network interface, which is configured to be connected to a network so as to transmit outgoing data packets to the network and receive incoming data packets from the network; and

packet processing circuitry, which is coupled between the host interface and the network interface and is configured:

to receive from a first interface, selected from among the host interface and the network interface, a data packet comprising a header containing multiple fields having respective values;

to identify, based on a value of at least one of the fields, a corresponding entry in a header modification table, stored in the memory of the host computer, and accessed via the peripheral component bus;

to modify the header in accordance with the identified entry; and

to transmit the data packet with the modified header through a second interface selected from among the host interface and the network interface,

wherein the header modification table includes for each entry, a field for a next lookup pointer, indicating another entry containing an additional instruction to be applied to the packet, and wherein the packet processing circuitry is configured to perform multiple header modifications in accordance with entries chained by the next lookup pointer field.

2. The apparatus according to claim 1 , wherein one of the first and second interfaces is the host interface and the other of the first and second interfaces is the network interface.

3. The apparatus according to claim 1 , wherein both the first and second interfaces are the host interface, such that the data packet is received from a process running on the CPU through the host interface and is looped back, after modification of the header, to another process running on the CPU through the host interface.

4. The apparatus according to claim 1 , wherein the packet processing circuitry is configured to identify, responsively to the modified header, a steering instruction in a packet steering table, and to steer the packet to a destination in accordance with the identified steering instructions.

5. The apparatus according to claim 1 , wherein the packet processing circuitry is configured to modify the header by rewriting a field of the header.

6. The apparatus according to claim 5 , wherein rewriting the field comprises replacing an existing value of the field with a constant value.

7. The apparatus according to claim 5 , wherein rewriting the field comprises replacing an existing value of the field with a new value taken from another field in the header.

8. The apparatus according to claim 5 , wherein rewriting the field comprises adding a constant value to an existing value of the field.

9. The apparatus according to claim 1 , wherein the packet processing circuitry is configured to modify the header by pushing one or more new header fields onto the packet.

10. The apparatus according to claim 9 , wherein the one or more new header fields constitute a new header, which is selected from a set of header types consisting of a virtual local area network (VLAN) header, a multi-protocol label switching (MPLS) label, and a provider backbone bridge (PBB) header.

11. The apparatus according to claim 1 , wherein the packet processing circuitry is configured to modify the header by popping one or more of the fields from the header.

12. The apparatus according to claim 1 , wherein both the first and second interfaces are the network interface, such that the data packet is received from the network and is looped back to the network after modification of the header.

13. A method for communication, comprising:

connecting a host interface of a network interface controller (NIC) to a peripheral component bus so as to communicate via the bus with a central processing unit (CPU) and a memory of a host computer;

connecting a network interface of the NIC to a network so as to transmit outgoing data packets to the network and receive incoming data packets from the network;

receiving in the NIC from a first interface, selected from among the host interface and the network interface, a data packet comprising a header containing multiple fields having respective values;

identifying by the NIC, based on a value of at least one of the fields, a corresponding entry in a header modification table in the memory of the host computer, accessed by the NIC via the peripheral component bus;

modifying the header in the NIC in accordance with the identified entry; and

transmitting the data packet with the modified header through a second interface selected from among the host interface and the network interface,

wherein the header modification table includes for each entry, a field for a next lookup pointer, indicating another entry containing an additional instruction to be applied to the packet, and wherein the NIC is configured to perform multiple header modifications in accordance with entries chained by the next lookup pointer field.

14. The method according to claim 13 , wherein one of the first and second interfaces is the host interface and the other of the first and second interfaces is the network interface.

15. The method according to claim 13 , wherein both the first and second interfaces are the host interface, such that the data packet is received from a process running on the CPU through the host interface, and transmitting the data packet comprises looping the data packet back, after modifying the header, to another process running on the CPU, through the host interface.

16. The method according to claim 13 , wherein transmitting the data packet comprises identifying in the NIC, responsively to the modified header, a steering instruction in a packet steering table, and steering the packet to a destination in accordance with the identified steering instructions.

17. The method according to claim 13 , wherein modifying the header comprises rewriting a field of the header.

18. The method according to claim 17 , wherein rewriting the field comprises replacing an existing value of the field with a constant value.

19. The method according to claim 17 , wherein rewriting the field comprises replacing an existing value of the field with a new value taken from another field in the header.

20. The method according to claim 17 , wherein rewriting the field comprises adding a constant value to an existing value of the field.

21. The method according to claim 13 , wherein modifying the header comprises pushing one or more new header fields onto the packet.

22. The method according to claim 21 , wherein the one or more new header fields constitute a new header, which is selected from a set of header types consisting of a virtual local area network (VLAN) header, a multi-protocol label switching (MPLS) label, and a provider backbone bridge (PBB) header.

23. The method according to claim 13 , wherein modifying the header comprises popping one or more of the fields from the header.

24. The method according to claim 13 , wherein both the first and second interfaces are the network interface, such that the data packet is received from the network, and transmitting the data packet comprises looping the data packet back to the network after modification of the header.

Assignments (3)
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 37900/0720 Recorded Jul 13, 2018
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 046542/0792 →
PATENT SECURITY AGREEMENT Recorded Feb 24, 2016
From: MELLANOX TECHNOLOGIES, LTD.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037900/0720 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2015
From: NARKIS, LIOR; BLOCH, NOAM
To: MELLANOX TECHNOLOGIES LTD.
Reel/Frame 035812/0735 →