> 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...

Reply via email to