Recheck-request: github-robot

On 11/11/24 11:43 AM, Dumitru Ceara wrote:
> The actions that retrieve the original tuple destination IPs and ports
> were used in the following way in ovn-northd:
> 
>   REG_ORIG_DIP_IPV4 " = ct_nw_dst()
>   REG_ORIG_DIP_IPV6 " = ct_ip6_dst()
>   REG_ORIG_TP_DPORT " = ct_tp_dst()
> 
> Where:
>   REG_ORIG_DIP_IPV4 is reg1
>   REG_ORIG_DIP_IPV6 is xxreg1
>   REG_ORIG_TP_DPORT is reg2[0..15]
> 
> While the actions use a different intermediate register:
>   ct_nw_dst()  was reg4<-0; reg4<-ct_nw_dst
>   ct_ip6_dst() was xxreg0<-0; xxreg0<-ct_ip6_dst
>   ct_tp_dst()  was reg8[0..15]<-0; reg8[0..15]<-ct_tp_dst
> 
> We can reduce the set of registers we use in the OVN pipeline by
> changing the action definition to use the same registers ovn-northd uses
> as final destination for the ct_*_dst() values.  This will generate the
> following openflow rules:
> 
>   REG_ORIG_DIP_IPV4 " = ct_nw_dst()
>     reg1<-0; reg1<-ct_nw_dst; reg1<-reg1
>   REG_ORIG_DIP_IPV6 " = ct_ip6_dst()
>     xxreg1<-0; xxreg1<-ct_ip6_dst; xxreg1<-xxreg1
>   REG_ORIG_TP_DPORT " = ct_tp_dst()
>     reg2[0..15]<-0; reg2[0..15]<-ct_tp_dst; reg2[0..15]<-reg2[0..15]
> 
> As Ilya Maximets points out, overlapping source and destination are
> well defined for move actions:
> https://opennetworking.org/wp-content/uploads/2014/10/openflow-switch-v1.5.0.noipr.pdf
> 
>   This action must behaves properly when src_oxm_id overlaps with
>   dst_oxm_id, that is, it behaves as if src_oxm_id were copied out
>   to a temporary buffer, then the temporary buffer copied to
>   dst_oxm_id, if this is not possible the switch must reject the
>   Copy Field action with a Bad Set Type error message.
> 
> OpenvSwitch doesn't reject such actions.
> 
> Fixes: 0f806cf08c36 ("Fix load balanced hairpin traffic for fragmented 
> packets.")
> Signed-off-by: Dumitru Ceara <[email protected]>
> ---

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

Reply via email to