On 05/01/2018 02:09, Eugene Grosbein wrote:
05.01.2018 6:37, Steven Hartland wrote:

Our TCP stack seems fragile during setup to out of order packets
which this multipath behavior causes, we've seen this on our loadbalancers
which is what triggered the investigation. The concrete result is many aborted 
TCP connections,
over 300k ~2% on the machine I'm looking at.
This is another problem that needs to be fixed in general and not hidden under 
the carpet.
Meantime, practical problems you see can be solved locally with any settings 
you like.
While it may seem like it, there's not denying that the problem is caused by fact that the packets for a single flow arrive on two different interfaces in normal (none failure) workflow, which contravenes 802.3ad which states:

43.2.4 Frame Distributor
…
This standard does not mandate any particular distribution algorithm(s); however, any distribution algorithm shall ensure that, when frames are received by a Frame Collector as specified in 43.2.3, the algorithm shall not cause
a) Mis-ordering of frames that are part of any given conversation, or
b) Duplication of frames.
The above requirement to maintain frame ordering is met by *ensuring that all frames that compose a given conversation are transmitted on a single link in the order* that they are generated by the MAC Client; hence, this requirement does not involve the addition (or modification) of any information to the MAC frame, nor any buffering or processing on the part of the corresponding Frame Collector in order to re-order frames.


I hope there's some improvements that can be made, for example if we can 
determine
the stream was instigated remotely then flowid would always be valid hence we 
can use it assuming it
matches the requested spec or if we can make it clear to the user that 
laggproto is not the one they requested, I'm open to ideas?
We just need to clear flow id from incoming TCP segments and always generate 
new flow id for responses
keeping old flow id for IP forwarding case. Please back out your change to not 
degrade IP forwarding performance.
Sorry I don't follow you. You seem to be inferring that we can easily generate a flowid without involving the sending hardware; I can't see how that is possible as that's chicken and egg i.e. you can't get the HW interface to generate the flowid without sending a packet and you can't send a packet until you have a the flowid to decide which interface to send it from.

    Regards
    Steve
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to