On 8/12/24 14:14, Dumitru Ceara wrote:
> On 8/12/24 14:10, Ilya Maximets wrote:
>> On 8/12/24 14:07, Dumitru Ceara wrote:
>>> On 8/12/24 14:05, Ilya Maximets wrote:
>>>> On 8/12/24 13:55, Ilya Maximets wrote:
>>>>> On 8/12/24 06:16, [email protected] wrote:
>>>>>> From: Numan Siddique <[email protected]>
>>>>>>
>>>>>> IPv6 Neigh Solicitation (NS) responder logical flows match on ip6.dst
>>>>>> field.  These flows when translated to datapath flows also match on
>>>>>> ip6.dst, which means a separate datapath flow per destination IP
>>>>>> address.  This may cause significant performance issues in some
>>>>>> setups (particularly ovs-dpdk telco deployments).
>>>>>>
>>>>>> This patch addresses this issue by matching on eth.mcast6 so that
>>>>>> datapath flows for normal IPv6 traffic doesn't have to match on
>>>>>> ip6.dst.  IPv6 NS packets are generally multicast.  A new logical
>>>>>> match "nd_ns_mcast" for this purpose.
>>>>>>
>>>>>> After this patch, We no longer respond to IPv6 NS unicast packets.
>>>>>> This behavior now matches the IPv4 ARP responder flows.  Note
>>>>>> that after the commit [1] which was recently added we now only
>>>>>> respond to IPv4 ARP broadcast packets.
>>>>>
>>>>> But we still need to reply to unicast NS requests for router ports, right?
>>>>> Unlike ARP,
>>>>
>>>> Actually, ARP has a similar mechanism - Unicast Poll, for the same purpose
>>>> of validating cache entries without fully removing them.  See:
>>>>   https://datatracker.ietf.org/doc/html/rfc1122#section-2
>>>>
>>>> So, we should be responding for unicast ARPs for router ports as well.
>>>>
>>>
>>> Both for ARP request and NS we only proxy in the switch pipeline.  It's
>>> perfectly fine to not reply in the OVN pipeline and let packets reach
>>> the VIFs.  The VIFs will reply to the unicast requests.  This is
>>> transparent for the requester.
>>
>> I didn't ask about VIFs, my question is about router port IPs, that are
>> only known to OVN., i.e. there is no other entity that would reply.
>>
> 
> This patch doesn't touch any of the router port related flows.  Router
> ports still reply to all neighbor solicitations (regardless if they're
> unicast or multicast).

Could you point me to the code?  I'm a little confused, because of
this code snippet:

  build_lswitch_arp_nd_responder_known_ips:

        /*
         * Add ARP/ND reply flows if either the
         *  - port is up and it doesn't have 'unknown' address defined or it
         *    doesn't have the option disable_arp_nd_rsp=true.
         *  - port type is router or   <--- THIS
         *  - port type is localport
         */
        if (check_lsp_is_up &&
            !lsp_is_up(op->nbsp) && !lsp_is_router(op->nbsp) &&
            strcmp(op->nbsp->type, "localport")) {
            return;
        }

This suggests that we're replying to ARP/ND requests for router ports
in the switch pipline right here where we're now not replying to unicast
requests.


> 
>>>
>>> I didn't review Numan's patch in detail but the idea behind it is correct.
>>>
>>> Regards,
>>> Dumitru
>>>
>>>>> IPv6 will use unicast NS requests for Reachability Confirmation:
>>>>>
>>>>>   7.3.1.  Reachability Confirmation
>>>>>
>>>>>      ...
>>>>>
>>>>>      In some cases (e.g., UDP-based protocols and routers forwarding
>>>>>      packets to hosts), such reachability information may not be readily
>>>>>      available from upper-layer protocols.  When no hints are available
>>>>>      and a node is sending packets to a neighbor, the node actively probes
>>>>>      the neighbor using unicast Neighbor Solicitation messages to verify
>>>>>      that the forward path is still working.
>>>>>
>>>>>   https://datatracker.ietf.org/doc/html/rfc4861#section-7.3.1
>>>>>
>>>>> Or do we reply to those somewhere else?
>>>>>
>>>>>>
>>>>>> A recent patch [2] from Ilya partially addressed the same datapath
>>>>>> flow explosion issue by matching on eth.mcast6 for MLD packets.
>>>>>> With this patch, we now completely address the datapath flow
>>>>>> explosion issue for IPv6 traffic provided all the logical ports
>>>>>> of a logical switch are not configured with port security.
>>>>>>
>>>>>> [1] - c48ed1736a58 ("Do not reply on unicast arps for IPv4 targets.")
>>>>>> [2] - 43c34f2e6676 ("logical-fields: Add missing multicast matches for 
>>>>>> MLD and IGMP.")
>>>>>>
>>>>>> Reported-at: https://issues.redhat.com/browse/FDP-728
>>>>>> Reported-by: Mike Pattrick <[email protected]>
>>>>>> Signed-off-by: Numan Siddique <[email protected]>
>>>>>
>>>>> Best regards, Ilya Maximets.
>>>>
>>>
>>
> 

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

Reply via email to