Networking with Kernel Bypass in Java [closed]

2019-02-13 19:03发布

问题:

Has anyone figured it out how to do Kernel bypass in Java? Any hello world somewhere or this is rocket science?

回答1:

If you are using solarflare, you can use their API to do kernel bypass (I am not using it directly, so can't provide more details). You can also use a messaging broduct like 29West LBM or IBM LLM which support rich functionality over various hardware.

As @eSniff mentioned, the JRE has transferFrom() / transferTo() API which right now is used to expose the sendfile(2) equivalent for the systems that support it. The semantics of the API is defined so it can be transparently implemented to support DMA transfers between any 2 channels.



回答2:

Search for "Java Zero-Copy Buffers" or "Java NIO" or "Java Netty".

Here is a slide show about Netty and zero-copy : http://www.slideshare.net/danbim/zerocopy-eventdriven-servers-with-netty . Here is an example project with Netty.

Or you can go lower level and use the java.nio.channels classes, which you can read about here http://www.ibm.com/developerworks/linux/library/j-zerocopy/