adding rsockets support into JDK
Lu, Yingqi
yingqi.lu at intel.com
Sat Nov 24 18:11:30 UTC 2018
Hi Alan,
I believe that Linux-rdma mailing list is the right place to report the issue and I did report it early March this year. Details please refer to [1]. I just sent another email to the mailing list again with more debugging information.
At the meantime, I will look into DatagramChannel for the example of using ProtocolFamily. I am not familiar with Datagram Sockets/Channel. I will need some help here for sure :)
[1] https://www.spinics.net/lists/linux-rdma/msg61290.html
Thanks,
Lucy
>-----Original Message-----
>From: Alan Bateman [mailto:Alan.Bateman at oracle.com]
>Sent: Saturday, November 24, 2018 1:12 AM
>To: Lu, Yingqi <yingqi.lu at intel.com>; Chris Hegarty <chris.hegarty at oracle.com>
>Cc: Viswanathan, Sandhya <sandhya.viswanathan at intel.com>; nio-
>dev at openjdk.java.net; Aundhe, Shirish <shirish.aundhe at intel.com>; Kaczmarek,
>Eric <eric.kaczmarek at intel.com>
>Subject: Re: adding rsockets support into JDK
>
>On 23/11/2018 21:38, Lu, Yingqi wrote:
>> Hi Alan/Chris,
>>
>> I am not sure when IPv4-mapped addresses will be supported in rsocket.
>>
>> Based on the suggestions earlier this week, I completed the version 19
>> of the patch at http://cr.openjdk.java.net/~ylu/8195160.19
>>
>> Inside that, I have done:
>> 1. Totally removed IPv6 support for rsocket, and removed -
>Djava.net.preferIPv4Stack=true in all the test cases.
>> 2. Instead of using "librdmacm.so", "librdmacm.so.1" is used for the library
>name.
>> 3. Caught java.lang.ExceptionInInitializerError when rdma library is not installed
>in the system. A UOE is thrown instead.
>> 4. In the tests, modified both RsocketTest.java RdmaSocketsTest.java to double
>check UOE on all the platforms when rdma library is not installed.
>>
>> Then, I just saw your emails on IPv6 handling :-) I can see both advantages and
>disadvantages of either keeping or removing IPv6 support for rsocket, and totally
>fine whichever direction you decide. If we want to use protocol family approach,
>would you please point me to an example so that I can follow?
>>
>I searched the archives of linux-rdma mailing but couldn't find any discussion on
>this topic. I wonder if we should post something there (assuming it's the right list)
>to see if this has been explored. We are making decision on a JDK-specific API so
>it's important to have as much information as possible. If we can't get the
>information then the initial factory methods will need a ProtocolFamily as Chris
>points out.
>The alternative, which is to take a chance that support for IPv4-mapped
>IPv6 addresses will be added in the future, means we could get stuck with factory
>methods that create SocketChannel/Sockets that are forever IPv4-only. Adding
>factory methods that take a protocol family does not preclude you from adding
>no-arg factory methods in the future of course.
>
>The only example of this type of thing in the JDK is DatagramChannel which has a
>factory method to create a datagram channel to use a specific protocol family.
>This method is needed for multicasting as there is no guarantee that a
>DatagramChannel can join an IPv4 multicast group when IPv6 is enabled. The
>disadvantage of this API is that multicasting applications need to know at
>DatagramChannel create time if it will be used to join an IPv4 or IPv6 multicast
>group. If you change the RdmaSockets.openXXX methods to do the same then it
>would be similar.
>It may be okay in libraries where the creation, binding, and connecting are the
>same library but problematic if you want to pass an unbound or not-connected
>SocketChannel or Socket to a library or other part of a system that expects to
>bind or connect.
>
>-Alan.
More information about the nio-dev
mailing list