We're looking for someone to implement an extension to the Linux network stack. What we're trying to achieve is the aggregation of UDP packets to and from a user-space program, so that multiple packets can be passed in either direction using a single system call. Furthermore, inbound packets are likely to be coming in to a variety of ports.
How we think this can be done:
- a kernel module which:
* for packets on the way in to the machine
- hooks the network stack using NF_HOOK
- checks incoming UDP packets against a list of ports supplied by our user-space program
- if it finds a match, buffers the packet and prevents it being processed further by the vanilla network stack.
* provides user-space interfaces to:
- receive the currently buffered packets (like recv, but returning multiple packets in one call)
- transmit multiple packets
- add and remove ports from the list that we're interested in.
An alternative way of thinking about this is as a version of SOCK_RAW which
(a) filters inbound packets and blocks those that we're interested in from the rest of the network stack, and
(b) aggregates packets to and from user space.
The reason for doing this? We've an application which handles large numbers of small UDP packets on a collection of different ports, and it's spending most of its time context-switching between user-space and the kernel.
We're open to suggestions of other ways to achieve this end.
We're looking for someone experienced in this field: please don't PM me a portfolio of websites created in PHP..
Bu iş için 6 freelancer ortalamada $725 teklif veriyor
Hello Dave, Nice to see such project on the freelancer site :). Are you sure that the problem is in context-switching time? I don't know details, but did you read this article: [url removed, login to view] Daha Fazla
I have done similar application in VxWORKS for an industrial product, for a US Client
Hi, I am a experienced Linux kernel developer from India. For the last three years I am working on Linux TCP and various open source router firmware like Tomato, OpenWRT, Dd-WRT, developing and debugging several wir Daha Fazla
Serious Bidder: I have 9+ exp. in kernel development and ready to work with you. Thanks.
Hi I am a veteren in C stack work. I have done extensive audits on network streams in IP for UDP voip work in asterisk. I understand codec and interframing delays.. There is a better way then agregating the UDP... but Daha Fazla
Sounds interesting and doable. I have run into similar issues with context switching killing performance (but in storage drivers), and resolved them in a similar fashion. The idea may need some tweaks for a solid sca Daha Fazla