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