Setting the routing table takes 0.2 seconds Setting the virtual network adapter takes 5 seconds Networking with the server and authenticating take 3-5 seconds
The time to set the virtual network adapter is actually a degradation from two years ago. We changed to a new adapter, which is easier to maintain, but increased the connect time by 3 seconds. I think I can we can use the old adapter and reduce it back to two secondsIt is very hard to change the networking time since it is part of the protocol and needed to set up the VPN tunnel.
Ophir: Great, but the overall result would still be around 8 seconds
However, we can do a nice trick. We will keep the VPN tunnel always open, even when the client disconnects. Instead of terminating the connection we will reset the routing table (which is fast
As a result the first connect in a day would be 3-5 seconds but all the other connections would be just 0.2 seconds, which is almost unnoticeable
Ophir: Amazing. What’s the catch?
There would be extra memory utilization in the server.
Ophir: I think the memory issue is no brainer. For most customers the number of tunnels is no so big and it does not seem will add more than 10MB , even in the worst case. Excellent work.
Going back to my initial hypothesis, I believe the chronicle has great lessons.
When goals are measurable, they can be analyzed and improved. Setting high goals allows developers to innovate. When the product manager is ready for a dialog, she will find out new tradeoffs that she could not come up without the R&D feedback. Relative goals are dangerous, because the starting point is unknown.
In our case, a few hours or research allowed to reduce the connect time by 50% in all cases and by 95% in 90% of the cases. We also set a new key parameter for developers and QA to test and validate. The effect would be noticeable by the end users and greatly improve their satisfaction.