Howdy, Stranger!

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

Categories

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
packets.

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.