# US 11,115,328 B2 · Efficient troubleshooting in openflow switches

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

- Number: US 11,115,328 B2
- Document ID: US11115328B2
- Status: Granted
- Kind: B2
- Application number: 16/607,319
- Filed: 2017-05-04
- Published: 2020-12-03
- Granted: 2021-09-07
- Earliest claimed: 2017-05-04
- Assignees: Telefonaktiebolaget LM Ericsson (publ)
- Applicants: Telefonaktiebolaget LM Ericsson (publ)
- Inventors: Faseela K; Ashutosh Bisht; Vyshakh Krishnan C H
- Web page: https://patentgrep.com/patent/US11115328B2

## CPC

- H04L 45/64: using an overlay routing layer
- H04L 12/4645: {Details on frame tagging (routing of packets H04L45/00; support for virtual LAN H04L49/354)}
- H04L 43/026: using flow identification
- H04L 43/20: the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
- H04L 45/54: {Organization of routing tables}
- H04L 69/22: Parsing or analysis of headers
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method implemented by a switch in a Software Defined Networking (SDN) network to trace packets in the SDN network, where the switch includes a packet processing pipeline. The method includes receiving a first packet, determining, at a first flow table of the packet processing pipeline, whether the first packet is to be traced, punting a copy of the first packet to an SDN controller and directing the first packet to a second flow table of the packet processing pipeline in response to a determination at the first flow table that the first packet is to be traced.

## Claims

### Claim 1

A method implemented by a switch in a Software Defined Networking (SDN) network to trace packets in the SDN network, where the switch includes a packet processing pipeline that includes a plurality of flow tables, the method comprising:
receiving a first packet;
determining, at a first flow table of the packet processing pipeline, whether the first packet is to be traced;
sending a copy of the first packet to an SDN controller and directing the first packet to a second flow table of the packet processing pipeline in response to a determination at the first flow table that the first packet is to be traced;
receiving, from the SDN controller, the copy of the first packet and an indication that the copy of the first packet is to be directed to a third flow table of the packet processing pipeline;
determining, at the first flow table, whether the copy of the first packet is to be traced;
setting a first field associated with the copy of the first packet to indicate that tracing is disabled for the copy of the first packet in response to a determination at the first flow table that the copy of the first packet is to be traced;
directing the copy of the first packet from the first flow table to the third flow table to resume processing of the copy of the first packet at the third flow table, wherein when the copy of the first packet arrives at the third flow table, the first field associated with the copy of the first packet is set to indicate that tracing is disabled for the copy of the first packet and a second field associated with the copy of the first packet is set to indicate that tracing is enabled for the copy of the first packet; and
copying, at the third flow table, content of the second field associated with the copy of the first packet to the first field associated with the copy of the first packet before directing the copy of the first packet to a fourth flow table of the packet processing pipeline, wherein the copying causes the first field associated with the copy of the first packet to indicate that tracing is enabled for the copy of the first packet to allow the copy of the first packet to be traced at the fourth flow table.

### Claim 2 (depends on 1)

The method of claim 1, wherein the determination at the first flow table that the copy of the first packet is to be traced is based on content of the first field associated with the copy of the first packet.

### Claim 3 (depends on 1)

The method of claim 1, wherein the indication that the copy of the first packet is to be directed to the third flow table is included in an outermost Virtual Local Area Network (VLAN) header added to the copy of the first packet.

### Claim 4 (depends on 3)

The method of claim 3, further comprising:
popping the outermost VLAN header from the copy of the first packet in response to the determination at the first flow table that the copy of the first packet is to be traced.

### Claim 5 (depends on 1)

The method of claim 1, wherein the first packet directed to the second flow table is processed through the packet processing pipeline without being traced.

### Claim 6 (depends on 1)

The method of claim 1, wherein the second field associated with the copy of the first packet is set when the copy of the first packet is received from the SDN controller.

### Claim 7 (depends on 1)

The method of claim 1, wherein the second field associated with the copy of the first packet is set by the switch.

### Claim 8 (depends on 1)

The method of claim 1, wherein the packet processing pipeline is an OpenFlow packet processing pipeline, wherein the first field is a bit in a metadata field associated with the copy of the first packet.

### Claim 9 (depends on 1)

The method of claim 1, wherein the packet processing pipeline is an OpenFlow packet processing pipeline, and wherein the second field is a bit in a packet register field associated with the copy of the first packet.

### Claim 10 (depends on 1)

The method of claim 1, wherein the copy of the first packet is received from the SDN controller as part of an OpenFlow Packet-Out message from the SDN controller.

### Claim 11

A network device to function as a switch in a Software Defined Networking (SDN) network to trace packets in the SDN network, where the switch is to include a packet processing pipeline that includes a plurality of flow tables, the network device comprising:
a set of one or more processors; and
a non-transitory machine-readable storage medium having stored therein a packet tracing component, which when executed by the set of one or more processors, causes the network device to receive a first packet, determine, at a first flow table of the packet processing pipeline, whether the first packet is to be traced, send a copy of the first packet to an SDN controller and direct the first packet to a second flow table of the packet processing pipeline in response to a determination at the first flow table that the first packet is to be traced, receive, from the SDN controller, the copy of the first packet and an indication that the copy of the first packet is to be directed to a third flow table of the packet processing pipeline, determine, at the first flow table, whether the copy of the first packet is to be traced, set a first field associated with the copy of the first packet to indicate that tracing is disabled for the copy of the first packet in response to a determination at the first flow table that the copy of the first packet is to be traced, direct the copy of the first packet from the first flow table to the third flow table to resume processing of the copy of the first packet at the third flow table, wherein when the copy of the first packet arrives at the third flow table, the first field associated with the copy of the first packet is set to indicate that tracing is disabled for the copy of the first packet and a second field associated with the copy of the first packet is set to indicate that tracing is enabled for the copy of the first packet, and copy, at the third flow table, content of the second field associated with the copy of the first packet to the first field associated with the copy of the first packet before directing the copy of the first packet to a fourth flow table of the packet processing pipeline, wherein the copying causes the first field associated with the copy of the first packet to indicate that tracing is enabled for the copy of the first packet to allow the copy of the first packet to be traced at the fourth flow table.

### Claim 12 (depends on 11)

The network device of claim 11, wherein the determination at the first flow table that the copy of the first packet is to be traced is based on content of the first field associated with the copy of the first packet.

### Claim 13 (depends on 11)

The network device of claim 11, wherein the indication that the copy of the first packet is to be directed to the third flow table is included in an outermost Virtual Local Area Network (VLAN) header added to the copy of the first packet.

### Claim 14 (depends on 13)

The network device of claim 13, wherein the packet tracing component, when executed by the set of one or more processors, further causes the network device to pop the outermost VLAN header from the copy of the first packet in response to the determination at the first flow table that the copy of the first packet is to be traced.

### Claim 15

A non-transitory machine-readable medium having computer code stored therein, which when executed by a set of one or more processors of a network device functioning as a switch in a Software Defined Networking (SDN) network, causes the network device to perform operations for tracing packets in the SDN network, where the switch includes a packet processing pipeline that includes a plurality of flow tables, the operations comprising:
receiving a first packet;
determining, at a first flow table of the packet processing pipeline, whether the first packet is to be traced;
sending a copy of the first packet to an SDN controller and directing the first packet to a second flow table of the packet processing pipeline in response to a determination at the first flow table that the first packet is to be traced;
receiving, from the SDN controller, the copy of the first packet and an indication that the copy of the first packet is to be directed to a third flow table of the packet processing pipeline;
determining, at the first flow table, whether the copy of the first packet is to be traced;
setting a first field associated with the copy of the first packet to indicate that tracing is disabled for the copy of the first packet in response to a determination at the first flow table that the copy of the first packet is to be traced;
directing the copy of the first packet from the first flow table to the third flow table to resume processing of the copy of the first packet at the third flow table, wherein when the copy of the first packet arrives at the third flow table, the first field associated with the copy of the first packet is set to indicate that tracing is disabled for the copy of the first packet and a second field associated with the copy of the first packet is set to indicate that tracing is enabled for the copy of the first packet; and
copying, at the third flow table, content of the second field associated with the copy of the first packet to the first field associated with the copy of the first packet before directing the copy of the first packet to a fourth flow table of the packet processing pipeline, wherein the copying causes the first field associated with the copy of the first packet to indicate that tracing is enabled for the copy of the first packet to allow the copy of the first packet to be traced at the fourth flow table.

### Claim 16 (depends on 15)

The non-transitory machine-readable medium of claim 15, wherein the determination at the first flow table that the copy of the first packet is to be traced is based on content of the first field associated with the copy of the first packet.

### Claim 17 (depends on 15)

The non-transitory machine-readable medium of claim 15, wherein the first packet directed to the second flow table is processed through the packet processing pipeline without being traced.

### Claim 18 (depends on 15)

The non-transitory machine-readable medium of claim 15, wherein the packet processing pipeline is an OpenFlow packet processing pipeline, wherein the first field is a bit in a metadata field associated with the copy of the first packet, and wherein the second field is a bit in a packet register field associated with the copy of the first packet.
