> Yeah, the packets are dropped in the POP case of mpls_input.c that's how
After taking a look at the source, I essentially backed out changes
done in rev. 1.10 /src/usr.sbin/ldpd/kroute.c .
Now my test setup works *somehow* even though the LFIB still shows
that LDP applies PHP:
[root@p2:root]# ldpctl sh lfib 3.2.1.1
flags: * = valid, C = Connected, S = Static
Flags Destination Nexthop Local Label Remote Label
*R 3.2.1.0/30 2.2.1.2 20 Pop
But the kernel routing table is different, e.g. it applies no PHP but
does SWAP the labels, as desired :
[root@p2:root]# route -n show -mpls
Routing tables
MPLS:
In label Out label Op Gateway Flags Refs Use
Mtu Prio Interface
3 - LOCAL 127.0.0.1 UGT 0 0
33200 56 lo0
16 - LOCAL 10.7.0.254 UGT 0 0
- 56 udav0
17 3 SWAP 1.1.2.1 UGT 0 0
- 56 vr2
18 3 SWAP 1.1.2.1 UGT 0 30
- 56 vr2
19 19 SWAP 1.1.2.1 UGT 0 0
- 56 vr2
20 3 SWAP 2.2.1.2 UGT 0 30
- 56 vr0 <==
21 3 SWAP 2.2.1.2 UGT 0 0
- 56 vr0
22 3 SWAP 2.2.1.2 UGT 0 0
- 56 vr0
23 23 SWAP 1.1.2.1 UGT 0 0
- 56 vr2
24 - LOCAL 7.0.0.2 UGT 0 0
33200 56 lo1
25 17 SWAP 1.2.3.3 UGT 0 0
- 56 vr1
26 26 SWAP 1.1.2.1 UGT 0 0
- 56 vr2
27 26 SWAP 2.2.1.2 UGT 0 0
- 56 vr0
Also, the RTT for the pings is approx. 150 ms (and increasing) which
should be in the 1 ms range:
[root@pe11:root]# ping 3.2.1.1
PING 3.2.1.1 (3.2.1.1): 56 data bytes
64 bytes from 3.2.1.1: icmp_seq=364 ttl=252 time=113.307 ms
64 bytes from 3.2.1.1: icmp_seq=365 ttl=252 time=113.211 ms
64 bytes from 3.2.1.1: icmp_seq=366 ttl=252 time=113.285 ms
64 bytes from 3.2.1.1: icmp_seq=367 ttl=252 time=113.260 ms
64 bytes from 3.2.1.1: icmp_seq=368 ttl=252 time=113.204 ms
64 bytes from 3.2.1.1: icmp_seq=369 ttl=252 time=152.024 ms
64 bytes from 3.2.1.1: icmp_seq=370 ttl=252 time=151.746 ms
64 bytes from 3.2.1.1: icmp_seq=371 ttl=252 time=151.777 ms
64 bytes from 3.2.1.1: icmp_seq=373 ttl=252 time=151.778 ms
64 bytes from 3.2.1.1: icmp_seq=374 ttl=252 time=151.753 ms
64 bytes from 3.2.1.1: icmp_seq=375 ttl=252 time=151.729 ms
64 bytes from 3.2.1.1: icmp_seq=376 ttl=252 time=151.782 ms
64 bytes from 3.2.1.1: icmp_seq=377 ttl=252 time=151.789 ms
64 bytes from 3.2.1.1: icmp_seq=378 ttl=252 time=151.760 ms
64 bytes from 3.2.1.1: icmp_seq=379 ttl=252 time=151.712 ms
64 bytes from 3.2.1.1: icmp_seq=380 ttl=252 time=151.787 ms
64 bytes from 3.2.1.1: icmp_seq=381 ttl=252 time=151.853 ms
64 bytes from 3.2.1.1: icmp_seq=382 ttl=252 time=151.798 ms
64 bytes from 3.2.1.1: icmp_seq=383 ttl=252 time=190.438 ms
64 bytes from 3.2.1.1: icmp_seq=384 ttl=252 time=190.347 ms
64 bytes from 3.2.1.1: icmp_seq=385 ttl=252 time=190.349 ms
64 bytes from 3.2.1.1: icmp_seq=386 ttl=252 time=190.395 ms
64 bytes from 3.2.1.1: icmp_seq=387 ttl=252 time=190.315 ms
64 bytes from 3.2.1.1: icmp_seq=388 ttl=252 time=190.316 ms
64 bytes from 3.2.1.1: icmp_seq=389 ttl=252 time=190.309 ms
Obviously, I did not understand enough about the code yet...