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

-- 
Ubuntu 9.04 Ekiga 3.2.0 Obeys Local Machine MTU Settings, Tries Nothing Else
https://bugs.launchpad.net/bugs/380091
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to