On 21 April 2015 at 18:15, Ola Liljedahl <ola.liljed...@linaro.org> wrote:
> On 21 April 2015 at 14:26, Maxim Uvarov <maxim.uva...@linaro.org> wrote:
>>
>> On 04/21/15 15:01, Bill Fischofer wrote:
>>>
>>> Behavior is undefined if rules are ambiguous. Consider the following
>>> rules:
>>>
>>> protocol == UDP --> CoS A
>>> port == 1234 --> CoS B
>>>
>>> What happens if a UDP packet for port 1234 arrives? Answer: undefined.
>>
>>
>>
>> Isn't pmr created one by one to the table? And first match will return Cos
>> A in that case.
>
> Since we are having this discussion, it is obvious that we need a definition
> of the ODP classification that cannot be misunderstood or misinterpreted.
> Probably a formal definition. Or do everyone here agree that the (current)
> linux-generic implementation can serve as *the* definition?

Shouldn't we use the classification design document as the definition
of classification and the linux-generic implementation can be used as
a reference and not "the" definition.

Regards,
Bala
>
>
>
>>
>>
>> Maxim.
>>
>>> The result may be either CoS A or CoS B.
>>>
>>> A better rule set would be:
>>>
>>> protocol == UDP --> CoS A
>>>
>>> CoS A && port == 1234 --> CoS B
>>>
>>> Now this is unambiguous.  UDP packets go to CoS A unless they also
>>> specify port 1234, in which case they go to CoS B.
>>>
>>> On Tue, Apr 21, 2015 at 4:52 AM, Ola Liljedahl <ola.liljed...@linaro.org
>>> <mailto:ola.liljed...@linaro.org>> wrote:
>>>
>>>     On 20 April 2015 at 21:49, Bill Fischofer
>>>     <bill.fischo...@linaro.org <mailto:bill.fischo...@linaro.org>> wrote:
>>>
>>>         Classification is a collaboration between the implementation
>>>         and the application. It is the application's responsibility to
>>>         write unambiguous classification rules and it is the
>>>         implementation's job to perform the match as efficiently and
>>>         as specifically as possible.
>>>
>>>     What should an implementation do if the classification rules are
>>>     ambiguous? E.g. if partial matches (of different partially
>>>     overlapping rules) use different CoS? Is this an error already
>>>     when creating the PMR rules?
>>>
>>>     -- Ola
>>>
>>>
>>>         On Mon, Apr 20, 2015 at 7:33 AM, Ola Liljedahl
>>>         <ola.liljed...@linaro.org <mailto:ola.liljed...@linaro.org>>
>>>         wrote:
>>>
>>>             On 17 April 2015 at 22:55, Rosenboim, Leonid
>>>             <leonid.rosenb...@caviumnetworks.com
>>>             <mailto:leonid.rosenb...@caviumnetworks.com>> wrote:
>>>
>>>
>>>                 Guys,
>>>
>>>                 There are several versions of the Classifier API
>>>                 document floating in Google docs, here is one such copy:
>>>
>>>
>>> https://docs.google.com/document/d/14KMqNPIgd7InwGzdP2EaI9g_V3o0_wxpgp3N-nd-RBE/edit?usp=sharing
>>>
>>>                 Here is a different perspective on what PMR and COS
>>>                 mean,  perhaps in terms of an abstract hardware
>>>                 implementation:
>>>
>>>                 CoS is a meta-data field assigned to each packet as it
>>>                 traverses the classifier pipe-line.
>>>
>>>                 A packet is assigned an initial CoS by the pktio port
>>>                 which received it.
>>>
>>>                 Then, the packet is compared multiple times against a
>>>                 set of rules, and as it is common with TCAMs, each
>>>                 comparisons happens against all rules in parallel.
>>>
>>>                 Each rule has two values to match: 1. the current CoS
>>>                 meta-data field; and 2. a certain packet header field
>>>                 (value with a mask).
>>>                 If both these values match, the packet met-data CoS
>>>                 field is changed (Action taken) with the destination
>>>                 CoS of the matching rule.
>>>
>>>                 It is assumed that up to one such rule has matched.
>>>
>>>                 If a rule has matched, CoS has changed, the process
>>>                 continues one more time.
>>>
>>>                 If NO MATCH occured, the classification process is
>>>                 finished, and the packet is delivered in accordance to
>>>                 the current CoS (i.e. the last matching rule or the
>>>                 pktio default CoS if the first rule match failed).
>>>
>>>             So partial matches are valid. Is this what we want, e.g.
>>>             from application point of view and from HW point of view?
>>>
>>>             Is partial matches what is commonly supported by HW
>>>             classifiers?
>>>
>>>             A classifier which supports these longest prefix matches
>>>             can easily implement perfect matching (all partial matches
>>>             just specify the "default" CoS). But a classifier which
>>>             only supports perfect matching cannot directly support
>>>             partial matches. I assume you would have to internally
>>>             create rules/patterns for all (relevant) partial matches
>>>             as well. The implementation can find all relevant partial
>>>             matches (prefix rules which specify a CoS different from
>>>             the default CoS) and add those to the list of rules.
>>>             Longer prefix matches should be prioritized (however that
>>>             is done) over shorter prefix matches.
>>>
>>>             The reason I really want to understand the required
>>>             semantics is that I am planning to design an optimized
>>>             parser/classifier in SW. Pointer-chasing is a no-no,
>>>             performance will come from cache-friendly access pattern
>>>             and some kind of parallelism (e.g. SIMD). I don't know how
>>>             good it can get.
>>>
>>>
>>>
>>>                 According to CoS, the packet buffer pool and the
>>>                 destination queue are selected, and the packet is
>>>                 ready for application processing.
>>>
>>>                 Here are some additional observations with regads to
>>>                 use of CoS values:
>>>
>>>                 Multiple pktio may assign the same CoS initially.
>>>                 (eaming many pktio to one CoS)
>>>
>>>                 Multple rules can assign the same CoS as destination
>>>                 (action). (meaning multuple PMR to one destination CoS).
>>>
>>>                 Regarding the source CoS of a PMR, I can not rule out
>>>                 a PMR that can match multiple CoS values (that is
>>>                 creating a many-to-many src-CoS to PMR relationship),
>>>                 but this scheme seems problematic for ease of use as
>>>                 well as implementation, so I would recommend to assume
>>>                 that each PMR should only have a single source CoS.
>>>
>>>                 Multiple PMRs may have the same source-CoS, but
>>>                 different header fields ot value/mask (creating an OR
>>>                 combination of PMRs).
>>>
>>>                 I felt that I had to take this discussion ina
>>>                 completely different direction to avoid infinite
>>>                 recursion ;-)
>>>
>>>                 Good weekend all,
>>>
>>>                 - Leo
>>>
>>>
>>>
>>>                 _______________________________________________
>>>                 lng-odp mailing list
>>>                 lng-odp@lists.linaro.org
>>> <mailto:lng-odp@lists.linaro.org>
>>>                 https://lists.linaro.org/mailman/listinfo/lng-odp
>>>
>>>
>>>
>>>             _______________________________________________
>>>             lng-odp mailing list
>>>             lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org>
>>>             https://lists.linaro.org/mailman/listinfo/lng-odp
>>>
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> lng-odp mailing list
>>> lng-odp@lists.linaro.org
>>> https://lists.linaro.org/mailman/listinfo/lng-odp
>>
>>
>> _______________________________________________
>> lng-odp mailing list
>> lng-odp@lists.linaro.org
>> https://lists.linaro.org/mailman/listinfo/lng-odp
>
>
>
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> https://lists.linaro.org/mailman/listinfo/lng-odp
>
_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to