[kea-dev] KEA performance and hook framework

Angelo Failla pallotron at fb.com
Mon Mar 14 15:49:08 UTC 2016

On 3/14/16, 1:57 PM, "Francis Dupont" <fdupont at isc.org> wrote:

>> It seems KEA is a single threaded UDP server using blocking sockets
>=> it uses not-blocking sockets but is single threaded so it doesn't
>change something for your problem.


>If I understand well this problem you have a high latency backend
>called via hooks. 

Correct. Well even if it was 10ms it’s kinda sad that a C++ application would only serve 100 RPS in that case and basically not make use of cores in the box or some concurrency technics like other modern software are doing.
Anyway, we are going to implement a workaround on our side.

>I suppose your backend supports many simultaneous calls

It does.

>so IMHO you need to split the load over several kea servers
>and rely on the backend for the coherency 

We do spread the load across multiple servers but it doesn’t help much in situations like the one in the incident.

>(BTW it will be better than
>a multi-threaded server according to my experience of parallel and
>multi-thread applications).

I think it’s still worth it investing time in going that way.
We have a work around

> DHCP is a stateless protocol so any
>load balancer could be able to do the job. And Kea has a -p port
>command line option.

Totally unrelated to this thread but I wanted to ask if you guys know dhcprelay(8)?
If so I have a question: I see it takes a list of servers and it relays traffic to them. Does it balance traffic evenly amongst the upstream servers? If so: how?

More information about the kea-dev mailing list