<div dir="ltr">Hi All,<div><br></div><div>We are working on patches to improve the performance filtering instance by IP address this cycle. As discussed in the previous ML[1], it contains both patches from Nova and Neutron[2][3][4][5][6].</div><div><br></div><div>As the POC is almost functional(the neutron extension part seems not working, it cannot be successfully listed in patchset 14 of [5] , I have to bypass the "if" condition for checking neutron "ip-substring-filtering" extension to make it work, but that seems easy to fix), I made some tests to check what kind of improvement has been done with those patches.</div><div><br></div><div>In the tests, I wrote a simple script [7](the script is silly, please don't laugh at me:) ) which generated 2000 vm records in Nova DB with IP address allocated(one IP for each vm), and also 2000 port records with corresponding IP addresses in my local devstack env.</div><div><br></div><div>Before adding those patches, querying instance with a specific IP filtering causes about 4000 ms, the test has been done several times, and I took the averaged result:</div><div><img src="cid:ii_160c4258aa3c8ddd" alt="Inline image 1" width="544" height="393"><br></div><div><br></div><div>After adding those patches(and some modifications as mentioned above) querying with the same request causes only about 400ms:</div><div><img src="cid:ii_160c427dfd19570b" alt="Inline image 2" width="544" height="272"><br></div><div><br></div><div>So, the design seems working well.</div><div><br></div><div>I also tested with a "Sub-String" manner filtering with IP address: 192.168.7.2, which will match 66 instances, and it takes about 900ms:</div><div><img src="cid:ii_160c43458be5935d" alt="Inline image 3" width="544" height="197"><br></div><div><br></div><div>It increased, but seems reasonable as it matches more instances, and still much better than current implementation.</div><div><br></div><div>Please test out in your own env if interested, the script might need some modification as I hardcoded db connection, network_id and subnet_id.</div><div><br></div><div>And also, please help review the patches :)</div><div><br></div><div>[1] <a href="http://lists.openstack.org/pipermail/openstack-operators/2017-October/014459.html">http://lists.openstack.org/pipermail/openstack-operators/2017-October/014459.html</a></div><div>[2] <a href="https://review.openstack.org/#/c/509326/">https://review.openstack.org/#/c/509326/</a></div><div>[3] <a href="https://review.openstack.org/#/c/525505/">https://review.openstack.org/#/c/525505/</a></div><div>[4] <a href="https://review.openstack.org/#/c/518865/">https://review.openstack.org/#/c/518865/</a></div><div>[5] <a href="https://review.openstack.org/#/c/521683/">https://review.openstack.org/#/c/521683/</a> </div><div>[6] <a href="https://review.openstack.org/#/c/525284/">https://review.openstack.org/#/c/525284/</a></div><div>[7] <a href="https://github.com/zhengzhenyu/groceries/blob/master/Ip_filtering_performance_test.py">https://github.com/zhengzhenyu/groceries/blob/master/Ip_filtering_performance_test.py</a></div><div><br></div><div>BR,</div><div><br></div><div>Kevin Zheng</div></div>