<div dir="ltr">Hi Han<div><br></div><div>Sorry for the late reply. </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">Is this the current situation?<br></blockquote><div><br></div><div>Yes, it is.</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">When you say there are too many default routes, what do you mean in the above example? How would the SOUTH_TO_NORTH_IP solve the problem?<br></blockquote><div> </div><div>Each <east-west routeX> corresponds to a node in our cluster, like this:</div><div><br></div><div> <east-west route1> ip4.src == <logical switch Y subnet> && ip4.dst == <node 1  IPv4>, allow </div><div> <east-west route1> ip6.src == <logical switch Y subnet> && ip6.dst == <node 1  IPv6>, allow <br></div><div> <east-west route1> ip4.src == <logical switch Y subnet> && ip4.dst == <node 2  IPv4>, allow<br></div><div>...</div><div> <east-west route1> ip6.src == <logical switch Y subnet> && ip6.dst == <node X  IPv6>, allow <br></div><div><br></div><div>so on large clusters (say 1000 nodes) with IPv6 and IPv4 enabled we can reach ~2000 logical router policies. By having the SOUTH_TO_NORTH_IP we can completely remove all of them and have the "default route" logical router policy specify:</div><div><br></div><div>default route (lowest priority): ip4.src == <logical switch Y subnet> ip4.dst == SOUTH_TO_NORTH_IP, nexthop = <gateway router for Y><br></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">In addition, if SOUTH_TO_NORTH_IP is a user defined IP,<br></blockquote><div><br></div><div>I didn't think it should be user defined, more so "system defined", like <a href="http://0.0.0.0/0">0.0.0.0/0</a></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"> I am not sure how would it work,  because ip4.dst is the dst IP from packet header<br></blockquote><div><br></div><div>I didn't intend for such an IP to be used solely as a destination IP, but as source too, if the user requires it.  </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">Comparing it with SOUTH_TO_NORTH_IP would just result in mismatch, unless all south-to-north traffic really has this IP as destination (I guess that's not the case).<br></blockquote><div><br></div><div>Sure, I just wanted to assess the feasibility of such an IP from OVN's point of view. Obviously the real destination IP would be different, but I (without knowing the underlying works of OVN) thought there might be a programmable way of saying: "this IP is unknown to my network topology, so I could use identifier/alias grouping all such IPs under an umbrella identifier such as X.X.X.X/X"  <br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Sep 16, 2020 at 11:09 PM Han Zhou <<a href="mailto:hzhou@ovn.org">hzhou@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, Sep 16, 2020 at 10:07 AM Alexander Constantinescu <<a href="mailto:aconstan@redhat.com" target="_blank">aconstan@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"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">In this example it is equivalent to just "ip4.src == <a href="http://10.244.2.5/32" target="_blank">10.244.2.5/32</a>"'.<br></blockquote><div><br></div><div>Yes, I was just using it as an example (though, granted, noop example)</div><div><br></div><div>Some background to help steer the discussion:</div><div><br></div><div>Essentially the functionality here is to have south -> north traffic from certain logical switch ports exit the cluster through a dedicated node (an egress node if you will). To do this we currently have a set of default logical router policies, intended to leave east <-> west traffic untouched, and then logical router policies with a lower priority, which specify reroute actions for this functionality to happen. However, on large clusters, there's this concern that the default logical router policies will become too many. Hence why the idea here would be to drop them completely and have this "special IP" that we can use to filter on the destination, south -> north, traffic . </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">If you have a default route, anything "unknown" would just hit the default route, right? Why would you need another IP for this purpose?<br></blockquote><div><br></div><div>As to remove the default logical router policies, which can become a lot, on big clusters - as described above. With only reroute policies of type: "ip4.src == <a href="http://10.244.2.5/32" target="_blank">10.244.2.5/32</a> && ip4.dst == SOUTH_TO_NORTH_IP" things would become lighter. </div></div></blockquote><div><br></div><div>Thanks for the background. So you have:</div><div><east-west route1></div><div><east-west route2></div><div>...</div><div>default route (lowest priority): ip4.src == <logical switch X subnet>, nexthop = <gateway router for X></div><div><div>default route (lowest priority): ip4.src == <logical switch Y subnet>, nexthop = <gateway router for Y></div></div><div><br> </div><div>Is this the current situation?</div><div>When you say there are too many default routes, what do you mean in the above example? How would the SOUTH_TO_NORTH_IP solve the problem?</div><div><br></div><div>In addition, if SOUTH_TO_NORTH_IP is a user defined IP, I am not sure how would it work, because ip4.dst is the dst IP from packet header. Comparing it with SOUTH_TO_NORTH_IP would just result in mismatch, unless all south-to-north traffic really has this IP as destination (I guess that's not the case).<br></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><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> In policies/ACL you will need to make sure the priorities are set properly to achieve the default-route behavior.<br></blockquote><div><br></div><div>Yes, so this is currently done, as described above. </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Sep 16, 2020 at 6:35 PM Han Zhou <<a href="mailto:hzhou@ovn.org" target="_blank">hzhou@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"><br><br>On Wed, Sep 16, 2020 at 5:42 AM Alexander Constantinescu <<a href="mailto:aconstan@redhat.com" target="_blank">aconstan@redhat.com</a>> wrote:<br>><br>> Hi<br>><br>> I was wondering if anybody is aware of an IP address signifying "external IP destinations"? <br>><br>> Currently in OVN we can use the IP address <a href="http://0.0.0.0/0" target="_blank">0.0.0.0/0</a> for match expressions in logical routing policies / ACLs when we want to specify a source or destination IP equating to the pseudo term: "all IP addresses",ex: 'match="ip4.src == <a href="http://10.244.2.5/32" target="_blank">10.244.2.5/32</a> && ip4.dst ==<a href="http://0.0.0.0/0" target="_blank">0.0.0.0/0</a>"'<br><div>></div><div>In this example it is equivalent to just "ip4.src == <a href="http://10.244.2.5/32" target="_blank">10.244.2.5/32</a>"'.</div><div><br></div>> Essentially what I would need to do for an OVN-Kubernetes feature is specify such a match condition for south -> north traffic, i.e when the destination IP address is external to the cluster, and most likely "unknown" to OVN. Thus, when OVN does not know how to route it within the OVN network topology and has no choice except sending it out the default route.  <br>><br>> Do we have such an IP address in OVN/OVS? Would it be feasible to introduce, in case there is none?   <br><div>></div><div>We don't have such a special IP except <a href="http://0.0.0.0/0" target="_blank">0.0.0.0/0</a>. If you have a default route, anything "unknown" would just hit the default route, right? Why would you need another IP for this purpose? In logical_router_static_route the priority is based on prefix length. In policies/ACL you will need to make sure the priorities are set properly to achieve the default-route behavior.<br></div><div><br></div><div>Thanks,</div><div>Han<br></div><div><br></div>> Thanks in advance!<br>><br>> --<br>><br>> Best regards,<br>><br>><br>> Alexander Constantinescu<br>><br>> Software Engineer, Openshift SDN<br>><br>> Red Hat<br>><br>> <a href="mailto:aconstan@redhat.com" target="_blank">aconstan@redhat.com</a>   <br>><br>> _______________________________________________<br>> discuss mailing list<br>> <a href="mailto:discuss@openvswitch.org" target="_blank">discuss@openvswitch.org</a><br>> <a href="https://mail.openvswitch.org/mailman/listinfo/ovs-discuss" target="_blank">https://mail.openvswitch.org/mailman/listinfo/ovs-discuss</a></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><p style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;margin:0px;padding:0px;font-size:14px">Best regards,</p><p style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;font-weight:bold;margin:0px;padding:0px;font-size:14px"><span><br></span></p><p style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;font-weight:bold;margin:0px;padding:0px;font-size:14px"><span>Alexander</span> <span>Constantinescu</span><span style="text-transform:uppercase;color:rgb(170,170,170);margin:0px"></span></p><p style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;font-size:12px;margin:0px"><span>Software Engineer, Openshift SDN</span></p><p style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;margin:0px 0px 4px;font-size:12px"><a href="https://www.redhat.com/" style="color:rgb(0,136,206);margin:0px" target="_blank">Red Hat<span></span></a></p><div style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;font-size:medium;margin-bottom:4px"></div><p style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;margin:0px;font-size:12px"><span style="margin:0px;padding:0px"><a href="mailto:aconstan@redhat.com" style="color:rgb(0,0,0);margin:0px" target="_blank">aconstan@redhat.com</a>   </span></p><div style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;font-size:medium;margin-top:12px"><table border="0"><tbody><tr><td width="100px"><a href="https://www.redhat.com/" target="_blank"><img src="https://static.redhat.com/libs/redhat/brand-assets/2/corp/logo--200.png" width="90" height="auto"></a></td></tr></tbody></table></div></div></div></div></div>
</blockquote></div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><p style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;margin:0px;padding:0px;font-size:14px">Best regards,</p><p style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;font-weight:bold;margin:0px;padding:0px;font-size:14px"><span><br></span></p><p style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;font-weight:bold;margin:0px;padding:0px;font-size:14px"><span>Alexander</span> <span>Constantinescu</span><span style="text-transform:uppercase;color:rgb(170,170,170);margin:0px"></span></p><p style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;font-size:12px;margin:0px"><span>Software Engineer, Openshift SDN</span></p><p style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;margin:0px 0px 4px;font-size:12px"><a href="https://www.redhat.com/" style="color:rgb(0,136,206);margin:0px" target="_blank">Red Hat<span></span></a></p><div style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;font-size:medium;margin-bottom:4px"></div><p style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;margin:0px;font-size:12px"><span style="margin:0px;padding:0px"><a href="mailto:aconstan@redhat.com" style="color:rgb(0,0,0);margin:0px" target="_blank">aconstan@redhat.com</a>   </span></p><div style="color:rgb(0,0,0);font-family:RedHatText,sans-serif;font-size:medium;margin-top:12px"><table border="0"><tbody><tr><td width="100px"><a href="https://www.redhat.com/" target="_blank"><img src="https://static.redhat.com/libs/redhat/brand-assets/2/corp/logo--200.png" width="90" height="auto"></a></td></tr></tbody></table></div></div></div></div></div>