Bug#1055978: mtr-tiny: traceroute does not stop on subnet router anycast addresses

2023-11-15 Thread Rogier Wolff


Hi, 

What I meant with "trace" is a network dump. Like tcpdump or wireshark. 
What packet is coming back ? 

Roger. 


On Wed, Nov 15, 2023 at 03:40:25PM +0100, linux wrote:
> 
> Hi,
> 
> I aggree with you that it's not really a bug, anyways I thougt it could be 
> handled different by the program. Your proposal with the additional 
> "end-detection" would seem to work fine for this problem, below I presented 
> you the exact behavior in my test setup and attached some network traces and 
> a diagram of the setup.
> 
> I prepared a test setup and captured two traces of the network. The test 
> consists of three linux routers which are connected as follows: R1 <-> R2 <-> 
> R3 (see test_setup.png)
> 1st trace(intended_behavior.pcap) works as expected:
> From R1 to R3:
> mtr -c 1 2001:db8:0:3::1
> Host   
> Loss%   Snt   Last   Avg  Best  Wrst StDev
>  1. 2001:db8:0:1::2  
> 0.0% 1    1.0   1.0   1.0   1.0   0.0
>  2. 2001:db8:0:3::1  
> 0.0% 1    1.4   1.4   1.4   1.4   0.0
> 
> 2nd trace(unintended_behavior.pcap) does not stop, because I try to reach the 
> anycast address:
> mtr -c 1 2001:db8:0:3::
> Host                                                                       
> Loss%   Snt   Last   Avg  Best  Wrst StDev
>  1. 2001:db8:0:1::2                                                          
> 0.0%     1    1.0   1.0   1.0   1.0   0.0
>  2. 2001:db8:0:2::2                                                          
> 0.0%     1    1.5   1.5   1.5   1.5   0.0
>  3. 2001:db8:0:2::2                                                          
> 0.0%     1    1.3   1.3   1.3   1.3   0.0
>  4. 2001:db8:0:2::2                                                          
> 0.0%     1    1.5   1.5   1.5   1.5   0.0
>  5. 2001:db8:0:2::2                                                          
> 0.0%     1    1.5   1.5   1.5   1.5   0.0
>  6. 2001:db8:0:2::2                                                          
> 0.0%     1    1.0   1.0   1.0   1.0   0.0
>  7. 2001:db8:0:2::2                                                          
> 0.0%     1    1.5   1.5   1.5   1.5   0.0
>  8. 2001:db8:0:2::2                                                          
> 0.0%     1    1.2   1.2   1.2   1.2   0.0
>  9. 2001:db8:0:2::2                                                          
> 0.0%     1    1.4   1.4   1.4   1.4   0.0
> 10. 2001:db8:0:2::2                                                          
> 0.0%     1    1.2   1.2   1.2   1.2   0.0
> 11. 2001:db8:0:2::2                                                          
> 0.0%     1    1.3   1.3   1.3   1.3   0.0
> 12. 2001:db8:0:2::2                                                          
> 0.0%     1    1.4   1.4   1.4   1.4   0.0
> 13. 2001:db8:0:2::2                                                          
> 0.0%     1    1.2   1.2   1.2   1.2   0.0
> 14. 2001:db8:0:2::2                                                          
> 0.0%     1    1.3   1.3   1.3   1.3   0.0
> 15. 2001:db8:0:2::2                                                          
> 0.0%     1    1.5   1.5   1.5   1.5   0.0
> 16. 2001:db8:0:2::2                                                          
> 0.0%     1    1.1   1.1   1.1   1.1   0.0
> 17. 2001:db8:0:2::2                                                          
> 0.0%     1    1.5   1.5   1.5   1.5   0.0
> 18. 2001:db8:0:2::2                                                          
> 0.0%     1    1.3   1.3   1.3   1.3   0.0
> 19. 2001:db8:0:2::2                                                          
> 0.0%     1    1.5   1.5   1.5   1.5   0.0
> 20. 2001:db8:0:2::2                                                          
> 0.0%     1    1.5   1.5   1.5   1.5   0.0
> 21. 2001:db8:0:2::2                                                          
> 0.0%     1    1.3   1.3   1.3   1.3   0.0
> 22. 2001:db8:0:2::2                                                          
> 0.0%     1    1.5   1.5   1.5   1.5   0.0
> 23. 2001:db8:0:2::2                                                          
> 0.0%     1    1.3   1.3   1.3   1.3   0.0
> 24. 2001:db8:0:2::2                                                          
> 0.0%     1    1.5   1.5   1.5   1.5   0.0
> 25. 2001:db8:0:2::2                                                          
> 0.0%     1    1.4   1.4   1.4   1.4   0.0
> 26. 2001:db8:0:2::2                                                          
> 0.0%     1    1.2   1.2   1.2   1.2   0.0
> 27. 2001:db8:0:2::2                                                          
> 0.0%     1    1.4   1.4   1.4   1.4   0.0
> 28. 2001:db8:0:2::2                                                          
> 0.0%     1    1.2   1.2   1.2   1.2   0.0
> 29. 2001:db8:0:2::2                                                          
> 0.0%  

Bug#1055978: mtr-tiny: traceroute does not stop on subnet router anycast addresses

2023-11-15 Thread linux

Hi,

I aggree with you that it's not really a bug, anyways I thougt it could be 
handled different by the program. Your proposal with the additional 
"end-detection" would seem to work fine for this problem, below I presented you 
the exact behavior in my test setup and attached some network traces and a 
diagram of the setup.

I prepared a test setup and captured two traces of the network. The test 
consists of three linux routers which are connected as follows: R1 <-> R2 <-> 
R3 (see test_setup.png)
1st trace(intended_behavior.pcap) works as expected:
>From R1 to R3:
mtr -c 1 2001:db8:0:3::1
Host   
Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. 2001:db8:0:1::2  
0.0% 1    1.0   1.0   1.0   1.0   0.0
 2. 2001:db8:0:3::1  
0.0% 1    1.4   1.4   1.4   1.4   0.0

2nd trace(unintended_behavior.pcap) does not stop, because I try to reach the 
anycast address:
mtr -c 1 2001:db8:0:3::
Host                                                                       
Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. 2001:db8:0:1::2                                                          
0.0%     1    1.0   1.0   1.0   1.0   0.0
 2. 2001:db8:0:2::2                                                          
0.0%     1    1.5   1.5   1.5   1.5   0.0
 3. 2001:db8:0:2::2                                                          
0.0%     1    1.3   1.3   1.3   1.3   0.0
 4. 2001:db8:0:2::2                                                          
0.0%     1    1.5   1.5   1.5   1.5   0.0
 5. 2001:db8:0:2::2                                                          
0.0%     1    1.5   1.5   1.5   1.5   0.0
 6. 2001:db8:0:2::2                                                          
0.0%     1    1.0   1.0   1.0   1.0   0.0
 7. 2001:db8:0:2::2                                                          
0.0%     1    1.5   1.5   1.5   1.5   0.0
 8. 2001:db8:0:2::2                                                          
0.0%     1    1.2   1.2   1.2   1.2   0.0
 9. 2001:db8:0:2::2                                                          
0.0%     1    1.4   1.4   1.4   1.4   0.0
10. 2001:db8:0:2::2                                                          
0.0%     1    1.2   1.2   1.2   1.2   0.0
11. 2001:db8:0:2::2                                                          
0.0%     1    1.3   1.3   1.3   1.3   0.0
12. 2001:db8:0:2::2                                                          
0.0%     1    1.4   1.4   1.4   1.4   0.0
13. 2001:db8:0:2::2                                                          
0.0%     1    1.2   1.2   1.2   1.2   0.0
14. 2001:db8:0:2::2                                                          
0.0%     1    1.3   1.3   1.3   1.3   0.0
15. 2001:db8:0:2::2                                                          
0.0%     1    1.5   1.5   1.5   1.5   0.0
16. 2001:db8:0:2::2                                                          
0.0%     1    1.1   1.1   1.1   1.1   0.0
17. 2001:db8:0:2::2                                                          
0.0%     1    1.5   1.5   1.5   1.5   0.0
18. 2001:db8:0:2::2                                                          
0.0%     1    1.3   1.3   1.3   1.3   0.0
19. 2001:db8:0:2::2                                                          
0.0%     1    1.5   1.5   1.5   1.5   0.0
20. 2001:db8:0:2::2                                                          
0.0%     1    1.5   1.5   1.5   1.5   0.0
21. 2001:db8:0:2::2                                                          
0.0%     1    1.3   1.3   1.3   1.3   0.0
22. 2001:db8:0:2::2                                                          
0.0%     1    1.5   1.5   1.5   1.5   0.0
23. 2001:db8:0:2::2                                                          
0.0%     1    1.3   1.3   1.3   1.3   0.0
24. 2001:db8:0:2::2                                                          
0.0%     1    1.5   1.5   1.5   1.5   0.0
25. 2001:db8:0:2::2                                                          
0.0%     1    1.4   1.4   1.4   1.4   0.0
26. 2001:db8:0:2::2                                                          
0.0%     1    1.2   1.2   1.2   1.2   0.0
27. 2001:db8:0:2::2                                                          
0.0%     1    1.4   1.4   1.4   1.4   0.0
28. 2001:db8:0:2::2                                                          
0.0%     1    1.2   1.2   1.2   1.2   0.0
29. 2001:db8:0:2::2                                                          
0.0%     1    1.4   1.4   1.4   1.4   0.0
30. 2001:db8:0:2::2                                                          
0.0%     1    1.4   1.4   1.4   1.4   0.0


On Wednesday, November 15, 2023 11:15 CET, Rogier Wolff 
 wrote:
 Hi,

I'd say this is an unwanted side-effect rather than a bug.

I'd say the "end-detection" might also consider three times the 

Bug#1055978: mtr-tiny: traceroute does not stop on subnet router anycast addresses

2023-11-15 Thread Rogier Wolff
Hi, 

I'd say this is an unwanted side-effect rather than a bug. 

I'd say the "end-detection" might also consider three times the same
host responding to be considerd as "the end". 

Originally the TTL, that is now "hop counter" was the "number of
seconds in the network".

Thus if there was a queue of 5 seconds before a packet could take
the next link, the TTL would be decreased by five for that hop. And
that router should return a TTL EXCEEDED for packets arriving with
a TTL of 1-5. 

This would, after the suggested change trigger the end-detection. I'm
thinking that this would be rare enough nowadays to be acceptable.

The question is: What response are you getting. If it is a "ping
reply" and not a "time exceeded" we should definitively detct that as
"target reached". So can you trace the network?

Can you submit an upstream bugreport on github?
https://github.com/traviscross/mtr/issues

Roger. 


On Wed, Nov 15, 2023 at 10:45:28AM +0100, Roland Christanell wrote:
> Package: mtr-tiny
> Version: 0.94-1+deb11u1
> Severity: normal
> Tags: ipv6
> X-Debbugs-Cc: li...@christanell.info
> 
> Dear Maintainer,
> 
> When I'm trying to use mtr to an 'subnet router anycast address' which 
> terminates on a linux router, the router answers with the IPv6 address 
> configured on it's interface and not the anycast address, so the mtr does not 
> stop.
> 
> (For the example I use the IPv6 documentation address space)
> Let's say my linux router has the IPv6 2001:db8:0:1::1/64 and I want to make 
> a traceroute to 2001:db8:0:1::
> Example: mtr 2001:db8:0:1::
> Host  Loss%   Snt   Last  
>  Avg  Best  Wrst StDev
> 1. :::X:XX0.0% 30.7   
> 1.4   0.7   2.6   1.1
> 2. :::X:XX0.0% 32.4   
> 1.3   0.7   2.4   1.0
> 3. :::X:XX  0.0% 33.4   
> 4.5   3.4   5.5   1.1
> 4. 2001:db8:0:1::10.0% 33.7   
> 3.6   3.5   3.7   0.1
> 5. 2001:db8:0:1::10.0% 33.7   
> 3.6   3.5   3.7   0.1
> 6. 2001:db8:0:1::10.0% 33.7   
> 3.6   3.5   3.7   0.1
> 7. 2001:db8:0:1::10.0% 33.7   
> 3.6   3.5   3.7   0.1
> 8. 2001:db8:0:1::10.0% 33.7   
> 3.6   3.5   3.7   0.1
> 9. 2001:db8:0:1::10.0% 33.7   
> 3.6   3.5   3.7   0.1
> 10.   ...
> 
> In my opinion the mtr does not stop, because it does not get an answer from 
> the requested address, but because it's an 'subnet router anycast address' 
> the router answers anyway, which is correct.
> 
> Maybe I'm wrong, but I would expect a result like this:
> Example: mtr 2001:db8:0:1::
> Host  Loss%   Snt   Last  
>  Avg  Best  Wrst StDev
> 1. :::X:XX0.0% 30.7   
> 1.4   0.7   2.6   1.1
> 2. :::X:XX0.0% 32.4   
> 1.3   0.7   2.4   1.0
> 3. :::X:XX  0.0% 33.4   
> 4.5   3.4   5.5   1.1
> 4. 2001:db8:0:1:: 0.0% 33.7   
> 3.6   3.5   3.7   0.1
> 
> As far as I found out, it seems to only appear on linux routers, so I'm not 
> 100% sure if it's a bug in mtr-tiny or a misconfiguration on the linux 
> routers.
> 
> 
> -- System Information:
> Debian Release: 11.8
>   APT prefers oldstable-updates
>   APT policy: (500, 'oldstable-updates'), (500, 'oldstable-security'), (500, 
> 'oldstable')
> Architecture: amd64 (x86_64)
> 
> Kernel: Linux 5.10.0-26-amd64 (SMP w/1 CPU thread)
> Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
> LANGUAGE=en_US:en
> Shell: /bin/sh linked to /usr/bin/dash
> Init: systemd (via /run/systemd/system)
> LSM: AppArmor: enabled
> 
> Versions of packages mtr-tiny depends on:
> ii  libc62.31-13+deb11u7
> ii  libjansson4  2.13.1-1.1
> ii  libncurses6  6.2+20201114-2+deb11u2
> ii  libtinfo66.2+20201114-2+deb11u2
> 
> mtr-tiny recommends no packages.
> 
> mtr-tiny suggests no packages.
> 
> -- no debconf information
> 

-- 
** r.e.wo...@bitwizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110 **
**Delftechpark 11 2628 XJ  Delft, The Netherlands.  KVK: 27239233**
f equals m times a. When your f is steady, and your m is going down
your a is going up.  -- Chris Hadfield about flying up the space shuttle.



Bug#1055978: mtr-tiny: traceroute does not stop on subnet router anycast addresses

2023-11-15 Thread Roland Christanell
Package: mtr-tiny
Version: 0.94-1+deb11u1
Severity: normal
Tags: ipv6
X-Debbugs-Cc: li...@christanell.info

Dear Maintainer,

When I'm trying to use mtr to an 'subnet router anycast address' which 
terminates on a linux router, the router answers with the IPv6 address 
configured on it's interface and not the anycast address, so the mtr does not 
stop.

(For the example I use the IPv6 documentation address space)
Let's say my linux router has the IPv6 2001:db8:0:1::1/64 and I want to make a 
traceroute to 2001:db8:0:1::
Example: mtr 2001:db8:0:1::
Host  Loss%   Snt   Last   
Avg  Best  Wrst StDev
1. :::X:XX0.0% 30.7   
1.4   0.7   2.6   1.1
2. :::X:XX0.0% 32.4   
1.3   0.7   2.4   1.0
3. :::X:XX0.0% 33.4   
4.5   3.4   5.5   1.1
4. 2001:db8:0:1::10.0% 33.7   
3.6   3.5   3.7   0.1
5. 2001:db8:0:1::10.0% 33.7   
3.6   3.5   3.7   0.1
6. 2001:db8:0:1::10.0% 33.7   
3.6   3.5   3.7   0.1
7. 2001:db8:0:1::10.0% 33.7   
3.6   3.5   3.7   0.1
8. 2001:db8:0:1::10.0% 33.7   
3.6   3.5   3.7   0.1
9. 2001:db8:0:1::10.0% 33.7   
3.6   3.5   3.7   0.1
10.   ...

In my opinion the mtr does not stop, because it does not get an answer from the 
requested address, but because it's an 'subnet router anycast address' the 
router answers anyway, which is correct.

Maybe I'm wrong, but I would expect a result like this:
Example: mtr 2001:db8:0:1::
Host  Loss%   Snt   Last   
Avg  Best  Wrst StDev
1. :::X:XX0.0% 30.7   
1.4   0.7   2.6   1.1
2. :::X:XX0.0% 32.4   
1.3   0.7   2.4   1.0
3. :::X:XX0.0% 33.4   
4.5   3.4   5.5   1.1
4. 2001:db8:0:1:: 0.0% 33.7   
3.6   3.5   3.7   0.1

As far as I found out, it seems to only appear on linux routers, so I'm not 
100% sure if it's a bug in mtr-tiny or a misconfiguration on the linux routers.


-- System Information:
Debian Release: 11.8
  APT prefers oldstable-updates
  APT policy: (500, 'oldstable-updates'), (500, 'oldstable-security'), (500, 
'oldstable')
Architecture: amd64 (x86_64)

Kernel: Linux 5.10.0-26-amd64 (SMP w/1 CPU thread)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages mtr-tiny depends on:
ii  libc62.31-13+deb11u7
ii  libjansson4  2.13.1-1.1
ii  libncurses6  6.2+20201114-2+deb11u2
ii  libtinfo66.2+20201114-2+deb11u2

mtr-tiny recommends no packages.

mtr-tiny suggests no packages.

-- no debconf information