NOTE: this diff requires D26449 as a pre-requisiteImplement flowid calculation for outbound connections to enable splitting connections over multiple paths.
Current codeMultipath routing relies on mbuf flowid data for both transit and outbound traffic.
By default, flowid is filled in withCurrent code fills mbuf flowid from `inp_flowid` for pcb-based outgoing connectionsconnection-oriented sockets.
However, `inp_flowid` is not currently not calculatedd for outbound connections.
This calculation is necessary to enable load balancing.diff creates simple hashing functions and starts calculating hashes for TCP,UDP/UDP-Lite and raw IP if multipath routes are present in the system.
### RSS and ROUTE_MPATH
As this may introduce performance penalcMultipath routing currently does not require any special properties from the hashing function, except good flow distribution.
RSS for outbound connections (which is actually [XPS](https://lwn.net/Articles/412062/)) require hashing function to be compatible with card hashing to achieve optimal TX ring assignment.
RSS requires PCBGROUP, which makes coupling RSS and ROUTE_MPATH by requiring RSS inconvenient.
With that in mind,
* use RSS-derived hashing functions for outbound connections when RSS in enabled and
* use light-weight ROUTE_MPATH hashing functions otherwise
* implement a simple wrapper layer (see `net/route.h`) to switch between the implementation without touching callers.
NOTE: I indent to commit this change on Sunday, start calculating these hashes after inserting first multipath route in vnet (V_hash_outbound).October 16