Packet Clone: identify the clone and the origin

Hello there,

When I perform a packet clone in the ingress pipeline, the original packet will be sent to the CPU port, and the clone will be processed by the l2_forward table lookup. Is this the expected behaviour?

Many thanks!

WIth the v1model architecture, the expected behavior is that the cloned packet will have 0 or more copies made of it, depending upon how the mirror session has been configured (each mirror session can be configured to do nothing, in which case no clone is created, to send 1 clone to 1 output port, or to send N clones to a multicast group), each is then queued in the traffic manager, and each then performs egress processing independently of the original, and of any other clone copies made.

If you want gory details, see here for what should happen with all kinds of packets, whether cloned or not: behavioral-model/docs/simple_switch.md at main · p4lang/behavioral-model · GitHub

Saying more about what should happen really depends upon your P4 program, e.g. not all P4 programs have an l2_forward table, so without seeing the program I don’t know anything about it other than its name.

1 Like

Note: If you are able to share your complete P4 program, and the output of the BMv2 packet processing log for a particular packet that you describe in your original question, perhaps someone could look at it and explain the behavior.

1 Like