[P4-dev] P4_16 resubmit/recirculate

cs.lev cs.lev at gmx.com
Thu Sep 6 05:52:56 EDT 2018


Dear All,

I am trying to play with resubmit/recirculate in P4. From the
specification, I have realized the recirculation can only be done in
the egress pipeline, so maybe resubmit is the one that I need.

I am expecting a special packet with a special header that I have
defined, and once I got it, I want to modify the one of the header
fields, and get received the modified packet again through the ingress
pipeline.

I have found an old commit message in p4lang/tutorials about resubmit,
however the code itself is not part of the repo anymore, and it is also
 in P4_14 (not in P4_16) from which it is not straightforward how to
reproduce it.

My playground:
In my pipeline, I don't really want to use any metadata (if it is not
necessary), I only want to decrease the value of a specific header
field with one and resubmit, then reduce again, and resubmit until that
specific header field becomes 1. If it is reached, I would like to send
it out to a port.

If in an action I call resubmit() I got the following error:

error: resubmit: Not enough arguments for call
            resubmit();
            ^^^^^^^^^^
If I try to put hdr, meta, standard_metadata (from the Ingress
processing control's parameters, I got the following error:
error: MethodCallStatement: Conditional execution in actions is not
supported on this target
            resubmit(hdr);


I am using the p4tutorial VM with simple_switch version: 1.10.0-
39abe290, with p4c 0.1.

Thank you for considering my request.

BR,
cs.lev



More information about the P4-dev mailing list