IP Library Granted Patent US 10,230,635
Granted Patent B2
US 10,230,635 · App. 15/159,515 · Granted Mar 12, 2019

Dual purpose on-chip buffer memory for low latency switching

Inventors: Keshav G. Kamble (Fremont, CA); Abhijit P. Kumbhare (San Jose, CA); Harshad S. Padhye (Santa Clara, CA); Vijoy A. Pandey (San Jose, CA)
Assignee: International Business Machines Corporation
H04L45/745H04L12/4679H04L12/5691H04L45/56H04L47/32H04L47/36H04L49/354H04L69/22
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,230,635
App. No.
15/159,515
Granted
Mar 12, 2019
Kind
B2
Abstract

In one embodiment, an apparatus includes a buffer memory, ingress ports, egress ports, at least one processor, and logic integrated with and/or executable by the at least one processor. The logic is configured to communicate with a software-defined network (SDN) controller, store a look-up table in a first portion of the buffer memory, receive a packet using an ingress port of the apparatus, start an egress timer upon receipt of the packet, process the packet in order to finish processing prior to the egress timer expiring, determine an egress port for the packet, determine a packet size from information in a header of the packet when packet size information is available in the header, begin to route the packet via the egress port once the egress port is determined, and send the packet to the egress port upon expiration of the egress timer without further processing.

Claims (82)

1. An apparatus, comprising:

a buffer memory;

at least one ingress port;

at least one egress port;

at least one processor; and

logic integrated with and/or executable by the at least one processor, the logic being configured to:

communicate with a software-defined network (SDN) controller;

store one or more look-up tables in a first portion of the buffer memory;

receive a plurality of packets to switch over a predetermined period of time;

determine ingress ports associated with the plurality of packets;

determine egress ports associated with the plurality of packets;

determine patterns associated with characteristics of one or more of the plurality of packets, each pattern comprising a consistent ingress port for each of the one or more of the plurality of packets and a consistent egress port for each of the one or more of the plurality of packets to heuristically determine packet flows and create port-to-port mappings between the consistent egress port and the consistent egress port;

store the port-to-port mappings in the one or more look-up tables;

receive a first packet using a first ingress port of the apparatus;

start an egress timer upon receipt of the first packet;

process the first packet in order to finish processing prior to the egress timer expiring;

determine a first egress port for the first packet;

send the first packet to the first egress port upon expiration of the egress timer without further processing;

determine a packet size from information in a header of the first packet in response to packet size information being available in the header; and

begin to route the first packet via the first egress port prior to all of the first packet being received via the first ingress port in response to the packet size being greater than a predetermined threshold.

2. The apparatus as recited in claim 1 , wherein the logic is further configured to:

set a timer upon creating one of the port-to-port mappings;

retire at least one port-to-port mapping upon expiration of the timer; and

relearn the at least one port-to-port mapping in response to the at least one port-to-port mapping being retired.

3. The apparatus as recited in claim 1 , wherein the logic is further configured to:

partition the buffer memory into at least two portions, the first portion of the at least two portions configured to store the one or more look-up tables, each look-up table corresponding to one egress port, and a second portion of the at least two portions configured to buffer egress packets in one or more egress queues, each egress queue corresponding to one egress port;

search a look-up table associated with the first egress port for the first packet to determine additional switching information for the first packet; and

store the additional switching information to the first packet and/or a header of the first packet.

4. The apparatus as recited in claim 1 , wherein the logic is further configured to:

create a heuristics matrix based on switching the plurality of packets through the apparatus, the heuristics matrix being configured to determine which exception packets to pass through to an egress port and which to drop; and

handle exception packets using the heuristics matrix.

5. The apparatus as recited in claim 1 , wherein the egress timer is configured to determine an amount of time that the first packet is present on the apparatus prior to being sent out via the first egress port.

6. A computer program product for switching packets in a software-defined network (SDN), the computer program product comprising a computer readable storage medium having program code embodied therewith, the program code being readable and/or executable by at least one processor to cause the at least one processor to:

store, by the at least one processor, one or more look-up tables in a first portion of a buffer memory of a SDN-capable switching device;

receive, by the at least one processor, a plurality of packets to switch over a predetermined period of time;

determine, by the at least one processor, ingress ports associated with the plurality of packets;

determine, by the at least one processor, egress ports associated with the plurality of packets;

determine, by the at least one processor, patterns associated with characteristics of one or more of the plurality of packets, each pattern comprising a consistent ingress port for each of the one or more of the plurality of packets and a consistent egress port for each of the one or more of the plurality of packets to heuristically determine packet flows and create port-to-port mappings between the consistent egress port and the consistent egress port;

store, by the at least one processor, the port-to-port mappings in the one or more look-up tables;

receive, by the at least one processor, a first packet using a first ingress port of the SDN-capable switching device;

start, by the at least one processor, an egress timer upon receipt of the first packet;

process, by the at least one processor, the first packet in order to finish processing prior to the egress timer expiring;

determine, by the at least one processor, a first egress port for the first packet;

send, by the at least one processor, the first packet to the first egress port upon expiration of the egress timer without further processing;

determine, by the at least one processor, a packet size from information in a header of the first packet in response to packet size information being available in the header; and

begin to route the first packet, by the at least one processor, via the first egress port prior to all of the first packet being received via the first ingress port in response to the packet size being greater than a predetermined threshold.

7. The computer program product as recited in claim 6 , wherein the program code is further readable and/or executable to cause the at least one processor to:

set, by the at least one processor, a timer upon creating one of the port-to-port mappings;

retire, by the at least one processor, at least one port-to-port mapping upon expiration of the timer; and

relearn, by the at least one processor, the at least one port-to-port mapping in response to the at least one port-to-port mapping being retired.

8. The computer program product as recited in claim 6 , wherein the program code is further readable and/or executable to cause the at least one processor to:

partition, by the at least one processor, the buffer memory of the SDN-capable switching device into at least two portions, the first portion of the at least two portions configured to store the one or more look-up tables, each look-up table corresponding to one egress port, and a second portion of the at least two portions configured to buffer egress packets in one or more egress queues, each egress queue corresponding to one egress port;

search, by the at least one processor, a look-up table associated with the first egress port for the first packet to determine additional switching information for the first packet; and

store, by the at least one processor, the additional switching information to the first packet and/or a header of the first packet.

9. The computer program product as recited in claim 6 , wherein the program code is further readable and/or executable to cause the at least one processor to:

create, by the at least one processor, a heuristics matrix based on switching the plurality of packets through the SDN-capable switching device, the heuristics matrix being configured to determine which exception packets to pass through to an egress port and which to drop; and

handle, by the at least one processor, exception packets using the heuristics matrix.

10. The computer program product as recited in claim 6 , wherein the egress timer is configured to determine an amount of time that the first packet is present on the SDN-capable switching device prior to being sent out via the first egress port.

11. A method for switching packets in a software-defined network (SDN), the method comprising:

storing one or more look-up tables in a first portion of a buffer memory of a SDN-capable switching device;

receiving a plurality of packets to switch over a predetermined period of time;

determining ingress ports associated with the plurality of packets;

determining egress ports associated with the plurality of packets;

determining patterns associated with characteristics of one or more of the plurality of packets, each pattern comprising a consistent ingress port for each of the one or more of the plurality of packets and a consistent egress port for each of the one or more of the plurality of packets to heuristically determine packet flows and create port-to-port mappings between the consistent egress port and the consistent egress port;

storing the port-to-port mappings in the one or more look-up tables;

receiving a first packet using a first ingress port of the SDN-capable switching device;

starting an egress timer upon receipt of the first packet;

processing the first packet in order to finish processing prior to the egress timer expiring;

determining a first egress port for the first packet;

sending the first packet to the first egress port upon expiration of the egress timer without further processing;

determining a packet size from information in a header of the first packet in response to packet size information being available in the header; and

beginning to route the first packet via the first egress port prior to all of the first packet being received via the first ingress port in response to the packet size being greater than a predetermined threshold.

12. The method as recited in claim 11 , further comprising:

setting a timer upon creating one of the port-to-port mappings;

retiring at least one port-to-port mapping upon expiration of the timer; and

relearning the at least one port-to-port mapping in response to the at least one port-to-port mapping being retired.

13. The method as recited in claim 11 , further comprising: partitioning the buffer memory of the SDN-capable switching device into at least two portions, the first portion of the at least two portions being configured to store the one or more look-up tables, each look-up table corresponding to one egress port, and a second portion of the at least two portions being configured to buffer egress packets in one or more egress queues, each egress queue corresponding to one egress port;

searching a look-up table associated with the first egress port for the first packet to determine additional switching information for the first packet; and

storing the additional switching information to the first packet and/or a header of the first packet.

14. The method as recited in claim 11 , further comprising:

creating a heuristics matrix based on switching the plurality of packets through the SDN-capable switching device, the heuristics matrix being configured to determine which exception packets to pass through to an egress port and which to drop; and

handling exception packets using the heuristics matrix.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 13, 2021
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: KYNDRYL, INC.
Reel/Frame 057885/0644 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 19, 2016
From: KAMBLE, KESHAV G.; KUMBHARE, ABHIJIT P.; PADHYE, HARSHAD S.; PANDEY, VIJOY A.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038651/0976 →
Continuity (2)
Continuation 14318483 · Jun 27, 2014
Related Publication 20160269288A1 · Sep 15, 2016