<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jun 17, 2020 at 3:43 AM Numan Siddique <<a href="mailto:numans@ovn.org">numans@ovn.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jun 17, 2020 at 12:50 AM Han Zhou <<a href="mailto:zhouhan@gmail.com" target="_blank">zhouhan@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jun 16, 2020 at 11:32 AM Tim Rozet <<a href="mailto:trozet@redhat.com" target="_blank">trozet@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">Thanks Han. See inline.<br clear="all"><div><div dir="ltr"><div dir="ltr"><div><div dir="ltr">Tim Rozet<div>Red Hat CTO Networking Team</div></div></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jun 16, 2020 at 1:45 PM Han Zhou <<a href="mailto:zhouhan@gmail.com" target="_blank">zhouhan@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 15, 2020 at 7:22 AM Tim Rozet <<a href="mailto:trozet@redhat.com" target="_blank">trozet@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi All,</div><div>While looking into using ecmp routes for an OVN router I noticed there is no support for BFD on these routes. Would it be possible to add this capability? I would like the next hop to be removed from the openflow group if BFD detection for that next hop goes down. My routes in this case would be on a GR for N/S external next hop and not going across a tunnel as it egresses.</div><div><br></div><div>Thanks,</div><br clear="all"><div><div dir="ltr"><div dir="ltr"><div><div dir="ltr">Tim Rozet<div>Red Hat CTO Networking Team</div></div></div></div></div></div></div>

<p></p></blockquote><div>Hi Tim,</div><div><br></div><div>Thanks for bringing this up. Yes, it is desirable to have BFD support for OVN routers. Here are my thoughts.</div><div><br></div><div>In general, OVN routers are distributed. It is not easy to tell which node should be responsible for the BFD session, especially, to handle the response packets. Even if we managed to implement this, the node detects the failure needs to populate the information to central SB DB, so that the information is distributed to all nodes, to make the distributed route updated.<br></div></div></div></blockquote><div><br></div><div>Right in a distributed case it would mean the BFD endpoint would be under the network managed by OVN, and therefore reside on the same node where the port for that endpoint resides. In the ovn-kubernetes context, it is a pod running on a node connected to the DR. </div></div></div></blockquote><div><br></div><div>Yes, this may be the typical case. However, there can be more scenarios, since there is no limit for what the nexthop can be in OVN routes. It can be an IP of a OVN port which is straightforward. It can also be an IP of a nested workload which is under the OVN managed network but not directly known by OVN (maybe learned through ARP). The nexthop can also be on external networks reachable through distributed gateway ports (instead of GR), in which case the routes are distributed and it requires resolving the output port to figure out that the BFD session should be running through the gateway node. But I agree that all these should be doable, although it may introduce some complexity. In addition, for distributed routers, BFD is not necessarily faster than an external monitoring mechanism, because the updates to the route would anyway need to go through the central DB (so that it can be enforced on all nodes in the distributed manner).<br></div></div></div></blockquote><div><br></div><div>Maybe we can extend the current service monitor implementation to also include BFD ? And detect any failures.</div></div></div></blockquote><div><br></div><div>Agree, I was thinking about something similar. <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><br></div><div>Whether the nexthop is known to OVN or is outside of OVN subsystem, ovn-controller can inject the BFD packet to the router pipeline and this packet would be routed and get delivered</div><div>to the endpoint handling the nexthop. If we take this approach, OVN doesn't need to know what is the OVS interface to use to enable BFD if the interface connected to the nexthop endpoint.</div></div></div></blockquote><div><br></div><div>Sorry, this is unclear to me. If the nexthop is unknown to OVN, how do we know which chassis should take care of the BFD handling that nexthop? For "if the interface connected to the nexthop endpoint" - which interface do you mean here?<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><br></div><div>Right now, ovn-controller creates the OVS tunnel interfaces and it can easily configure BFD on these. But generally, OVS interfaces for VMs/PODs etc are created by external entities like - OpenStack Nova, ovn-kubernetes etc</div><div>and probably its not a good idea for ovn-controller to enable the BFD by running equivalent of - "ovs-vsctl set interface <interface_name> bfd:enable=true".</div><div><br></div></div></div></blockquote><div>I wonder how can we directly utilize the OVS BFD configuration on the OVS interfaces for this purpose. For example, if the nexthop is a VM, how can we use OVS BFD to peer a session within a VM?</div><div><br></div><div>There are so many scenarios and details to be figured out. I think it would justify a design doc probably :)<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div></div><div>Any thoughts ?</div><div><br></div><div>Thanks</div><div>Numan</div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div></div><div><br></div><div>In your particular case, it may be easier, since the gateway router is physically located on a single node. ovn-controller on the GR node can maintain BFD session with the nexthops. If a session is down, ovn-controller may take action locally to enforce the change locally.</div></div></div></blockquote><div><br></div><div>Yeah for the external network case this makes sense. I went ahead and filed a BZ:</div><div><a href="https://bugzilla.redhat.com/show_bug.cgi?id=1847570" target="_blank">https://bugzilla.redhat.com/show_bug.cgi?id=1847570</a> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><br></div><div>For both cases, more details may need to be sorted out.</div><div><br></div><div>Alternatively, it shouldn't be hard to have an external monitoring service/agent that talks BFD with the nexthops, and react on the session status changes by updating ECMP routes in OVN NB.<br></div></div></div></blockquote><div>Yeah I have a workaround plan to do this for now, using a networking health check and signaling from K8S. The problem is this is much slower than using real BFD, but it is better than nothing.</div></div></div></blockquote><div><br></div><div>Great. Is there any design doc or POC? (or if there is a plan to share when ready). Thanks!<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div></div><div><br></div><div>Thanks,</div><div>Han<br></div></div></div>
</blockquote></div></div>
</blockquote></div></div>

<p></p>

-- <br>
You received this message because you are subscribed to the Google Groups "ovn-kubernetes" group.<br>
To unsubscribe from this group and stop receiving emails from it, send an email to <a href="mailto:ovn-kubernetes+unsubscribe@googlegroups.com" target="_blank">ovn-kubernetes+unsubscribe@googlegroups.com</a>.<br>
To view this discussion on the web visit <a href="https://groups.google.com/d/msgid/ovn-kubernetes/CADtzDCm7hu-PLOycgMmSDdTxdrnF-QW8B04tt-jgeri%3DJ%3Dy_MA%40mail.gmail.com?utm_medium=email&utm_source=footer" target="_blank">https://groups.google.com/d/msgid/ovn-kubernetes/CADtzDCm7hu-PLOycgMmSDdTxdrnF-QW8B04tt-jgeri%3DJ%3Dy_MA%40mail.gmail.com</a>.<br>
</blockquote></div></div>
</blockquote></div></div>