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
