TCP желілік байланысы үшін Nagle алгоритміне шолу

Мазмұны:

TCP желілік байланысы үшін Nagle алгоритміне шолу
TCP желілік байланысы үшін Nagle алгоритміне шолу
Anonim

Инженер Джон Наглдың атымен аталған Nagle алгоритмі TCP қолданбаларымен шағын пакет ақауларынан туындаған желі кептелісін азайтуға арналған. UNIX іске асырулары 1980 жылдары Nagle алгоритмін пайдалана бастады және ол бүгінгі күні TCP стандартты мүмкіндігі болып қала береді.

Нагле алгоритмі қалай жұмыс істейді

Nagle алгоритмі nagling деп аталатын әдіс арқылы TCP қолданбаларының жіберу жағындағы деректерді өңдейді. Ол шағын өлшемді хабарламаларды анықтайды және деректерді сым арқылы жібермес бұрын сол хабарламаларды үлкенірек TCP пакеттеріне жинақтайды. Бұл процесс қажетсіз үлкен көлемдегі шағын пакеттердің генерациялануын болдырмайды.

Nagle алгоритмінің техникалық сипаттамасы 1984 жылы RFC 896 ретінде жарияланған. Қанша деректер жинақталуы және жіберулер арасында қанша уақыт күту туралы шешімдер оның жалпы өнімділігі үшін маңызды.

Наглингтің пайдасы

Nagling кідірістерді немесе кідірістерді қосу есебінен желі қосылымының өткізу қабілеттілігін тиімді пайдалана алады. RFC 896-да сипатталған мысал өткізу қабілеттілігінің ықтимал артықшылықтарын және оны жасау себебін көрсетеді:

  • Егер пернетақта пернелерінің басуын тоқтататын TCP қолданбасы теріліп жатқан әрбір таңбаны қабылдағышқа жеткізгісі келсе, ол әрқайсысында 1 байт деректерден тұратын хабарлар қатарын жасай алады.
  • Бұл хабарлар желі арқылы жіберілмес бұрын, олардың әрқайсысы TCP/IP талап ететін TCP тақырыбы ақпаратымен пакеттелген болуы керек. Әрбір тақырыптың өлшемі 20 және 60 байт аралығында болады.
  • Егер бұл мысал қолданба 95 пайыз немесе одан көп тақырып ақпаратынан (21 байттың 20-сы) және жіберушінің пернетақтасынан 5 пайыз немесе одан аз нақты деректерден тұратын желілік хабарларды жасайды. Nagle алгоритмін пайдалану арқылы бірдей деректерді аз хабарлар арқылы жеткізуге болады, нәтижесінде өткізу қабілеті үлкен үнемделеді.

Қолданбалар TCP_NODELA ұяшықты бағдарламалау опциясымен Nagle алгоритмін пайдалануын басқарады. Windows, Linux және Java жүйелері әдетте әдепкі бойынша Nagle-ді қосады. Сондықтан, сол орталар үшін жазылған қолданбалар алгоритмді өшіру үшін TCP_NODELAY көрсетуі керек.

Image
Image

Шектеулер

Бейне қоңыраулар және онлайн ойын сияқты жылдам желілік жауапты қажет ететін қолданбалар Nagle қосылған кезде жақсы жұмыс істемеуі мүмкін. Алгоритмге деректердің кішірек бөліктерін жинау үшін қосымша уақыт қажет болған кезде туындаған кідіріс экранда немесе сандық аудио ағынында көрнекі кідірісті тудыруы мүмкін. Мұндай қолданбалар әдетте Nagle-ді өшіреді.

Бұл алгоритм бастапқыда компьютерлік желілер қазіргіден аз өткізу қабілеттілігін қолдайтын уақытта жасалған. Жоғарыда сипатталған мысал Джон Наглдың 1980-ші жылдардың басында Ford Aerospace-тегі тәжірибесіне негізделген, мұнда Фордтың баяу, ауыр жүктелген, қалааралық желісіндегі келіссөздер жақсы мағынаға ие болды. Бүгінде оның алгоритмін желілік қолданбалар пайдалана алатын жағдайлар азайып барады.

Nagle алгоритмі тек TCP протоколында ғана қолданылады. UDP сияқты басқа протоколдар оны қолдамайды.

Ұсынылған: