[ovs-dev] Sync ipv6 route info from kernel

Ben Pfaff blp at ovn.org
Tue Oct 23 16:20:39 UTC 2018


On Sat, Oct 20, 2018 at 06:10:52AM +0000, lidejun wrote:
> Has anybody found this issue: when using userspace ovs + dpdk with ipv6 vxlan tunnel, if too many ipv6 route changes in a short time, ovs main thread will stuck at recvmsg?
> Call chain is:
> route_table_run ---> nln_run ---> nl_sock_recv ---> nl_sock_recv__ ---> recvmsg

Haven't heard of that.  It sounds quite strange because the netlink
sockets should all the nonblocking.  Do you know whether the code is
actually blocking in the kernel?  Perhaps it is in a loop, instead,
where there is always a message to receive.

Try this patch, to test that hypothesis:

diff --git a/lib/netlink-notifier.c b/lib/netlink-notifier.c
index dfecb97789f3..c19a537e1413 100644
--- a/lib/netlink-notifier.c
+++ b/lib/netlink-notifier.c
@@ -179,7 +179,7 @@ nln_run(struct nln *nln)
     }
 
     nln->has_run = true;
-    for (;;) {
+    for (int i = 0; i < 50; i++) {
         uint64_t buf_stub[4096 / 8];
         struct ofpbuf buf;
         int error;


More information about the dev mailing list