From: "grimlock.lw" <[email protected]>

When Recving tcp stream form LOCAL port, and flows have a dp_hash group, linux 
call skb_set_hash_from_sk to set skb->hash and skb->l4_hash, ovs use skb->hash 
to select group bucket.
When tcp retransmission occurs,linux call sk_rethink_txhash to rehash skb->hash 
of retransmission packet, so the retransmission packet will select a different 
bucket than the original package.
ovs should ignore l4_hash,and call __skb_get_hash to get hash

Signed-off-by: grimlock.lw <[email protected]>
---
 datapath/actions.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/datapath/actions.c b/datapath/actions.c
index fbf445703..381037c05 100644
--- a/datapath/actions.c
+++ b/datapath/actions.c
@@ -1100,6 +1100,7 @@ static void execute_hash(struct sk_buff *skb, struct 
sw_flow_key *key,
        u32 hash = 0;
 
        /* OVS_HASH_ALG_L4 is the only possible hash algorithm.  */
+       skb->l4_hash = 0;
        hash = skb_get_hash(skb);
        hash = jhash_1word(hash, hash_act->hash_basis);
        if (!hash)
-- 
2.32.0 (Apple Git-132)

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to