[ovs-dev] OVN: proposal of introducing nlog engine to ovn-northd

Russell Bryant russell at ovn.org
Mon Feb 1 15:12:49 UTC 2016


On 02/01/2016 05:03 AM, Yusheng Wang wrote:
> We are trying to propose a new computation model for the ovn-northd
> application. Currently, ovn-northd computes all logical data path
> flows for every change. This full computation model is simple and
> helped verifying the concept of logical data path design, but it also
> suffers performance drawback.
> 
> In order to move from full computation to incremental computation,
> more sophisticated tool is needed to manage the complexity associated
> with both generating more and more complex logical data path flows
> and dealing with irrelevant sequence of incremental changes.
> 
> Now we think it is good time to introduce the new computation model -
> nlog. Nlog is a specialized declarative programming language based on
> datalog.
> 
> The nlog computation model has been proved to work well for quite a
> few systems. We have done a POC in which a brand new nlog compiler
> and nlog run-time engine are implemented. Nlog program has been
> written to implement basic ovn features to verify its capabilities.
> 
> We see a good match of the ovn data schema with nlog computation
> model. Both ovn-northd and ovn-controller use ovsdb and the data to
> be processed are tuples. This is also true for nlog programs and
> minimum data transformation is needed to adapt to the new computation
> model.
> 
> This move will take multiple phases and current ovn-northd
> functionality will not be impacted. The north and south side database
> schema will not be changed during and after this move.

Thanks for sharing your ideas!

I haven't heard of nlog before.  You mentioned that it has worked well
for quite a few systems.  Can you provide some references for where I
can go to learn more?

In general, I definitely agree that this problem is something we need to
work on.  I've been wanting to look into adding a way for users of the
IDL API to receive callbacks on row events (create, update, delete) so
that it knows which rows it should apply updates for.  That's about as
far as I've gone though.  I haven't written any code yet because I keep
staying busy with other things.

-- 
Russell Bryant



More information about the dev mailing list