You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@ws.apache.org by Mark Childerson <ma...@childersoft.com> on 2001/11/14 17:22:37 UTC

MTU & Packets

I have been using Tomcat-3.2.2 standalone with SOAP 2.2  on Redhat Linux 
7.1 for some time, and all has worked fine. I just switched from using a 
Linux comp as a router to using a Linksys router, to connect to my DSL 
service, and since then I have been having trouble with access to SOAP. 
First, nobody outside my ISP could see Tomcat at all, but I changed the 
router's MTU (roughly maximum transmissible packet size) to 1300, and now 
people can see Tomcat. However, they can still not make RPC calls over 
SOAP. Since the calls involve more than 1300 bytes, I suspect that there is 
still some kind of MTU/packet size problem. I have tried to change the 
network card's MTU on the Tomcat server comp, but I have been unable to.

My questions are:

1. Does this make sense?

2. Does anybody know how to change the MTU on the Linux box?

3. Does SOAP control packet sizes at all? If so, how can they be set?

4. Does Tomcat control packet size at all? If so, how can they be set?

Any help on this would be much appreciated.

Thanks,

Mark Childerson




RE: MTU & Packets

Posted by Abraham Kang <ab...@infogain.com>.
Hi Mark,

   I am not an expert but I have a networking interest.

   Here is what I found at http://www.nat32.com/htm/mtu.htm

The Maximum Transfer Unit (MTU) is the maximum size of a packet sent to a
Network Adapter by the TCP/IP protocol stack. The MTU is normally determined
automatically and need not be explicitly configured by the user.

Below is a list of default MTU sizes for different media:

   16 Mbit/Sec Token Ring        17914 bytes
   4 Mbits/Sec Token Ring        4464 bytes
   FDDI                          4352 bytes
   Ethernet                      1500 bytes
   IEEE 802.3/802.2              1492 bytes
   X.25                           576 bytes
   PPPoE Interfaces              <= 1492 bytes

A problem arises when the MTU of the private LAN is larger than the MTU of
the Internet connection. This is often the case if  the PPPoE protocol is
used for communications with the Internet. The problem can be explained as
follows:

1. TCP applications usually set the Minimum Segment Size (MSS) Option in TCP
connection requests. If the application is running on a machine connected to
an Ethernet, the MSS Option will be set to 1460 bytes. The remote end of the
connection also suggests an MSS, usually also 1460 bytes.

2. Once the TCP connection is established, the lowest MSS is used for
subsequent data transfer. That means that the remote machine on the Internet
will send TCP segments of up to 1460 bytes in length. These packets will be
fragmented on the PPPoE network because 1460 bytes of data plus 40 bytes of
IP and TCP header exceeds the 1492 byte PPPoE MTU.

3. This fragmentation should normally not be a problem, even though it
reduces transmission efficiency. However, all Builds of NAT32 and all Builds
of NAT32+ prior to Build 2076 reject all but the first incoming IP fragment,
because the subsequent fragments do not contain a TCP header and thus cannot
be unmapped.

The solution to this problem is to reduce the MTU of the machines on the
private LAN so that no fragmentation occurs on the PPPoE network.



>From my understanding of the OSI model, I don't think SOAP or Tomcat sets
the MTU (that would be bad), I think this is set on the network interface.

Get or set the MTU (Maximum Transfer Unit) of a device using ifr_mtu.
Setting the MTU is a privileged operation.

Or try this:

ifconfig tap0 arp mtu 1484 192.168.0.251 up

The command above sets the mtu to 1484.
Your milage may vary.

Hope This Helps,
Abraham

> -----Original Message-----
> From: Mark Childerson [mailto:mark@childersoft.com]
> Sent: Wednesday, November 14, 2001 8:23 AM
> To: soap-user@xml.apache.org
> Subject: MTU & Packets
>
>
> I have been using Tomcat-3.2.2 standalone with SOAP 2.2  on Redhat Linux
> 7.1 for some time, and all has worked fine. I just switched from using a
> Linux comp as a router to using a Linksys router, to connect to my DSL
> service, and since then I have been having trouble with access to SOAP.
> First, nobody outside my ISP could see Tomcat at all, but I changed the
> router's MTU (roughly maximum transmissible packet size) to 1300, and now
> people can see Tomcat. However, they can still not make RPC calls over
> SOAP. Since the calls involve more than 1300 bytes, I suspect
> that there is
> still some kind of MTU/packet size problem. I have tried to change the
> network card's MTU on the Tomcat server comp, but I have been unable to.
>
> My questions are:
>
> 1. Does this make sense?
>
> 2. Does anybody know how to change the MTU on the Linux box?
>
> 3. Does SOAP control packet sizes at all? If so, how can they be set?
>
> 4. Does Tomcat control packet size at all? If so, how can they be set?
>
> Any help on this would be much appreciated.
>
> Thanks,
>
> Mark Childerson
>
>
>
>


RE: MTU & Packets

Posted by Abraham Kang <ab...@infogain.com>.
Hi Mark,

   I am not an expert but I have a networking interest.

   Here is what I found at http://www.nat32.com/htm/mtu.htm

The Maximum Transfer Unit (MTU) is the maximum size of a packet sent to a
Network Adapter by the TCP/IP protocol stack. The MTU is normally determined
automatically and need not be explicitly configured by the user.

Below is a list of default MTU sizes for different media:

   16 Mbit/Sec Token Ring        17914 bytes
   4 Mbits/Sec Token Ring        4464 bytes
   FDDI                          4352 bytes
   Ethernet                      1500 bytes
   IEEE 802.3/802.2              1492 bytes
   X.25                           576 bytes
   PPPoE Interfaces              <= 1492 bytes

A problem arises when the MTU of the private LAN is larger than the MTU of
the Internet connection. This is often the case if  the PPPoE protocol is
used for communications with the Internet. The problem can be explained as
follows:

1. TCP applications usually set the Minimum Segment Size (MSS) Option in TCP
connection requests. If the application is running on a machine connected to
an Ethernet, the MSS Option will be set to 1460 bytes. The remote end of the
connection also suggests an MSS, usually also 1460 bytes.

2. Once the TCP connection is established, the lowest MSS is used for
subsequent data transfer. That means that the remote machine on the Internet
will send TCP segments of up to 1460 bytes in length. These packets will be
fragmented on the PPPoE network because 1460 bytes of data plus 40 bytes of
IP and TCP header exceeds the 1492 byte PPPoE MTU.

3. This fragmentation should normally not be a problem, even though it
reduces transmission efficiency. However, all Builds of NAT32 and all Builds
of NAT32+ prior to Build 2076 reject all but the first incoming IP fragment,
because the subsequent fragments do not contain a TCP header and thus cannot
be unmapped.

The solution to this problem is to reduce the MTU of the machines on the
private LAN so that no fragmentation occurs on the PPPoE network.