Next-hop objects and scalable multipath routing project status update

From: Alexander V. Chernikov <melifaro_at_ipfw.ru>
Date: Wed, 29 Apr 2020 23:32:49 +0100
Hi,

I would like to share the current state and the next steps for the nhops/multipath project.

To recap: project is about modernising the current routing stack and implementing scalable multipath routing. 

Most changes are based on introduction of the concept of nexthops. Nexthops, which are separate datastructures, containing all necessary information to perform packet forwarding such as gateway, interface and mtu. They are shared among the routes, providing more pre-computed cache-efficient data while requiring less memory.
Interested reader can find more detailed description in https://reviews.freebsd.org/D24141 .


Notable progress has been done since the initial announce.

Most of the changes required to fully switch to use nexthop objects instead of routing entries has been landed.
If everything goes as expected, conversion will be completed in a couple of weeks.
After that the focus will switch on the actual multipath implementation.

More detailed plan:

1 Nexthop objects [In progress]
1.1 Introduction of nexthop objects [DONE: r359823]
1.2 Conversion of old KPI users to the new one [95% complete]
1.2.1 Conversion of route caching to nexthop caching [DONE: r360292]
1.3 Conversion of struct `rtentry` field access to nhop field access [90% complete]
1.4 Eliminating old lookup KPI and hiding struct rtentry. [50% complete]

2 Multipath [In progress]
2.1 Switch control plane customers to use (rtentry, nhop) pair instead of rtentry to allow multipath changes happen transparently. [10% complete]
2.2 Introduce nexthop group objects
2.3 Add mutipath support for the rib manipulation functions
2.4 Add flowid generation for outbound traffic to enable load balancing

--
[No timeline]

3 Rtsock/netlink nhops support
3.1 Implement index lookup for nhops/nhop groups
3.2 Design rtsock messages for nhop/nhgrp operations& prefix binding
3.3 Implement kernel part
3.4 Implement frr or bird support

4 Modular longest-prefix-match lookup algorithm
4.1 Design control plane framework for attaching algos.
4.2 Implement one (IPv6?) lookup algorithm



/Alexander
Received on Wed Apr 29 2020 - 20:32:56 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:23 UTC