There are, unfortunately,
many different versions of what is collectively called "VPN." The standard didn't evolve fast enough and quite a few vendors just "went out and did something." Or they decided on what they considered to be "a cool feature" and just built it, wedging it into the protocol in ways that they sometimes dubbed "proprietary." (Engineers want interoperability, but accountants want exclusivity.)
Dumped on top of
that is the fact that VPN is actually a
framework into which many different cryptographic techniques can be incorporated. (Quite obviously, many of them are classified.) So, the software environment can be quite hard to set up.
Dumped on top of
that 
is the tendency of engineers on open-source projects to build exactly what
they needed at the time and to forget the rest of the standard. You look through an old source-file and there it is... the dreaded word,
"TODO."