0

This is a bonus question in my Networks class: I have to find a destination for which the path MTU < 1500 bytes.

For example using the command

traceroute -F www.uwaterloo.ca 1500 works, and traceroute -F www.uwaterloo.ca 1501 doesnt.

So I need to find a destination that will fail under 1500 (and no it can not be a private network, that would be cheating).

I am suspecting this is a trick because nearly all IP over Ethernet implementations use the Ethernet V2 frame format, which supports 1500 MTU.

Any ideas?

8
  • Check if there are any PPP connections, or any ATM or frame relay ones perhaps (e.g. leased lines). Those may have a smaller MTU. Or anything encapsulated in VPN-type connections.
    – Kerrek SB
    Oct 4, 2011 at 20:29
  • 1
    PPPoE (e.g., DSL lines) is a good place to try.
    – derobert
    Oct 4, 2011 at 21:27
  • Got any modems (e.g. 'dialup') nearby? Oct 5, 2011 at 21:58
  • Homework questions are off-topic. Please read the FAQ.
    – user62491
    Oct 5, 2011 at 22:09
  • 1
    @kce - homework questions are not off topic, but you need to be honest (the op has been), and show your prior learning (which the op has), explain what you think the answer is and ask for feedback. The OP has sufficiently fulfilled most of these, and thus it can stay. Oct 5, 2011 at 22:11

2 Answers 2

2

How much time do you have? You can brute force this. For example like this bash script:

while [ 1 ]
do
    ip=`expr $RANDOM \* $RANDOM`;
    traceroute -F -I $i 1472 2>/dev/null >/dev/null
    if [ $? -ne 0 ]
    then
        echo Traceroute with 1472 bytes failed for $i
        exit
    fi
done

Caveat: This message displays IPs as an integer, you'll have to convert it to a dot separated octal format. Also, note that traceroute uses ICMP by default. In that case you need to set the data size to 1472 bytes (1472 + 8 bytes ICMP header + 20 bytes IP header) = 1500 bytes.

7
  • 2
    You probably want to do two pings—one with a fairly small packet and one with the larger (1500 byte packet), and see which hosts only respond to the small one. Two pings will be much quicker than a traceroute.
    – derobert
    Oct 4, 2011 at 21:36
  • Agree, you can also make educated guesses and pick IP ranges without trying random ip addresses.
    – jman
    Oct 4, 2011 at 21:43
  • i have used your idea but with pinging, and am currently running 50 processes of this script in parallel. lets hope the school doesn't ban my account. so far im just getting "connect: invalid arguement" which means some pings are trying to ping ip address that starts with 0 for example. Will let you know how this goes
    – Stefan
    Oct 4, 2011 at 22:14
  • so i talked to students who already took this course and apparently nobody has been ever able to answer this question in all the years he has taught the course. Also no luck with brute force
    – Stefan
    Oct 5, 2011 at 3:41
  • 1
    You can cheat creatively! Change your home router's outbound interface MTU. Or set up a linode VPS (therefore you get a public IP), change the eth0 MTU to less than 1500. The question is, in case of the latter is it worth the $19 monthly fee ;-).
    – jman
    Oct 5, 2011 at 20:16
0

Search on internet for an IP assigned to an ADSL modem (most of them are using PPPoE or PPPoA). Run durring your ping tests a tcpdump icmp and pay attention to ICMP Fragmentation Needed (Type 3, Code 4). If you see that you found your target.

Not the answer you're looking for? Browse other questions tagged .