Comment 15 for bug 380091

Revision history for this message
Yannick Defais (sevmek) wrote : Re: Ubuntu 9.04 Ekiga 3.2.0 Obeys Local Machine MTU Settings, Tries Nothing Else

Hi,

A synthesis of our discussion upstream:

TCP is mandatory and it is a main focus of the project. The switch from UDP to TCP is also part of the SIP standard. Reason: in some case (too many codecs enabled in Ekiga's preferences) Ekiga needs a bigger datagrams than the one usually provided by the MTU (usually 1500).

UDP is datagram based ("Packets are sent individually and are checked for integrity only if they arrive." cf. http://en.wikipedia.org/wiki/User_Datagram_Protocol#Comparison_of_UDP_and_TCP ), thus meaningful related informations must stick together in the same "datagram", which size is at maximum the size provided by MTU.

While TCP is streaming ("TCP uses a sequence number to identify each byte of data. The sequence number identifies the order of the bytes sent from each computer so that the data can be reconstructed in order, regardless of any fragmentation, disordering, or packet loss that may occur during transmission." cf. http://en.wikipedia.org/wiki/Transmission_Control_Protocol#Reliable_transmission )

TCP and UDP are at the same layer level, i.e. the "Transport Layer". The underlying level is the "Internet Layer" (see http://en.wikipedia.org/wiki/Internet_Protocol_Suite ). Thus UDP and TCP are encapsulated in the IP layer, which provide "IP fragmentation" *for both*. see: http://en.wikipedia.org/wiki/IP_fragmentation

Relevant part for our issue is:
"In a case where a router receives a protocol data unit (PDU) larger than the next hop's MTU, it has two options if the transport is IPv4. Drop the PDU and send an Internet Control Message Protocol (ICMP) message which indicates "Packet too Big", or to fragment the IP packet and send over the link with a smaller MTU. IPv6 hosts are supposed to determine the optimal Path MTU before sending packets."

Thus even UDP packets will be fragmented if the next hop's MTU is smaller. There is techniques for determining the smallest MTU along the path (cf. http://tools.ietf.org/html/rfc4821 ), but it is only optimization and even if Ekiga use the MTU from its localhost, it should not prevent the UDP packet to reach the destination, no matter what MTUs are in the path or destination.

This is the theory.

I still do not understand why a UDP packets from a large MTU like 7500 do not reach a smaller MTU like 1500. The IP layer should take care of that automatically.

Best regards,
Yannick