FragMacOSX

Mac OS X issues

 

TOS issue

When running with JDK 5 (same for 6 beta), the following exception occurs if tos (in UDP) is set to a value greater than 0:

traffic class of 8 could not be set, will be ignored
java.net.SocketException: Invalid argument
        at java.net.PlainDatagramSocketImpl.socketSetOption(Native Method)
        at java.net.PlainDatagramSocketImpl.setOption(PlainDatagramSocketImpl.java:299)
        at java.net.DatagramSocket.setTrafficClass(DatagramSocket.java:1052)
        at org.jgroups.protocols.UDP.createSockets(UDP.java:460)
        at org.jgroups.protocols.UDP.start(UDP.java:362)
        at org.jgroups.stack.Configurator.startProtocolStack(Configurator.java:75)
        at org.jgroups.stack.ProtocolStack.startStack(ProtocolStack.java:273)
        at org.jgroups.JChannel.connect(JChannel.java:368)
        at SimpleChat.start(SimpleChat.java:20)
        at SimpleChat.main(SimpleChat.java:85)

 

The reason is that this call is not implemented properly in the IPv6 stack of the JDK 5 port for Mac OS X: http://lists.apple.com/archives/java-dev/2006/Jun/msg00414.html.

 

This can be avoided by using the IPv4 stack: -Djava.net.preferIPv4Stack=true.

 

The JGroups JIRA issue is http://jira.jboss.com/jira/browse/JGRP-561. This hasn't been fixed in JDK 6 beta (as of July 2007).

 

 

UDP Messages sent over the loopback (localhost) with a size > mtu (default is 16K) are silently discarded

 

There is a bug in the loopback adapter in Mac OSX 10.4.X (Tiger). This default limit is significantly smaller than the 65K on Windows, see http://lists.apple.com/archives/java-dev/2005/Jul/msg00423.html.

 

This is really bad, especially since there isn't even a warning!

 

Therefore, either the mtu on the loopback has to be increased:

sudo ifconfig lo0 mtu 65535

Or, the following parameters have to be below the 16K:

  • UDP.max_bundle_size

  • NAKACK.max_xmit_size and

  • FRAG2.frag_size

 

The JIRA issue is http://jira.jboss.com/jira/browse/JGRP-560