The OVN Northbound DB Schema at this point supports only a single route per 
Logical Router Port.

Openstack/Neutron supports multiple routes per router interface and we need to 
support this use case in the Neutron OVN Plugin.

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.

For e.g. 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 and this is not stated explicitly in the spec.

—Amitabha
_______________________________________________
discuss mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to