Next-hop objects and scalable multipath routing project status update [May 8]

From: Alexander V. Chernikov <melifaro_at_ipfw.ru>
Date: Fri, 08 May 2020 22:31:41 +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 .

All changes[*] from the stage1 (nexthop objects introduction) has landed.
Currently the focus is on upgrading various route change notification mechanisms to allow transparent multipath introduction.
After that the focus will switch on landing the actual multipath implementation.

[*] D24776 is pending commit tomorrow.

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 [DONE]
1.2.1 Conversion of route caching to nexthop caching [DONE: r360292]
1.3 Conversion of struct `rtentry` field access to nhop field access [DONE]
1.4 Eliminating old lookup KPI and hiding struct rtentry. [95% complete, rtentry: rS360824, kpi: D24776 (pending), ]

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 Fri May 08 2020 - 19:31:47 UTC

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