UDP, linux and packets larger than 1500 bytes

Hi, I'm developing a tftp client and server and I want to dynamically select the
udp payload size to boost transfer performance.

I have tested it with two linux machines ( one has a gigabit ethernet card, the
other a fast ethernet one ). I changed the MTU of the gigabit card to 2048 bytes
and leaved the other to 1500.

I have used setsockopt(sockfd, IPPROTO_IP, IP_MTU_DISCOVER, &optval,
sizeof(optval)) to set the MTU_DISCOVER flag to IP_PMTUDISC_DO.

From what I have read this option should set the DF bit to one and so it should
be possible to find the minimum MTU of the network ( the MTU of the host that
has the lowest MTU ). However this thing only gives me an error when I send a
packet which size is bigger than the MTU of the machine from which I'm sending

Also the other machine ( the server in this case ) doesn't receive the oversized
packets ( the server has a MTU of 1500 ). All the UDP packets are dropped, the
only way is to send packets of 1472 bytes.

Why the hosts do this? From what I have read, if I send a packet larger than
MTU, the ip layer should fragment it.
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!