This is proof of concept patch that we use to loadbalance many OpenVPN server instances.
OpenVPN is single threaded application and this is becoming a problem when we need to serve many clients. To solve this, we use this patch and also small patch for OpenVPN, that adds setsockopt with SO_REUSEPORT_LB socket option
.The main idea is to have several OpenVPN server instances that are bound on the single UDP port. Each OpenVPN client have unique address and port that are persistent per a session. The kernel creates a "state" when load balanced socket replies to a new client . States are used to keep track of accordance between clients and servers.
We plan to separate this patch from SO_REUSEPORT_LB option to new SO_REUSEPORT_SLB socket option.