Skip to content

Traceroute (udp) doesn't work properly #234

@GoogleCodeExporter

Description

@GoogleCodeExporter
What steps will reproduce the problem?

1. Make a network with two end-devices and two routers, connect them all like 
device--router--router--device (n1-n2-n3-n4)
2. Run the simulation, wait for all routes to be established.
3. Open a shell on n1, do traceroute <ip of n4>


What is the expected output?

# The same as when running icmp traceroute (traceroute -I):
root@n1:/tmp/pycore.59638/n1.conf# traceroute -I 10.0.2.10
traceroute to 10.0.2.10 (10.0.2.10), 30 hops max, 60 byte packets
 1  10.0.0.1 (10.0.0.1)  0.116 ms  0.031 ms  0.024 ms
 2  10.0.1.2 (10.0.1.2)  0.085 ms  0.040 ms  0.036 ms
 3  10.0.2.10 (10.0.2.10)  0.078 ms  0.049 ms  0.047 ms


What do you see instead?

root@n1:/tmp/pycore.59638/n1.conf# traceroute 10.0.2.10
traceroute to 10.0.2.10 (10.0.2.10), 30 hops max, 60 byte packets
 1  10.0.0.1 (10.0.0.1)  0.201 ms  0.030 ms  0.032 ms
 2  10.0.1.2 (10.0.1.2)  0.256 ms  0.047 ms  0.042 ms
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * 10.0.2.10 (10.0.2.10)  0.091 ms  0.030 ms


What version of the product are you using? On what operating system?

I verified this bug with the core 4.6 vmware image from here:
http://downloads.pf.itd.nrl.navy.mil/core/vmware-image/vcore-4.6.zip


Please provide any additional information below.

I did some debugging, it seems that icmp port unreachable packets are not sent 
for the first ~12 udp packets arriving at n4. Here is some data I collected via 
tcpdump on n4, while running traceroute from n1:

root@n4:/tmp/pycore.59638/n4.conf# tcpdump -i eth0 "icmp or udp"
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
01:43:38.896146 IP 10.0.0.20.44227 > 10.0.2.10.33440: UDP, length 32
01:43:38.900326 IP 10.0.0.20.43642 > 10.0.2.10.33441: UDP, length 32
01:43:38.900386 IP 10.0.0.20.35349 > 10.0.2.10.33442: UDP, length 32
01:43:38.900441 IP 10.0.0.20.60219 > 10.0.2.10.33443: UDP, length 32
01:43:38.900488 IP 10.0.0.20.33668 > 10.0.2.10.33444: UDP, length 32
01:43:38.900726 IP 10.0.0.20.40518 > 10.0.2.10.33445: UDP, length 32
01:43:38.900779 IP 10.0.0.20.47990 > 10.0.2.10.33446: UDP, length 32
01:43:38.900830 IP 10.0.0.20.34060 > 10.0.2.10.33447: UDP, length 32
01:43:38.900881 IP 10.0.0.20.33039 > 10.0.2.10.33448: UDP, length 32
01:43:38.901018 IP 10.0.0.20.49209 > 10.0.2.10.33449: UDP, length 32
01:43:38.902539 IP 10.0.0.20.45197 > 10.0.2.10.33450: UDP, length 32
01:43:38.902597 IP 10.0.0.20.46281 > 10.0.2.10.33451: UDP, length 32
01:43:38.902652 IP 10.0.0.20.49496 > 10.0.2.10.33452: UDP, length 32
01:43:38.902703 IP 10.0.0.20.52932 > 10.0.2.10.33453: UDP, length 32
01:43:38.902750 IP 10.0.0.20.46181 > 10.0.2.10.33454: UDP, length 32
01:43:38.902797 IP 10.0.0.20.43875 > 10.0.2.10.33455: UDP, length 32
01:43:43.908418 IP 10.0.0.20.47524 > 10.0.2.10.33456: UDP, length 32
01:43:43.908453 IP 10.0.2.10 > 10.0.0.20: ICMP 10.0.2.10 udp port 33456 
unreachable, length 68
01:43:43.908493 IP 10.0.0.20.55719 > 10.0.2.10.33457: UDP, length 32
01:43:43.908502 IP 10.0.2.10 > 10.0.0.20: ICMP 10.0.2.10 udp port 33457 
unreachable, length 68
01:43:43.908535 IP 10.0.0.20.48513 > 10.0.2.10.33458: UDP, length 32
01:43:43.908544 IP 10.0.2.10 > 10.0.0.20: ICMP 10.0.2.10 udp port 33458 
unreachable, length 68
01:43:43.908576 IP 10.0.0.20.53493 > 10.0.2.10.33459: UDP, length 32
01:43:43.908584 IP 10.0.2.10 > 10.0.0.20: ICMP 10.0.2.10 udp port 33459 
unreachable, length 68
01:43:43.908617 IP 10.0.0.20.35224 > 10.0.2.10.33460: UDP, length 32
01:43:43.908625 IP 10.0.2.10 > 10.0.0.20: ICMP 10.0.2.10 udp port 33460 
unreachable, length 68
01:43:43.908657 IP 10.0.0.20.35907 > 10.0.2.10.33461: UDP, length 32
01:43:43.908683 IP 10.0.0.20.40795 > 10.0.2.10.33462: UDP, length 32
01:43:43.908708 IP 10.0.0.20.34325 > 10.0.2.10.33463: UDP, length 32
01:43:43.908736 IP 10.0.0.20.53139 > 10.0.2.10.33464: UDP, length 32
01:43:43.908762 IP 10.0.0.20.57508 > 10.0.2.10.33465: UDP, length 32
01:43:43.908789 IP 10.0.0.20.51539 > 10.0.2.10.33466: UDP, length 32
01:43:43.908809 IP 10.0.0.20.39329 > 10.0.2.10.33467: UDP, length 32
01:43:43.908830 IP 10.0.0.20.59093 > 10.0.2.10.33468: UDP, length 32
01:43:43.908850 IP 10.0.0.20.49132 > 10.0.2.10.33469: UDP, length 32
01:43:43.908870 IP 10.0.0.20.35219 > 10.0.2.10.33470: UDP, length 32
01:43:43.908891 IP 10.0.0.20.33306 > 10.0.2.10.33471: UDP, length 32

37 packets captured
37 packets received by filter
0 packets dropped by kernel


Great software nonetheless, we've been using core in our routing labs for a 
number of years now and the students love it! Ah yes, this problem didn't 
appear before, with core 4.2.

Kind Regards,
Martin

Original issue reported on code.google.com by dban...@gmail.com on 4 Dec 2013 at 10:11

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions