[openstack-dev] [networking-ovn] Supporting multiple routes per router interface

Amitabha Biswas abiswas at us.ibm.com
Tue Nov 24 20:47:07 UTC 2015


Hi,

The https://review.openstack.org/#/c/237820/ patch added the support for 
adding router interfaces in OVN NB. This patch only provides support for a 
single route per interface. Neutron supports multiple routes per router 
interface. While attempting to model this in OVN Northbound DB, I ran into 
some problems.

The OVN Northbound DB at this point supports only a single route per 
Logical Router Port. To solve the multiple route (per router interface) 
issue while working within this OVN NB model restriction, I created 
multiple lport and lrouter port for each subnet supported by a router 
interface.

Let's say a router interface supports both 192.168.1.0/24 and 
2001:db8:cafe::/64 routes, I added 2 lport and 2 lrouter ports in the OVN 
NB.

Logical Router Table:
UUID-PA ["fa:16:3e:59:80:ad 192.168.1.1"]           "port-1" 
{router-port="UUID-RA"}     ["fa:16:3e:59:80:ad"] router
UUID-PB ["fa:16:3e:59:80:ad 2001:db8:cafe::1"]      "port-2" 
{router-port="UUID-RB"}     ["fa:16:3e:59:80:ad"] router

Logical Router Port Table:
UUID-RA "fa:16:3e:59:80:ad" "port-1" "192.168.1.1/24"      []
UUID-RB "fa:16:3e:59:80:ad" "port-2" "2001:db8:cafe::1/64" []

Note that both ports (in both tables) have the same MAC corresponding to 
the neutron router interface MAC.

This results in the following logical flow:
...
table=3(switch_in_l2_lkup), priority=   50, match=(eth.dst == 
fa:16:3e:59:80:ad), action=(outport = "port-2"; output;)
table=3(switch_in_l2_lkup), priority=   50, match=(eth.dst == 
fa:16:3e:59:80:ad), action=(outport = "port-1"; output;)

As we can see there are 2 conflicting/overlapping rules for the MAC in 
table 3 and the packet could be sent to the wrong output port.

To support the multiple route per interface feature, we need to propose 
that OVN NB allow multiple routes per logical router port in ovs-dev or 
ovs-discuss. Additionally it seems that the MAC must be unique in the 
Logical Router Table per Logical Flow.

Thanks
Amitabha


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20151124/d3b4a7b8/attachment.html>


More information about the OpenStack-dev mailing list