> Yeah, the packets are dropped in the POP case of mpls_input.c that's how > far I got until now. I started with a fix but my magic is not strong > enough for now.
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: [r...@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 : [r...@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: [r...@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...

