Rolf Sommerhalder
2010-06-07 14:48:32 UTC
Dear list,
Is there an way to disable PHP, e.g. to prevent ldpd on the last P
router from stripping/popping the label before it reaches the PE
router?
In my little test network that runs -current as of 03 June, I observe
from ldpd's lfib on the last P router that it pops the label on the
ingress interface (see output below), but then it never outputs/routes
the stripped packet to the egress interface towards the PE router (the
use counter of the matching prefix on the P router does not increment,
e.g. the P router appears to blackhole the ICMP Echo Request packets).
Currently, I am using a very basic setup with RIP as IGP, LDP, without
any additional route tables, nor VLANs, pf is disabled on all nodes.
I can provide a more detailed description of my lab setup, and output
of the various routing tables, etc. However, if there would be an easy
way to disable PHP, then that would confirm that my setup is indeed OK
(as I have tried to verify manually so far).
Thank you,
Rolf
We ping from another PE router pe11 via two P routers p1 and p2 to
another PE router pe21=3.2.1.1:
[***@pe11:root]# ping 3.2.1.1
The label switched packet makes it via another P router p1 to the
ingress interface of the last P router p2 just fine:
[***@p2:root]# tcpdump -i vr2 -n
tcpdump: listening on vr2, link-type EN10MB
18:34:39.071600 MPLS(label 0x14, exp 0, ttl 254) 2.1.1.2 > 3.2.1.1:
icmp: echo request
18:34:40.091795 MPLS(label 0x14, exp 0, ttl 254) 2.1.1.2 > 3.2.1.1:
icmp: echo request
18:34:41.111994 MPLS(label 0x14, exp 0, ttl 254) 2.1.1.2 > 3.2.1.1:
icmp: echo request
According to the LFIB this P router knows it is the Penultimate Hop
which directly connects to pe21. Therefore (probably), it pops the
label 20:
[***@p2:root]# ldpctl show lfib
flags: * = valid, C = Connected, S = Static
Flags Destination Nexthop Local Label Remote Label
*S 0.0.0.0/0 10.7.0.254 16 -
*C 1.1.2.0/29 link#3 imp-null -
*R 1.1.3.0/29 1.1.2.1 17 Pop
*C 1.2.3.0/29 link#2 imp-null -
*R 2.1.1.0/30 1.1.2.1 18 Pop
*C 2.2.1.0/30 link#1 imp-null -
*R 3.1.1.0/30 1.1.2.1 19 19
*R 3.2.1.0/30 2.2.1.2 20 Pop <==
*R 3.2.1.4/30 2.2.1.2 21 Pop
*R 3.2.1.8/30 2.2.1.2 22 Pop
*R 7.0.0.1/32 1.1.2.1 23 23
* 7.0.0.2/32 7.0.0.2 24 -
*R 7.0.0.3/32 1.2.3.3 25 17
*R 7.0.0.11/32 1.1.2.1 26 26
*R 7.0.0.21/32 2.2.1.2 27 26
*C 10.7.0.0/16 link#6 imp-null -
*C 127.0.0.0/8 link#0 - -
*S 127.0.0.0/8 127.0.0.1 - -
* 127.0.0.1/32 127.0.0.1 - -
*S 224.0.0.0/4 127.0.0.1 - -
* 224.0.0.9/32 127.0.0.1 - -
[***@p2:root]# ripctl show rib
Destination Nexthop Cost
1.1.2.0/29 0.0.0.0 1
1.1.3.0/29 1.1.2.1 2
1.2.3.0/29 0.0.0.0 1
2.1.1.0/30 1.1.2.1 2
2.2.1.0/30 0.0.0.0 1
3.1.1.0/30 1.1.2.1 3
3.2.1.0/30 2.2.1.2 2 <==
3.2.1.4/30 2.2.1.2 2
3.2.1.8/30 2.2.1.2 2
7.0.0.1/32 1.1.2.1 2
7.0.0.2/32 7.0.0.2 1
7.0.0.3/32 1.2.3.3 2
7.0.0.11/32 1.1.2.1 3
7.0.0.21/32 2.2.1.2 2
[***@p2:root]# route -n get 3.2.1.1
route to: 3.2.1.1
destination: 3.2.1.0
mask: 255.255.255.252
gateway: 2.2.1.2
interface: vr0
if address: 2.2.1.1
priority: 40 (rip)
flags: <UP,GATEWAY,DONE>
use mtu expire
49 0 0
But p2 appears to eat up those packets, instead of forwarding them to
the egress interface vr0:
[***@p2:root]# tcpdump -i vr0 -nvv
tcpdump: listening on vr0, link-type EN10MB
18:45:53.449355 2.2.1.2.646 > 224.0.0.2.646: [udp sum ok] udp 26 [tos
0xc0] [ttl 1] (id 64128, len 54)
18:45:53.682729 2.2.1.1.646 > 224.0.0.2.646: [udp sum ok] udp 26 [tos
0xc0] [ttl 1] (id 6099, len 54)
18:45:58.460172 2.2.1.2.646 > 224.0.0.2.646: [udp sum ok] udp 26 [tos
0xc0] [ttl 1] (id 6759, len 54)
^C
4 packets received by filter
0 packets dropped by kernel
Note that IP forwarding is enabled on all P and PE routers, e.g.
sysctl net.inet.ip.forwarding=1 .
Is there an way to disable PHP, e.g. to prevent ldpd on the last P
router from stripping/popping the label before it reaches the PE
router?
In my little test network that runs -current as of 03 June, I observe
from ldpd's lfib on the last P router that it pops the label on the
ingress interface (see output below), but then it never outputs/routes
the stripped packet to the egress interface towards the PE router (the
use counter of the matching prefix on the P router does not increment,
e.g. the P router appears to blackhole the ICMP Echo Request packets).
Currently, I am using a very basic setup with RIP as IGP, LDP, without
any additional route tables, nor VLANs, pf is disabled on all nodes.
I can provide a more detailed description of my lab setup, and output
of the various routing tables, etc. However, if there would be an easy
way to disable PHP, then that would confirm that my setup is indeed OK
(as I have tried to verify manually so far).
Thank you,
Rolf
We ping from another PE router pe11 via two P routers p1 and p2 to
another PE router pe21=3.2.1.1:
[***@pe11:root]# ping 3.2.1.1
The label switched packet makes it via another P router p1 to the
ingress interface of the last P router p2 just fine:
[***@p2:root]# tcpdump -i vr2 -n
tcpdump: listening on vr2, link-type EN10MB
18:34:39.071600 MPLS(label 0x14, exp 0, ttl 254) 2.1.1.2 > 3.2.1.1:
icmp: echo request
18:34:40.091795 MPLS(label 0x14, exp 0, ttl 254) 2.1.1.2 > 3.2.1.1:
icmp: echo request
18:34:41.111994 MPLS(label 0x14, exp 0, ttl 254) 2.1.1.2 > 3.2.1.1:
icmp: echo request
According to the LFIB this P router knows it is the Penultimate Hop
which directly connects to pe21. Therefore (probably), it pops the
label 20:
[***@p2:root]# ldpctl show lfib
flags: * = valid, C = Connected, S = Static
Flags Destination Nexthop Local Label Remote Label
*S 0.0.0.0/0 10.7.0.254 16 -
*C 1.1.2.0/29 link#3 imp-null -
*R 1.1.3.0/29 1.1.2.1 17 Pop
*C 1.2.3.0/29 link#2 imp-null -
*R 2.1.1.0/30 1.1.2.1 18 Pop
*C 2.2.1.0/30 link#1 imp-null -
*R 3.1.1.0/30 1.1.2.1 19 19
*R 3.2.1.0/30 2.2.1.2 20 Pop <==
*R 3.2.1.4/30 2.2.1.2 21 Pop
*R 3.2.1.8/30 2.2.1.2 22 Pop
*R 7.0.0.1/32 1.1.2.1 23 23
* 7.0.0.2/32 7.0.0.2 24 -
*R 7.0.0.3/32 1.2.3.3 25 17
*R 7.0.0.11/32 1.1.2.1 26 26
*R 7.0.0.21/32 2.2.1.2 27 26
*C 10.7.0.0/16 link#6 imp-null -
*C 127.0.0.0/8 link#0 - -
*S 127.0.0.0/8 127.0.0.1 - -
* 127.0.0.1/32 127.0.0.1 - -
*S 224.0.0.0/4 127.0.0.1 - -
* 224.0.0.9/32 127.0.0.1 - -
[***@p2:root]# ripctl show rib
Destination Nexthop Cost
1.1.2.0/29 0.0.0.0 1
1.1.3.0/29 1.1.2.1 2
1.2.3.0/29 0.0.0.0 1
2.1.1.0/30 1.1.2.1 2
2.2.1.0/30 0.0.0.0 1
3.1.1.0/30 1.1.2.1 3
3.2.1.0/30 2.2.1.2 2 <==
3.2.1.4/30 2.2.1.2 2
3.2.1.8/30 2.2.1.2 2
7.0.0.1/32 1.1.2.1 2
7.0.0.2/32 7.0.0.2 1
7.0.0.3/32 1.2.3.3 2
7.0.0.11/32 1.1.2.1 3
7.0.0.21/32 2.2.1.2 2
[***@p2:root]# route -n get 3.2.1.1
route to: 3.2.1.1
destination: 3.2.1.0
mask: 255.255.255.252
gateway: 2.2.1.2
interface: vr0
if address: 2.2.1.1
priority: 40 (rip)
flags: <UP,GATEWAY,DONE>
use mtu expire
49 0 0
But p2 appears to eat up those packets, instead of forwarding them to
the egress interface vr0:
[***@p2:root]# tcpdump -i vr0 -nvv
tcpdump: listening on vr0, link-type EN10MB
18:45:53.449355 2.2.1.2.646 > 224.0.0.2.646: [udp sum ok] udp 26 [tos
0xc0] [ttl 1] (id 64128, len 54)
18:45:53.682729 2.2.1.1.646 > 224.0.0.2.646: [udp sum ok] udp 26 [tos
0xc0] [ttl 1] (id 6099, len 54)
18:45:58.460172 2.2.1.2.646 > 224.0.0.2.646: [udp sum ok] udp 26 [tos
0xc0] [ttl 1] (id 6759, len 54)
^C
4 packets received by filter
0 packets dropped by kernel
Note that IP forwarding is enabled on all P and PE routers, e.g.
sysctl net.inet.ip.forwarding=1 .