Оптимизирайте TCP/IP, за да намалите забавянето в игрите

  • Латентността зависи от TCP/IP параметри като MTU, MSS, TCP прозорец и RTO, в допълнение към физическия път и състоянието на мрежата.
  • У дома най-голямото влияние върху ping-а идва от WiFi, претоварен рутер, паралелни изтегляния и използването на VPN или прокси сървъри.
  • Регулирането на QoS, използването на Ethernet кабел, изборът на добър DNS и контролирането на фоновите програми значително намаляват забавянето и трептенето.
  • На сървърите и в облака, настройването на TCP стека, използването на по-големи MTU, HTTP/2/3 и кеширане в паметта намалява латентността и подобрява производителността.

Оптимизирайте TCP/IP, за да намалите забавянето

Ако се караш с него всеки ден Закъснение, заекване и висок пингНе сте сами. Зад това лошо преживяване при играене онлайн, провеждане на видео разговори или работа от разстояние стои много ясен виновник: комбинацията от вашата домашна мрежа и начина, по който е конфигуриран TCP/IP протоколът на вашите устройства и сървъри.

Оптимизирайте TCP/IP за намаляване на забавянето Не става въпрос само за настройване на няколко „магически“ настройки. Трябва да разберете как работят понятия като... MTU, MSS, TCP прозорец, латентност или надуване на буфераИ след това приложете конкретни промени към вашия компютър, рутер, Wi-Fi мрежа и дори облачни сървъри или виртуални машини. Нека го разгледаме стъпка по стъпка, но с практическа нагласа: какво представлява всяко нещо и какво можете да направите, за да ускорите връзката си.

Ключови TCP/IP концепции, които влияят на забавянето

За да извлечете максимума от връзката си, е полезно да разберете няколко неща. основни TCP/IP параметри които пряко влияят на ping, стабилност и производителност в игри, видео разговори или отдалечен достъп.

MTU, фрагментация и LSO

La MTU (максимална предавателна единица) Това е максималният размер в байтове на пакета, който може да напусне мрежов интерфейс, без да бъде фрагментиран. В по-голямата част от Ethernet мрежите (и във виртуални машини в Azure или Google Cloud), стойността по подразбиране е 1500 байта, което включва мрежови заглавки и данни.

Когато даден пакет надвиши този MTU, IP слоят го разделя на няколко по-малки фрагмента. IP фрагментация Това включва повече работа на процесора и паметта, както на машината, която фрагментира данните, така и на тази, която сглобява фрагментите при пристигането им. Това води до допълнителна латентност и загуба на производителност, особено при интензивен трафик.

Освен това, има и известната част „Не фрагментирай“ (DF) в IP заглавката. Ако е активирано и междинен рутер получи пакет, по-голям от неговия MTU, вместо да го фрагментира, той го отхвърля и изпраща обратно ICMP съобщение „Необходима е фрагментация“. Това се използва в Откриване на MTU маршрут (PMTUD)Но ако защитна стена блокира тези ICMP пакети, подателят ще продължи да се опитва да изпраща прекомерно големи пакети, причинявайки закъснения и повторни предавания.

В среди като Azure или Google Cloud, фрагментираните пакети също така са склонни да губят предимствата на ускорени мрежиSR-IOV и SmartNIC. Те се обработват чрез бавния маршрут на хипервизора, с повече нервничапо-лоша латентност и по-малко пакети в секунда. Следователно, общата препоръка е Избягвайте фрагментацията чрез правилно регулиране на MTU и MSS и да не се увеличава прекалено много MTU, ако има защитни стени или VPN мрежи между тях.

От друга страна, функцията Разтоварване на големи изпращания (LSO) Това позволява на TCP/IP стека на операционната система да генерира големи „суперпакети“, които след това се фрагментират вътрешно от мрежовата карта според MTU. Това значително намалява натоварването на процесора, въпреки че при записите на трафика може да видите привидно огромни кадри, които не показват фрагментация в мрежата, а по-скоро, че фрагментацията се случва в самия адаптер.

MSS, PMTUD и VPN

El TCP MSS (Максимален размер на сегмента) Това определя колко байта използваеми данни се побират във всеки TCP сегмент, с изключение на IP и TCP заглавките. Обикновено системите изчисляват MSS като:

MSS = MTU - (tamaño cabecera IP + tamaño cabecera TCP)

С MTU от 1500 и IPv4+TCP заглавки от 20+20 байта, типичният MSS е 1460 байтаТази стойност се договаря по време на тристранното TCP ръкостискане и всеки край предлага своя собствена. Връзката използва по-ниската от двете.

Въпреки това, по пътя може да има устройства (защитни стени, рутери, VPN шлюзовеи т.н.) с по-малък MTU, което ефективно налага намаляване на MSS. Това е мястото, където Откриване на MTU на пътя (PMTUD)Когато рутерът не може да препрати пакет, защото е твърде голям и има зададен DF бит, той го отхвърля и изпраща ICMP съобщение „Необходима фрагментация“, указващо максималния MTU, който поддържа, така че източникът да намали размера му.

Ако тези ICMP пакети са блокирани, връзката влиза в цикъл на препращане и загуба, което води до... Закъснение, повторни предавания и безкрайно време за зарежданеСледователно, не винаги е добра идея безгрижно да се увеличава MTU на компютри или виртуални машини, без да се проверява целият път или политиката на защитната стена.

В социалните мрежи с IPsec VPN или други тунели, допълнителните заглавки намаляват наличното пространство за данни, така че се препоръчват по-малки MTU и MSS (напр. MTU 1400 и MSS ~1350 в типичните тунели), за да се избегне фрагментацията на тунелите и свързаните с нея закъснения.

Латентност, RTT и TCP прозорец

Известният „пинг“ не е нищо повече от латентност при двупосочно предаване (RTT) между две точки. На физическо ниво, тя е ограничена от скоростта на разпространение на светлината във влакното (около 200 км в милисекунда) и от действителния път, който данните следват. Рядко е права линия.

В TCP, максималната теоретична пропускателна способност на една връзка се определя от тази основна формула:

rendimiento máximo ≈ tamaño de ventana TCP / RTT

La TCP прозорец Това е количеството данни, които подателят може да има „по време на полет“, без все още да е получил потвърждение (ACK). С прозорец от 65 535 байта и MSS от 1460, могат да бъдат изпратени само около 45 пакета, преди да се изчака ACK. Ако RTT е висок (например 80-160 ms между континенти), немащабираният прозорец е далеч от това да се възползва от висококапацитетните връзки.

По подразбиране полето window в TCP заглавката е 16 бита, което ограничава максималната му стойност до 65 535 байта. За съвременните мрежи това е абсурдно, така че преди години беше въведено [липсваща информация - вероятно специфична функция или метод]. Мащабиране на TCP прозорец, което прилага коефициент на умножение 2^na към тази стойност и позволява прозорци от стотици MB или дори GB.

В системи като Windows или Linux, мащабирането на прозорците се управлява автоматично с предварително зададени настройки (автоматична настройка) и може да се преглежда или променя с помощта на команди като Get-NetTCPSetting o sysctlПо-агресивните нива (напр. „експериментални“) позволяват гигантски прозорци и могат значително да подобрят производителността в мрежи на дълги разстояния, при условие че няма твърде много загуба на пакети.

Ускорени мрежи, RSS и GRO/TSO

В облачните платформи (Azure, Google Cloud и др.), традиционните мрежови интерфейси разчитат в голяма степен на хост процесора за обработка на всеки пакет, прилагане на правила, капсулиране и декапсулиране. Това води до... брутално натоварване на хипервизора когато има много трафик и това генерира нестабилна латентност.

Ето защо т.нар. ускорени мрежиТе са базирани на технологии като SR-IOV и SmartNIC карти с FPGA. Идеята е, че значителна част от софтуерно дефинирания мрежов стек работи на мрежовия хардуер и трафикът на данни може да преминава виртуално директно от виртуалната машина към картата, заобикаляйки виртуалния комутатор на хоста.

Това осигурява няколко предимство:

  • По-малко латентност, повече PPS.
  • По-малко трептене
  • По-ниска консумация на процесор на хоста и във виртуалната машина.

Има обаче важни подробности. Например, много ускорени мрежови системи не обработват фрагментирани пакети по бързия маршрут; ако е налице IP фрагментация, този трафик се маршрутизира по бавния маршрут, което се отразява на производителността.

От страна на гостеската операционна система е ключово да са активирани технологии като . Мащабиране от страната на приемане (RSS)който разпределя обработката на входящите пакети между множество ядра на процесора, както и сегментиране и агрегиране на изтегляния, като например TSO (Разтоварване на сегментацията на предаването) и GRO/LRO (Общо разтоварване на приемането)което намалява броя на пакетите, които процесорът трябва да обработва директно.

TIME_WAIT и повторно използване на сокет

Друг по-малко известен, но важен фактор за производителност на TCP е състоянието. TIME_WAITКогато TCP връзката се затвори нормално, крайната точка, изпращаща последното ACK, влиза в TIME_WAIT за десетки или дори стотици секунди. През това време системата държи сокета резервиран, за да гарантира, че забавените пакети от старата връзка няма да се появят отново и да бъдат объркани с нова сесия.

На силно използвани сървъри или машини е лесно да се натрупа хиляди или десетки хиляди сокети в TIME_WAITТова може да изчерпи обхвата на ефимерните портове и да причини грешки при отваряне на нови връзки. Поради това много системи ви позволяват да регулирате както продължителността на TIME_WAIT, така и обхвата на портовете, както и някои правила за повторна употреба.

По-агресивна техника, поддържана от някои ядра (например Windows Server на Azure), се нарича Убийство с TIME_WAITАко пристигне нов SYN с пореден номер, значително по-висок от този на старата връзка, системата може да принуди сокета да се затвори по време на TIME_WAIT и да приеме новата връзка незабавно. Това увеличава мащабируемостта, но ако е неправилно конфигурирано, може да причини... проблеми с оперативната съвместимост с някои по-консервативни TCP стекове.

пинг

Защо ping е толкова важен в ежедневието ви

Отвъд теорията, латентността има пряко въздействие върху почти всичко, което правим онлайн днес. Не е достатъчно просто да „имаме 600 Mbps“; ако отговорът е бавен, преживяването страда. Нека разгледаме някои случаи, при които... „Добрият“ пинг прави цялата разлика.

Онлайн игри и „играеми“ нива на пинг

В състезателните игри всяка милисекунда е от значение. пинг под 20 ms Практически идеално е: действията се регистрират почти в реално време и едва ще забележите забавяне. Между 20 и 50 ms, изживяването остава много добро. Когато стигнете до 50-100 ms, може да забележите леко разсинхронизиране, особено ако играете на отдалечени сървъри.

От 100 300-мс Започват сериозни проблеми: кадри, които пристигат със закъснение, движения, които виждате със закъснение, коли, които „подскачат“ в състезателна игра и т.н. Над 300 ms играта се превръща в по-скоро мъчение, отколкото в каквото и да е друго, особено в шутъри, състезателни игри или спортни игри.

Видът игра също оказва голямо влияние. FPS и състезателни игри На практика е задължително да имате по-малко от 50 ms, за да се състезавате; в онлайн спортните заглавия също е желателно да останете под 30-40 ms. Въпреки това, в MMO или походови стратегически игриМожете да „оцелеете“ с пингове от 150-200 ms, без да прекъсвате геймплея, въпреки че изживяването никога няма да бъде толкова плавно. Ако играете на Windows, може би ще ви е интересно да научите как. Намалете забавянето на входа в Windows 11 за подобряване на реакцията в състезателни игри.

Видео разговори, споделяне на екрана и VoIP разговори

При видео разговори със Zoom, Teams, Skype или подобни платформи, ping също е от решаващо значение. В идеалния случай той трябва да се движи около... 20 40-мскъдето разговорът протича естествено, без припокриване. Повечето потребители толерират до около 100 ms, въпреки че леки забавяния вече са забележими при говорене.

Когато пингът надвиши 100 мсЗапочвате неволно да прекъсвате другия човек. Отговорите пристигат с временно „ехо“ и неловките мълчания стават чести. Ако освен това връзката е с ограничена честотна лента или Wi-Fi е лош, към всичко се добавят прекъсвания на видеото и звука.

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

Интернет на нещата, домашна автоматизация и работа от разстояние

В екосистемата на Интернет на нещата и интелигентни устройства (високоговорители, крушки, камери, контакти, роботи, хранилки за домашни любимци и др.), латентността също играе ключова роля. Макар че включването на светлина със забавяне от 500 ms не е драматично, когато свързвате много действия или взаимодействате с глас (Alexa, Google Assistant), това става много забележимо.

Когато работите дистанционно, достъпът до отдалечени настолни компютри, сървъри или облачни приложения с постоянно забавяне прави всяка задача досадна. Много хора смятат, че това е „липса на скорост“, когато в действителност това, което имат, е... висока и/или силно променлива латентност (трептене) причинено от претоварен WiFi, повредени рутери или лоши маршрути до сървъра.

Латентност и сигурност: косвено въздействие

Високата латентност сама по себе си не означава пряк риск за сигурносттаТова обаче може да има странични ефекти. Ако системите за наблюдение, системите за откриване на вторжения или защитните стени получат информация твърде късно, те могат да реагират твърде късно на атака или дори да пропуснат критични събития.

Също така, когато потребителите се отчаяно притесняват от забавянето, те са склонни да „заобикалят“ контролите за сигурност: Те деактивират защитната стена, деинсталират антивирусната програма или отварят портове хаотично. на рутера, за да се опитат да го „ускорят“. Именно тук лошото мрежово преживяване може да отвори ненужни врати за реални заплахи.

Основни причини за висока латентност в домашните мрежи

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

Слабо WiFi покритие и смущения

Повечето от нас сега се свързват почти изключително чрез Wi-Fi и оттам започват проблемите. Едно слаб или изпълнен със смущения сигнал Това не само намалява скоростта, но и увеличава латентността и трептенето, защото устройствата трябва да препредават пакети, да намаляват модулацията, да чакат каналът да се освободи и т.н.

Ако сте далеч от рутера, зад няколко стени или сте заобиколени от съседни мрежи на един и същ канал, вашият ping ще пострада. Освен това, колкото повече клиенти са свързани към точка за достъп, толкова по-дълго е времето за изчакване, за да може всеки от тях да „вземе своя ред“ за комуникация. А бавните клиенти влияят негативно на останалите. Разберете колко устройства са във вашата WiFi мрежа за идентифициране на проблемни клиенти.

Функции като тези са доста полезни тук Справедливост на ефирното времекоито разпределят ефирното време между устройствата, така че по-бавните да не монополизират радиото. Въпреки това, когато е възможно, за игри и работа от стационарен телефон, използвайте [алтернативата]. ethernet кабел и оставете WiFi-то за всички останали.

Остарял или претоварен рутер

Стар рутер с остарял фърмуер или много основен хардуер може да се превърне в сериозно пречка. Когато процесорът на рутера е претоварен при управлението на NAT, защитна стена, QoS и P2P трафик, забавяне на опашката и надуване на буфераПакетите се натрупват в гигантски буфер и се изпращат със значително закъснение, което нарушава ping-а.

Актуализирайте фърмуера, деактивирайте ненужните функции и ако е необходимо, помолете вашия оператор за резервно устройство или купете ново. най-мощният неутрален рутер Често това бележи повратна точка. Също така е добра идея да го рестартирате от време на време, за да изчистите състоянията на паметта и потенциалните течове.

Изтегляния и други устройства, консумиращи честотна лента

Ако в мрежата ви има няколко устройства, които изтеглят много файлове (P2P, актуализации, 4K стрийминг, облачни архиви), е нормално това вашите пинг пиковеПроблемът не е толкова в това, че „мегабайтите свършват“, а в това как рутерът управлява изходящите опашки.

Решението включва два пътя:

  • От една страна, по-добър контрол върху това какво се изтегля във фонов режим (компютър, мобилни телефони, конзоли, NAS...).
  • От друга страна, активирайте и правилно настройте QoS и анти-буферблоут от рутера, така че интерактивният трафик (игри, VoIP, видео разговори) да има приоритет пред масивните изтегляния.

VPN, прокси, защитна стена и фонови програми

на VPN Те са много полезни за криптиране на трафик или заобикаляне на гео ограничения, но почти винаги добавят латентност, защото връзката ви преминава през междинен сървър. Ако VPN е безплатен или с лошо качество, това може да бъде направо смъртоносно за ping. Същото важи и за определени пълномощници.

Защитните стени, както на компютъра, така и на рутера, също добавят известно забавяне, като проверяват всеки пакет, и ако са неправилно конфигурирани, могат да забавят прекомерно връзката. Добавете към това... фонови процеси (Актуализации на Windows, облачни клиенти, игри, изтегляне на корекции и др.), които консумират голям трафик, без дори да забележите.

Зловреден софтуер и компрометирани устройства

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

winmtr

Инструменти за измерване на латентността и откриване на проблеми

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

Основни ping и traceroute

Полезност пингПрисъстваща във всички операционни системи, това е отправната точка. С едно просто ping 8.8.8.8 (Например) можете да видите средната, минималната и максималната латентност до конкретна дестинация и дали има загуба на пакети. Ако ping-нете шлюза на вашия рутер, ще получите латентността на вашата локална мрежа.

Ако добавите -t на Windows (ping 8.8.8.8 -tМожете да го оставите да работи, за да видите дали има пикове, спадове или трептене. И с трасиране/трасиране Проверявате през кои хопове преминават вашите пакети и в кой момент латентността започва подозрително да се увеличава.

Разширени инструменти: WinMTR, PingPlotter и други

Програми като WinMTR Те комбинират traceroute и continuous ping, показвайки процента на загуба на сигнала и минималното, средното и максималното време за реакция за всеки hop. Те са много полезни за идентифициране дали проблемът е в първия hop на вашия интернет доставчик, междинна опорна мрежа или самия игрови сървър.

Други комунални услуги, като например Изглед на мрежовата латентност (NirSoft) измерва действителната латентност на TCP връзките, отворени от вашия компютър. Съществуват и пакети като Инструменти за NetScan Включва графичен ping, сканиране на портове, traceroute и DNS. Всичко в едно.

Измерване на пинг на мобилно устройство: приложения за Android и iOS

На смартфони и таблети можете също да измервате латентността, използвайки приложения като Fing, He.net Мрежови инструменти, NetX или специфични инструменти за ping в iOS. Те са идеални за проверка дали проблемът е с Wi-Fi мрежата на определена стая, мобилната мрежа или дали самият стационарен телефон осигурява лошо качество.

Разширена TCP/IP оптимизация на сървъри и облак

Ако управлявате сървъри, облачни виртуални машини или взискателни уеб проекти, има много повече TCP/IP и параметри на ядрото, които можете да регулирате. по-ниска латентност и повишена производителност. Особено във високоскоростните мрежи.

Настройки на ядрото и TCP стека в Linux

В Linux, използвайки sysctl и инструменти като tc o ethtool Можете да приложите разширени оптимизации, като например:

  • Намалете минималното RTO (net.ipv4.tcp_rto_min_us) до безопасни стойности, като например 5000 µs (5 ms) във вътрешни мрежи с ниска латентност. За по-бързо възстановяване след загуба на пакети.
  • Активиране Честно чакане (FQ) с tc qdisc replace dev <iface> root fq. За по-добро разпределение на честотната лента между потоците и избягване на прекомерни импулси от една връзка.
  • Деактивирайте бавен старт след неактивност (net.ipv4.tcp_slow_start_after_idle=0) на сървъри, които използват постоянни връзки. Така че да не започват отначало с абсурдно ниска честотна лента всеки път, когато се събудят от режим на заспиване.
  • Деактивирайте проблемната част HyStart (откриване на ACK влак) в Cubic TCP. За да се предотврати фалшиво положителни резултати от претоварване, които да забавят растежа на прозореца.
  • Увеличете TCP буфери (tcp_rmem, tcp_wmem, rmem_max, wmem_max). за да може да се поддържа висока пропускателна способност на връзки с висок RTT, предотвратявайки недостиг на памет в сокетите.
  • Ограничение tcp_notsent_lowat Това предотвратява натрупването на твърде много неизпратени данни в ядрото, като по този начин защитава системата от прекомерна консумация на памет.
  • се даде възможност на хардуер GRO/LRO на съвместими мрежови карти (ethtool -K <iface> rx-gro-hw on) . За групиране на пакети и намаляване на натоварването на процесора при прекъсване.

големи MTU и високопроизводителни мрежи

Във вътрешни облачни мрежи (напр. Google Cloud VPCs), където се предоставя поддръжка jumbo MTU до ~8900 байтаСилно препоръчително е да увеличите MTU (например до около 4082 байта, съвместими с 4 KB страници памет), за да намалите броя на пакетите, обработвани в секунда, и да подобрите ефективността на процесора.

Трябва обаче да внимавате с трафика, излизащ към интернет или преминаващ през VPN мрежи: в този случай е най-добре или да поддържате стандартен MTU от 1500, или да го коригирате за всеки маршрут (ip route change с mtu y advmss), така че външните комуникации да не претърпяват фрагментация или загуба поради прекомерно големи пакети.

Уеб сървъри, HTTP/2/3 и кеширане

На уеб сървъри (Nginx, Apache и др.), освен настройването на TCP, можете значително да намалите възприеманата латентност, като активирате HTTP/2 и HTTP/3 (QUIC)които позволяват мултиплексирането на множество заявки през една връзка и намаляват разходите за ръкостискане.

Активиране GZIP компресия или Brotli, използвайте кеш паметта (Redis, Memcached), минифицирайте CSS/JS и сервирайте статично съдържание чрез CDN с близки точки на присъствие към потребителя. Всяка милисекунда, която спестявате в TTFB (време до първия байт) и мрежовото RTT, се превръща в сайт, който реагира „по-бързо“ в очите на посетителя.

Непрекъснато наблюдение и показатели за латентност

И накрая, ако сериозно се отнасяте към производителността, трябва да я измервате непрекъснато. Инструменти като ApacheBench, работа, JMeter или пакети за наблюдение (Prometheus + Grafana, New Relic, Datadog…) ви позволяват да наблюдавате RTT, TTFB, процентили на латентност, пропускателна способност и процент на грешки под товар.

Настройването на предупреждения, когато TTFB надвиши определени прагове, когато вътрешният ping между услугите се покачи или когато загубата на пакети се увеличи, помага за проактивно откриване на мрежови проблеми, насищане на процесора, промени в маршрутите или пречки, преди забавянето да достигне до крайния потребител.

С всички тези концепции и настройки на масата, от MTU и MSS до QoS на рутери, ускорени облачни мрежи и конфигурация на уеб сървър, е ясно, че забавянето не е резултат от един-единствен магически фактор. То е сборът от много мрежови компоненти и самия TCP/IP, които, когато са правилно настроени, позволяват на игри, видео разговори, дистанционна работа и уебсайтове да реагират с тази бързина. чувство за непосредственост което всички търсим и което често се постига повече чрез настройване и разбиране на мрежата, отколкото просто чрез свиване на „повече мегабайти“.

Как да настроите Ethernet мрежа в Windows стъпка по стъпка
Свързана статия:
Как да настроите Ethernet мрежа в Windows стъпка по стъпка