[j-nsp] Multipath per-packet load-balancing breaks ping traceroute etc
Alasdair Lumsden
jnsp-alasdair at everycity.co.uk
Sun Sep 30 22:08:50 EDT 2007
Hi All,
I was wondering if anyone had experienced a similar problem I'm seeing
with multipath, on a J2350, JunOS 8.4R2.3.
The symptom is that when I enable multipath, tools on the router such as
ping, traceroute, etc, cease to function (that is, to destinations via
the multipath neighbours - pinging local IP addresses works). It isn't
just limited to ping and traceroute, name resolution fails also.
The router continues to route correctly, and the multipath works
correctly (Both neighbour addresses appear in traceroutes through the
router).
Doing "show route DESTIP" displays the expected correct route, out via
the correct interface - equipment using the router as their gateway can
reach those destinations. It's just that tools on the router cannot.
I can get around this by specifying a source interface or source IP to
ping and traceroute; they then work as expected. Curiously, ping
255.255.255.255 works, with replies from both neighbour addresses,
showing that it is selecting the correct interface even when you don't
specify one.
I'm fairly sure I haven't set anything out of the ordinary in my
configuration. I have included snippets of the configuration below, plus
examples of the symptoms. Full configuration can be provided if it would
help.
The problem isn't major, I can still SSH to the router, everything else
works. It's just that it can't resolve hostnames, NTP won't work, and I
can't ssh out. This isn't major, I could leave the router as is. However
it bothers me - something isn't working correctly!
Is this expected behaviour for multipath, or is it most likely a
configuration problem? Could it potentially even be a bug in JunOS?
Thanks in advance for any light people can shed! :)
--
Alasdair
## Configuration snippets
root at j01> show configuration routing-options forwarding-table
export equal_cost;
root at j01> show configuration policy-options policy-statement equal_cost
from protocol bgp;
then {
load-balance per-packet;
}
root at j01> show configuration protocols bgp
damping;
remove-private;
group ProviderA {
type external;
local-address 195.72.129.158;
import [ nobogons nosmallprefixes noprivateasns damping ];
export announce;
peer-as XXX;
multipath;
neighbor 195.72.129.153;
neighbor 195.72.129.154;
}
## Example
root at j01> show route 64.233.169.147
inet.0: 229834 destinations, 538730 routes (227448 active, 0 holddown,
4795 hidden)
Restart Complete
+ = Active Route, - = Last Active, * = Both
64.233.168.0/23 *[BGP/170] 03:10:21, localpref 100
AS path: 6908 3257 6453 15169 I
> to 195.72.129.153 via ge-0/0/0.1051
to 195.72.129.154 via ge-0/0/0.1051
[BGP/170] 03:09:26, localpref 100
AS path: 6908 3257 1239 15169 I
> to 195.72.129.154 via ge-0/0/0.1051
root at j01> ping 64.233.169.147
PING 64.233.169.147 (64.233.169.147): 56 data bytes
^C
--- 64.233.169.147 ping statistics ---
9 packets transmitted, 0 packets received, 100% packet loss
root at j01> ping 64.233.169.147 interface ge-0/0/0.1051
PING 64.233.169.147 (64.233.169.147): 56 data bytes
64 bytes from 64.233.169.147: icmp_seq=0 ttl=243 time=97.481 ms
64 bytes from 64.233.169.147: icmp_seq=1 ttl=243 time=90.375 ms
64 bytes from 64.233.169.147: icmp_seq=2 ttl=243 time=100.170 ms
^C
--- 64.233.169.147 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 90.375/96.009/100.170/4.132 ms
root at j01> ping 64.233.169.147 source 195.72.129.158
PING 64.233.169.147 (64.233.169.147): 56 data bytes
64 bytes from 64.233.169.147: icmp_seq=0 ttl=243 time=104.552 ms
64 bytes from 64.233.169.147: icmp_seq=1 ttl=243 time=100.490 ms
64 bytes from 64.233.169.147: icmp_seq=2 ttl=243 time=90.414 ms
^C
--- 64.233.169.147 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 90.414/98.485/104.552/5.943 ms
## Traceroute issues
root at j01> traceroute 64.233.169.147
traceroute to 64.233.169.147 (64.233.169.147), 30 hops max, 40 byte packets
1 * * *
2 * * *
^C
root at j01> traceroute 64.233.169.147 source 195.72.129.158 no-resolve
traceroute to 64.233.169.147 (64.233.169.147) from 195.72.129.158, 30
hops max, 40 byte packets
1 195.72.129.153 29.539 ms 9.453 ms 195.72.129.154 9.834 ms
2 213.200.77.153 9.621 ms 213.200.77.113 1.154 ms 17.957 ms
3 213.206.159.97 9.069 ms 9.377 ms 213.200.78.34 9.483 ms
4 195.219.195.1 9.086 ms 213.206.128.58 9.050 ms 9.284 ms
MPLS Label=1505 CoS=0 TTL=1 S=1
5 195.219.195.6 9.176 ms 9.170 ms 213.206.128.54 9.517 ms
6 213.206.128.63 9.005 ms 195.219.67.206 9.266 ms 9.432 ms
7 82.195.189.186 9.200 ms 9.867 ms 209.85.252.40 19.056 ms
8 72.14.236.216 78.755 ms 209.85.252.40 9.539 ms 9.492 ms
MPLS Label=303907 CoS=0 TTL=1 S=1
9 66.249.94.235 89.555 ms 72.14.232.95 9.275 ms 72.14.236.216 69.525 ms
MPLS Label=303907 CoS=0 TTL=1 S=1
10 66.249.94.235 88.803 ms 209.85.251.89 99.647 ms 119.360 ms
11 64.233.175.109 89.155 ms 209.85.251.89 99.311 ms 72.14.232.21
99.560 ms
12 72.14.232.21 98.844 ms 119.387 ms 64.233.175.109 99.630 ms
13 64.233.169.147 88.913 ms 99.492 ms 89.696 ms
## Broadcast ping
root at j01> ping 255.255.255.255
PING 255.255.255.255 (255.255.255.255): 56 data bytes
64 bytes from 195.72.129.153: icmp_seq=0 ttl=255 time=7.807 ms
64 bytes from 195.72.129.154: icmp_seq=0 ttl=255 time=47.893 ms (DUP!)
64 bytes from 195.72.129.153: icmp_seq=1 ttl=255 time=10.394 ms
64 bytes from 195.72.129.154: icmp_seq=1 ttl=255 time=10.840 ms (DUP!)
64 bytes from 195.72.129.153: icmp_seq=2 ttl=255 time=10.390 ms
64 bytes from 195.72.129.154: icmp_seq=2 ttl=255 time=10.843 ms (DUP!)
^C
--- 255.255.255.255 ping statistics ---
3 packets transmitted, 3 packets received, +3 duplicates, 0% packet loss
round-trip min/avg/max/stddev = 7.807/16.361/47.893/14.140 ms
root at j01> ping 255.255.255.255 source 195.72.129.158
PING 255.255.255.255 (255.255.255.255): 56 data bytes
64 bytes from 195.72.129.153: icmp_seq=0 ttl=255 time=7.044 ms
64 bytes from 195.72.129.154: icmp_seq=0 ttl=255 time=7.562 ms (DUP!)
64 bytes from 195.72.129.153: icmp_seq=1 ttl=255 time=10.387 ms
64 bytes from 195.72.129.154: icmp_seq=1 ttl=255 time=10.839 ms (DUP!)
64 bytes from 195.72.129.153: icmp_seq=2 ttl=255 time=20.332 ms
64 bytes from 195.72.129.154: icmp_seq=2 ttl=255 time=20.863 ms (DUP!)
^C
--- 255.255.255.255 ping statistics ---
3 packets transmitted, 3 packets received, +3 duplicates, 0% packet loss
round-trip min/avg/max/stddev = 7.044/12.838/20.863/5.656
## Traceroute through router
root ~ (mail02): traceroute -n 64.233.169.147
traceroute to 64.233.169.147 (64.233.169.147), 30 hops max, 40 byte packets
1 91.194.74.92 0.201 ms 0.157 ms 0.153 ms
2 91.194.75.250 25.442 ms 30.063 ms 29.813 ms
3 195.72.129.154 0.945 ms 0.980 ms 195.72.129.153 11.857 ms
4 213.200.77.113 0.962 ms 213.200.77.153 1.025 ms 1.035 ms
5 213.200.78.34 1.279 ms 1.292 ms 213.206.159.97 1.294 ms
6 213.206.128.56 1.277 ms 195.219.195.1 1.607 ms 1.536 ms
7 213.206.129.151 0.991 ms 1.001 ms 195.219.195.6 1.023 ms
8 195.219.67.206 1.017 ms 213.206.128.63 121.856 ms 1.800 ms
9 209.85.252.40 1.262 ms 1.530 ms 82.195.189.186 1.278 ms
10 209.85.252.40 1.282 ms 72.14.236.216 100.409 ms 64.233.174.27
1.530 ms
11 72.14.236.216 108.084 ms 72.14.238.249 23.388 ms 66.249.94.235
77.392 ms
12 209.85.251.89 84.899 ms 66.249.94.235 77.201 ms 72.14.232.95 8.771 ms
13 72.14.232.21 80.229 ms 209.85.251.89 99.328 ms 72.14.232.21 79.014 ms
14 72.14.232.21 86.952 ms 80.038 ms 64.233.175.109 85.968 ms
15 64.233.169.147 77.425 ms 85.425 ms 77.182 ms
More information about the juniper-nsp
mailing list