Dato un singolo indirizzo IP pubblico (peer A) e un elenco di molti altri indirizzi IP pubblici (una combinazione di indirizzi IPv4 e IPv6), qual è il modo più semplice per abbinare il peer A l'IP indirizzi degli equivalenti n
senza che i peer eseguano manualmente il ping l'un l'altro per il benchmarking della latenza?WebRTC: corrispondenza tra pari più vicini
Penso che questo sia possibile utilizzando BGP con una serie di query complicate (e forse qualcosa che coinvolge OSPF), ma speravo che potesse esserci una soluzione o una libreria che avrebbe reso semplice la chiamata teorica funzionale di seguito .
// `peer` is a single IP address. `peer_list` is a list of IP addresses
// get the 5 nearest peers (ordered) to `peer` from `peer_list`
nearest_peers = get_nearest_ips(peer, peer_list, 5);
Devo solo utilizzare un'istanza locale del database di GeoIP MaxMind + Haversine/Vincenty, o è pratico da usare BGP attraverso una libreria (con una corretta caching ove necessario) per raggiungere questo obiettivo?
Sembra che questo tipo di codice possa esistere in un'implementazione di instradamento anycast open source, sebbene non sia stato possibile trovare nulla che si adatti a questo caso d'uso.
La soluzione o la libreria suggerita non devono funzionare su node.js - qualsiasi lingua va bene.
Presumo che l'elenco di IP siano indirizzi IP esterni. Vorrei utilizzare il database GeoIP di MaxMind per ottenere le coordinate di ogni IP e quindi utilizzare la formula di Haversine per determinare la posizione più breve. Probabilmente il collo di bottiglia sarebbe il tempo di risposta da MaxMind (Esempio <400 ms) ma ho anche scoperto che ti vendono il database GeoIP per ospitarlo nei locali, se necessario. https://www.maxmind.com/en/geoip2-databases – spicyramen
@spicyramen Sì, se non riesco a capire come farlo in BGP un db MaxMind locale è la mia alternativa di fallback per ora. –