Ответ на пост «Вопрос к лиге геймеров»3
Тут все пишут, что никакой зависимости нет. Это не совсем верно. Она есть, но обычно незначительная.
Давайте разберемся.
Пойдем с низов. Порты сетевых устройств обычно буферизируют пакеты и принимают и отправляют их пачками. Во-первых, так экономятся процессорные прерывания, во-вторых, это позволяет "прожевывать" всплески трафика (здесь мы говорим о масштабах в наносекунды). Гигабитный порт ожидаемо делает в 10 раз больше тактов приемов/отправки, чем 100 Мбитный. Поэтому даже на пустом канале пакет проведет в нем в ожидании в 10 раз меньше времени, чем на 100 Мбитном. Но! Здесь речь идет скорее о нано секундах.
Если ваш порт уже гигабитный (не поддерживает гигабит, а именно соединение использует гигабитный протокол на физическом уровне), но тариф предусматривает меньшую скорость, то провайдеру надо каким-то образом эту вашу скорость ограничивать.
Для этого есть два принципиально разных подхода: шейпинг и полисинг:
- При шейпинге просто отбрасывается весь трафик сверх определенного порога (мы остаемся на масштабах миллисекунд). Это создает потери пакетов и отправитель вынужден этот пакет пересылать (или иным образом обрабатывать ситуацию), а также снижать скорость отправки. На реакцию отправителя на потерю нужно время, что тоже добавляет задержку (от десятков до сотен уже миллисекунд).
- При полисинге дополнительный трафик будет ставиться в очередь и посылаться по мере высвобождения полагаемой вам полосы. Например, при 10 Мбит/с за 1 мс вы можете отправить 1250 байт. Если вы единовременно отправили три пакета по 1400 байт, то первый отправится сразу же, второй - с задержкой 1 мс, а третий - с задержкой в 3 мс. Я здесь сильно упрощаю модель, но для общего понимания принципа, думаю, этого достаточно.
А еще на определенных тарифах эти механизмы могут быть отключены в принципе: нет смысла шейпить ваш трафик, когда вам позволено работать на максимальной скорости порта.
Также отмечу, что 500 Мбит - часто тот же Гигабит, но с подстраховкой оператора, чтобы к ним не было претензий.
Далее нам надо понимать, что именно у вас за приложение и какие транспортные протоколы и как оно использует. Возможно, ему не интересно время доставки одного единичного пакета. Например, в протоколе tcp данные могут передаваться сегментами до 64 Кб, что соответствует примерно 45 сетевым пакетам. Соответственно, "пингом" в этом случае будет выступать время доставки всего сегмента вплоть до последнего пакета) с получением подтверждения о его получении. И не дай бог один из этих 45 пакетов потеряется.
Вывод: влияние тарифа на пинг есть. Но на уровне единичных пакетов речь будет идти скорее о долях миллисекунды. На уровне отклика в приложении, в зависимости от типа трафика, разница может быть в миллисекундах. Однако существенной разницы на масштабах 100 и более Мбит вы, скорее всего, не увидите.
Смена провайдера может поменять пинг значительно в любую сторону: во-первых, может использоваться разное оборудование с разными настройками и разными способами обработки трафика. Во-вторых, маршрут до серверов игры может быть другой, т.к. у провайдера другие стыки с другими операторами связи. Чем большее расстояние сигнал пройдет по кабелю и чем больше на этом маршруте будет узлов, а также чем сильнее на них перегрузка, тем больше будет пинг.
В целом, можно прикинуть минимально возможный теоритический пинг и сравнить его с текущим. По картам посмотрите расстояние от вас до серверов игры, умножьте на два и разделите на 200000 км/с (примерная скорость света в оптоволоконной среде). Так, от Москвы идо Нью-Йорка получится 7500 * 2 / 200000 = 75 мс. Если ваше текущее значение пинга значительно выше теоретического, то можно пытаться что-то поменять, иначе нет большого смысла.