SDP 的技术问题

  • IPv4 和 IPv6 不兼容

Internet 协议版本 4(IPv4)一直是 Internet 协议(IP)的行业标准版本,用于通过 Internet 传递数据。 Internet 协议版本 6(IPv6)是下一代 Internet 层协议。目前,两种版本的 IP 都在使用。

IPv4 地址 Long32 位,以十进制格式写入,并用句点分隔。 IPv6 地址 Long128 位,以十六进制格式写入,并用冒号分隔。无法像在 IPv6 中那样使用 IPv4 地址,但是 IPv6 确实支持特殊的地址类别:IPv4Map 的地址。在 IPv4Map 的地址中,前 80 位设置为零,后 16 位设置为 1,后 32 位表示 IPv4 地址。

例如,以下是两种格式表示的相同 IP 地址:

IPv4 address                  IPv4-mapped address (for use in IPv6)
192.0.2.1                   ::ffff:192.0.2.1

默认情况下,如果在任何 IB 适配器上启用了 IPv6,则 Java 平台将使用 IPv6.但是,IPv4Map 的地址当前在 Solaris OS 或 Linux 下不可用。因此,如果要在 JDK 7 下使用 IPv4 地址格式,则必须指定java.net.preferIPv4Stack属性,如以下示例所示:

% java -Dcom.sun.sdp.conf=sdp.conf -Djava.net.preferIPv4Stack=true  MyApplication
  • Bugs

在早期的 InfiniBand 实现中发现了一些错误。这些错误已在 Solaris 10 10/09 发行版中修复。确保至少使用此版本。