On Mon, May 25, 2020 at 8:40 AM Ilya Maximets <[email protected]> wrote:
>
> On 5/24/20 8:41 PM, Han Zhou wrote:
> >
> >
> > On Thu, May 7, 2020 at 11:21 PM Tonghao Zhang <[email protected]
<mailto:[email protected]>> wrote:
> >>
> >> On Mon, May 4, 2020 at 9:02 AM Han Zhou <[email protected] <mailto:
[email protected]>> wrote:
> >> >
> >> > This patch backports below upstream patches, and add __skb_set_hash
> >> > to compat for older kernels.
> >> >
> >> > commit b5ab1f1be6180a2e975eede18731804b5164a05d
> >> > Author: Jakub Kicinski <[email protected] <mailto:[email protected]>>
> >> > Date:   Mon Mar 2 21:05:18 2020 -0800
> >> >
> >> >     openvswitch: add missing attribute validation for hash
> >> >
> >> >     Add missing attribute validation for OVS_PACKET_ATTR_HASH
> >> >     to the netlink policy.
> >> >
> >> >     Fixes: bd1903b7c459 ("net: openvswitch: add hash info to upcall")
> >> >     Signed-off-by: Jakub Kicinski <[email protected] <mailto:
[email protected]>>
> >> >     Reviewed-by: Greg Rose <[email protected] <mailto:
[email protected]>>
> >> >     Signed-off-by: David S. Miller <[email protected] <mailto:
[email protected]>>
> >> >
> >> > commit bd1903b7c4596ba6f7677d0dfefd05ba5876707d
> >> > Author: Tonghao Zhang <[email protected] <mailto:
[email protected]>>
> >> > Date:   Wed Nov 13 23:04:49 2019 +0800
> >> >
> >> >     net: openvswitch: add hash info to upcall
> >> >
> >> >     When using the kernel datapath, the upcall don't
> >> >     include skb hash info relatived. That will introduce
> >> >     some problem, because the hash of skb is important
> >> >     in kernel stack. For example, VXLAN module uses
> >> >     it to select UDP src port. The tx queue selection
> >> >     may also use the hash in stack.
> >> >
> >> >     Hash is computed in different ways. Hash is random
> >> >     for a TCP socket, and hash may be computed in hardware,
> >> >     or software stack. Recalculation hash is not easy.
> >> >
> >> >     Hash of TCP socket is computed:
> >> >     tcp_v4_connect
> >> >         -> sk_set_txhash (is random)
> >> >
> >> >     __tcp_transmit_skb
> >> >         -> skb_set_hash_from_sk
> >> >
> >> >     There will be one upcall, without information of skb
> >> >     hash, to ovs-vswitchd, for the first packet of a TCP
> >> >     session. The rest packets will be processed in Open vSwitch
> >> >     modules, hash kept. If this tcp session is forward to
> >> >     VXLAN module, then the UDP src port of first tcp packet
> >> >     is different from rest packets.
> >> >
> >> >     TCP packets may come from the host or dockers, to Open vSwitch.
> >> >     To fix it, we store the hash info to upcall, and restore hash
> >> >     when packets sent back.
> >> >
> >> >     +---------------+          +-------------------------+
> >> >     |   Docker/VMs  |          |     ovs-vswitchd        |
> >> >     +----+----------+          +-+--------------------+--+
> >> >          |                       ^                    |
> >> >          |                       |                    |
> >> >          |                       |  upcall            v restore
packet hash
> >> > (not recalculate)
> >> >          |                     +-+--------------------+--+
> >> >          |  tap netdev         |                         |   vxlan
module
> >> >          +--------------->     +-->  Open vSwitch ko     +-->
> >> >            or internal type    |                         |
> >> >                                +-------------------------+
> >> >
> >> >     Reported-at:
https://mail.openvswitch.org/pipermail/ovs-dev/2019-October/364062.html
> >> >     Signed-off-by: Tonghao Zhang <[email protected] <mailto:
[email protected]>>
> >> >     Acked-by: Pravin B Shelar <[email protected] <mailto:
[email protected]>>
> >> >     Signed-off-by: David S. Miller <[email protected] <mailto:
[email protected]>>
> >> >
> >> > Cc: Tonghao Zhang <[email protected] <mailto:
[email protected]>>
> >> > Signed-off-by: Han Zhou <[email protected] <mailto:[email protected]>>
> >> Reviewed-by: Tonghao Zhang <[email protected] <mailto:
[email protected]>>
> >
> > Thanks review from Tonghao and Greg.
> > It has been 3 weeks, so cc some maintainers and pop it up.
>
>
> Hi.  Thanks for working on this!
> There is an issue while building with 3.16 kernel:
>
> ovs/datapath/linux/compat/include/linux/skbuff.h: In function
‘__skb_set_hash’:
> ovs/datapath/linux/compat/include/linux/skbuff.h:464:5: error: ‘struct
sk_buff’ has no member named ‘sw_hash’
>   skb->sw_hash = is_sw;
>      ^
>
> https://travis-ci.org/github/igsilya/ovs/jobs/690987401
>
> Best regards, Ilya Maximets.

Thanks Ilya, I just sent v2. Please take a look:
https://patchwork.ozlabs.org/project/openvswitch/patch/[email protected]/
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to