[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