On 6/27/22 11:56, Ales Musil wrote:
> The ip6.src or nd.sll does not have to be always set.
> According to rfc4861:
> 
> Source Address
>                      Either an address assigned to the interface from
>                      which this message is sent or (if Duplicate Address
>                      Detection is in progress [ADDRCONF]) the
>                      unspecified address.
> 
> Source link-layer address
>                      The link-layer address for the sender.  MUST NOT be
>                      included when the source IP address is the
>                      unspecified address.  Otherwise, on link layers
>                      that have addresses this option MUST be included in
>                      multicast solicitations and SHOULD be included in
>                      unicast solicitations.
> 
> Add rule that avoids adding MAC binding is either of those
> is 0. This is continuation after discussion during review on
> 80187a803 (ovn-northd: Add flow to use eth.src if nd.tll is 0
> in put_nd() action.)
> 
> Signed-off-by: Ales Musil <[email protected]>
> ---

Hi Ales,

Thanks for the follow up!

>  northd/northd.c         | 3 +++
>  northd/ovn-northd.8.xml | 6 ++++++
>  tests/ovn-northd.at     | 3 +++
>  3 files changed, 12 insertions(+)
> 
> diff --git a/northd/northd.c b/northd/northd.c
> index 6997c280c..6634edb0f 100644
> --- a/northd/northd.c
> +++ b/northd/northd.c
> @@ -11022,6 +11022,9 @@ build_neigh_learning_flows_for_lrouter(
>          ovn_lflow_add(lflows, od, S_ROUTER_IN_LEARN_NEIGHBOR, 100,
>                        ds_cstr(match), "next;");
>  
> +        ovn_lflow_add(lflows, od, S_ROUTER_IN_LEARN_NEIGHBOR, 95,
> +                      "nd_ns && (ip6.src == 0 || nd.sll == 0)", "next;");
> +

Nit: I'd move this lower, I think the flows are grouped per IP family
right now.

>          ovn_lflow_metered(lflows, od, S_ROUTER_IN_LEARN_NEIGHBOR, 90,
>                            "arp", "put_arp(inport, arp.spa, arp.sha); next;",
>                            copp_meter_get(COPP_ARP, od->nbr->copp,
> diff --git a/northd/ovn-northd.8.xml b/northd/ovn-northd.8.xml
> index 59c584710..5df74a410 100644
> --- a/northd/ovn-northd.8.xml
> +++ b/northd/ovn-northd.8.xml
> @@ -2332,6 +2332,12 @@ next;
>          to learn the neighbor.
>        </li>
>  
> +      <li>
> +        A priority-95 flow with the match <code>nd_ns &amp;&amp;
> +          (ip6.src == 0 || nd.sll == 0)</code> and applies the action
> +        <code>next;</code>
> +      </li>
> +
>        <li>
>          A priority-90 flow with the match <code>arp</code> and
>          applies the action
> diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
> index 033b58b8c..fe97bedad 100644
> --- a/tests/ovn-northd.at
> +++ b/tests/ovn-northd.at
> @@ -6707,6 +6707,7 @@ AT_CHECK([ovn-sbctl dump-flows DR | grep -e 
> lr_in_unsnat -e lr_out_snat -e lr_in
>  
>  AT_CLEANUP
>  
> +OVN_FOR_EACH_NORTHD([

This is unrelated.

>  AT_SETUP([LR NB Static_MAC_Binding table])
>  ovn_start
>  
> @@ -6730,6 +6731,7 @@ ovn-nbctl --may-exist static-mac-binding-add lr0-p0 
> 192.168.10.100 00:00:22:33:5
>  wait_row_count Static_MAC_Binding 1 logical_port=lr0-p0 ip=192.168.10.100 
> mac="00\:00\:22\:33\:55\:66"
>  
>  AT_CLEANUP
> +])

This too.

>  
>  OVN_FOR_EACH_NORTHD([
>  AT_SETUP([LR neighbor lookup and learning flows])
> @@ -6751,6 +6753,7 @@ AT_CHECK([cat lrflows | grep -e lr_in_lookup_neighbor 
> -e lr_in_learn_neighbor |
>    table=2 (lr_in_learn_neighbor), priority=90   , match=(nd_na), 
> action=(put_nd(inport, nd.target, nd.tll); next;)
>    table=2 (lr_in_learn_neighbor), priority=90   , match=(nd_ns), 
> action=(put_nd(inport, ip6.src, nd.sll); next;)
>    table=2 (lr_in_learn_neighbor), priority=95   , match=(nd_na && nd.tll == 
> 0), action=(put_nd(inport, nd.target, eth.src); next;)
> +  table=2 (lr_in_learn_neighbor), priority=95   , match=(nd_ns && (ip6.src 
> == 0 || nd.sll == 0)), action=(next;)
>  ])
>  
>  AT_CLEANUP

Thanks,
Dumitru

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

Reply via email to