Note: This is supposed to be a comment. Unfortunately I don't have enough reputation.
As a complement to Zhong's answer, I want to point out that this might not be as much a problem.
We assume every edge has a latency of 1ms.
Now, a: 2ms, b: 2ms, c: 1ms
. If c--d
is broken, then:
a: 2, b: 2, c: 1
(change c)
a: 2, b: 2, c: 3
(change a, b)
a: 4, b: 4, c: 3
(change c)
a: 4, b: 4, c: 7
(change a, b; now the next hop of a, b is c, because of poison reverse)
a: 11, b: 11, c: 7
... ...
You can see how rapidly the latencies increase. In fact, the latencies grow exponentially with time. In less than 30 rounds, the latencies will become so big (see the calculation below), that in all practical means, A
is considered unreachable.
>>> l
array([1, 2])
>>> m
array([[1, 3],
[1, 5]])
>>> np.linalg.matrix_power(m, 1) @ l
array([ 7, 11])
>>> np.linalg.matrix_power(m, 1 + 30 // 4) @ l
array([1296400, 2007584])