On 04/03/15 11:33, Benoît Ganne wrote:
Hi all,
At Kalray we are designing a manycore processor for packet processing,
and we are currently developing our SDK. We really like the ODP
approach and we want to implement ODP on our architecture.
We know the API and architecture is still a work-in-progress, but we
are ok with that and would like to participate. What is the best way
to get involved?
A concrete problem we are facing right now with ODP is that our
architecture has separate address spaces (up to 20). I won't discuss
the merits or drawbacks of this approach here (if some of you are
interested I could go in more details later), but it means our packet
buffers are not allocated per interface (because the same interfaces
can target different address spaces), but rather per queue.
Basically what we are currently thinking about is:
- allocate 1 queue per destination (where a destination is basically
an address space)
- regroup all those queues in a queue group
- associate this queue group to CoS
Then when the dispatch/queueing/scheduling engine match this CoS for a
flow, it will dispatch those flow packets to a queue in the queue group.
So we would like to be able to associate packet pools to queues rather
than per interface.
Any feedback appreciated :)
Thanks,
ben
Hello Benoît,
Glad to see new people interesting ODP. There are many ways to
participate: mailing list, regular public meeting on Tuesday or be a
member of Linaro LNG team with it's benefits (drive next API
development, use LNG infrastructure, set and prioritize tasks).
If you go to http://www.opendataplane.org/ you can find different repos
for odp.
https://git.linaro.org/lng/odp.git - is the main repo for API
development, linux-generic implementation and validation test. Most
recent stable tag is v1.0.2.
That odp.git generates doxygen API doc with make doxygen-html or
doxygen-pdf commands, we have it here:
http://docs.opendataplane.org/linux-generic-doxygen-html/index.html
So the best thing it to start with looking at linux-generic
implementation, then branch it out to your local tree then start
implement pktio and queue function. As reference how to do it best you
can take a look at TI Keystone2 implementation or DPDK or Netmap.
About address space I think you should be ok with implementation
odp_shm_reserve() function which should take care about all your
internal address spaces. Then you can create bunch of odp pools for each
segment, then call odp_pktio_open() for each pool and then bind it to
queue with odp_queue_create(). Does that work for you?
Or might be in you configuration we should consider segmented pool
support. I.e. if pool is represented with several memory chunks.
Best regards,
Maxim.
_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp