From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1921) id 7C494385415A; Mon, 11 Jul 2022 11:52:49 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7C494385415A Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Sebastian Huber To: newlib-cvs@sourceware.org Subject: [newlib-cygwin] Introduce scalable route multipath. X-Act-Checkin: newlib-cygwin X-Git-Author: Alexander V. Chernikov X-Git-Refname: refs/heads/master X-Git-Oldrev: 9dd91a8330a968aaf970d32dd3a72f1e5dd72b43 X-Git-Newrev: 48ba673ce9180335ff324d94e41221a3a61dc959 Message-Id: <20220711115249.7C494385415A@sourceware.org> Date: Mon, 11 Jul 2022 11:52:49 +0000 (GMT) X-BeenThere: newlib-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Newlib GIT logs List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jul 2022 11:52:49 -0000 https://sourceware.org/git/gitweb.cgi?p=3Dnewlib-cygwin.git;h=3D48ba673ce91= 80335ff324d94e41221a3a61dc959 commit 48ba673ce9180335ff324d94e41221a3a61dc959 Author: Alexander V. Chernikov Date: Sat Oct 3 10:47:17 2020 +0000 Introduce scalable route multipath. =20 This change is based on the nexthop objects landed in D24232. =20 The change introduces the concept of nexthop groups. Each group contains the collection of nexthops with their relative weights and a dataplane-optimized structure to enable efficient nexthop selection. =20 Simular to the nexthops, nexthop groups are immutable. Dataplane part gets compiled during group creation and is basically an array of nexthop pointers, compiled w.r.t their weights. =20 With this change, `rt_nhop` field of `struct rtentry` contains either nexthop or nexthop group. They are distinguished by the presense of NHF_MULTIPATH flag. All dataplane lookup functions returns pointer to the nexthop object, leaving nexhop groups details inside routing subsystem. =20 User-visible changes: =20 The change is intended to be backward-compatible: all non-mpath operati= ons should work as before with ROUTE_MPATH and net.route.multipath=3D1. =20 All routes now comes with weight, default weight is 1, maximum is 2^24-= 1. =20 Current maximum multipath group width is statically set to 64. This will become sysctl-tunable in the followup changes. =20 Using functionality: * Recompile kernel with ROUTE_MPATH * set net.route.multipath to 1 =20 route add -6 2001:db8::/32 2001:db8::2 -weight 10 route add -6 2001:db8::/32 2001:db8::3 -weight 20 =20 netstat -6On =20 Nexthop groups data =20 Internet6: GrpIdx NhIdx Weight Slots Gatewa= y Netif Refcnt 1 ------- ------- ------- -------------------------------------= -- --------- 1 13 10 1 2001:db8::= 2 vlan2 14 20 2 2001:db8::= 3 vlan2 =20 Next steps: * Land outbound hashing for locally-originated routes ( D26523 ). * Fix net/bird multipath (net/frr seems to work fine) * Add ROUTE_MPATH to GENERIC * Set net.route.multipath=3D1 by default =20 Tested by: olivier Reviewed by: glebius Relnotes: yes Differential Revision: https://reviews.freebsd.org/D26449 Diff: --- newlib/libc/sys/rtems/include/sys/socket.h | 1 + 1 file changed, 1 insertion(+) diff --git a/newlib/libc/sys/rtems/include/sys/socket.h b/newlib/libc/sys/r= tems/include/sys/socket.h index 78831a54f..0be6879de 100644 --- a/newlib/libc/sys/rtems/include/sys/socket.h +++ b/newlib/libc/sys/rtems/include/sys/socket.h @@ -409,6 +409,7 @@ struct sockproto { #define NET_RT_IFLISTL 5 /* Survey interface list, using 'l'en * versions of msghdr structs. */ #define NET_RT_NHOP 6 /* dump routing nexthops */ +#define NET_RT_NHGRP 7 /* dump routing nexthop groups */ #endif /* __BSD_VISIBLE */ =20 /*