MakeWebRequest and MakeImageRequest have different IP addresses from same origin

I noticed that making a MakeWebRequest and MakeImageRequest (within 30 seconds) from the same Edge device connect with the same phone (connect to 4G), give 2 different IP addresses.

I have a test app that sends a MakeWebRequest and MakeImageRequest both to my server.

When I check the originating IP address on my server, it seems that the MakeWebRequest has the correct IP address. This is the same IP address when I check this on my mobile (whatismyipaddress).

However, when I do a MakeImageRequest, the IP address is sometimes (2 out of 10) different. When I do a GEO location on this IP address, I get the following response: 

  • IP Address 204.77.163.244.
  • GEO IP location:  United States - Kansas - Olathe – 66062

This seems to be the Garmin office and/or their servers?!

The problem I have is twofold:

  1. The performance of MakeImageRequest, when coming via 204.77.163.244, is very poor. Seems to me this is due to the fact that MakeImageRequest are redirected to Garmin server, which causes additional large delays (20 to 30 additional seconds per request)
    Note that the performance is very good when I connect my Edge to a different phone (e.g. my wife's).
  2. It does not seem right for me that my GCM traffic is redirect via Garmin server


Who has the same experience and could help me solving this?

Thanks!!

  • Per ARIN, that address is in Garmin's address range, and while I'm just guessing, it could be an image request goes through that to do the processing as far as palette and size, and there could be some caching involved.

    With your wife's phone, is that by chance using wifi and not 4g?

  • Thanks for the response. 

    My wife's phone is connected to 4G. I double checked, I am not using palette nor size in the MakeImageRequest

  • If it passes through a Garmin server, that might not matter as the same route is used either way.

  • This is by design, and there is no way to work around it.

    Images need to be converted to a format that can be displayed by the device software. Depending on the parameters that you pass the image may need to be scaled/palettized/dithered, and all of this is done server-side to avoid needing to process the files on device and to reduce the amount of data sent over the BLE link.

    I'm pretty confident that the use of the Garmin image service is a red herring. The backend is doing doing the same exact processing on the backend and the same result should be produced in roughly the same time regardless of which device sent the request.

    If you're experiencing a difference in performance, it is much more likely that it has to do with the connection used by your phone (as suggested by ). You should double-check that both phones are using the same connection (WiFi/2G/3G/4G/5G). A speedtest would quickly tell you if there was a significant difference in network throughput between devices. My guess is that your wife's phone is newer and using 4G or is connecting to WiFi. This will make quite a bit of difference.

    I believe that the image processing service runs on a pool of distributed servers, so if you're seeing slowness 2/10 times when making a request from the same device (the same Garmin device paired to the same mobile phone using the same network connection) this could be caused by an issue on one of the servers or a network/routing issue.

  • Below additional information:

    • Both telephones are exact the same, both Iphone 11 and are both connected to 4G
    • I do not use scaling, dithering nor a palette 

    So, I guess nothing else to do about it. Or do you have any other ideas, thoughts or whatsoever.

    Thanks again!