]> git.puffer.fish Git - mirror/frr.git/commit
ldpd: don't drop packets coming through a broken LSP 6148/head
authorRenato Westphal <renato@opensourcerouting.org>
Fri, 3 Apr 2020 17:42:25 +0000 (14:42 -0300)
committerRenato Westphal <renato@opensourcerouting.org>
Wed, 8 Apr 2020 02:38:07 +0000 (23:38 -0300)
commitf74dd865222febed5028d94eee173c341ed1879c
treea2fc95bf8e35b61189265c3b54a386f15d5cc797
parentab5ad3fdfe279845fbb87888b5bc558d49d6d466
ldpd: don't drop packets coming through a broken LSP

When the Independent Control mode is in use (the default one),
each LDP speaker allocates labels independently, which can lead to
broken LSPs when the LDP and IGP domains are not congruent.

What we were doing in this case was to drop all packets coming
through a broken LSP, which causes drastic side effects in the
network like loss of IP connectivity between routers.

We can however do a best-effort attempt to avoid packet loss by
popping the top-level label of the incoming packets and forwarding
them normally to their nexthops. This will be enough to guarantee
that labeled IP packets will reach their final destination. The
broken LSPs will still be unsuitable to tunnel labeled traffic, like
VPN packets, but in this case there's nothing we can do about it.

Cisco's IOS does something similar, called the "Untagged/No Label"
operation, which removes the entire label stack and forward the
packet unlabeled. We don't have such functionality available in the
Linux kernel, but this shouldn't make any difference for practical
purposes.

Fixes #6127.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
ldpd/ldp_zebra.c