Почему близ расположенные сервера больше времени отправляют запрос?
Имеется задача, найти VPS, от которого запрос должен быстрее других прийти до конечного сервера. Ранее считал, что чем ближе сервера друг к другу расположены, тем быстрее запрос дойдет до конечной точки. При этом узнал про traceroute и начал понимать, что это не так, либо же саму команду я не до конца понимаю. В итоге оказалось так, что сервер из города А (который находится рядом, скажем в 200км), может быть "медленнее" и его запрос идти дольше, чем от сервера В (который находится в 1000км от конечного сервера). При этом конфигурация серверов одна и та же, как и пропускная способность. В чем же заключается подвох и каким образом найти наиболее быстрый сервер?
Saboteur
@saboteur_kiev Куратор тега Компьютерные сети
software engineer
Разница в маршрутизации, а именно:
Количестве хопов (промежуточных устройств, через которые проходит пакет)
В типе устройств, которые выступают в качестве маршрутизаторов (их производительность, их загруженность)
В типе физической сети между хопами (оптика быстрее витой пары, витая пара быстрее коаксиала, коаксиал быстрее радиоэзернета, радиоэзернет может быть быстрее спутника и так далее).
В скорости пинга и надежности подключения - в tcp необходимо получить подтверждение о получении пакета, либо отправить запрос на повтор, и так для всех пакетов. Пакеты могут идти разными маршрутами, с разными задержками.
Поэтому близко расположенные сервера - это один датацентр, где все в локальной сети.
А между двумя соседними зданиями уже может оказаться старлинк.
Огромное спасибо, за столь расписанный ответ. А если между маршрутами идут * * *, это говорит о том, что маршрутизатор не отвечает? (где-то вычитал, что это якобы 3 секундная задержка, но понимаю что это не так)
Написано
Saboteur
@saboteur_kiev Куратор тега Компьютерные сети
Если вы говорите про результат команды traceroute, то она просто старается "пропинговать" каждый промежуточный маршрут.
Для эхо реквестов (или пингов), часто используется протокол ICMP (в виндовс), в линукс используются и другие.
На некоторых устройствах ответ на эхо-реквесты может быть отключен для снижения нагрузки или по другим причинам.
В виндовс в настройках сети тоже можно отключить эхо реквесты, и ваш комп не будет "пинговаться".
При этом обычные tcp/udp пакеты будут ходить нормально.
Дополню ответ Saboteur:
самое гадкое в этой маршрутизации - то, что она динамическая, то есть не постоянная. Понятно, что если вы найдёте VPS в том же датацентре, что и требуемый сервер, то между ними практически всегда будет самый короткий путь. А вот если это будет ДЦ даже на соседней улице - сегодня трафик может идти по одному (кратчайшему) маршруту, а завтра - через половину земного шара. И ничего с этим на данном масштабе вы, увы, не сделаете.
А если traceroute получается такого вида
2 *
3 *
4 *
5 *.183.25.90 (*.183.25.90) [BA93221] 33.795 ms
5 *.80.122.15 (*.80.122.15) [BA23335] 12.233 ms
То примерное время отправки запроса будет 33.795 + 12.233 (Играют ли роль * в данном моменте?)
Написано
Saboteur
@saboteur_kiev Куратор тега Компьютерные сети
нет, в данном случае трейсроут индивидуально пытается пропинговать 5-й хоп, а он сам по себе может либо отвечать на эхо реквесты с задержкой, либо маршрут к *.183.25.90 может строиться иначе, чем к *.80.122.15
суммировать не нужно.
Эта информация вообще не слишком полезна для пользователя.
Время отправки нужно мерять пингом непосредственно к вашему серверу, а не к промежуточным хопам.