দুটি লেবেল এমনভাবে ব্যবহৃত হয় যেন তারা একই জিনিস: হার্ডওয়্যার ত্বরান্বিত এবং কার্নেলে অফলোড করা। একটি বর্ণনা করে একটি লাইব্রেরির AES রুটিন কোন নির্দেশনা চালায়, আর অন্যটি বর্ণনা করে প্যাকেট প্রক্রিয়াকরণ কোথায় ঘটে। একটি VPN প্রথমটি ছাড়া দ্বিতীয়টি থাকতে পারে, দ্বিতীয়টি ছাড়া প্রথমটি থাকতে পারে, বা দুটোই একসঙ্গে থাকতে পারে। কর্মক্ষমতা নিয়ে আপনার যে কোনো সিদ্ধান্ত শুরু হতে হবে আপনি আসলে দুটির কোনটি বদলাচ্ছেন তা নাম দিয়ে।

দুটি অক্ষ, একটি স্কোর নয়

প্রথম অক্ষটি বাস্তবায়ন: AES-256-GCM করা কোডটি প্রসেসরের নিবেদিত নির্দেশনা ব্যবহার করা সংস্করণে পাঠায়, নাকি সেগুলোকে সাধারণ পাটিগণিত হিসেবে চালানো বহনযোগ্য রুটিনে? এই পছন্দ ক্রিপ্টোগ্রাফিক লাইব্রেরির ভেতরে থাকে এবং এটি আরম্ভ হওয়ার সময় নেওয়া হয়।

দ্বিতীয় অক্ষটি স্থাপন: প্যাকেটটি কার্নেলের রূপান্তর পথ দিয়ে যায়, নাকি ব্যবহারকারী স্থানের একটি ডিমন টানেল ডিভাইস থেকে পড়ে, এনক্রিপ্ট করে এবং ফিরে লেখে।

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

প্রথম অক্ষ: কোন কোড এনক্রিপশন করে

OpenSSL আরম্ভের সময় প্রসেসরের বৈশিষ্ট্য শনাক্ত করে এবং ফলাফলটি অনুকূলিত কোড পথ বাছতে ব্যবহার করে, যেমন x86 সক্ষমতার নথি বর্ণনা করে। AES-NI সেই প্রেরণের পেছনে থাকা নথিভুক্ত সক্ষমতাগুলোর একটি। এর কোনোটিই লাইব্রেরিকে কার্নেল উপাদান হতে বাধ্য করে না।

দ্রুত পথ নেওয়া হয়েছে ধরে নেওয়ার আগে বৈশিষ্ট্যটি প্রক্রিয়াটির কাছে দৃশ্যমান কি না নিশ্চিত করুন। Linux-এ উৎস হলো /proc/cpuinfo-এর flags ক্ষেত্র, এবং অতিথির ভেতরে এটি ভৌত হোস্টের মডেল নামের বদলে হাইপারভাইজার যা প্রকাশ করে তা প্রতিফলিত করে।

grep -m1 '^flags' /proc/cpuinfo | grep -o '\baes\b'
openssl list -providers -verbose

দ্বিতীয় কমান্ডটি সেই বিল্ডে লোড হওয়া প্রদানকারীদের নাম বলে। এটি আপনাকে বলে না VPN সেবাটি কোন লাইব্রেরি সংযুক্ত করেছে, এবং একটি হোস্ট দুটি OpenSSL ইনস্টলেশন বহন করতে পারে যদিও চলমান প্রক্রিয়াটি তাদের একটিই ব্যবহার করে।

দ্বিতীয় অক্ষ: প্যাকেট পথ কোথায় চলে

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

এটি নির্দেশনা সমর্থন তৈরি করে না, সাইফার কনফিগার করে না, বা বিদ্যমান রুট কাজ করে না।

ভার্চুয়ালাইজেশন এই অক্ষেও একটি ভাঁজ যোগ করে। একটি অতিথিকে এমন মাস্ক করা CPU মডেল দেওয়া হতে পারে যা হোস্টের থাকা বৈশিষ্ট্য লুকায়, আর একটি নেস্টেড অতিথি আরও কম দেখতে পারে। সক্ষমতার দৃশ্যটি হাইপারভাইজার কনসোল থেকে নয়, VPN যেখানে সত্যিই চলে সেই পরিবেশের ভেতর থেকে পড়ুন।

প্রতিটি পছন্দ কী কেনে, আর কী পারে না

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

যদি সীমাটি একটি congested uplink, ক্ষতিপূর্ণ পথ, দীর্ঘ যাওয়া-আসার সময়, সম্পৃক্ত গন্তব্য সেবা বা একটি কোরেতে পিন করা একটি থ্রেড হয়, স্থাপন গুরুত্বপূর্ণ কিছু বদলায় না। নির্দেশনা বাছাইয়েও একই কথা: নিবেদিত হার্ডওয়্যারে AES হারানো রুট মেরামত করতে পারে না, এবং নাম সমাধান ব্যর্থ হওয়ায় টানেলটি অলস থাকলে এটি সাহায্য করবে না।

যেখানে দুটোই প্রযোজ্য, সেখানে তারা একত্র হয়। কার্নেল পথ কার্নেলের ক্রিপ্টো API-এর ভেতরে একই নির্দেশনা-স্তরের প্রেরণ ব্যবহার করতে পারে, আর ভালোভাবে বাছাই করা লাইব্রেরিসহ ব্যবহারকারী স্থানের পথ ইতিমধ্যেই তা ব্যবহার করছে। সিদ্ধান্তটি বিমূর্তভাবে কোনটি দ্রুত নয়; বরং কোন ব্যয়ের জন্য আপনার প্রমাণ আছে।

কিছু বদলানোর আগে চারটি তথ্য লিখে রাখুন

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

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

একটি জিনিস বদলান, তারপর একই এন্ডপয়েন্ট ও একই স্থানান্তর দিকের সঙ্গে সামঞ্জস্যপূর্ণ কাজের ভার দিয়ে তুলনা করুন। আপনি যে গতির দাবি মাপেননি তা একটি টোকার চেয়ে কম মূল্যবান যেখানে বলা আছে ব্যাকএন্ড কখনো সন্দেহের মধ্যে ছিল না।

সম্পর্কিত নিবন্ধ