This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

packet classification in PA, few questions/understanding

Hi Eric/Ti Folks,

                         couple of questions on packet classification.

1. In the PA_SimpleExample Project, all the configuration packets [setMacs,SetIps and SetPorts are all configured apriori]. Can i have this way of operation, before all these are done [[setMacs,SetIps and SetPorts are all configured apriori]], i want to receive the Macs,IPs,Ports through ethernet and then do the setMacs,SetIps and SetPorts. Basically my code doesn't have the Macs,Ips,Ports database, someone will send over ethernet and based on that it needs to start doing the setMacs,SetIps and SetPorts are all configured apriori ?. I assume it shud be possible.please throw more light on the same as to how to achieve it.

2. In Ti e2e posts, what i see is there are two terminologies being used, byteOffset = {2, 3, 4, 5} and byteMasks = {0x7, 0, 0, 0}. ByteMask i understand, how is byteoffset deduced, please point me to the section in the UG?

3. Here is the confusion between what UG tells and what one of the Ti e2e post says

=============================================

UG Says "

Provides 3 1st pass lookup table (LUT1) accelerators
› Supports up to 64 entries

Provides 1 2nd pass lookup table accelerator
› Supports up to 8K entries

Here if i understand correctly, there are Three Distinct/different LUT lookup Tables and each of the three LUT lookup has 64 entries possible with them.

so 1st LUT 0 -> 64 entries [This can have 64 mac entries] [PDSP0 based rule will keep check one after another for matching an entry]

so 2nd LUT 1 -> 64 entries [This can have 64 IP or other custom L3 headers entries] [PDSP1 based rule will keep check one after another for matching an entry ]

so 3rd LUT 2-> 64 entries [This can have 64 inner IP headers entries in IPsec tunnels] [PDSP2 based rule will keep check one after another for matching an entry]

so 4th LUT 3 -> 8192 entires [This can have 8192 Port entries] [PDSP3 based rule will keep check one after another for matching an entry]

One of the Ti e2e post

http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/135555/541471.aspx#541471

says it other way

=========================

How to view LUT entries, is there any global structure to map the address [please let me know the addresss] view them in memory browser ?

=========================

based on UDP port range, i can classify  packets and divert them to a particular queue, I can add a range of ports to a particular queue, i agree to it and i did it.

likewise, what other parameters [are provided in Ti keystone architecture ]can be used for classification. please note i am looking from Range X to Range Y kind of classification [means range x to range y shud go to a queue].

please let me know more on this and also kindly point to any such section in the Ti literature.

==========================

if the below is true

1st LUT 0 -> 64 entries [This can have 64 mac entries] [PDSP0 based rule will keep check one after another for matching an entry]

2nd LUT 1 -> 64 entries [This can have 64 IP or other custom L3 headers entries] [PDSP1 based rule will keep check one after another for matching an entry ]

3rd LUT 2-> 64 entries [This can have 64 inner IP headers entries in IPsec tunnels] [PDSP2 based rule will keep check one after another for matching an entry]

4th LUT 3 -> 8192 entires [This can have 8192 Port entries] [PDSP3 based rule will keep check one after another for matching an entry]

then a packet which is having any of the Mac1....Mac64 and having IP1....IP64 headers [with 64 inner IP headers] and any of the Port 1 to Port 8192 can clear all the classification rules ? [Assuming i have NOT GIVEN PORT RANGE for udp port based classification]

========================

given PA LLD files/examples/projects and there is NDK drivers [i assume NIMU is also part of it] also, where does these two meet.

let me explain in detail

1. PA and related config can get packets from external word [RJ 45 or AMC back plane lines] to the CPPI port and ofcourse into a queue. where does NDK drivers sit in this entire scenario and/or what role does NDK play here.

say i want to have two evms communicate between each other [i am not interested in classification or any other PA Stuff], what is it required to do using NDK drivers. Please point me to a literature which demarcates NDK and PASS.

 

Thanks

RC Reddy

  • Hi, RC:

    I do not understand some of your confusion. But I will try my best to answer your questions.

    1. In the PA_SimpleExample Project, all the configuration packets [setMacs,SetIps and SetPorts are all configured apriori]. Can i have this way of operation, before all these are done [[setMacs,SetIps and SetPorts are all configured apriori]], i want to receive the Macs,IPs,Ports through ethernet and then do the setMacs,SetIps and SetPorts. Basically my code doesn't have the Macs,Ips,Ports database, someone will send over ethernet and based on that it needs to start doing the setMacs,SetIps and SetPorts are all configured apriori ?. I assume it shud be possible.please throw more light on the same as to how to achieve it.

    [Eric] It is not possible to set the classification rules until you know what the rules are. If you are waiting for someone to send you the rules which should be send to the EVM MAC address, you can configure PASS to accept the so-called configuration packets of which the destination MAC address is equal to the EVM mac address.  You can also use broadcast MAC packet to send the configuration packets.

    2. In Ti e2e posts, what i see is there are two terminologies being used, byteOffset = {2, 3, 4, 5} and byteMasks = {0x7, 0, 0, 0}. ByteMask i understand, how is byteoffset deduced, please point me to the section in the UG?
    [Eric] This is for customLUT2 operation. If you are interesting, please refer to pa.h or PASS doxygen document for details.

    3. Here is the confusion between what UG tells and what one of the Ti e2e post says

    =============================================

    UG Says "

    Provides 3 1st pass lookup table (LUT1) accelerators› Supports up to 64 entries [TRUE]

    Provides 1 2nd pass lookup table accelerator
    › Supports up to 8K entries [TRUE]

    Here if i understand correctly, there are Three Distinct/different LUT lookup Tables and each of the three LUT lookup has 64 entries possible with them.

    so 1st LUT 0 -> 64 entries [This can have 64 mac entries] [PDSP0 based rule will keep check one after another for matching an entry] Yes

    so 2nd LUT 1 -> 64 entries [This can have 64 IP or other custom L3 headers entries] [PDSP1 based rule will keep check one after another for matching an entry ] Yes

    so 3rd LUT 2-> 64 entries [This can have 64 inner IP headers entries in IPsec tunnels] [PDSP2 based rule will keep check one after another for matching an entry] Yes

    so 4th LUT 3 -> 8192 entires [This can have 8192 Port entries] [PDSP3 based rule will keep check one after another for matching an entry] [Yes and No, LUT2 invokes binary search.]

    One of the Ti e2e post

    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/135555/541471.aspx#541471

    says it other way

    =========================

    How to view LUT entries, is there any global structure to map the address [please let me know the addresss] view them in memory browser ? No, the LUT entry is not visible from host.

    =========================

    based on UDP port range, i can classify  packets and divert them to a particular queue, I can add a range of ports to a particular queue, i agree to it and i did it.

    likewise, what other parameters [are provided in Ti keystone architecture ]can be used for classification. please note i am looking from Range X to Range Y kind of classification [means range x to range y shud go to a queue].

    please let me know more on this and also kindly point to any such section in the Ti literature.

    [Eric] LUT2 does not  support port range, but we did help one customers to implement their design with customLUT2 approach.

    ==========================

    if the below is true

    1st LUT 0 -> 64 entries [This can have 64 mac entries] [PDSP0 based rule will keep check one after another for matching an entry] True

    2nd LUT 1 -> 64 entries [This can have 64 IP or other custom L3 headers entries] [PDSP1 based rule will keep check one after another for matching an entry ] True

    3rd LUT 2-> 64 entries [This can have 64 inner IP headers entries in IPsec tunnels] [PDSP2 based rule will keep check one after another for matching an entry] True

    1. 4th LUT 3 -> 8192 entires [This can have 8192 Port entries] [PDSP3 based rule will keep check one after another for matching an entry] [yes and No, see above]

    What are the confusions?

    then a packet which is having any of the Mac1....Mac64 and having IP1....IP64 headers [with 64 inner IP headers] and any of the Port 1 to Port 8192 can clear all the classification rules ? [Assuming i have NOT GIVEN PORT RANGE for udp port based classification]

    Please note that you can use the previous link as one of the matching criteria. For example, we want to receive a packet with MAC1, IP2, IP4 and UDP5.

    Pa_addMAC(MAC1)
    Pa_addIP(linker to MAC1, IP2)
    Pa_addIP(Iinker to IP2, IP4)
    Pa_addPort(linker to IP4, UDP5) Note: Previous link is mandatory for LUT2 entry.

    Best regards,

    Eric

     

     

  • Hi Eric,

               Based on UDP port range, i can classify  packets and divert them to a particular queue, I can add a range of ports to a particular queue, i agree to it and i did it.

    likewise, what other parameters [are provided in Ti keystone architecture ]can be used for classification. please note i am looking from Range X to Range Y kind of classification [means range x to range y shud go to a queue].

    please let me know more on this and also kindly point to any such section in the Ti literature.

    [Eric] LUT2 does not  support port range, but we did help one customers to implement their design with customLUT2 approach.

    [RCReddy] If you are talking about this customer or Ti e2e post, i have done the same. is this the post you are referring ?

    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/170276/622093.aspx#622093

    My question is more generic,

    Let me put in detail

    1. L4 classification based LUT2 can classify based on UDP Port# range.

    Port 0 to 400 = qmss queue W

    Port 401 to 800 = qmss queue X

    Port 801 to 1200 = qmss queue Y

    Port 1201 to 1600 = qmss queue Z

    above classification i am aware, i agree, i am happy and fine about it.

    Now my question is generic/general/common, above case is ports based classification, say Range X to Range Y, now similarly what other parameters [ports is one way of classification, i agree, other than that ?] can be used for classification [in terms of Ranges only].

    Again i am not specifying at L2,L3 or L4 level, it can be at any L2,L3 or L4, all i need is Range based classification.

    ==============================

    i put this question also in earlier post

    given PA LLD files/examples/projects and there is NDK drivers [i assume NIMU is also part of it] also, where does these two meet.

    let me explain in detail

    1. PA and related config can get packets from external word [RJ 45 or AMC back plane lines] to the CPPI port and ofcourse into a queue. where does NDK drivers sit in this entire scenario and/or what role does NDK play here.

    say i want to have two evms communicate between each other [i am not interested in classification or any other PA Stuff], what is it required to do using NDK drivers. Please point me to a literature which demarcates NDK and PASS.

    Thanks

    RC Reddy