<div dir="ltr">Regarding your point 1)<div><br class="gmail-Apple-interchange-newline">The digest mechanism does not generate a packet that goes out a 'normal' port.  It generates a message in some implementation-specific form that goes to the control plane software.<br></div><div><br></div><div>Features like counters, meters, registers, digest, recirculate, resubmit, clone, action profiles and selectors, were all part of the P4_14 base language, and thus you find them in the P4_14 language specification documents and the open source implementations, including the 1.0.3 you mention, which is most likely v1.0.3 of the P4_14 language spec.<div><br></div><div>Those features were intentionally separated into 'extern's in P4_16, so are not part of the base language specification.  There is a PSA (Portable Switch Architecture) document being worked on now, the latest draft is here [1], which defines those things for switches.  The digest mechanism in PSA is something that still isn't quite nailed down yet, and I don't know the current state of the open source tools on P4_16 and the digest mechanism.</div><div><br></div><div>Most things in P4 assume a model of "specify what the P4-programmable device does when it receives a packet".  There isn't anything in it that says "spontaneously wake up and start generating traffic".  Now if you took a P4-programmable device and added a mechanism, not specified in P4, that caused packets with particular contents to be sent to the P4-programmable device, e.g. based upon timer events firing, or from control plane software, then that combined system could be made to act as if the P4-programmable device was initiating flows to the rest of the world, but the P4-programmable part would still only be specifying how it reacts to packets when it receives them.  Hopefully I explained that in an understandable way.</div><div><br></div><div>I am not familiar enough with how an openflow switch can initiate communication to other devices, so could be missing something here.</div><div><br></div><div>Andy</div><div><br></div><div>[1] <a href="https://p4lang.github.io/p4-spec/">https://p4lang.github.io/p4-spec/</a>   (look for the links to the PSA document -- remember, still in draft form right now)</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 25, 2017 at 11:43 AM, Debobroto Das Robin <span dir="ltr"><<a href="mailto:drobin@kent.edu" target="_blank">drobin@kent.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Andy, Thanks a lot for the reply. </div><div><br></div>1) The digest mechanism is obviously a new direction to me. I was reading the P4_16 specs and there was no "digest" keyword. Then i moved to version 1.0.3 and found the digest mechanism. Is the digest mechanism available in P4 16? In case of digest, generate_digest  will not initiate a new flow. It basically generates a reply after processing a packet. (if my understanding are correct) <div><br></div><div>2) I know about clone based mechanism. </div><div><br></div><div>Let me explain my question a little bit more detail. Think about an openflow like protocol. Here both the controller and switch can initiate communication toward each other. Now if we want to achieve this kind of switch initiated communication (i.e. new flow), what would be the best technique in P4  ?<span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Robin</div></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 25, 2017 at 2:27 PM, Andy Fingerhut <span dir="ltr"><<a href="mailto:andy.fingerhut@gmail.com" target="_blank">andy.fingerhut@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">The digest mechanism is intended to send a 'record' containing a P4-program-specified collection of field values to the control plane, as the result of processing a received packet.  The prototypical example is if the P4 program was implementing Ethernet learning bridge functionality, if the source MAC address of the received packet was not currently in the MAC address table, then the P4 program would send a digest containing the packet's source MAC address and ingress port it arrived on (and perhaps other field values, too).<div><br></div><div>In addition to processing the received packet 'normally' (whatever that means for your application), the clone mechanism can be used to create another copy of the received packet, and then your P4 program can process it differently before sending it to a different destination than the 'normal' copy.  That clone could be sent to the control plane, to a different port, be tunnel-encapsulated, etc.<br></div><div><br></div><div>The P4 language is probably not the best fit for trying to implement the behavior of a TCP endpoint, with all of the data buffering and packet retransmission behavior that requires.  Not sure if you were even thinking along those lines, but wanted to mention it.</div><div><br></div><div>Andy</div></div><div class="gmail_extra"><br><div class="gmail_quote"><span>On Wed, Oct 25, 2017 at 11:12 AM, Debobroto Das Robin <span dir="ltr"><<a href="mailto:drobin@kent.edu" target="_blank">drobin@kent.edu</a>></span> wrote:<br></span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><div dir="ltr">Hello All,<div><br></div><div>Is there any option to start a new flow from p4 switch? For example based on certain event at switch we want to send a notification to control plane or some other destination. Is it possible? </div></div>
<br></span>______________________________<wbr>_________________<br>
P4-discuss mailing list<br>
<a href="mailto:P4-discuss@lists.p4.org" target="_blank">P4-discuss@lists.p4.org</a><br>
<a href="http://lists.p4.org/mailman/listinfo/p4-discuss_lists.p4.org" rel="noreferrer" target="_blank">http://lists.p4.org/mailman/li<wbr>stinfo/p4-discuss_lists.p4.org</a><br></blockquote></div><br></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>