[High] Race Condition in Route Update Propagation #22
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Issue
Concurrent updates to the routing table during peer synchronization can cause stale metric caching in the Babel protocol implementation.
Location
mycelium/src/babel/route_request.rsProblem Description
When multiple peers send route updates simultaneously, the route_request handler does not use atomic operations or sufficient locking to ensure all metric updates are consistently applied. This can lead to:
Impact
Remediation
Testing
Route requests are handled by reads from the routing table (#17 (comment)) which at that point have the most up to date calculated metrics. While there could be updates which are queued for processing, this is always the case since said update could also just still be in flight meaning the receiver node does not know about it yet. Note that the the babel spec accounts for this by preventing routing loops