নাগল অ্যালগরিদম, ইঞ্জিনিয়ার জন নাগলের নামানুসারে, টিসিপি অ্যাপ্লিকেশনগুলির সাথে ছোট প্যাকেট সমস্যার কারণে নেটওয়ার্কের ভিড় কমাতে ডিজাইন করা হয়েছিল। UNIX বাস্তবায়ন 1980-এর দশকে Nagle অ্যালগরিদম ব্যবহার করে শুরু করে, এবং এটি আজও TCP-এর একটি আদর্শ বৈশিষ্ট্য হিসেবে রয়ে গেছে।
কিভাবে Nagle অ্যালগরিদম কাজ করে
নাগেল অ্যালগরিদম টিসিপি অ্যাপ্লিকেশনগুলির পাঠানোর দিকের ডেটা নেগলিং নামে একটি পদ্ধতিতে প্রক্রিয়া করে। এটি ছোট আকারের বার্তাগুলি সনাক্ত করে এবং তারের জুড়ে ডেটা পাঠানোর আগে সেই বার্তাগুলিকে বড় TCP প্যাকেটে জমা করে। এই প্রক্রিয়াটি অপ্রয়োজনীয়ভাবে বড় সংখ্যক ছোট প্যাকেট তৈরি করা এড়ায়।
Nagle অ্যালগরিদমের প্রযুক্তিগত স্পেসিফিকেশন 1984 সালে RFC 896 হিসাবে প্রকাশিত হয়েছিল। কতটা ডেটা জমা করতে হবে এবং পাঠানোর মধ্যে কতক্ষণ অপেক্ষা করতে হবে তার সিদ্ধান্তগুলি এর সামগ্রিক কর্মক্ষমতার জন্য গুরুত্বপূর্ণ।
নাগলিং এর উপকারিতা
বিলম্ব বা বিলম্ব যোগ করার খরচে নাগলিং দক্ষতার সাথে নেটওয়ার্ক সংযোগের ব্যান্ডউইথ ব্যবহার করতে পারে। RFC 896-এ বর্ণিত একটি উদাহরণ সম্ভাব্য ব্যান্ডউইথ সুবিধা এবং এর সৃষ্টির কারণ ব্যাখ্যা করে:
- যদি একটি TCP অ্যাপ্লিকেশন যা কীবোর্ড কীস্ট্রোকগুলিকে বাধা দেয়, যদি প্রতিটি অক্ষর টাইপ করা একটি রিসিভারের সাথে যোগাযোগ করতে চায়, তাহলে এটি বার্তাগুলির একটি সিরিজ তৈরি করতে পারে, প্রতিটিতে 1 বাইট ডেটা থাকে৷
- এই বার্তাগুলিকে নেটওয়ার্ক জুড়ে পাঠানোর আগে, প্রতিটিকে অবশ্যই TCP/IP-এর প্রয়োজন অনুসারে TCP হেডার তথ্য সহ প্যাকেজ করা উচিত। প্রতিটি হেডার 20 এবং 60 বাইটের মধ্যে আকারে পরিসীমা।
- নগলিং ছাড়া, এই উদাহরণ অ্যাপ্লিকেশনটি প্রেরকের কীবোর্ড থেকে 95 শতাংশ বা তার বেশি হেডার তথ্য (কমপক্ষে 21 বাইটের মধ্যে 20) এবং 5 শতাংশ বা তার কম প্রকৃত ডেটা সমন্বিত নেটওয়ার্ক বার্তা তৈরি করবে। Nagle অ্যালগরিদম ব্যবহার করে, একই ডেটা কম বার্তা ব্যবহার করে বিতরণ করা যেতে পারে, যার ফলে বড় ব্যান্ডউইথ সাশ্রয় হয়৷
অ্যাপ্লিকেশনগুলি TCP_NODELA সকেট প্রোগ্রামিং বিকল্পের সাথে তাদের Nagle অ্যালগরিদমের ব্যবহার নিয়ন্ত্রণ করে। উইন্ডোজ, লিনাক্স, এবং জাভা সিস্টেম সাধারণত ডিফল্টরূপে Nagle সক্ষম করে। তাই, অ্যালগরিদম বন্ধ করার জন্য সেই পরিবেশগুলির জন্য লেখা অ্যাপ্লিকেশনগুলিকে TCP_NODELAY উল্লেখ করতে হবে৷
সীমাবদ্ধতা
যে অ্যাপ্লিকেশানগুলির জন্য একটি দ্রুত নেটওয়ার্ক প্রতিক্রিয়া প্রয়োজন, যেমন ভিডিও কল এবং অনলাইন গেমিং, যখন Nagle সক্ষম থাকে তখন ভাল কাজ নাও করতে পারে৷ অ্যালগরিদম ডেটার ছোট অংশ একত্রিত করতে অতিরিক্ত সময় নিলে যে দেরি হয় তা একটি স্ক্রিনে বা ডিজিটাল অডিও স্ট্রীমে দৃশ্যত লক্ষণীয় ল্যাগ ট্রিগার করতে পারে। এই ধরনের অ্যাপ্লিকেশনগুলি সাধারণত নাগলকে অক্ষম করে৷
৷এই অ্যালগরিদমটি মূলত এমন একটি সময়ে তৈরি করা হয়েছিল যখন কম্পিউটার নেটওয়ার্কগুলি আজকের তুলনায় কম ব্যান্ডউইথ সমর্থন করে। উপরে বর্ণিত উদাহরণটি 1980-এর দশকের গোড়ার দিকে ফোর্ড অ্যারোস্পেসে জন নাগলের অভিজ্ঞতার উপর ভিত্তি করে তৈরি করা হয়েছিল, যেখানে ফোর্ডের ধীর, ভারী-লোড, দীর্ঘ-দূরত্বের নেটওয়ার্কে ন্যাগলিং ট্রেডঅফগুলি ভাল ধারণা তৈরি করেছিল। বর্তমানে ক্রমবর্ধমান কম পরিস্থিতি রয়েছে যেখানে নেটওয়ার্ক অ্যাপ্লিকেশনগুলি তার অ্যালগরিদম থেকে উপকৃত হতে পারে৷
৷Nagle অ্যালগরিদম শুধুমাত্র TCP এর সাথে ব্যবহারযোগ্য। অন্যান্য প্রোটোকল, যেমন UDP, এটি সমর্থন করে না।