Hello Christopher. 

Thank you for the information.

Huseyn Gambarov 
Research Assistant
PhD Student in Computer Science 
Case Western Reserve University

On Jan 28, 2025, at 4:34 AM, Christopher Amin <camin@ripe.net> wrote:

Hi Huseyn,

We have discussed some of this in another channel, but just in case it's still helpful to you or somebody else I will leave a response here:

First, in the Ripe Atlas, I sometimes get “-1” in the result indicating 100% packet loss and sometimes very long RTTs. Can you tell me please what is the condition when Ripe gives up on a target and marks it as "-1”?

A value of "-1" is used for the min, max and avg statistics when all of the packets timeout, in which case each packet result should have a value of {"x": "*"}. A timeout is declared if the ping "packet_interval" is reached, which defaults to 1000ms.
 
Second, I have implemented asynchronous reading using web sockets and faced a rate limit on several concurrent web socket connections. The error message said:
 'There are too many connections from this IP address. Try making multiple subscriptions on the same connection.’ 
Can you tell me please, if there is a limit on the number of subscriptions on the same connection?

I know you're working around this now, but for the benefit of others there is a concurrent connection limit of 16 (currently), and it's better to make multiple subscriptions on the same WebSocket. The reason for this is that otherwise we can (and have in the past) end up with many thousands of persistent TCP connections for only a small number of users. The value of 16 was chosen to allow reasonable concurrent processing on the client-side without overwhelming the servers with too many network connections.
 
To solve the issue in the second question, I implemented a polling mechanism that periodically checks if the measurement is finished. In order to not overload the API, I attempted to retrieve multiple measurement results in a single call using the following API endpoint: 
GET /api/v2/measurements/{pk}/latest/ 
The documentation of that API endpoint states: "Get the most recent results from one or more measurements”. However, I need help understanding how to specify multiple measurement IDs in this endpoint, because all options I tried failed with HTTP status code 405 (Method Not Allowed). Could you please show me the correct way of using this API endpoint?

The latest endpoint only supports a single measurement ID, so this is indeed the correct way to use it.

Regards,
Chris