Direct Knowledge Extension to Distance Vector Routing
draft-mueller-dkextension-00
This document is an Internet-Draft (I-D).
Anyone may submit an I-D to the IETF.
This I-D is not endorsed by the IETF and has no formal standing in the
IETF standards process.
The information below is for an old version of the document.
| Document | Type |
This is an older version of an Internet-Draft whose latest revision state is "Expired".
|
|
|---|---|---|---|
| Author | Sebastian Müller | ||
| Last updated | 2025-04-15 (Latest revision 2025-03-30) | ||
| RFC stream | Independent Submission | ||
| Formats | |||
| Stream | ISE state | In ISE Review | |
| Consensus boilerplate | Unknown | ||
| Document shepherd | (None) | ||
| IESG | IESG state | I-D Exists::Revised I-D Needed | |
| Telechat date | (None) | ||
| Responsible AD | (None) | ||
| Send notices to | (None) |
draft-mueller-dkextension-00
Network Working Group S. Mueller
Internet-Draft 30 March 2025
Intended status: Experimental
Expires: 1 October 2025
Direct Knowledge Extension to Distance Vector Routing
draft-mueller-dkextension-00
Abstract
Naive Distance Vector-based routing protocols like the Routing
Information Protocol [RFC_1058] suffer from a phenomena called the
"count to infinity problem" in the event of a network topology
change. This Internet Draft extends a naive Distance Vector routing
implementation with a simple flag that allows the network to recover
quickly and reliably, with no chance of routing loops to occur.
Discussion Venues
This note is to be removed before publishing as an RFC.
Source for this draft and an issue tracker can be found at
https://github.com/Sebastianmueller22/network-protocol.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on 1 October 2025.
Copyright Notice
Copyright (c) 2025 IETF Trust and the persons identified as the
document authors. All rights reserved.
Mueller Expires 1 October 2025 [Page 1]
Internet-Draft Direct Knowledge Extension to Distance V March 2025
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Distance Vector Routing . . . . . . . . . . . . . . . . . . . 3
3. Count to infinity . . . . . . . . . . . . . . . . . . . . . . 4
4. The extension . . . . . . . . . . . . . . . . . . . . . . . . 5
5. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6. Security Considerations . . . . . . . . . . . . . . . . . . . 7
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
8. Normative References . . . . . . . . . . . . . . . . . . . . 8
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 8
1. Introduction
The count to infinity problem arises in distance vector routing
protocols when a routing loop forms after a network topology change.
In such scenarios, nodes within the loop continue to advertise routes
to a failed node through each other. Misled by these advertisements,
the nodes fail to recognize the network failure and continue routing
traffic within the loop, incrementing the routing metrics until they
reach an "infinity" value. At this point, the nodes assume a failure
and cease routing traffic to the failed node. The infinity value
imposes a limitation on the maximum network size, as the actual
routing costs between distant nodes must remain below this threshold.
This document introduces a simple flag to distance vector routing
protocols, addressing the count to infinity problem and eliminating
the need for strict network size limits imposed by, for example, the
Routing Information Protocol [RFC_1058]. Consequently, mechanisms
such as split horizon with poisoned reverse and feasibility
conditions become redundant. The proposed extension is designed to
be compatible with "naive" Bellman-Ford based routing protocols like
RIP2 [RFC_2453] rather than more sophisticated protocols like Babel
[RFC_6126] , which were developed to tackle the count to infinity
problem. Due to its simplicity, this extension should still be
compatible with various distance vector-based routing protocols. #
Conventions and Definitions
Mueller Expires 1 October 2025 [Page 2]
Internet-Draft Direct Knowledge Extension to Distance V March 2025
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
Count to infinity problem - CTIP
Distance Vector Routing - DVR
Routing Information Protocol - RIP
Direct Knowledge Bit - DKB
2. Distance Vector Routing
The basic principle of Distance Vector based routing is that nodes
only exchange routing information with their direct neighbors. The
local link costs are added to the advertised routing cost of a given,
more distant node and the path with the lowest cost is chosen. Only
the next hop to any given node or network needs to be saved by
network participants.
Take this network as an example:
A
/ \
/ \
B-----C
\ /
\ /
D
/ \
/ \
E F
\ /
\ /
G
How do the network participants decide on the best path to G?
If the link cost between E and G is 10, while all other link costs
are 1, E advertises a cost of 10 to D, while F advertises a cost of
1. D calculates the total cost to reach G via E as 11 by adding 1 to
E's advertised cost. However, since the path to G via F has a lower
total cost of 2, D selects F as the next hop to G and updates its
routing table accordingly. In the next update cycle, D advertises
its path to G through itself, with a total cost of 2. B and C add
Mueller Expires 1 October 2025 [Page 3]
Internet-Draft Direct Knowledge Extension to Distance V March 2025
their local link cost of 1 and update their total cost to reach G to
3. In the next update cycle A selects either B or C as its next hop
with a cost of 4.
We only considered the cost to reach G in this example (and will
continue to do so for the remainder of this draft). This is
simultaneously done for all other network participants though.
Hopefully this quick example is enough to understand the principle of
the routing algorithm. For interested readers, the according
sections in the RFCs [RFC_6126] and [RFC_2453] are reccommended.
3. Count to infinity
Counting to an arbitrary infinity value is an attempt of naive DVR
algorithms such as RIP to resolve routing loops after a network
topology change.
A
/ \
/ \
B-----C
\ /
\ /
D
/ \
/ \
E F
\ /
\ /
G
The link costs are the same as in the previous example. We assume
one basic protection against routing loops, namely split horizon with
poisoned reverse. This means that, for example, when node A has node
C as next hop to G in its routing table, it will not advertise this
route to C (because the route goes via C, C knows about it). Routing
loops can still emerge though, as we will see in this example.
When the link between F and G fails, a naive implementation of DVR
sets the cost between F and G to an "infinity value" — a positive
integer larger than the highest legal routing cost. According to the
original RIP [RFC_1058], this value is set to 16. Consequently, F
advertises the value of 16 to D. Due to the implementation of split
horizon, D does not advertise the cost of 2 back to F. Instead, D
selects E as the next best hop to G, updating its cost to reach G to
11.
Mueller Expires 1 October 2025 [Page 4]
Internet-Draft Direct Knowledge Extension to Distance V March 2025
B and C do not advertise their cost of 3 to D because of split
horizon. In the following update cycle, B and C receive D's updated
cost of 11. In the same update cycle, they each advertise their
previous cost of 3 to each other and to A, because those are not
their next hop, which is still D. This causes B and C to believe
they can route traffic to G via one another, without realizing their
paths go through D. As a result, both add the local link cost of 1
to the routing cost of 3 and propagate this "new" route to A and D in
the next cycle.
In subsequent update cycles, the cost of 1 is repeatedly added to the
cost in the routing loop. It takes a significant number of cycles
for this cumulative cost to eventually exceed 12 — the only remaining
connection to G, at which point the loop resolves and the network
converges to this path.
This takes a long time and in the case of a node failure, there is no
way out of it other than to count up to an arbitrary infinity value
(16 in this example). This value serves as an arbitrary threshold to
terminate the process once it becomes excessively large. While
effective in halting the loop, reaching this limit is time-consuming
and restricts the range of permissible routing costs and thereby the
possible size of the network.
4. The extension
This draft proposes the convention that if a node doesn't receive an
update message from one of its immediate neighbors for a certain
amount of time, it tries to contact it with several messages which
need to be acknowledged. If these remain unanswered, the node
assumes the neighbor to be down. It then sends a triggered update to
all other neighbors with the route to the down neighbor being set to
-1 or another similarly impossible value. This can also be
implemented as a separate flag in the routing information datagram.
Although this is an adapted version of the "infinity value" of the
RIP, it cannot be a positive number since we make no limitation on
the network size. This infinity value signals the failure event to
the rest of the network. All receiving nodes that aren't direct
neighbors to the failed node MUST perform the following steps:
* They write the infinity value into their routing table
* They stop routing traffic with the failed node as a target and
report it to the sender as unreachable
* They ignore any regular updates that advertise a live route to the
failed node
Mueller Expires 1 October 2025 [Page 5]
Internet-Draft Direct Knowledge Extension to Distance V March 2025
* They likewise send a triggered update with this infinity value to
all their neighbors
This "bad news" travels with the full speed of triggered updates
through the network since all regular advertisements reporting it to
be up are ignored.
This goes on, until a node is reached that has the node in question
as part of its direct neighbors. The receiving node then tries to
reach the failed node. If it answers, the failure was actually a
link failure, not a node failure, or the node recovered in the
meantime. The node that receives a reply from its neighbor then
immedately sends a triggered update with a "direct-knowledge-bit"
(DKB) set. This is best implemented as a bit in the update datagram.
Receiving nodes of such an update message MUST:
* Write this message into their routing table if they have an
infinity value in there or an update message with higher cost and
DKB set, or a regular routing cost (they didn't know about the
failure yet)
* Trigger an update message advertising this new route with the DKB
set to all their neighbors
* Start a timeout and retain the DKB until the timeout expires. Any
received infinity values within this time and for this node will
be ignored
* Route traffic via the new path
So the "good news" travels with the full speed of triggered updates
as well.
Since in the case of a failure no node will believe an update without
direct knowledge of the nodes' continuing or regained liveness, count
to infinity cannot occur. All old routing information that
potentially is no longer feasible is then discarded. The best path
to the node is discovered as soon as the remaining neighbors hear
about the failure through the triggered updates and the best
remaining path is propagated with the speed of triggered updates as
well.
5. Example
We again take as an example the following network topology:
Mueller Expires 1 October 2025 [Page 6]
Internet-Draft Direct Knowledge Extension to Distance V March 2025
A
/ \
/ \
B-----C
\ /
\ /
D
/ \
/ \
E F
\ /
\ /
G
In this example, contrary to before, we assume no other protection
against routing loops than the proposed extension. So split horizon
is not implemented, just to show that the extension is sufficient to
avoid routing loops.
When the link between F and G fails, F sends an infinity value to D.
D ignores updates reporting G as up from C,B and E and propagates the
infinity value to B,C and E. E knows that G is its direct neighbor
and upon receiving the infinity value, it checks if G is reachable.
Since it is, it advertises a route to G via itself with the DKB set.
Meanwhile B and C have sent the infinity value to A. D receives the
advertisement with the DKB set, ignores the infinity values from F, B
and C, and advertises this new route to them. B and C ignore the
infinity value from A and advertise the new routing information with
the DKB to A.
Now the network has converged to the remaining path to G.
6. Security Considerations
This document only tries to solve the count to infinity problem.
The inherent security risks of DVR, such as rogue nodes advertising
routes that don't exist, or routes for other nodes to themselves
etc., apply here as well.
The additions proposed in this draft pose additional security risks.
A rogue node could advertise all other nodes as being down whether
they are its neighbor or not. This would effectively halt
communication in the network for a short time and put significant
strain on the network while all nodes report their neighbors to still
be reachable.
Mueller Expires 1 October 2025 [Page 7]
Internet-Draft Direct Knowledge Extension to Distance V March 2025
This is not easily preventable, but can be mitigated with another
convention where updates originating from a node need to
cryptographically signed before sending. The public key
infrastructure necessary for that would need to be implemented on a
higher network level.
That way, repeated infinity values from the same node can be ignored
for a certain time (which might be advisable anyway, in the context
of frequently failing links).
7. IANA Considerations
This document has no IANA actions.
8. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/rfc/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.
[RFC_1058] C., H., "Routing Information Protocol", DOI 10.17487/
RFC1058 , June 1988,
<https://www.rfc-editor.org/info/rfc1058>.
[RFC_2453] Malkin, G. S., "RIP Version 2", DOI 10.17487/RFC2453 ,
November 1998,
<https://datatracker.ietf.org/doc/rfc2453/>.
[RFC_6126] Chroboczek, J., "The Babel Routing Protocol", DOI
10.17487/RFC6126 , April 2011,
<https://www.rfc-editor.org/info/rfc6126>.
Author's Address
Sebastian Mueller
Email: directknowledgeextension@gmx.de
Mueller Expires 1 October 2025 [Page 8]