Can we recirculate packets to specific pipelines?

For example, if a packet is in pipeline A. After the egress pipeline A, I would like to recirculate this packet to pipeline B and pipeline C. Is this possible?

If you are asking specifically about Tofino, see below. If you are asking about some other ASIC, then I have no idea, and you should consult the documentation for the device you are considering.

For Tofino, ingress always either drops the packet, or sends one or more packets to the traffic manager. If they are not dropped by the traffic manager, each such packet is destined to exactly one output port.

If that output port is in loopback mode, the packet will go out that port (if egress does not drop it), and then appear as if it arrives as a new packet on that same input port. i.e. if it goes to port X and X is in loopback mode, then it will arrive as an input packet on port X, not some other port.

If all of that makes sense, then hopefully it is clear that the short answer to your question is “no”.

Of course you can recirculate the packet after egress pipeline A, come back on ingress pipeline A, and then send the packet to a different output port, e.g. one in pipeline B that is in loopback mode, and recirculate it again.

1 Like