Summary: | ECMP is broken since tryforward() | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Base System | Reporter: | Olivier Cochard <olivier> | ||||||
Component: | kern | Assignee: | freebsd-net (Nobody) <net> | ||||||
Status: | Closed Overcome By Events | ||||||||
Severity: | Affects Some People | CC: | ae, crest, dch, emaste, koobs, melifaro, moremore2, seb+freebsd | ||||||
Priority: | --- | Keywords: | regression | ||||||
Version: | 11.0-STABLE | Flags: | koobs:
mfc-stable12-
koobs: mfc-stable11- |
||||||
Hardware: | Any | ||||||||
OS: | Any | ||||||||
Attachments: |
|
Description
Olivier Cochard
![]() ![]() 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
Add ae@ to CC as they mentioned some code would need to be written (which was), in case they can assist with review (In reply to Kubilay Kocak from comment #1) Yes this is still in issue on stable/11/12/current. 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.
Multipath routing support has been rewritten in FreeBSD 13. It's dubbed ROUTE_MPATH and it is included in the GENERIC kernel. In the new implementation, ECMP works for both IPv4/IPv6 fast/slow path. (In reply to Alexander V. Chernikov from comment #5) Is that to say we can/want to resolve this OBE? One question is what this means for stable/12 users (supported version) (In reply to Kubilay Kocak from comment #6) Currently, I don't have plans for merging route stack changes to 12. Someone can try to merge/test the changes in the diff to check if they fix the situation in 12. ^Triage: Resolved (partial OBE) via new ROUTE_MPATH (13), without merge to stable 12/11, so it doesn't resolve the issue as reported (for 11.x). If this is inaccurate, please re-open the issue with additional details. |