|Summary:||ECMP is broken since tryforward()|
|Product:||Base System||Reporter:||Olivier Cochard <olivier>|
|Component:||kern||Assignee:||Alexander V. Chernikov <melifaro>|
|Severity:||Affects Some People||CC:||ae, crest, dch, emaste, koobs, melifaro, moremore2, seb+freebsd|
Description Olivier Cochard 2018-02-09 16:25:42 UTC
For the record: As mentioned into the mailing-list , adding "options RADIX_MPATH" doesn't allow any more to use ECMP. The new ip_tryforward (like the previous fastforward) didn't support ECMP: a FreeBSD router sticks to its first route entry and never try the second entry.  https://lists.freebsd.org/pipermail/freebsd-net/2017-February/047203.html
Comment 1 Kubilay Kocak 2019-08-23 03:51:40 UTC
Created attachment 206809 [details] ip_tryforward_rout_mpath @Olivier I assume this is still an issue in stable/11,12 and CURRENT, can you confirm? ^Triage: Attach patch from Ermal (eri@) on the mailing list thread, which may (likely?) need a re-base against latest CURRENT
Comment 2 Kubilay Kocak 2019-08-23 03:52:59 UTC
Add ae@ to CC as they mentioned some code would need to be written (which was), in case they can assist with review
Comment 3 Olivier Cochard 2019-08-23 07:07:28 UTC
(In reply to Kubilay Kocak from comment #1) Yes this is still in issue on stable/11/12/current.
Comment 4 Simon K. 2019-11-01 01:39:49 UTC
Created attachment 208751 [details] add radix_mpath.h back IPSEC policy or set sendredirect to "1" would disable tryforward(). Then the packet will fall into the slowpath. AKA. normal ip_input process. But ip_input.c missed some .h files, eg. radix_mpath.h, then ECMP is broken. Set sendredirect to "1" is not a good idea for a router, so I add "fastforwarding" back. Now you can set it to "0" to disable fastpath. The attached patch I've tested on FB12-stable r354079 is passed.