<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Andy,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I think the original question was how to setup a range for match_kind in a p4-16 table.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hemant<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><b>From:</b> P4-dev <p4-dev-bounces@lists.p4.org> <b>On Behalf Of </b>Andy Fingerhut<br><b>Sent:</b> Sunday, May 24, 2020 12:14 AM<br><b>To:</b> Ganesh C S <ch.sa.ganesh@gmail.com><br><b>Cc:</b> p4-dev <p4-dev@lists.p4.org>; Debobroto Das <debobrotodasrobin@gmail.com><br><b>Subject:</b> Re: [P4-dev] Query Regarding Range Table<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>I agree that someone should avoid discussing proprietary or trade secret details here.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>There are some people working on university research, class exercises, or hobby projects, too, and are willing to discuss ideas like these in a public forum.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Which this one is, depends upon what the original questioner is working on.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Andy<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Sat, May 23, 2020 at 9:42 AM Ganesh C S <<a href="mailto:ch.sa.ganesh@gmail.com">ch.sa.ganesh@gmail.com</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal>[Sorry this is bit off the topic]<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Quick check: Do OEMs discuss their futuristic use cases on a public forum ? I have worked for OEMs and based on that this is a strict "No".<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Probably, someone coming to this group is building a p4 implementation for furthering their research or business. Disclosing the use case in public can be detrimental to both these objectives. This is something you all already know. <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>This discussion thread scope is beyond the usual developer forum discussion. <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>my 2 cents<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>regs<o:p></o:p></p></div><div><p class=MsoNormal>Ganesh<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Fri, May 22, 2020 at 10:06 PM Andy Fingerhut <<a href="mailto:andy.fingerhut@gmail.com" target="_blank">andy.fingerhut@gmail.com</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal>Suppose you implement this behavior: Always pick the port with the minimum estimated delay.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Is there a reason why you would sometimes want to pick a port other than the one with minimum delay?<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>If there is such a reason, then it would help if you could be more precise under what conditions you might pick a port that didn't have the minimum delay.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Andy<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Fri, May 22, 2020 at 8:28 PM Debobroto Das <<a href="mailto:debobrotodasrobin@gmail.com" target="_blank">debobrotodasrobin@gmail.com</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><p class=MsoNormal>Sorry for my poor explanation. <o:p></o:p></p><div><p class=MsoNormal>What I am trying to do is following,  a switch (s1)  have 10 ports, through all the 10 ports we can reach destination  "2001:1:1::0". Now using INT, I have calculated what are the average delay to reach destination  "2001:1:1::0" from s1. Currently, to select a path from multiple possible path we can use selector (with combination of P4 action group). But in case of selector, we can not use specific criteria to select which path we should choose. So, I was planning to build a table where we will, populate a table where we can keep 2 piece of information 1) port number 2) corresponding  delay to reach "2001:1:1::0" from S1. Instead of keeping the delay in exact value, I want to keep them in few predefined values. for example, if the maximum delay is 100 ms . we can keep a range of 0 to 8 (12.5 ms gap ) . <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>So when we want to select a port through wich we can reach to destination "2001:1:1::0", within delay 50 ms, we will match the delay field as 50/12.5 = 4. Which means any port that have delay 4, that should be a valid match for my use case. Obviously in tcam, multiple match can happen. on that case I assume that, either the lowest or highest index ed entry among multiple matched entries will be returned.  <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>(As far as my understanding, the V1model.p4 only returns a single matched entry. I am working based on this assumption)<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Fri, May 22, 2020 at 10:27 PM Ganesh C S <<a href="mailto:ch.sa.ganesh@gmail.com" target="_blank">ch.sa.ganesh@gmail.com</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><p class=MsoNormal>Hi Debobroto,<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>You should be able to use tcam match kind to achieve this. If the delay values are nicely aligned on bit boundary like 4,8 then it is easy. Otherwise will need multiple entries in tcam.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>For 0-5 you can split it into two ranges: 0-3 (bit equivalent 00**) and 4-5 (bit equivalent 010*).  You must order more specific entries before the less specific ones. <o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><div><p class=MsoNormal>For example, I created the below entries to consider the first two delay ranges 0-5->1 and 6-10->2 with 6 bits. <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>For 4-5 entry  00010* -> 1<o:p></o:p></p></div><div><p class=MsoNormal>For 6-7 entry 00011* -> 2  <o:p></o:p></p></div><div><p class=MsoNormal>For 8-9  entry 0010*0 -> 2<o:p></o:p></p></div><div><p class=MsoNormal>For 8-10 entry 0010*0 -> 2<o:p></o:p></p></div><div><p class=MsoNormal>For 0-3 entry 0000** -> 1<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>regs<o:p></o:p></p></div><div><p class=MsoNormal>Ganesh<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Fri, May 22, 2020 at 3:44 PM Debobroto Das <<a href="mailto:debobrotodasrobin@gmail.com" target="_blank">debobrotodasrobin@gmail.com</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><p class=MsoNormal>Hello Everyone,<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I want to implement a multipath routing in data plane. <o:p></o:p></p></div><div><p class=MsoNormal>For example, assume in a device I have 4 ports. Each ports have a metrics which should be in range format. For example: this metrics is a delay value through this port. So, if  these 4 ports have following delay values<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>port   | delay <o:p></o:p></p></div><div><p class=MsoNormal>==========<o:p></o:p></p></div><div><p class=MsoNormal>1       |    5<o:p></o:p></p></div><div><p class=MsoNormal>==========<o:p></o:p></p></div><div><p class=MsoNormal>2       |   50<o:p></o:p></p></div><div><p class=MsoNormal>==========<o:p></o:p></p></div><div><p class=MsoNormal>3        |  25<o:p></o:p></p></div><div><p class=MsoNormal>===========<o:p></o:p></p></div><div><p class=MsoNormal>4        |  10<o:p></o:p></p></div><div><p class=MsoNormal>=============<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>So if I want to select the port to forward a packet depending on the "delay" value, what type of match_kind  I should use here. <o:p></o:p></p></div><div><p class=MsoNormal>An example query is, select a port that have delay value within rage 15-30. so clearly here the port 3 should be selected. <o:p></o:p></p></div><div><p class=MsoNormal>how to achieve this kind of behavior in P4? <o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Fri, May 22, 2020 at 6:39 PM Debobroto Das <<a href="mailto:debobrotodasrobin@gmail.com" target="_blank">debobrotodasrobin@gmail.com</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><p class=MsoNormal>Hello Everyone,<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I want to implement a multipath routing in data plane. <o:p></o:p></p></div><div><p class=MsoNormal>For example, assume in a device I have 4 ports. Each ports have a metrics which should be in range format. For example: this metrics is a delay value through this port. So, if  these 4 ports have following delay values<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>port   | delay <o:p></o:p></p></div><div><p class=MsoNormal>==========<o:p></o:p></p></div><div><p class=MsoNormal>1       |    5<o:p></o:p></p></div><div><p class=MsoNormal>==========<o:p></o:p></p></div><div><p class=MsoNormal>2       |   50<o:p></o:p></p></div><div><p class=MsoNormal>==========<o:p></o:p></p></div><div><p class=MsoNormal>3        |  25<o:p></o:p></p></div><div><p class=MsoNormal>===========<o:p></o:p></p></div><div><p class=MsoNormal>4        |  10<o:p></o:p></p></div><div><p class=MsoNormal>=============<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>So if I want to select the port to forward a packet depending on the "delay" value, what type of match_kind  I should use here. <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div></blockquote></div><p class=MsoNormal>_______________________________________________<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" target="_blank">http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org</a><o:p></o:p></p></blockquote></div></blockquote></div><p class=MsoNormal>_______________________________________________<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" target="_blank">http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org</a><o:p></o:p></p></blockquote></div></blockquote></div></blockquote></div></div></body></html>