Creating a Poor Man’s Express Route

Lately we’ve been running into issues with client’s connecting to Office 365 and having high latency with this connection. this results in issues such as “Outlook is not Responding” & “Getting data from server”. Both of these issues disappear when running in Cached mode due to less data-traffic being required for normal operations such as opening e-mails and retrieving folder lists.

After researching we’ve found that this is mostly related to enormous detours that the ISP was taking to reach the Office 365 back-end. Mostly due to “cheaper” connections to the DUB(EU) or AMS(EU) data-centers of Microsoft. A good example of this can be seen with the Dutch ISP RoutIT, where you have 28 hops on average to the Office 365 back-end(of which 90% is still in their network), but only 5 hops to the Azure back-end strangely enough. After contacting Microsoft Support we’ve got the dreaded answer: Please invest into an Express-Route solution to circumvent these issues or have the provider resolve the connection problems.

We have multiple small sites with 5+ users that simply cannot afford this, and the clients can’t accept this latency. So we decided to ignore Microsoft’s advice and go on our own path of discovery ๐Ÿ˜‰ After reading some of the service descriptions we’ve found that Microsoft assures better connections from Azure to Office 365 by using extensive QoS, and of course simply because the virtual machines are in the same network as the Office 365 services.

I’ve created the step-by-step below to research, test, and implement a solution.


first we needed to discover if the client actually suffered from this issue:

  • Open outlook on a user with connection issues.
  • Right-click the tray icon, while holding CTRL and click on “Connection Status”
  • In online mode you’d want the AVG. Proc time to be lower than 25(Cached mode this can be anything from 25-300)
  • In online mode you’d want the AVG RTT Time to be lower than 200(Cached mode this can be anything from 0-1000)
  • If you have results higher than above, you are possibly having issues connecting to and a poor-man’s ExpressRoute might help you run your outlook in Online mode.

After these tests, we run a Traceroute to tripple-check if the route is the issue, or if the connection latency itself is the issue. You expect a traceroute to to always be less than 20 hops, preferably in the 10-15 range, such as my results;


Tracing route to []
over a maximum of 30 hops:

  1     1 ms    <1 ms     1 ms
  2     9 ms    9 ms    10 ms
  3     7 ms     8 ms     7 ms []
  4     4 ms    4 ms    12 ms []
  5     4 ms    4 ms    13 ms []
  6     6 ms    7 ms    14 ms []
  7     13 ms    12 ms    15 ms []
  8     14 ms    16 ms    16 ms []
  9     6 ms     5 ms     5 ms

Trace complete.

If you have results as above, this solution might not be the one for you, Of course you can continue testing below but YMMV.

Create Virtual Machine Azure for performance tests & RRAS

Create a virtual machine in the Azure portal with the following specifications and configuration, If you have never created a virtual machine please use the ย following guide on the Microsoft website. The interfaces changes every couple of months so its best to use the resources from Microsoft themselves.


  • at least 1 Core
  • at least 1.75GB of RAM
  • Static Internal IP for the server
  • Allow traffic: SSL to server(443)
  • Install the following roles: Remote Access, DHCP Server.
  • Setup DHCP and Remote Access.

After configuring the Azure side of the requirements make sure you configure SSTP VPN connections(Not required – For testing only.) and allow Router advertisement and IP forwarding. If you require a SSL Certificate you canย use a free certificate from LetsEncrypt for this test.

After performing all configurations connect to the SSTP VPN from a client that experienced issues. Remember to set the “Use default gateway on remote network” to force all traffic over this tunnel for the sake of the test. Restart outlook and perform the testing steps once more. You should see a lower AVG. Proc Time and lower AVG. RTT Time. Have the user work on the SSTP connection for a day to see if they actually see a noticeable difference. If this is the case, its time for a more permanent solution.

Create IPSec tunnel

If the tests above have been performed, and you are ready for a permanent solution you can use Azure to create an ipsec tunnel, for that I advise the following guide.

After configuration of your ipsec tunnel, remember to tunnel all Office 365 traffic using the Microsoft IP address list found on this link. You can choose what traffic you route over the tunnel and what traffic you’d prefer using your local internet connection. When using the IPSEC tunnel remember that you must use your RRAS server as the gateway or else the routing will end on the side of the the Azure S2S VPN.

an ipsec VPN Tunnel and RRAS for NAT/Routing costs about 90% less than ExpressRoute, and might resolve most issue you have with sluggish outlooks, or slow responding Office 365 services.

Happy O365ing.


  1. petedewey August 19, 2016 at 9:54 am

    u type very upset! relax. life is easy

    i just did this solution and my outlook is much responding faster, still not as local exchange but surely better . i am using a belgium provider epdnet

  2. Jake Verhoeff September 10, 2016 at 12:22 am

    Your post could use some clarification that this only helps if the route to Azure is shorter than the route to Office 365. Something that everyone will have to check for themselves.

    Great read anyway, I’ve seen performance boosts by using this Poor-mans Express route to the point where working in online mode becomes a lot more bearable. So far I’ve implemented this at 22 clients and counting.

    Thanks for the write-up.

    1. TeGek November 2, 2016 at 8:36 am

      Hi Jason,

      Yes it is possible to use the S2S VPN for only Office365 traffic, You’ll have to setup your own router to tunnel all traffic to the IPs listed here to your Azure VPN Tunnel, we’ve had no problems with this using Juniper and Sonicwall routers. You cannot tunnel all traffic(e.g. a route) across a S2S VPN though, You’d have to use a Windows Server with Routing enabled or a virtual appliance.

      Also; I see you linked to using the “classical” portal, I’d advise you to not use this method as you lose a lot of functionality when you do such as accessing routing tables etc.

  3. Jason November 3, 2016 at 12:23 pm

    I’m experiencing some strange behaviour


    rras via VPN

    azure subnet

    route add on client mask

    ping OK but tracert via -> so not going via VPN

    I add static route in rras mask via VPN , no ping , no tracert
    What am i missing here?

    1. TeGek November 7, 2016 at 10:14 am

      Hi Jason,

      As Walter posted in the last reply – The RRAS is still required to peform NAT/Routing. the ipsec tunnel is only in place so clients do not have to make a client-based VPN. I guess I did not clarify that in my blog enough and I’ll make sure to update it. Sorry for the confusion! ๐Ÿ™‚


Leave a comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.