<div dir="ltr"><div><div><div>Hi,<br><br></div>I added your code to one of my simple L3 programs and nothing happened, the switch kept processing packets as usual.<br></div>You should try running the switch in isolation and enable logging to see if anything strange is happening.<br></div><div>Right now I don't have enough information to be able to help you. I would need: a P4 program to reproduce this (as simple as possible), the appropriate CLI commands to configure the dataplane and a packet I can send through the switch (Scapy format would be nice: Ether(src=..., dst=...) / IP(src=..., dst=...) / ...)<br><br></div><div>Best,<br><br></div><div>Antonin<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Sep 25, 2016 at 3:20 PM, Yuliang Li <span dir="ltr"><<a href="mailto:yuliangl@usc.edu" target="_blank">yuliangl@usc.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">Hi Antonin,<div><br></div><div>I tried adding the following code:</div><span class=""><div><br></div><div><div style="font-size:12.8px"><div><div>header_type intrinsic_metadata_t {<br></div>    fields {<br></div>        ingress_global_timestamp : 48;<br>    }<br>}<br></div><span style="font-size:12.8px">metadata intrinsic_metadata_t intrinsic_metadata;</span><br></div><div><span style="font-size:12.8px"><br></span></div></span><div><span style="font-size:12.8px">However, the switch just does not work (it cannot forward packets). I even do not use any fields in the intrinsic_metadata. But if I remove the above code, the switch work again. Do you know if there is anything wrong with the intrinsic_metadata?</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Thanks,</span></div><div><span style="font-size:12.8px">Yuliang</span></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 9, 2016 at 4:49 PM, Wei Bai <span dir="ltr"><<a href="mailto:wbaiab@cse.ust.hk" target="_blank">wbaiab@cse.ust.hk</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">Hi Antonin,<div><br></div><div>Thank you very much for the reply. queueing_metadata.deq_t<wbr>imedelta is exactly what I want. I will try it. Thanks again.</div><div><br></div><div>Regards,</div><div>Wei <div><div><br><div class="gmail_extra"><br><div class="gmail_quote">2016-05-10 4:36 GMT+08:00 Antonin Bas <span dir="ltr"><<a href="mailto:antonin@barefootnetworks.com" target="_blank">antonin@barefootnetworks.com</a>></span><wbr>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div>Hi Wei,<br><br></div>There is no standard way to get a timestamp in P4, as you can see in the spec.<br></div>However if you are using the simple_switch bmv2 target (<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_p4lang_behavioral-2Dmodel&d=DQMFaQ&c=clK7kQUTWtAVEOVIgvi0NU5BOUHhpN0H8p7CSfnc_gI&r=-sjq3J2b6bOdupF1bsRuzQ&m=SpZAkqKoADlgRsBwUin34Q4v_d-qGCyuWXdL1Ryoytk&s=FoopmJ41sZ__LS2J3Cepecc6gUHQS35TVOFOssjzjdM&e=" target="_blank">https://github.com/p4lang/beh<wbr>avioral-model</a>), you can still have access to this information. You need to include the following in your P4 program:<br><br></div>header_type intrinsic_metadata_t {<br></div>    fields {<br></div>        ingress_global_timestamp : 48;<br>    }<br>}<br></div>metadata intrinsic_metadata_t intrinsic_metadata;<br><br>header_type queueing_metadata_t {<br>    fields {<br>        <span>enq_timestamp: 48;<br></span></div><div><span>        enq_qdepth: 16;<br></span></div><div><span>        deq_timedelta: 32;<br></span></div><div><span>        deq_qdepth: 16;<br></span></div><div>    }<br>}<br></div>metadata queueing_metadata_t queueing_metadata;<br><br></div><div>All timestamps are in microseconds<br></div>intrinsic_metadata.ingress_glo<wbr>bal_timestamp is the timestamp when the switch starts processing the packet<br></div>queueing_metadata.enq_timestam<wbr>p is the timestamp when the packet is enqueued (between the ingress and egress pipelines)<br>queueing_metadata.deq_timedelt<wbr>a is the time the packet spent in the queue (I believe it is what you are after).<br><br></div>It is important to understand that these metadata fields are specific to the simple_switch target, they are not standardized by P4. bmv2 will detect that they are defined in the P4 program and leverage them.<br><br></div>Because bmv2 has a low throughput, I recommend rate-limiting your links to < 100Mbps. You can also use the "<span>set_queue_rate" simple_switch CLI command to rate-limit the bmv2 queue. Please make sure that you compile bmv2 with O2 and without logging (./configure 'CXXFLAGS=-O2' --disable-logging-macros --disable-elogger), otherwise throughput will be really bad.<br><br></span></div><span>Best,<br><br></span></div><span>Antonin<br></span></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>On Mon, May 9, 2016 at 1:04 PM, Wei Bai <span dir="ltr"><<a href="mailto:wbaiab@cse.ust.hk" target="_blank">wbaiab@cse.ust.hk</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div><div><div dir="ltr">Hi,<div><br></div><div>I want to measure the total time a packet spends at a switch (a.k.a, sojourn time). To achieve this, I need to attach a metadata for each packet to record the enqueue timestamp. Does anyone know how to get current timestamp from the local clock in P4 data plane? Thanks in advance.</div><div><br></div><div>Regards,</div><div>Wei</div></div>
<br></div></div>______________________________<wbr>_________________<br>
P4-dev mailing list<br>
<a href="mailto:P4-dev@lists.p4.org" target="_blank">P4-dev@lists.p4.org</a><br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.p4.org_mailman_listinfo_p4-2Ddev-5Flists.p4.org&d=DQMFaQ&c=clK7kQUTWtAVEOVIgvi0NU5BOUHhpN0H8p7CSfnc_gI&r=-sjq3J2b6bOdupF1bsRuzQ&m=SpZAkqKoADlgRsBwUin34Q4v_d-qGCyuWXdL1Ryoytk&s=muiaApMdrVxmWUcj-B8N_YoEC74wHq2QrgGb9PgitM0&e=" rel="noreferrer" target="_blank">http://lists.p4.org/mailman/li<wbr>stinfo/p4-dev_lists.p4.org</a><span><font color="#888888"><br></font></span></blockquote></div><span><font color="#888888"><br><br clear="all"><br>-- <br><div><div dir="ltr">Antonin<br></div></div>
</font></span></div>
</blockquote></div><br></div></div></div></div></div>
<br>______________________________<wbr>_________________<br>
P4-dev mailing list<br>
<a href="mailto:P4-dev@lists.p4.org" target="_blank">P4-dev@lists.p4.org</a><br>
<a href="http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org" rel="noreferrer" target="_blank">http://lists.p4.org/mailman/li<wbr>stinfo/p4-dev_lists.p4.org</a><br></blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Antonin<br></div></div>
</div>