تم تصميم خوارزمية Nagle ، التي سميت على اسم المهندس John Nagle ، لتقليل ازدحام الشبكة الناتج عن مشكلات الحزمة الصغيرة في تطبيقات TCP. بدأت تطبيقات UNIX باستخدام خوارزمية Nagle في الثمانينيات ، ولا تزال ميزة قياسية لـ TCP اليوم.
كيف تعمل خوارزمية Nagle
تعالج خوارزمية Nagle البيانات على جانب الإرسال لتطبيقات TCP بطريقة تسمى nagling. يكتشف الرسائل صغيرة الحجم ويجمع هذه الرسائل في حزم TCP أكبر قبل إرسال البيانات عبر السلك. تتجنب هذه العملية توليد أعداد كبيرة غير ضرورية من الحزم الصغيرة.
تم نشر المواصفات الفنية لخوارزمية Nagle في عام 1984 باسم RFC 896. تعتبر القرارات الخاصة بكمية البيانات التي يجب تجميعها ومدة الانتظار بين عمليات الإرسال حاسمة بالنسبة لأدائها العام.
فوائد Nagling
يمكن لـ Nagling استخدام النطاق الترددي لاتصال الشبكة بكفاءة على حساب إضافة التأخيرات أو زمن الوصول. يوضح المثال الموضح في RFC 896 الفوائد المحتملة للنطاق الترددي وسبب إنشائه:
- إذا أراد تطبيق TCP الذي يعترض ضغطات المفاتيح على لوحة المفاتيح توصيل كل حرف يتم كتابته إلى جهاز استقبال ، فيمكنه إنشاء سلسلة من الرسائل ، يحتوي كل منها على بايت واحد من البيانات.
- قبل إرسال هذه الرسائل عبر الشبكة ، يجب أن يتم حزم كل واحدة بمعلومات رأس TCP كما هو مطلوب بواسطة TCP / IP. يتراوح حجم كل رأس بين 20 و 60 بايت.
- بدون تذمر ، سينشئ هذا التطبيق النموذجي رسائل شبكة تتكون من 95 بالمائة أو أكثر من معلومات الرأس (20 على الأقل من 21 بايت) و 5 بالمائة أو أقل من البيانات الفعلية من لوحة مفاتيح المرسل.باستخدام خوارزمية Nagle ، يمكن تسليم نفس البيانات باستخدام عدد أقل من الرسائل ، مما يؤدي إلى توفير كبير في النطاق الترددي.
تتحكم التطبيقات في استخدامها لخوارزمية Nagle مع خيار برمجة مأخذ التوصيل TCP_NODELA. عادةً ما تقوم أنظمة Windows و Linux و Java بتمكين Nagle افتراضيًا. لذلك ، تحتاج التطبيقات المكتوبة لتلك البيئات إلى تحديد TCP_NODELAY لإيقاف تشغيل الخوارزمية.
القيود
قد لا تعمل التطبيقات التي تتطلب استجابة سريعة للشبكة ، مثل مكالمات الفيديو والألعاب عبر الإنترنت ، بشكل جيد عند تمكين Nagle. يمكن أن تؤدي التأخيرات التي تحدث أثناء استغراق الخوارزمية وقتًا إضافيًا لتجميع أجزاء أصغر من البيانات إلى تأخر ملحوظ بصريًا على الشاشة أو في دفق صوت رقمي. عادة ما تقوم هذه التطبيقات بتعطيل Nagle.
تم تطوير هذه الخوارزمية في الأصل في وقت كانت فيه شبكات الكمبيوتر تدعم نطاقًا تردديًا أقل مما تفعله اليوم.استند المثال الموصوف أعلاه إلى تجارب John Nagle في Ford Aerospace في أوائل الثمانينيات ، حيث كانت المقايضات المزعجة على شبكة Ford البطيئة والمحملة بالمسافات الطويلة منطقية. هناك مواقف أقل بشكل متزايد اليوم حيث يمكن لتطبيقات الشبكة الاستفادة من الخوارزمية الخاصة به.
خوارزمية Nagle قابلة للاستخدام فقط مع TCP. البروتوكولات الأخرى ، مثل UDP ، لا تدعمها.