Задержка пакетов в сети как исправить

The latency of a network connection represents the amount of time required for data to travel between the sender and receiver. While all computer networks inherently possess some form of latency, the amount varies and can suddenly increase for various reasons. People perceive these unexpected time delays as «lag.»

High latency can also cause high delays. For example, your video game might experience high latency, which causes the game to freeze at times and not deliver a live update of the other players. Fewer delays mean that the connection is experiencing lower latency.

Network lag happens for a few reasons, namely distance and congestion. In some cases, you might be able to fix internet lag by changing how your device interacts with the network.

David Samuel Robbins / Getty Images

Latency and Bandwidth

Latency and bandwidth are closely related but are two separate terms. To understand what causes high latency, it’s important to differentiate it from high bandwidth.

If your internet connection were illustrated as a pipe carrying data, bandwidth would refer to the physical size of the pipe. A small pipe (low bandwidth) can’t hold much data at once, while a thick one (high bandwidth) can transmit more data at a time. Bandwidth is often measured in Mbps.

Latency is a delay, measured in ms. It’s the time it takes for information to move from one end of the pipe to the other. It’s also called the ping rate.

The Speed of Light on a Computer Network

No network traffic can travel faster than the speed of light. On a home or local area network, the distance between devices is so small that light speed doesn’t matter. For internet connections, however, it becomes a factor.

Under perfect conditions, light requires roughly 5 ms to travel 1,000 miles (about 1,600 kilometers). Furthermore, most long-distance internet traffic travels over cables, which can’t carry signals as fast as light due to a principle of physics called refraction. Data over a fiber optic cable, for example, requires at least 7.5 ms to travel 1,000 miles.

Typical Internet Connection Latencies

Besides the limits of physics, additional network latency is caused when traffic is routed through servers and other backbone devices. The typical latency of an internet connection also varies depending on its type.

The study Measuring Broadband America (posted in late 2018) reported these typical internet connection latencies for common forms of U.S. broadband service:

  • Fiber optic: 12-20 ms
  • Cable internet: 15-34 ms
  • DSL: 25-80 ms
  • Satellite internet: 594-612 ms

How to Fix Latency

Latency can fluctuate in small amounts from one minute to the next, but the additional lag from small increases can be noticeable. The following are common reasons for internet lag, some of which are out of your control:

  1. Replace or add a router. Any router eventually bogs down if too many clients use it at the same time. Network contention among multiple clients means that those clients sometimes wait for each other’s requests to be processed, causing lag. To fix this, replace the router with a more powerful model, or add another router to the network to alleviate this problem.

    Similarly, network contention occurs on a residence’s connection to the internet provider if saturated with traffic.

  2. Avoid simultaneous downloads. Depending on the speed of your connection, avoid too many simultaneous downloads and online sessions to minimize lag.

  3. Don’t use too many applications at once. PCs and other client devices become a source of network lag if unable to process network data quickly. While modern computers are sufficiently powerful in most situations, devices can slow down if too many applications run simultaneously. If you think you have too many programs open, close a few.

    Running applications that don’t generate network traffic can introduce lag. For example, a misbehaving program can consume all the available CPU, which delays the computer from processing network traffic for other applications. If a program doesn’t respond, force it to close.

  4. Scan and remove malware. A network worm hijacks a computer and its network interface, which can cause it to perform sluggishly, similar to being overloaded. Running antivirus software on devices connected to the network detects and removes these worms.

  5. Use a wired connection instead of wireless. Online gamers, as an example, often prefer to run their devices over wired Ethernet instead of Wi-Fi because Ethernet supports lower latencies. While the savings is typically only a few milliseconds in practice, wired connections also avoid the risk of interference that can result in significant lag.

  6. Utilize local cache. One way to reduce latency is to utilize caching in your browser, which is a way for the program to store recently used files so that you can access those files locally the next time you request files from that site (no download is necessary).

    Most browsers cache files by default, but if you delete the browser cache too often, it takes longer to load the same pages you recently visited.

Other Causes of Latency Issues

Some latency issues can be fixed, but the following are latency issues that aren’t usually in your control.

Traffic Load

Spikes in internet use during peak usage times of day often cause lag. The nature of this lag varies by the service provider and the geographic location. Other than moving locations or changing internet service, an individual user can’t avoid this kind of lag.

Online Application Load

Online multiplayer games, websites, and other client-server network applications use shared internet servers. If these servers become overloaded with activity, the clients experience lag.

Wireless Interference

Satellite, fixed wireless broadband, and other wireless internet connections are susceptible to signal interference from the rain. Wireless interference causes network data to be corrupted in transit, causing lag from re-transmission delays.

Lag Switches

Some people who play online games install a device called a lag switch on their local network. A lag switch intercepts network signals and introduces delays in the flow of data back to other gamers connected to a live session. You can do little to solve this kind of lag problem other than avoiding playing with those who use lag switches.

How Much Lag Is Too Much?

The impact of lag depends on what you’re doing on the network and, to some degree, the level of network performance that you’ve grown accustomed to.

Users of ​satellite internet expect long latencies and tend not to notice a temporary lag of an additional 50 or 100 ms. Dedicated online gamers, on the other hand, prefer their network connection to run with less than 50 ms of latency and quickly notice any lag above that level.

In general, online applications perform best when network latency stays below 100 ms; any additional lag is noticeable to users.

Thanks for letting us know!

Get the Latest Tech News Delivered Every Day

Subscribe

Лаги, джиттер и потеря пакетов: откуда берутся проблемы с неткодом и как их решать

Время на прочтение
11 мин

Количество просмотров 44K

Если вы когда-либо играли в онлайн-игры, то наверняка знаете о лагах не понаслышке. Пропущенный выстрел, который должен был попасть в цель; мяч, резко меняющий направление прямо в воздухе; вы вдруг снова оказываетесь на несколько шагов назад в том месте, где находились секундой ранее. В этом нет ничего сверхъестественного: это обычные артефакты систем, обеспечивающих совместную игру с людьми из других стран почти так же эффективно, как и с соседом по комнате. По крайней мере, большую часть времени.

В этой статье речь пойдет о самых базовых вещах, почему вообще возникает сетевая задержка, с какими еще проблемами неткода можно столкнуться, а также с тем, что можно сделать со своей стороны, чтобы улучшить ситуацию. Также разберем остальную часть конвейера между ПК и игровым сервером, который может повлиять на получение лучшего игрового опыта без задержек и прочих неприятностей.

Итак, почему вообще возникают лаги? Почему в 2021 году это все еще является проблемой — с мощностью современных компьютеров, повсеместным использованием широкополосного Интернета и спустя десятилетия попыток разработчиков решить эту проблему?

С точки зрения разработчиков, реализация даже базового мультиплеерного режима — задача непростая. Необходимо получать данные от множества игроков одновременно, неоднократно — тысячи раз в секунду — передавать эту информацию на некий центральный сервер, а затем возвращать обработанный результат на ПК каждого игрока.

Состояние игры должно быть идеально синхронизировано с минимальной задержкой независимо от того, имеете ли вы дело с игроками в одной локальной сети или с разных континентов. Поэтому вам придется придумать способ компенсации задержки игроков. При этом лучше избегать необходимости ожидания игроками, пока сервер сообщит им результаты их же собственных действий, ведь динамике это на пользу не пойдет. Для этого вам, вероятно, потребуется показать эффекты ввода каждого игрока сразу же, а затем уже сглаживать любые различия между ПК игрока и сервером таким образом, чтобы это было внешне неочевидно.

Мы не можем знать, что делают другие игроки, пока сервер не сообщит нам об этом. Поэтому мы вынуждены отображать действия других игроков в матче такими, какими они были в прошлом. Также достаточно большую проблему может составить читерство, поэтому необходимо убедиться, что игроки имеют ограниченный доступ к данным с сервера, не позволяющий компьютеру игрока принимать решения о том, что на самом деле произошло в игре — например, насколько успешен был выстрел или какое количество здоровья осталось у игрока.

С двумя-то игроками это реализовать достаточно сложно, а теперь представьте, каково организовать подобное для игры с 10, 20 или даже сотнями игроков на одном сервере. При разработке игры жанра battle royale со всеми ее особенностями реализация хорошего мультиплеера является одной из самых сложных частей разработки даже для опытной команды, поэтому неудивительно, что временами в игре могут возникать сетевые проблемы. Конечно, это не делает такие сбои менее раздражающими, и чем быстрее скорость и выше конкуренция в игре, тем больше такой опыт может помешать вам получить от нее удовольствие. 

Помимо лагов и сбоев, могут возникнуть и другие проблемы с сетью: rubber banding, когда игровой мир возвращает вас туда, где вы были несколько секунд назад; получение урона сразу после того, как вы оказались за укрытием; промахи ваших собственных выстрелов, а то и вовсе потеря связи с игрой.

Так что же вызывает все эти проблемы?

Обычно в играх можно столкнуться с тремя сетевыми явлениями, каждое из которых по-разному влияет на пакеты данных с вашими вводами и игровые состояния, которые передаются между вашим компьютером и сервером.

Первое из них — задержка. Она возникает тогда, когда пакеты с данными слишком долго передаются серверу и затем возвращаются к игроку. Проще говоря, задержка — это скорость реакции вашего интернет-соединения, то есть время, необходимое для передачи данных с вашего устройства на сервер. Важно отметить, что задержка зависит от качества вашего интернет-соединения, а не от скорости.

Часто задержку путают с лагами, и хотя они не означают одно и то же, но имеют причинно-следственную связь. Лаг — это задержка прибытия пакета от источника к месту назначения или, с точки зрения геймплея, задержка между нажатием кнопки и ответом игры, выведенным на экран. То есть, по сути совокупность вообще всех явлений, которые происходят между этими двумя событиями.

Джиттер — это колебания задержки, означающие, что пакеты отправляются и принимаются с разной скоростью. Это похоже на плохой frame pacing: то ваш пинг меняется с 20 миллисекунд до секунды, то с секунды до 90 миллисекунд, а затем возвращается к 30 миллисекундам, которые были когда-то уже давно.

Потеря пакетов — это когда пакеты вообще не достигают места назначения. Она вызывает необходимость повторной отправки одних и тех же данных и и потенциально — странное поведение игры.

Конечно, наличие даже одной из этих проблем может довольно сильно раздражать. С точки зрения игрока, если вы не чувствуете, что контролируете игру, если ваша производительность страдает от проблем с сетью, велика вероятность, что вы просто закроете игру и больше в нее не зайдете. Для разработчиков и издателей это будет означать, что аудитория станет меньше, а если у вас free-to-play тайтл, это поставит под угрозу само его существование. Особенно важно это для соревновательных игр, поскольку любые повторяющиеся проблемы могут заставить игроков и организаторов турниров отказаться от их проведения до тех пор, пока проблемы не разрешатся.

Так почему же возникают подобные сбои?

Существуют три основных типа проблем с соединением: 

  • проблемы «первой мили», вызванные домашней сетью вашего ПК и подключением к Интернету;

  • проблемы «средней мили», обусловленные перемещением данных по маршруту между вашим интернет-провайдером и игровым сервером;

  • проблемы «последней мили», связанные непосредственно с игровым сервером. 

Обычно первая и последняя миля вызывают наименьшую задержку — в нашем примере это около одной миллисекунды. Средняя же миля имеет наибольшую задержку, ведь именно на ней пакеты преодолевают все географическое расстояние между вашим компьютером и сервером.

Начнем с того, что может улучшить со своей стороны сам игрок, — с проблем, связанных с ПК и домашней сетью

Точно так же, как производительность игры ограничивается компонентами ПК, такими как центральный процессор или видеокарта, сетевое соединение тоже зависит от многих элементов. На то, как будут отправляться и приниматься пакеты данных, могут влиять настройки игры, сетевое оборудование вашего ПК и его драйверы, ваша операционная система и ее настройки. Но есть и физические аспекты — например, то, как ваш компьютер подключен к роутеру, какой у вас роутер и как он настроен — и, конечно же, подключение к Интернету, предоставляемое провайдером.

Пожалуй, наиболее важным для игр является переключение с беспроводного на проводной Интернет, что может значительно снизить задержки, джиттер и потерю пакетов. Помимо этого, возможно, стоит изучить роутеры с более гибко настраиваемой прошивкой — например, отдать предпочтение роутерам OpenWRT или pfSense — или просто повысить скорость вашего интернет-соединения — особенно в домашних условиях, где оно используется несколькими людьми, которые могут смотреть потоковые видео, загружать файлы из Интернета и выполнять другие задачи с высокой пропускной способностью одновременно. В идеале роутер должен иметь возможность отдавать приоритет критическим с точки зрения задачам, таким как онлайн-игры и видеоконференции, по сравнению с такими вещами, как воспроизведение видео с YouTube. 

Наконец, полезно будет убедиться, что драйвера обновлены, вы отключили все приложения, которые используют значительный объем ЦП или пропускной способности сети в фоновом режиме, а также что сетевые настройки игры установлены правильно.

Теперь поговорим о средней миле, где у вас нет особого контроля над тем, что происходит, ведь пакет данных, отправляемый вашим компьютером, выходит в более широкий Интернет.

В первую очередь ваш пакет должен обработать местный интернет-провайдер. Но совсем скоро он перейдет к оптоволоконным магистралям, которые соединяют города и страны друг с другом. Здесь маршрут, по которому идет пакет, не обязательно окажется самым быстрым, и нет никакой гарантии, что пакет вообще доберется до конечного пункта назначения. Помните, что предшественник Интернета был разработан министерством обороны США для работы в условиях ядерной войны. Таким образом, доставляемость для него важнее скорости.

Сами маршруты со временем могут перенасыщаться и повреждаться, а потому изменяться. Так, вы можете обнаружить, что ваше соединение с определенным сервером может оказаться быстрым и надежным в один день, но на следующий уже совсем никуда не годится.

Так что же могут сделать разработчики игр для оптимизации на этом участке? Географическое расстояние критически влияет на пинг, поэтому можно открывать новые игровые серверы, которые находились бы в недостаточно обслуживаемых регионах базы игроков. Это уменьшит задержку для этих игроков и вероятность того, что какое-то соединение между игроком и сервером замедлится или полностью выйдет из строя. Но, конечно, запускать серверы повсеместно может оказаться непросто, особенно для небольшой компании с ограниченными ресурсами — да и это не решит всех проблем. 

Другая идея состоит в том, чтобы вообще не полагаться на общедоступный Интернет для передачи пакетов от игрока к серверу — вместо этого пакеты могут передаваться через частные оптоволоконные маршруты, которые арендуют разработчики или их партнеры. Это дорого, но при использовании таких выделенных полос вы будете меньше зависеть от периодов занятости в вечернее время, когда возможны более высокие пинги и, как следствие, снижение надежности сетевого соединения.

Такой контроль над маршрутизацией также открывает некоторые интересные возможности для киберспорта, где отборочные и другие важные матчи проводятся онлайн. Можно настроить маршрутизацию и выбрать расположение сервера так, чтобы у обеих команд был одинаковый пинг, даже если одна из них находится географически ближе к серверу, и тем самым обеспечить участникам более справедливую игру.

Наконец, перейдем к последней миле в цепочке — игровым серверам

До сих пор мы предполагали, что имеем дело с игроками, подключенными к одному выделенному серверу для проведения матча, поскольку часто это обеспечивает наилучший опыт. Так разработчики игр или их партнеры могут гарантировать, что на каждом сервере достаточно оборудования и обеспечивается самое быстрое подключение к Интернету, но есть и другие варианты.

Client hosting — это когда ПК одного из игроков сам по себе выступает в качестве сервера. Это хороший способ для разработчиков игр минимизировать затраты, но опыт каждого участника матча будет зависеть от качества соединения игрока-хоста. Таким образом, если такие игроки подключаются к сети через Wi-Fi или вовсе испытывают проблемы с подключением, другие игроки тоже столкнутся с лагами, джиттером и потерей пакетов.

Назначенный хост также имеет нулевую задержку для сервера, что дает ему огромное конкурентное преимущество перед остальными и, конечно, не является идеалом для соревновательных игр. При этом, если он покидает игру, необходимо найти другого хоста, что прерывает игру для всех участников на несколько секунд, пока не поизойдет так называемая миграция хоста.

Другой вариант — одноранговая (peer-to-peer) сеть, где игроки напрямую подключается друг к другу. Как правило, в таком случае тоже существует некий хост, который номинально отвечает за обработку новых соединений, поэтому проблема с миграцией хоста в данном случае сохраняется.

При таком способе подключения два игрока в одном регионе быстро увидят действия своих оппонентов, в то время как те, кто находятся далеко друг от друга, столкнутся со значительными задержками между действиями и выводом их результатов на экран — или, возможно, будут лучше стрелять, если это вы играете с высоким пингом. В любом случае, вам придется подстраиваться под каждого оппонента индивидуально, что может быть довольно сложно. Поэтому не так уж часто можно увидеть подобную серверную архитектуру вне файтингов «один на один» — хотя исключения, подобные Brawlhalla, конечно, существуют.

Помимо различных архитектур серверов, разработчикам игр необходимо оптимизировать пакеты, которые отправляются каждому игроку и обратно, и выбирать, как часто будет обновляться игровой мир. Чем чаще это происходит, чем выше частота тиков, тем быстрее должна выполняться обработка состояния игры на ПК игрока и на сервере, но в целом игра при этом становится более отзывчивой.

Некоторые игры работают с переменным весом тиков — например, королевские битвы, в которых скорость тиков повышается по мере выбывания игроков, или Counter-Strike, где сторонние и киберспортивные матчи проводятся со скоростью 128 тиков в секунду по сравнению со встроенным в игру матчмейкингом, работающим на 64 тиках.

Матчмейкинг — наиболее важная часть мультиплеера. Чтобы свести игроков в одном матче, вам, как разработчику игры, понадобится учитывать такие факторы, как пинг, уровень навыков, количество игроков в группе и выбранные каждым игроком карты и режимы. Каждый новый фактор существенно уменьшает размер пула для подбора игроков — что, в свою очередь, увеличивает время ожидания игры в среднем.

Даже небольшие инженерные улучшения или улучшенная маршрутизация в состоянии помочь с матчмейкингом, если это увеличит пул игроков — и, следовательно, позволит улучшить игровой опыт, не увеличивая время ожидания.

Наконец, последнее — методы борьбы с лагами, которые разработчики могут реализовать со своей стороны в коде. 

Так называемое предсказание на стороне клиента часто используют в шутерах от первого лица. Его можно разделить на предсказание ввода и расчет траектории (dead reckoning): первое будет скрывать задержку действий самого игрока, в то время как второй — других игроков. 

Предсказание ввода подчиняется следующей последовательности: клиент генерирует команду игрока, которая передается на сервер, где происходит вычисление следующего состояния игры, после чего оно отправляется обратно всем клиентам, и каждый из них отображает сцену на своем устройстве. Но все это время игроку тоже нужно что-то показывать, поэтому суть метода состоит в выполнении перемещения клиента локально, просто предполагая, что сервер примет команду. Недостатком его является то, что, если ответ сервера не будет соответствовать прогнозу клиента, возникнет резкое заметное изменение положения аватара игрока на экране. 

Dead reckoning — это, по сути, алгоритм оценки положения объекта в виртуальном мире на основе его предыдущего положения, направления движения, скорости, ускорения и других параметров. Получив первый блок данных протокола состояния (protocol data unit, PDU) для объекта (например, персонажа другого игрока), каждый клиент начинает перемещение этого объекта, применяя согласованный алгоритм dead reckoning. Его движение обновляется при получении последующих PDU. Если для пакетов, несущих PDU, возникнет увеличенная задержка или вовсе их потеря, каждая копия виртуального мира продолжит показывать движение объектов в соответствии с алгоритмом до тех пор, пока не получит следующее обновление. Кроме того, при несоответствиях между статусом сервера и предсказанным клиентом некоторые игры могут сделать переход к новому статусу менее резким, используя алгоритмы сглаживания.

В дополнение к предсказанию клиента сервер может прибегать к методу компенсации сетевой задержки, чтобы правильно объединить виртуальные реальности, которые из-за проблем с неткодом испытывают рассинхронизацию. В таком случае сервер хранит историю последних позиций игроков (так, серверы, на которых работает движок Valve Source, сохраняют позиции игроков в течение 1 секунды), и когда ему нужно вычислить новое состояние, он сначала оценивает момент, когда действие было выполнено в клиентской версии состояния игрового мира. Другими словами, сервер «перематывает время» в соответствии с задержкой конкретного клиента, вычисляя выполнение введенной им команды (например, удалось ли выстрелу игрока поразить цель). Для этого используется следующая формула: 

Время выполнения команды = Текущее время сервера — Задержка пакета — Интерполяция представления клиента

Иллюстрация выше представляет собой пример скриншота, сделанного на сервере сразу после того, как он подтвердил обращение. Красный хитбокс показывает позицию цели на клиенте, как это было некоторое время назад. Пока команда игрока (то есть, выстрел по цели) добиралась до сервера, цель продолжала двигаться влево. После того, как команда прибыла на сервер, для расчета факта попадания сервер восстанавливает позицию цели (синий хитбокс) на основе предполагаемого времени выполнения команды. Так сервер отслеживает траекторию выстрела и подтверждает или не подтверждает попадание.

Впрочем, иногда такой алгоритм приводит к ошибкам попадания, когда цель уже скрылась за укрытием. Эту проблему можно было бы решить, если бы клиент мог послать сообщение «попадание» вместо сообщения «выстрел». Однако серверы не могут разрешить клиентам сообщать о попаданиях по соображениям безопасности: некоторые клиенты могут этим воспользоваться в собственных целях и прибегнуть к читерству.


Мы рассмотрели основные причины различных задержек и других нежелательных аспектов производительности сети. Как у игрока, у вас есть немало опций, которые могут значительно улучшить качество вашего игрового опыта. Надежное сетевое соединение может сделать игру намного стабильнее и интереснее. Также мы рассмотрели варианты, что со своей стороны могут сделать разработчики и как они могут повлиять на игровой процесс.

Для получения дополнительной информации о лагах и о том, что вы можете с ними сделать, можно ознакомиться с каналом Battle(non)sense: там разбираются тесты сетевых проблем в разных играх и то, как разные технологии на них влияют. Прилагаем также и другие ссылки на видео и статьи о сетевом коде ниже:

  • Explaining how fighting games use delay-based and rollback netcode

  • Netcode 101 — What You Need To Know

  • Netcode for Game Developers

Сетевая задержка — это задержка при передаче запросов или данных от источника к месту назначения в сетевой экосистеме. Давайте посмотрим, как можно устранить задержку в сети.

Любое действие, требующее использования сети, например открытие веб-страницы, переход по ссылке или открытие приложения и игра в онлайн-игру, называется действием. Активность пользователя — это запрос, а время отклика веб-приложения — это время, необходимое для ответа на этот запрос.

Эта временная задержка также включает время, необходимое серверу для выполнения запроса. В результате он определяется как поездка в оба конца – время, необходимое для записи, обработки и последующего получения запроса пользователем, где он декодируется.

Термин «малая задержка» относится к относительно коротким задержкам передачи данных. С другой стороны, длительные задержки или чрезмерная задержка нежелательны, поскольку они ухудшают работу пользователя.

Как исправить задержку сети?

В Интернете доступно множество инструментов и программного обеспечения для анализа и устранения неполадок в сети. Некоторые из них платные, а некоторые бесплатные. Однако есть инструмент под названием Wireshark, приложение с открытым исходным кодом и лицензией GPL, используемое для захвата пакетов данных в режиме реального времени. Wireshark — самый популярный и часто используемый в мире анализатор сетевых протоколов.

Это поможет вам перехватывать сетевые пакеты и отображать их в деталях. Вы можете использовать эти пакеты для анализа в реальном времени или в автономном режиме после того, как он поймает сетевые пакеты. Это приложение позволяет вам исследовать сетевой трафик под микроскопом, фильтруя и углубляясь в него, чтобы найти источник проблем, помогая с сетевым анализом и, в конечном итоге, с сетевой безопасностью.

Что вызывает задержку сети?

Несколько основных причин медленного подключения к сети, в том числе:

  • Высокая задержка
  • Зависимости приложений
  • Потеря пакетов
  • Перехватывающие устройства
  • Неэффективные размеры окон

И в этой статье мы рассмотрим каждую причину задержки в сети и способы решения проблем с Wireshark.

Проверка с помощью Wireshark

Высокая задержка

Под высокой задержкой понимается время, необходимое для передачи данных от одной конечной точки к другой. Влияние высокой задержки на сетевые коммуникации огромно. На приведенной ниже диаграмме в качестве примера показано время приема-передачи при загрузке файла по пути с высокой задержкой. Время задержки приема-передачи часто может превышать одну секунду, что неприемлемо.

  • Зайдите в статистику Wireshark.
  • Выберите параметр График потока TCP.
  • Выберите график времени в оба конца, чтобы узнать, сколько времени требуется для загрузки файла.

Wireshark используется для расчета времени приема-передачи на пути, чтобы определить, является ли это причиной некорректной работы сети связи протокола управления передачей (TCP). TCP используется в различных приложениях, включая онлайн-серфинг, передачу данных, протокол передачи файлов и многие другие. Во многих случаях операционную систему можно настроить для более эффективной работы на каналах с высокой задержкой, особенно когда хосты используют Windows XP.

Зависимости приложений

Некоторые приложения зависят от других приложений, процессов или обмена данными с хостом. Предположим, ваше приложение базы данных, например, полагается на подключение к другим серверам для получения элементов базы данных. В этом случае вялая производительность на этих других серверах может ухудшить время загрузки локального приложения.

Возьмем, к примеру, опыт просмотра веб-страниц, когда целевой сервер ссылается на несколько других веб-сайтов. Например, чтобы загрузить главную страницу сайта, www.espn.com, вы должны сначала посетить 16 хостов, которые предоставляют рекламу и контент для главной страницы www.espn.com.

На приведенном выше рисунке в окне «Распределение нагрузки HTTP» в Wireshark отображается список всех серверов, используемых домашней страницей www.espn.com.

Потеря пакетов

Одной из наиболее распространенных проблем, с которыми я сталкиваюсь в сетях, является потеря пакетов. Потеря пакетов происходит, когда пакеты данных неправильно доставляются от отправителя к получателю через Интернет. Когда пользователь посещает веб-сайт и начинает загрузку элементов сайта, пропущенные пакеты вызывают повторную передачу, увеличивая вероятность загрузки веб-файлов и замедляя общий процесс загрузки.

Кроме того, когда приложение использует TCP, отсутствие пакетов оказывает особенно негативное влияние. Когда соединение TCP обнаруживает потерянный пакет, скорость передачи данных автоматически снижается, чтобы компенсировать проблемы с сетью.

Скорость постепенно улучшается до более приемлемого уровня, пока следующий пакет не будет отброшен, что приведет к значительному снижению пропускной способности данных. Загрузка больших файлов, которая в противном случае должна легко проходить по сети, значительно страдает от потери пакетов.

Как это выглядит, когда пакет потерян? Это спорно. Потеря пакетов может принимать две формы, если программа работает через TCP. В одном примере приемник отслеживает пакеты на основе их порядковых номеров и обнаруживает отсутствующий пакет. Клиент делает три запроса на отсутствующий пакет (двойные подтверждения), что приводит к повторной отправке. Когда отправитель замечает, что получатель не подтвердил получение пакета данных, время ожидания отправителя истекает, и он повторно передает пакет данных.

Wireshark указывает, что произошла перегрузка сети, а множественные подтверждения вызывают повторную передачу проблемного трафика путем его цветового кодирования. Большое количество повторяющихся подтверждений указывает на потерю пакетов и значительную задержку в сети.

Для повышения скорости сети очень важно определить точное место потери пакетов. Когда происходит потеря пакетов, мы перемещаем Wireshark по пути до тех пор, пока потеря пакетов не перестанет быть видимой. В настоящее время мы находимся «вверх по течению» от точки сброса пакетов, поэтому знаем, на чем сосредоточить усилия по отладке.

Перехватывающие устройства

Сетевые трафик-полицейские — это соединяющие устройства, которые выбирают переадресацию, например коммутаторы, маршрутизаторы и брандмауэры. Когда происходит потеря пакетов, эти устройства должны быть исследованы как вероятная причина.

Задержка может быть добавлена ​​к пути этими связывающими устройствами. Например, если включена приоритизация трафика, мы можем наблюдать дополнительную задержку, внедряемую в поток с низким уровнем приоритета.

Неэффективные размеры окон

Помимо операционной системы Microsoft, в сетях TCP/IP есть и другие «окна».

  • Раздвижное окно
  • Окно приемника
  • Окно управления перегрузкой

Эти окна вместе составляют производительность сети на основе TCP. Давайте начнем с определения каждого из этих окон и их влияния на пропускную способность сети.

Раздвижное окно

По мере подтверждения данных скользящее окно используется для широковещательной передачи следующих сегментов TCP по сети. Отправитель получает подтверждения на переданные фрагменты данных, скользящее окно расширяется. Пока в сети нет потерянных передач, можно передавать большие объемы данных. Когда пакет потерян, скользящее окно сжимается, потому что сеть не может справиться с возросшим объемом данных на линии.

Окно приемника

Окно получателя стека TCP представляет собой буферное пространство. Когда данные получены, они сохраняются в этом буферном пространстве до тех пор, пока приложение не заберет их. Окно получателя заполняется, когда приложение не поспевает за скоростью приема, что в конечном итоге приводит к сценарию «нулевого окна». Вся передача данных на хост должна быть остановлена, когда получатель объявляет о состоянии нулевого окна. Пропускная способность падает до нуля. Метод, известный как масштабирование окна (RFC 1323), позволяет хосту увеличить размер окна получателя и снизить вероятность сценария с нулевым окном.

На приведенном выше рисунке показана 32-секундная задержка сетевых соединений из-за сценария с нулевым окном.

Окно перегрузки

Окно перегрузки определяет максимальный объем данных, который может обработать сеть. На эту цифру влияют скорость передачи пакетов отправителя, скорость потери пакетов в сети и размер окна получателя. Окно перегрузки неуклонно увеличивается во время исправной сетевой связи, пока передача не будет завершена или не достигнет «потолка», установленного работоспособностью сети. Возможности передачи отправителя или размер окна получателя. Каждое новое соединение запускает процедуру согласования размера окна заново.

Советы по здоровой сети

  • Узнайте, как использовать Wireshark в качестве задачи быстрого реагирования, чтобы быстро и эффективно обнаружить источник низкой производительности.
  • Определите источник задержки сетевого пути и, если возможно, уменьшите ее до приемлемого уровня.
  • Найдите и устраните источник потери пакетов.
  • Изучите размер окна передачи данных и по возможности уменьшите его.
  • Изучите производительность перехватывающих устройств, чтобы увидеть, добавляют ли они задержку или отбрасывают пакеты.
  • Оптимизируйте приложения, чтобы они могли доставлять большие объемы данных и, если возможно, извлекать данные из окна получателя.

Подведение итогов 👨‍🏫

Мы рассмотрели основные причины проблем с производительностью сети, но один фактор, который нельзя упускать, — непонимание поведения сетевых коммуникаций. Wireshark обеспечивает визуализацию сети так же, как рентген, а компьютерная томография обеспечивает визуализацию человеческого тела для точной и быстрой диагностики. Этот инструмент стал жизненно важным инструментом для обнаружения и диагностики сетевых проблем.

Теперь вы должны проверить и устранить производительность сети с помощью нескольких фильтров и инструментов, используя Wireshark. 👍

Потеря пакета происходит, когда ваше сетевое соединение теряет информацию во время передачи. Это может заставить ваше сетевое соединение казаться медленнее, чем должно быть, и снижает надежность сетевого взаимодействия как с локальными, так и с удаленными устройствами. Остановка потери пакетов должна быть на вершине списка для всех, кто хочет улучшить проблемную сеть.

Что такое потеря пакетов?

Хотя проточная вода часто используется в качестве аналогии для сетевого трафика, информация не передается по сети в виде непрерывного потока. Скорее, он отправляется в виде серии отдельных блоков, называемых пакетами . Эти блоки похожи на отдельные страницы в книге. Вместе они имеют некоторый смысл, но только когда они связаны с другими страницами в правильном порядке, они создают единое целое. Когда ваше сетевое соединение теряет пакеты, полная книга не может быть построена. Пакеты также могут доставляться неполными, поврежденными или иными дефектами, что делает их бесполезными. Решением этой проблемы обычно является повторная отправка потерянного пакета.

В большинстве сетей время от времени наблюдается очень низкий уровень потери пакетов. Превращения сетевых соединений таковы, что время от времени пакет отбрасывается, что неизбежно. Тем не менее, в правильно функционирующей сети потеря пакетов происходит достаточно редко, что не влияет на эффективность сетевого подключения.

Если вы видите более высокие уровни потери пакетов в вашей сети, вам нужно предпринять шаги, чтобы это исправить. Возвращаясь к нашей аналогии с водой, значительная потеря пакетов напоминает плохо протекающую трубу. Это должно быть исправлено, прежде чем любые другие улучшения могут быть сделаны.

Что вызывает потерю пакетов в вашей сети

Потеря пакета происходит не только по одной причине. Диагностика причины потери пакетов в вашей сети покажет вам, что вам нужно исправить.

Mint Images / Getty Images
  • Пропускная способность сети и перегрузка . Основной причиной потери пакетов является недостаточная пропускная способность сети для требуемого соединения. Это происходит, когда слишком много устройств пытаются установить связь в одной сети.
  • Недостаточно мощное оборудование. Любое оборудование в сети, которое маршрутизирует пакеты, может привести к потере пакетов. Маршрутизаторы, коммутаторы, брандмауэры и другие аппаратные устройства являются наиболее уязвимыми. Если они не могут «идти в ногу» с трафиком, который вы передаете через них, они будут отбрасывать пакеты. Думайте об этом как официанте с полными руками: если вы попросите их взять другую тарелку, они, вероятно, уронят одну или несколько других тарелок.
  • Поврежденные кабели. Потеря пакетов может произойти на уровне 1, физическом сетевом уровне. Если ваши кабели Ethernet повреждены, неправильно подключены или слишком медленны для обработки сетевого трафика, они будут «пропускать» пакеты.
  • Программные ошибки: ни одно программное обеспечение не является безупречным. Микропрограмма вашего сетевого оборудования или программного обеспечения вашего компьютера может содержать ошибки, которые могут привести к потере пакетов. В этом случае потребитель мало что может сделать. Вы можете попытаться решить проблему самостоятельно, но часто единственным способом решения проблемы является исправление микропрограммы от поставщика, поставляющего оборудование. Обязательно сообщайте о предполагаемых ошибках, чтобы найти поставщиков, которые помогут решить проблему.

Обнаружение потери пакета

Существует ряд программных приложений, которые могут обнаружить потерю пакетов в сети. Они каким-то образом «вынюхивают» пакеты, анализируя время их поездки или просматривая пакеты. Самый простой способ выяснить, существует ли потеря пакетов, — это пропинговать устройства в вашей сети.

Майк Пауэлл / Getty Images
  • В Windows откройте окно командной строки и используйте команду ping для настройки вашего маршрутизатора. Например, если локальный IP-адрес вашего маршрутизатора 127.0.0.1, следующая команда будет проверять связь с маршрутизатором:
    ping 127.0.0.1 -t

    В macOS или Linux откройте окно терминала и используйте следующую команду:

    ping 127.0.0.1

    Единственное отличие — это отсутствие -t в конце команды.

  • После того, как команда ping обработает достаточное количество пакетов (не менее 10), нажмите Ctrl + C, чтобы остановить команду.
  • Посмотрите, была ли потеря пакетов. Если это конкретное соединение между устройством проверки связи и целью работает правильно, вы должны увидеть 0% потери пакетов.
    --- 127.0.0.1 ping statistics ---
    27 packets transmitted, 27 packets received, 0.0% packet loss
    round-trip min/avg/max/stddev = 1.820/8.351/72.343/14.186 ms
  • Вот и все.
    Есть также более продвинутые инструменты, доступные для обнаружения потери пакетов.
  • Команда tcpdump в macOS и Linux значительно более мощная, чем ping. Немного трудновато привыкнуть, но следующая команда перехватит пакеты, а затем подсчитает количество потерянных пакетов:
    tcpdump -i any
  • Это запустит tcpdump через любое сетевое соединение. Он также может быть запущен с -i eth0 для захвата только основного сетевого интерфейса или с -c 10 для захвата только десяти пакетов.
  • После выполнения команды посмотрите на нижнюю строку, чтобы увидеть, были ли потеряны какие-либо пакеты.
    17 packets captured
    85 packets received by filter
    0 packets dropped by kernel
  • В идеале вы должны увидеть, что 0 пакетов были потеряны.

В Windows вы можете использовать tcpdump через оболочку Bash в Windows 10 или запустить Wireshark.

Процесс обнаружения пакетов довольно низок. После того, как вы установили способ проверки связи по сети, вам необходимо следовать практике изоляции и устранения, чтобы определить источник и причину потери пакета. Для этого в большинстве случаев потребуется пинговать большинство устройств в сети или запускать сценарии, которые выполняют то же самое. Знание топологии сети будет очень полезно здесь.

Определение причины потери пакета

Чтобы определить основную причину потери пакетов, вы должны начать с самой простой проблемы, чтобы обнаружить и вернуться обратно.

Сначала проверьте соединение Ethernet между устройствами. Проверьте наличие явных признаков физического повреждения и неправильного подключения. Эти кабели работают правильно? Решает ли переключение кабелей проблему? Проверьте маршрутизаторы и коммутаторы аналогичным образом.

Во-вторых, определите, достаточно ли пропускной способности для обработки необходимых устройств в вашей сети. Является ли какой-либо один аппаратный элемент обработкой значительно большего количества соединений, чем следует? Это часто процесс поиска и замены, пока проблема не решится. Вы также можете использовать «заведомо исправный» коммутатор и маршрутизатор, поменяв его местами с потенциально проблемными устройствами в сети, чтобы увидеть, исчезает ли потеря пакетов при удалении определенного устройства.

Как исправить потерю пакетов в вашей сети

Как только вы определили причину потери пакета, есть два исправления, которые могут быть применены.

Первый включает в себя замену проблемного оборудования. Если ваше расследование привело к неправильной работе устройства, замените его.

Если потеря пакета вызвана программными ошибками, вам нужно попытаться исправить ошибку самостоятельно, попытаться обойти ее или сообщить об ошибке поставщику и надеяться, что он исправит ее. Для внутреннего программного обеспечения может быть легче найти исправление. Для стороннего программного обеспечения это зависит. Если вы являетесь крупным клиентом, вы можете найти выход из положения. Если нет, возможно, вы застряли в ожидании, пока пытаетесь использовать обходной путь.

Потеря пакетов часто представляет собой медленную работу в сети. Конечно, что-то столь расплывчатое может быть вызвано множеством коренных причин. Если вы диагностируете неэффективную сеть, потеря пакетов должна быть в верхней части вашего списка. После того как потеря пакетов исключена, вы можете перейти к более сложным проблемам.

Что такое задержка сети и как ее исправить?

Задержка сети — это время между действием пользователя и полученным ответом. На практике задержка — это время между действием пользователя и ответом веб-сайта, или приложения на это действие, например задержка между переходом пользователя по ссылке на веб-страницу и отображением этой веб-страницы в браузере.

Хотя данные в Интернете распространяются со скоростью света, последствия расстояний и задержек, вызванных оборудованием инфраструктуры интернета, означают, что задержки никогда не могут быть полностью устранены. Однако их можно и нужно свести к минимуму. Большое количество задержек приводит к низкой производительности веб-сайта, негативно влияет на SEO и может побудить пользователей покинуть сайт или приложение в целом.

Содержание

  1. Что вызывает задержку интернета?
  2. Задержка, bandwidth, throughput
  3. Как можно уменьшить задержку?
  4. Как пользователи могут исправить задержку на своей стороне?

Что вызывает задержку интернета?

Одной из основных причин задержки сети является расстояние, в частности расстояние между клиентскими устройствами, выполняющими запросы, и серверами, отвечающими на эти запросы. Если веб-сайт размещен в центре обработки данных в Колумбусе, штат Огайо, он будет довольно быстро реагировать на запросы пользователей в Цинциннати (около 100 миль), вероятно, в течение 10-15 миллисекунд. Пользователи в Лос-Анджелесе (около 2200 миль), с другой стороны, столкнутся с более длительными задержками, ближе к 50 миллисекундам.

Увеличение на несколько миллисекунд может показаться не очень большим, но это усугубляется всей обратной связью, необходимой клиенту и серверу для установления соединения, общим размером и временем загрузки страницы, а также любыми проблемами с сетевым оборудованием, через которое проходят данные на этом пути. Время, необходимое для ответа на клиентское устройство после запроса клиента, называется временем приема-передачи (RTT).

Данные, проходящие через интернет, как правило, должны пересекать не одну, а несколько сетей. Чем больше сетей должен пройти HTTP-ответ, тем больше возможностей для задержек. Например, когда пакеты данных пересекают сети, они проходят через точки обмена интернет (IXP). Там маршрутизаторы должны обрабатывать и маршрутизировать пакеты данных, а иногда маршрутизаторам может потребоваться разбить их на более мелкие пакеты, все из которых добавляет несколько миллисекунд к RTT.

Кроме того, способ создания веб-страниц может привести к снижению производительности. Веб-страницы, которые содержат много тяжелого контента или загружают контент от нескольких третьих сторон, могут работать вяло, потому что браузеры должны загружать большие файлы для их отображения. Пользователь может находиться рядом с центром обработки данных, на котором размещен веб-сайт, к которому он обращается, но, если веб-сайт содержит несколько изображений высокой четкости (например), при загрузке изображений может сохраняться некоторая задержка.

Рекомендуем к прочтению – почему интернет медленный.

Задержка, bandwidth, throughput

Задержка, throughput (характеристика процесса передачи информации) и bandwidth (ширина полосы) взаимосвязаны, и они измеряют разные вещи. Bandwidth — это максимальный объем данных, который может пройти через сеть в любой момент времени. Throughput — это средний объем данных, который фактически проходит через определенный период времени. Throughput не обязательно эквивалентна bandwidth, поскольку на нее влияет задержка. Задержка — это измерение времени, а не объема данных, загружаемых с течением времени.

Как можно уменьшить задержку?

Использование CDN (сети доставки контента) является важным шагом на пути к сокращению задержки. CDN кэширует статическое содержимое, чтобы значительно уменьшить RTT. Серверы CDN распределены в нескольких местах, так что контент хранится ближе к конечным пользователям и не нужно путешествовать так далеко, чтобы добраться до них. Это означает, что загрузка веб-страницы займет меньше времени, улучшая скорость и производительность веб-сайта.

Использование CDN

Веб-разработчики также могут минимизировать количество ресурсов, блокирующих рендеринг (например, загрузка JavaScript), оптимизировать изображения для более быстрой загрузки и уменьшить размеры файлов, где это возможно. Минификация кода — это один из способов уменьшения размера файлов JavaScript и CSS.

Возможно, для уменьшения задержки, стратегически загрузки определенных ресурсов. Веб-страницу можно настроить так, чтобы она сначала загружала верхнюю часть, чтобы пользователи могли начать взаимодействовать со страницей еще до ее завершения (над сгибом отображается то, что отображается в окне браузера перед прокруткой вниз). Веб-страницы также могут загружать ресурсы только по мере необходимости, используя метод, известный как отложенная загрузка. Эти подходы на самом деле не улучшают задержку сети, но они улучшают восприятие пользователем скорости страницы.

Как пользователи могут исправить задержку на своей стороне?

Иногда, задержка сети вызвана проблемами на стороне пользователя, а не на стороне сервера. Потребители всегда имеют возможность приобрести больше пропускной способности, если задержка является постоянной проблемой, хотя пропускная способность не является гарантией производительности веб-сайта. Переключение на провод вместо WiFi приведет к более последовательному подключению к интернету и, как правило, улучшает скорость интернета. Пользователи также должны убедиться, что их интернет-оборудование обновлено, регулярно применяя обновления прошивки и заменяя оборудование в целом по мере необходимости.

Вам будет полезно узнать – мультиплексор ( устройство для передачи различных потоков информации с большой скоростью).

На видео: Устройство интернет сети за 15 минут.

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти человека она готовиться
  • Как найти статую акулы террария
  • Как найти коноплю в rust
  • Как найти свои наушники джибиэль
  • Как составить договор на воду образец

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии