টিসিপি সংযোগে মাল্টিপ্লেক্সগুলি ব্লক করে দেওয়া কি ভাল ধারণা?


13

দুটি হোস্টের মধ্যে আমার বেশ কয়েকটি দ্বৈত চ্যানেল দরকার। কেবলমাত্র একটি টিসিপি সংযোগ স্থাপনের জন্য অনেকগুলি সুবিধা রয়েছে। তবে আমি সন্দেহ করি যে মাল্টিপ্লেক্সিং কিছু অনিবার্য সমস্যার কারণ হতে পারে। এটি কর্মক্ষমতা ক্ষতিগ্রস্থ করবে বা উল্লেখযোগ্যভাবে বিলম্বিতা বৃদ্ধি করবে? এবং মেমরি ব্যবহার এবং সিপিইউ ব্যবহার সম্পর্কে কি? আপনি দিতে চান এমন কোন পরামর্শ বা সাবধানতা আছে?

উত্তর:


10

টিএলডিআর: টিসিপি-র শীর্ষে একাধিক চ্যানেলগুলি মাল্টিপ্লেক্স করার সময় আপনি যে প্রধান ত্রুটিটি লক্ষ্য করতে পারেন (যদি আপনি এটি সঠিকভাবে করেন) চ্যানেলগুলির মধ্যে হেড-অফ-লাইন ব্লক হওয়ার কারণে বর্ধিত বিলম্ব হয়

পরিণতি: আপনি যদি বিলম্বের বিষয়ে চিন্তা না করেন তবে আপনার ভাল হওয়া উচিত।

অন্যদিকে, একক টিসিপি সংযোগ ব্যবহারের অর্থ "অন্যান্য প্রবাহ এবং দীর্ঘকালীন সংযোগগুলির সাথে কম প্রতিযোগিতা, যার ফলে উপলভ্য নেটওয়ার্কের সক্ষমতা আরও উন্নত হবে"

টিসিপির মাধ্যমে অবরুদ্ধ অবরুদ্ধ

যদি আপনি একই টিসিপি স্ট্রিমের শীর্ষে একাধিক চ্যানেলগুলি মাল্টিপ্লেক্স করেন তবে চ্যানেলগুলি হেড-অফ-লাইন ব্লক করে ভোগ করতে পারে :

হেড-অফ-লাইন ব্লকিং (এইচএল) সংঘটিত হতে পারে যখন ট্রান্সপোর্ট প্রোটোকলগুলি অর্ডার দেওয়া বা আংশিক আদেশযুক্ত পরিষেবা সরবরাহ করে: যদি বিভাগগুলি হারিয়ে যায়, তবে পরবর্তী বার্তাগুলি রিসিভার সারিতে সফল পুনঃস্থাপনের জন্য অপেক্ষা করতে হয় এবং এইভাবে বিলম্বিত হয়।

আপনি যখন TCP এর উপরে একাধিক স্ট্রিমগুলি মাল্টিপ্লেক্স করেন তখন আপনি চ্যানেলগুলির মধ্যে এইচএল পান ।

যদি চ্যানেল এ টিসিপি প্রেরণকারী বাফার পূরণ করেছে, চ্যানেল বি এর কোনও নতুন তথ্য কার্যকরভাবে দূরবর্তী অ্যাপ্লিকেশন স্তরে স্থানান্তরিত করার আগে আপনাকে এই সমস্ত তথ্য পাওয়ার আগে অপেক্ষা করতে হবে।

দেখুন "বিভিন্ন TCP উপরে multiplexing" বিভিন্ন TCP শীর্ষ এবং এর চ্যানেলগুলিতে multiplexing সম্পর্কে আরো বিস্তারিত জানার জন্য hackernews আলোচনা

টিসিপিতে মাল্টিপ্লেক্সিংয়ের উদাহরণ

এসএসএইচের মাধ্যমে চ্যানেল মাল্টিপ্লেক্সিং (টিসিপি ওভার)

এর একটি সাধারণ উদাহরণ এসএসএইচ। SSH- র একাধিক চ্যানেল (দেখুন মাল্টিপ্লেক্স করতে ControlMaster, ControlPathএবং ControlPersistOpenSSH এ)। এটি ব্যবহার করে একটি নতুন এসএসএইচ অধিবেশন শুরু করার ব্যয় হ্রাস করা হয় (প্রাথমিক সূক্ষ্মতা) তবে একটি চ্যানেলে ভারী স্থানান্তর সাধারণত অন্যগুলির বিলম্ব / ইন্টারঅ্যাক্টিভিটি বাড়ায় (আপনি একাধিক টিসিপি স্ট্রিম ব্যবহার করলে তা ঘটে না): আপনি যদি ইন্টারেক্টিভ ব্যবহার করছেন সেশনগুলি এবং একই চ্যানেলে একটি ভারী ফাইল স্থানান্তরকে ট্রিগার করা শুরু করুন, আপনার সেশনটি অনেক কম ইন্টারেক্টিভ হওয়া শুরু করবে।

টিসিপিতে মাল্টিপ্লেক্সড এইচটিটিপি / 2

এইচএলটি / ২ টি এইচএল ব্লকিং ঠিক করার জন্য টিসিপির মাধ্যমে অনুরোধ / প্রতিক্রিয়াগুলির একাধিক সংযোগ ব্যবহার করে। এই বৈশিষ্ট্যটি HTTP / 2 সম্পর্কে অনেক নিবন্ধ এবং কাগজপত্রে বিজ্ঞাপন দেওয়া হয় is HTTP- র / 2 বোঝায় যা RFC দাবিগুলি:

এইচটিটিপি / ১.১ অনুরোধ পাইপলাইনের যোগ করেছে, তবে এটি কেবল আংশিকভাবে অনুরোধ অনুরোধটিকে সম্বোধন করেছে এবং এখনও লাইন অবরুদ্ধ হওয়াতে ভুগছে।

[...]

ফলাফলযুক্ত প্রোটোকলটি নেটওয়ার্কের পক্ষে আরও বন্ধুত্বপূর্ণ কারণ HTTP / 1.x এর তুলনায় কম টিসিপি সংযোগ ব্যবহার করা যেতে পারে। এর অর্থ অন্যান্য প্রবাহ এবং দীর্ঘকালীন সংযোগগুলির সাথে কম প্রতিযোগিতা, যার ফলে উপলব্ধ নেটওয়ার্কের সক্ষমতা আরও ভালভাবে ব্যবহার করতে পারে।

তবে যা আলোচিত নয় তা হ'ল এইচএল ব্লকিং পুরোপুরি সমাধান করা হয় না। টিসিপি-স্তরের এইচএল ব্লক করা থেকে টিসিপি ওভারে এইচটিটিপি / 2 এখনও ভোগাচ্ছে ) ।

এটি কুইক সম্পর্কে এই এলডাব্লুএন নিবন্ধে আলোচনা করা হয়েছে :

এইচটিটিপি / 2 একক সংযোগে অন্তর্নির্মিত একাধিক "স্ট্রিম" ব্যবহার করে এই সমস্যাটির সমাধান করার জন্য ডিজাইন করা হয়েছিল । [...] এটি একটি নতুন সমস্যা তৈরি করে: একক প্যাকেটের ক্ষতি হ'ল একসাথে সমস্ত স্ট্রিমের সংক্রমণ বন্ধ করে দেবে, নতুন বিলম্বিত সমস্যা তৈরি করবে। হেড-অফ-লাইন-ব্লকিং সমস্যার এই রূপটি টিসিপিতে তৈরি করা হয়েছে এবং এইচটিটিপি স্তরে আরও টুইট দিয়ে স্থির করা যায় না।

অন্যান্য মাল্টিপ্লেক্সিং কৌশল

SCTP এর

এটি এসসিটিপি (মাল্টিস্ট্রিমিং) এর একটি স্বতন্ত্র বৈশিষ্ট্য, আপনার একই এসসিটিপি সংস্থায় একাধিক স্বতন্ত্র স্ট্রিম থাকতে পারে এবং প্রতিটি স্ট্রিম অন্যটি ব্লক করে না।

এসএসটিপির মাধ্যমে এসএসএইচ দেখুন - এসএসএইচের ক্রস-চ্যানেল এইচএলএল ব্লকিং এড়ানোর জন্য এসসিটিপি ব্যবহারের প্রভাবের জন্য এসসিটিপিতে এটি রূপান্তর করে একটি মাল্টি-চ্যানেল প্রোটোকল অনুকূলকরণ:

এসসিটিপি কেবলমাত্র এক-একটি স্ট্রিমের মধ্যে বার্তাগুলির ক্রম সংরক্ষণ করে যা হেড-অফ-লাইন ব্লকিং হিসাবে পরিচিত প্রভাবকে প্রশমিত করতে পারে। যদি কোনও বার্তাটি হারিয়ে যায় তবে অর্ডার সংরক্ষণের জন্য হারিয়ে যাওয়াটিকে পুনঃপ্রেরণ না করা পর্যন্ত পরবর্তী বার্তাগুলি বিলম্ব করতে হবে। যেহেতু কেবল একই স্ট্রিমের বার্তাগুলি বিলম্বিত করতে হয়, ক্ষতির পরে প্রভাবিত বার্তার সংখ্যা হ্রাস পায়।

[...]

এসসিটিপির স্ট্রিমগুলিতে এসএসএইচের চ্যানেলগুলি ম্যাপিংয়ের মাধ্যমে, মাল্টি-স্ট্রিমিংয়ের সুবিধাটি এসএসএইচে উপলব্ধ করা হয়েছে, যা হেড-অফ-লাইন ব্লকিংয়ের প্রশমন

এসসিটিপি স্থাপন করা অগত্যা সহজ নয় (কারণ ওএস উপলভ্যতা, মিডলবক্স ইন্টারঅ্যাকশন ইত্যাদি)। একটি সম্ভাবনা তা বাস্তবায়ন হয় এর ফলে UDP উপর ইউজার-স্পেসের মধ্যে

কুইক (ইউডিপিতে মাল্টিপ্লেক্সিং)

আর একটি উদাহরণ, ইউডিপি-র উপরে এইচটিটিপি মাল্টিপ্লেক্সিংয়ের জন্য পরীক্ষামূলক কুইক প্রোটোকল হ'ল (কারণ এইচটিটিপি / ২ হিসাবে টিসিপির শীর্ষে মাল্টিপ্লেক্সিং একাধিক স্ট্রিম এইচএলটি অবরোধের ফলে ভোগ করে ):

QUIC একটি নতুন পরিবহন যা লেটেন্সি হ্রাস বিভিন্ন TCP তুলনায়। সরেজমিনে, ক্যুইক ইউডিপিতে প্রয়োগ করা টিসিপি + টিএলএস + এইচটিটিপি / 2 এর সাথে খুব মিল।

[...]

লাইন ব্লকিংয়ের মাথা ছাড়াই মাল্টিপ্লেক্সিং

গুগলের কুইক প্রোটোকল: টিসিপি থেকে ইউডিপিতে ওয়েব সরিয়ে নেওয়া টিসিপি -র উপরে মাল্টিপ্লেক্সিং চ্যানেলগুলি যখন কুইক এবং এইচএল ব্লক করার একটি ভাল ওভারভিউ উপস্থাপন করে।

সাম্প্রতিক একটি উপস্থাপনা দাবি করেছে যে কুইকের ওপরে এইচটিটিপি বিলম্বিতা উন্নতি করে তবে এইচএল-ব্লকিং উন্নতি একটি "ছোট সুবিধা":

0-আরটিটি, বিলম্বিত উন্নতির 50% এরও বেশি

[...]

কম সময়সীমা ভিত্তিক পুনঃপ্রেরণাগুলি লেজের বিলম্বকে উন্নত করে […]

অন্যান্য, আরও ছোট সুবিধা, যেমন লাইন ব্লকিংয়ের প্রধান of

দ্রষ্টব্য যে কুইকটিকে "ইউডিপিতে টিসিপি + টিএলএস + এইচটিটিপি / 2 এর সাথে খুব একই রকম" হিসাবে বর্ণনা করা হয়েছে এটি আসলে একটি সাধারণ-উদ্দেশ্য পরিবহণ যা HTTP / 2 এর থেকে স্বাধীনভাবে ব্যবহার করা যেতে পারে এবং আপনার প্রয়োজন অনুসারে হতে পারে।

দ্রষ্টব্য: এইচটিটিপি / কুইক সি এইচটিটিপি / 3 হিসাবে মানক হতে চলেছে ।


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

আমি এসসিটিপি বিবেচনা করেছি। তবে মনে হচ্ছে এসসিটিপি এখনও খুব বেশি পোর্টেবল হয় নি এবং NAT ডিভাইসগুলি এটি খারাপভাবে পরিচালনা করে handle
শেরউড ওয়াং

@ শেরউডওয়াং, আপনার মাল্টিপ্লেক্সিং প্রোটোকলে একটি নিয়ন্ত্রণ প্রবাহ প্রক্রিয়া থাকার ফলে এইচএল-ব্লক হওয়া আটকাবে না।
ysdx

যখন প্রেরকের কাছে কোনও ডেটা উপলভ্য থাকে না তখন প্রেরক প্রাপককে পরবর্তী মাল্টিপ্লেক্সড চ্যানেলে স্যুইচ করতে এবং এই চ্যানেলের ডেটা ফ্রেম প্রেরণ চালিয়ে যেতে বলার জন্য একটি ফ্লো কন্ট্রোল ফ্রেম প্রেরণ করতে পারে। রিসিভার পূর্ণ হিসাবে, অনুরূপ প্রক্রিয়াও ব্যবহার করা যেতে পারে। এটি অবশ্যই রাউন্ড-ট্রিপ বিলম্বের অর্ধেকের সাথে এইচএল ব্লকিং প্রতিরোধ করে।
শেরউড ওয়াং

@ শেরউডওয়াং, টিসিপি এইচএল সমস্যাটি সত্যই গ্রহণের পক্ষে। কিছু প্যাকেট সংক্রমণে হারিয়ে গেলে গ্রাহক নিম্নলিখিত প্যাকেটগুলি ইউজারস্পেসে দিতে পারবেন না। প্যাকেটটি পুনঃপ্রেরণ এবং গ্রহণের জন্য অপেক্ষা করতে হবে। এই প্যাকেটটি না পাওয়া পর্যন্ত পুনরায় সমস্ত ডেটা (অন্যান্য মাল্টিপ্লেক্স স্ট্রিমের ইভেন্ট) অবরুদ্ধ।
ysdx

3

আমি বলব যে আপনার জিরোমিকিউ গাইড পড়তে হবে, কারণগুলি এবং অসুবিধাগুলি সহ এটি যে প্যাটার্নগুলি দেয় তা প্রয়োজনীয় পাঠ্য।

তবে অন্যথায়, আপনার অ্যাপ্লিকেশন ডেটা বিতরণ থেকে নেটওয়ার্ক চ্যানেলটি সংযোগ বিচ্ছিন্ন করতে কোনও সমস্যা নেই। আপনাকে প্রেরিত ডেটা প্যাকেটগুলির muxing এবং demuxing নিতে হবে (এবং আমি এখানে একটি প্যাকেট ভিত্তিক আর্কিটেকচারের পরামর্শ দেব, একটি অবিচ্ছিন্ন প্রবাহে ডেটা স্ট্রিমিং না করে) এবং প্রতিটি প্রান্তে সেগুলির বাফারিং করতে হবে।

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


2

হ্যাঁ, আমি এই নীতিটি যথাযথভাবে ব্যবহার করে একটি ক্লায়েন্ট-সার্ভার ডেটাবেস সিস্টেম তৈরি করেছি।

একটি টিসিপি সংযোগে চ্যানেলগুলি মাল্টিপ্লেক্সে প্রতিটি প্রতিটি ডেটার প্যাকেট প্রেরণ করে, যা পরে অন্য প্রান্তে প্রাপকগুলিতে বিভক্ত হয়।

একটি গুরুতর চ্যানেলের মাধ্যমে সংযোগের হগিংটি টিসিপি সংযোগ প্রেরকের মাধ্যমে রাউন্ড-রবিন নির্বাচন করে কোন প্যাকেট প্রেরণের জন্য ডেটা প্রস্তুত রয়েছে এমন চ্যানেলগুলির মধ্যে থেকে প্রেরণ করা হবে selection

একটি চ্যানেলের 1 জিবি প্যাকেট প্রেরণ করার সিদ্ধান্ত নিয়ে এবং অন্য সবাইকে লক করে দেওয়ার ক্ষেত্রে কেস পরিচালনা করতে প্রেরক কোনও প্যাকেটটিকে অংশগুলিতে বিভক্ত করতে এবং অন্য চ্যানেলটির পরিবর্তনের আগে কেবল একটি অংশ প্রেরণ করতে পারে। গ্রাহকরা প্যাকেটটি দেখার আগে প্রাপ্তির শেষে একটি প্যাকেটে খণ্ডগুলির পুনরায় অপসারণ করা সম্পন্ন হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.