Hi there

I have a simple setup with one dp_hash group and some flows to forward packets 
out over two ports depending on the hash:

ovs-ofctl -O OpenFlow15 add-group xipbr "group_id=1, type=select" // from docs 
this should result in symmetric dp_hash

ovs-ofctl -O OpenFlow15 insert-buckets xipbr "group_id=1, 
command_bucket_id=last, 
bucket=bucket_id:1,weight:100,actions=pl1lan,bucket=bucket_id:2,weight:100,actions=pl2lan"

ovs-ofctl add-flow xipbr "table=0, priority=100, in_port=10G-06, action=group:1"
ovs-ofctl add-flow xipbr "table=0, priority=120, in_port=pl1lan, action=10G-06"
ovs-ofctl add-flow xipbr "table=0, priority=120, in_port=pl2lan, action=10G-06"

I'm consistently replaying one TCP SYN and one TCP ACK packet (for the same 
ports and IP's) from the 10G-06 side. On the first iteration both are going out 
on pl2lan but on the second iteration the SYN goes out on pl1lan and the ACK on 
pl2lan. On the third iteration both go out on pl2lan again and so on...

I can see the counters on the buckets reflect this inconsistency.

Note the receiver of the SYN returns a SYN,ACK incoming on the same port that 
the SYN went out on. OVS correctly forwards the SYN,ACK out 10G-06. If, 
however, I prevent this SYN,ACK from entering the switch the hash inconsistency 
goes away.

This is OVS 2.17.3 on Ubuntu 22.04.

I also tried the following variations when adding the group, but with no change:


  *   type=select, selection_method=dp_hash // should be asymmetric
  *   type=select, selection_method=dp_hash,selection_method_param=4294967296 
// 1 in the first 32 bits to explicitly specify symmetric
  *   type=select, selection_method=dp_hash,selection_method_param=1 // just in 
case I'm wrong about the first 32 bits for symmetric

Using the non-dp hash, however, works correctly.

Any help/insights will be much appreciated,
Gerrie
_______________________________________________
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to