I have four MikroTik routers, all running RouterOS 7.23; three of them each individually maintain a pegged-up SSTP VPN to the fourth. Windows clients may sit behind any of the four, and reach devices across the three pegged-up VPNs. Windows clients may also connect directly to the SSTP VPN server on any of the four MikroTik routers.
[ at location 4] Windows iperf client -> WiFi5 -> MikroTik h AP ax S (so, more RAM, bigger faster CPU cores) -> pegged-up SSTP VPN client tunnel -> Gb Ethernet -> Internet router -> Internet -> [at location 1] -> Internet router -> Gb Ethernet -> MikroTik E50UG (so, also, not very small) SSTP VPN server tunnel -> Gb Ethernet -> Windows iperf server:
Performance, max about 3Mb/s
Same thing, except now run the Windows SSTP VPN client on the Windows computer at location 4, connecting to the same SSTP VPN server on the location 1 MikroTik router -- everything else is the same:
Performance, max about 10Mb/s
(The location 4 Internet connection is a 100Mb/s down, 40Mb/s up, DSL connection, which reliably delivers those speeds. The location 1 Internet connection is a 1Gb symmetric fibre connection).
I've read that SSTP is a very inefficient VPN, but it doesn't seem to be as simple as that.
I had read about SSTP and MTU, and I noticed that the Windows SSTP VPN client MTU is 1400, and the MikroTik-to-MikroTik MTU was 1500, so I reduced the MikroTik-to-MikroTik MTU to 1400 - it did not make any difference. (Thinking about it, that may have increased the need to fragment packets coming from the Windows client before they could go through the MikroTik-to-MikroTik SSTP VPN). I restored the MikroTik-to-MikroTik SSTP connection to its default 1500 MTU.
I used PING -F -L {packetsize} on the Windows client to determine the lowest MTU across; 1460 did not require fragmentation. I set the Windows Wi-Fi interface MTU to 1400.
Speed did not increase.
So, it doesn't seem to be fragmentation, either.
I'm trying to think of what's different, between letting the location 4 MikroTik route across the pegged-up VPN, vs the Windows client connecting directly to the location 1 MikroTik SSTP VPN server:
On the client side MikroTik, withOUT connecting the Windows SSTP VPN client directly to the server-end MikroTik SSTP VPN, packets go through an additional routing step, and an additional NAT step. But on an h AP ax S, the CPU should have no trouble at all doing that at 10Mb/s. So I don't suppose that's what's causing it.
I'm left scratching my head. What would be causing this much lower SSTP VPN performance when going over the pegged-up MikroTik-to-MikroTik SSTP VPN vs the Windows client to remote MikroTik server SSTP VPN?
thanks.