אלגוריתם נאג 'ל עבור תקשורת רשת TCP

האלגוריתם של נאגל , הקרוי על שם המהנדס ג'ון נאגל, נועד לצמצם את הצפיפות ברשת הנגרמת על ידי "בעיות מנות קטנות" ביישומי TCP . יישומי UNIX החלו להשתמש באלגוריתם של נאגל בשנות ה -80, והוא נשאר תכונה סטנדרטית של TCP היום.

כיצד פועל האלגוריתם

האלגוריתם של נאגל מעבד נתונים על הצד השולח של יישומי TCP בשיטה הנקראת nagling . הוא מזהה הודעות בגודל קטן וצובר אותן לחבילות TCP גדולות יותר לפני שליחת נתונים על פני החוט, ובכך למנוע יצירת מספר גדול של מנות קטנות שלא לצורך. המפרט הטכני של האלגוריתם של נאגל פורסם בשנת 1984 כ RFC 896. ההחלטות עבור נתונים רבים כדי לצבור וכמה זמן לחכות בין שולחת הם קריטיים הביצועים הכוללים שלה.

Nagling יכול לנצל ביעילות רבה יותר את רוחב הפס של חיבור רשת על חשבון הוספת עיכובים ( חביון ). דוגמה המתוארת ב- RFC 896 ממחישה את היתרונות הפוטנציאליים של רוחב הפס ואת הסיבה ליצירתו:

יישומים שולטים בשימוש שלהם באלגוריתם Nagle עם אפשרות תכנות שקעי TCP_NODELAY. מערכות Windows, Linux ו- Java בדרך כלל מאפשרות לנגל כברירת מחדל, לכן יישומים שנכתבו עבור סביבות אלה צריכים לציין את TCP_NODELAY כאשר רוצים להחליף את האלגוריתם.

מגבלות

האלגוריתם של נאגל הוא רק שמיש עם TCP. פרוטוקולים אחרים, כולל UDP אינם תומכים בו.

יישומי TCP הזקוקים לתגובת רשת מהירה, כגון שיחות טלפון באינטרנט או משחקי היורה של אדם ראשון, עשויים שלא לפעול היטב כאשר Nagle מופעל. העיכובים שנגרמו בזמן האלגוריתם לוקח זמן נוסף להרכיב נתחים קטנים יותר של נתונים יחד יכול להפעיל בפיגור בולט חזותית על המסך או זרם שמע דיגיטלי. יישומים אלה בדרך כלל להשבית Nagle.

אלגוריתם זה פותח במקור בזמן שבו רשתות מחשבים נתמכות רוחב פס הרבה פחות ממה שהם עושים היום. הדוגמה המתוארת לעיל התבססה על חוויותיו של ג'ון נאגל בפורד איירספייס בתחילת שנות ה -80, שם התנהלו חילופי דעות על רשתות המרחקים הארוכות והאיטיות. ישנם מצבים פחות ויותר שבהם יישומי רשת יכולים להפיק תועלת האלגוריתם שלו היום.