টিসিপি লামিনার

ল্যামিনার কি?

Laminar হল TCP কনজেশন কন্ট্রোলের জন্য একটি নতুন ফ্রেমওয়ার্ক যা ট্রান্সমিশন শিডিউলিংকে আলাদা করে, যা সঠিকভাবে নির্ধারণ করে কখন ডেটা পাঠানো হবে, বিশুদ্ধ কনজেশন কন্ট্রোল থেকে, যা প্রতিটি RTT চলাকালীন পাঠানো ডেটার মোট পরিমাণ নির্ধারণ করে।

ট্রান্সমিশন শিডিউলিংয়ের জন্য ডিফল্ট অ্যালগরিদম হল ভ্যান জ্যাকবসনের প্যাকেট সংরক্ষণ নীতির কঠোর বাস্তবায়ন [জ্যাকবসন88]। রিসিভারের কাছে আসা ডেটা ACK-এর কারণ হয় যার ফলে প্রেরক নেটওয়ার্কে সমপরিমাণ ডেটা প্রেরণ করে। প্রাইমারি স্টেট ভেরিয়েবলটি নেটওয়ার্কে প্রচলন করা ডেটা এবং ACK এর পরিমাণের মধ্যে নিহিত। এই অবস্থাটি একটি উন্নত tcp_packets_in_flight() এস্টিমেটর (ওরফে মোট_পাইপ) এর মাধ্যমে পরিলক্ষিত হয়। মোট_পাইপ RFC 3517-এ বর্ণিত "পাইপ"-এর উপর ভিত্তি করে তৈরি করা হয়েছে তবে বর্তমান ACK দ্বারা রিপোর্ট করা ডেটার পরিমাণ এবং মুলতুবি ট্রান্সমিশনগুলি যা কনজেশন নিয়ন্ত্রণে উত্তীর্ণ হয়েছে কিন্তু TSO-এর মতো অন্যান্য ইভেন্টের জন্য অপেক্ষা করছে।

একটি নতুন ভেরিয়েবল, CCwin, হল প্রাথমিক কনজেশন কন্ট্রোল স্টেট ভেরিয়েবল। কনজেশন কন্ট্রোল অ্যালগরিদমগুলি পথের ধারে সামগ্রিক কনজেশন লেভেল নিয়ন্ত্রণ করতে CCwin-কে সামঞ্জস্য করে। যদিও CCwin cwnd এর সাথে সাদৃশ্যপূর্ণ, cwnd ওভারলোড করা হয় এবং একাধিক অ্যালগরিদম (যেমন বিস্ফোরণ দমন) দ্বারা বিভিন্ন এবং কখনও কখনও বিরোধপূর্ণ লক্ষ্যগুলির সাথে ব্যবহার করা হয়।

যেকোন সময় total_pipe CCwin থেকে ভিন্ন হয় ট্রান্সমিশন শিডিউলিং অ্যালগরিদম প্রতিটি ACK এর প্রতিক্রিয়ায় পাঠানো সেগমেন্টের সংখ্যা সামান্য সামঞ্জস্য করে। স্লো স্টার্ট এবং আনুপাতিক হার হ্রাস [PRR] (রেট-অর্ধেক করার জন্য একটি প্রতিস্থাপন) উভয়ই ট্রান্সমিশন শিডিউলিং অ্যালগরিদমে এম্বেড করা হয়েছে।

ল্যামিনার ফ্রেমওয়ার্কের প্রাথমিক সুবিধা হল যে কনজেশন কন্ট্রোল এবং ট্রান্সমিশন শিডিউলিংকে আলাদা সাবসিস্টেমে বিভাজন করার মাধ্যমে, প্রত্যেকটি অনেক বেশি সহজ ডিজাইনের সীমাবদ্ধতার সাপেক্ষে, এটি অনেক নতুন অ্যালগরিদম তৈরি করা সহজ করে যা কোডের পূর্ববর্তী সংস্থার সাথে সম্ভব নয়।

ল্যামিনার ফ্রেমওয়ার্ক টিসিপি কনজেশন কন্ট্রোলের অন্তর্নিহিত নকশা দর্শনকে পরিবর্তন করে এবং প্যাচের বাইরেও এর সম্ভাব্য বিস্তৃত প্রভাব রয়েছে। এই প্যাচটি লোকেদের কোডের সাথে পরীক্ষা করার অনুমতি দেওয়ার উদ্দেশ্যে, মন্তব্য করতে এবং উপেক্ষা করা হতে পারে এমন কোনও কর্নার কেস আবিষ্কার করতে সহায়তা করে৷ তদুপরি, প্যাচটি অসম্পূর্ণ এই অর্থে যে বেশ কয়েকটি অ্যালগরিদম এখনও অনুপস্থিত, বিশেষত: CUBIC এবং Reno ছাড়া অন্য যানজট নিয়ন্ত্রণ অ্যালগরিদম; cwnd বৈধতা; গন্তব্য মেট্রিক্স; ইত্যাদি। এটি সত্যিই দুর্দান্ত হবে যদি লোকেরা এই অন্যান্য অ্যালগরিদমগুলির কিছু রিফ্যাক্টর করতে সহায়তা করতে পারে।

ল্যামিনার ফ্রেমওয়ার্ক এবং এর প্রেরণা আরও পুঙ্খানুপুঙ্খভাবে একটি ইন্টারনেট খসড়া, ড্রাফ্ট-ম্যাথিস-টিসিপিএম-টিসিপি-লামিনারে বর্ণনা করা হয়েছে।

অনুগ্রহ করে mattmathis@google.com- এ মন্তব্য এবং পরামর্শ পাঠান।

এই প্রকল্পটি প্রোটোকলের উন্নতির মাধ্যমে ওয়েবকে দ্রুততর করার জন্য Google-এর প্রচেষ্টার অংশ৷

বাস্তবায়ন নোট

ল্যামিনার প্রাথমিকভাবে 3টি ফাংশনে প্রয়োগ করা হয় (tcp_input.c):

Tcp_cong_avoid() এবং tcp_mult_decr() CCwin স্টেট ভেরিয়েবল ব্যবহার করে AIMD কনজেশন নিয়ন্ত্রণ করে। পূর্বাবস্থা ছাড়া, এই দুটি ফাংশনই একমাত্র স্থান যেখানে CCwin পরিবর্তন হয়। (উভয় ফাংশনই কনজেশন মডিউল নির্দিষ্ট হ্যান্ডলারদের আহ্বান করে)।

Tcp_laminar_schedule() প্রতিটি ACK এর প্রতিক্রিয়ায় কতটা ডেটা পাঠাতে হবে তা নির্ধারণ করে। এটি ভ্যান জ্যাকবসন প্যাকেট সংরক্ষণ প্রয়োগ করে, tcp_packets_in_flight() কে CCwin-এ রূপান্তর করতে সামান্য উপরে বা নিচে সামঞ্জস্য করে।

tcp_packets_in_flight() অনুমানকারীতে গুরুত্বপূর্ণ পরিবর্তন রয়েছে যাতে এটি বেশিরভাগ প্রোটোকল ইভেন্টে অপরিবর্তনীয় হয়। অ্যাপ্লিকেশন স্টল, tcp_laminar_schedule() এ সমন্বয় এবং প্রকৃত প্যাকেট ক্ষয় পরিবর্তন হয় tcp_packets_in_flight(), যেমনটি তাদের আবশ্যক। ACK প্রসেসিং, TSO এবং অন্যান্য বেশিরভাগ ইভেন্ট করে না। লক্ষ্য করুন যে যখন লোকসান হয়, তখন ফ্লাইটে প্যাকেটের প্রকৃত সংখ্যা অবিলম্বে পরিবর্তিত হয়, কিন্তু পুনঃপ্রচার যন্ত্রপাতি তাদের হারিয়ে যাওয়া হিসাবে চিহ্নিত না করা পর্যন্ত এবং লস্ট_আউট বৃদ্ধি না হওয়া পর্যন্ত tcp_packets_in_flight() এস্টিমেটরে প্রতিফলিত হয় না।

প্যাচ পান

এই প্যাচটি ডেভ মিলারের নেট-নেক্সট-এর বিরুদ্ধে, এবং 3.5-rc2-এ পরিষ্কারভাবে প্রযোজ্য।
দ্রষ্টব্য: কনজেশন কন্ট্রোল মডিউল যা রেনো এবং কিউবিক আপডেট করা হয়নি এবং কম্পাইল করা হবে না। যদি আপনার কনফিগারেশন অন্যান্য কনজেশন কন্ট্রোল মডিউল তৈরি করে, যেমন ভেগাস, স্কেলেবল, হাইস্পিড, ইত্যাদি সেগুলি প্রথমে অক্ষম করতে হবে।