কেন আপনার রাউটারের Wi-Fi রেটিং VPN থ্রুপুট পূর্বাভাস দেয় না
বিজ্ঞাপিত Wi-Fi হার আর মাপা VPN হার দুটি ভিন্ন স্তরের বর্ণনা দেয়। দ্রুততর রাউটার কেনার আগে এই ধারাবাহিক যাচাই সম্পন্ন করুন।
3,000 Mbps Wi-Fi ব্যাজযুক্ত রাউটারও সেই সংখ্যার একটি ভগ্নাংশ গতিতে এনক্রিপ্টেড ট্রাফিক পাঠাতে পারে, এবং দুটি সংখ্যার কোনোটিই মিথ্যা নয়। রেডিও রেটিং চিপসেট যে বেতার লিংক সমর্থন করে তার সর্বোত্তম মডুলেশন বর্ণনা করে; VPN সংখ্যাটি বর্ণনা করে একটি ডিভাইস কত দ্রুত এনক্রিপ্টেড প্যাকেট রাউটারের প্রসেসর দিয়ে এবং আপনার অ্যাক্সেস সার্কিটের বাইরে ঠেলে দিতে পারে। এগুলো ভিন্ন স্তর, ভিন্ন প্যাকেট আকার এবং ভিন্ন পরিমাপ পদ্ধতি। বাক্সের সংখ্যাটিকে এমন একটি সিলিং হিসেবে ধরুন যা কেউ ছোঁয় না, আপনার টানেলের গতির পূর্বাভাস হিসেবে নয়।
ধাপ 1: সংখ্যাটি সীমিত করে এমন চারটি স্তর ম্যাপ করুন
ধীর রাউটার নিয়ে আমি যেসব অভিযোগে কাজ করেছি তার প্রায় সবই চারটি স্তরের একটিতে পড়ে: বেতার লিংক, WAN অ্যাক্সেস হার, ফরওয়ার্ডিং পথ (NAT, ফায়ারওয়াল, কানেকশন ট্র্যাকিং) বা VPN ক্রিপ্টো পথ। এগুলো স্তরে স্তরে যোগ হয়, আর সবচেয়ে ধীর স্তরটি ফলাফল নির্ধারণ করে। বিজ্ঞাপিত Wi-Fi হার কেবল প্রথম স্তরের কথা বলে, এবং তা উদারভাবে বলে।
সেই সংখ্যাটি আসে স্ট্রিম সংখ্যা গুণ চ্যানেল প্রস্থ গুণ চিপসেট যে সর্বোচ্চ মডুলেশন নিয়ে দর কষাকষি করতে পারে তা থেকে। 5 GHz-এ 80 MHz প্রস্থে 1024-QAM সহ 2x2 রেডিও 1,200 Mbps-এর কাছাকাছি বিজ্ঞাপিত হয়, কিন্তু Wi-Fi একটি ভাগ করা, অর্ধ-দ্বিমুখী মাধ্যম: ক্লায়েন্টরা পালা করে, পুনঃপ্রেরণ ও ম্যানেজমেন্ট ট্রাফিক এয়ারটাইম পোড়ায়, আর TCP নিজের ওভারহেড যোগ করে। আদর্শ পরিস্থিতিতে সর্বোচ্চ হার নিয়ে দর কষাকষি করা ক্লায়েন্ট সাধারণত তার অর্ধেকেরও অনেক নিচে মাপে, আর পাশের নেটওয়ার্ক দেখা দিলে আরও কম।
| Symptom | Tier to suspect first |
|---|---|
| Wired clients are slow too | WAN access or forwarding path |
| Only Wi-Fi clients are slow | Radio, airtime, or channel width |
| One stream is slow, four parallel streams add up | Per-connection CPU path, not the link |
| Every stream is slow and one core sits at 100% | Crypto path |
| Fast to LAN hosts, slow to the internet | WAN, not the tunnel |
টেবিলটি যদি রেডিওর দিকে ইশারা করে, আগে বেতার দিকটি ঠিক করুন: ব্যান্ড, চ্যানেল প্রস্থ, দূরত্ব। যদি এটি রেডিওর নিচের দিকে ইশারা করে, পরের চারটি ধাপই গুরুত্বপূর্ণ, এবং অ্যান্টেনা কেনাকাটার পরিমাণ তা বদলাবে না।
ধাপ 2: রেডিও ছোঁয়ার আগে একটি তারযুক্ত বেসলাইন নিন
ল্যাপটপটি Ethernet-এ রাখুন এবং আগে টানেল ছাড়া পথটি মাপুন, কারণ এটি আপনাকে একটি হর দেয়। থ্রুপুট টুলটি দূরের দিকে, যে VPS বা হোম সার্ভার VPN শেষ করে সেখানে চালান, এবং ক্লায়েন্টকে তার পাবলিক ঠিকানায় নির্দেশ করুন যাতে ট্রাফিক আপনার রাউটার ও অ্যাক্সেস সার্কিট অতিক্রম করে।
# on the far host (VPN endpoint)
iperf3 -s
# wired client, direct to the endpoint's public address
iperf3 -c 203.0.113.10 -t 30
# same client, four parallel streams
iperf3 -c 203.0.113.10 -t 30 -P 4
সেই ব্লকের দুটি সংখ্যা দুটি ভিন্ন প্রশ্নের উত্তর দেয়। একটি স্ট্রিম প্রতি-সংযোগ সিলিং দেখায়, যাতে TCP উইন্ডোর আচরণ এবং পথে যেকোনো প্রতি-ফ্লো শেপিং অন্তর্ভুক্ত। চারটি স্ট্রিম দেখায় লিংকে এমন সক্ষমতা আছে কি না যা আপনি ব্যবহার করতে পারছেন না, কারণ সমান্তরাল ফ্লো এমন পাইপ ভরাতে পারে যা একটি ফ্লো ভরাতে পারে না।
এটিকে সৎ রাখুন: একই হোস্ট, দিনের সময় ও সময়কাল, বাড়িতে আর কিছু স্ট্রিম না করেই। ত্রিশ সেকেন্ডের বাল্ক ট্রান্সফার এখানে সঠিক একক, এবং RFC 6349, TCP থ্রুপুট পরীক্ষার কাঠামো, ঠিক এই যুক্তির উপর গড়া, কারণ ছোট বিস্ফোরণ ও ছোট অনুরোধ লিংককে তোয়াজ করে। কিছু বদলানোর আগে বেসলাইনটি লিখে রাখুন।
ধাপ 3: একই পরীক্ষা টানেলের ভিতর দিয়ে চালান
এখন এটি এন্ডপয়েন্টের টানেল ঠিকানার বিপরীতে পুনরাবৃত্তি করুন, একই ক্লায়েন্ট, সময়কাল ও স্ট্রিম সংখ্যা, টানেল চালু আর অন্য কোনো ট্রাফিক ছাড়া। দুটি ফলাফলের অনুপাত আপনাকে বলে সেই হার্ডওয়্যারে এনক্রিপশন ও এনক্যাপসুলেশনের খরচ কত; পরম সংখ্যাটি বলে কাজটির জন্য যথেষ্ট কি না।
ট্রান্সফার চলার সময় কাউন্টারগুলো লক্ষ্য করুন। WireGuard-এ wg show প্রতি পিয়ারের পাঠানো বাইট জানায়; OpenVPN-এ নির্দিষ্ট বিরতিতে লেখা স্ট্যাটাস ফাইল আপনাকে একই দৃশ্য দেয়।
watch -n 1 'wg show wg0 transfer'
# OpenVPN: add --status /run/openvpn/server.status 10 to the server config
tail -f /run/openvpn/server.status
টানেলের সংখ্যা তারযুক্ত বেসলাইনের কাছাকাছি হলে VPN আপনার বাধা নয় এবং আপনি এটিকে দোষ দেওয়া বন্ধ করতে পারেন। যদি এটি বেসলাইনের একটি ভগ্নাংশ হয়, ক্ষতিটি রাউটারের এনক্রিপশন ও ফরওয়ার্ডিং পথের ভিতরে হয়েছে, আর পরের ধাপটি বলে দেবে কোন অংশে।
একটি সতর্কতা: এক্সিট IP বদলে গেলে কিছু স্পিড-টেস্ট সেবা চুপচাপ অন্য মাপার সার্ভার বেছে নেয়, ফলে আপনি দুটি ভিন্ন গন্তব্য তুলনা করেন। সার্ভার ঠিকানাটি নিজেই পিন করুন।
ধাপ 4: প্রসেসরকে গড় নয়, পথ হিসেবে পড়ুন
মোট 30 শতাংশ প্রসেসর দেখানো রাউটারও সম্পৃক্ত হতে পারে: একটি টানেলের কাজ সাধারণত একটি কোর, একটি ইন্টারাপ্ট কিউ বা একটি কার্নেল থ্রেডে পড়ে, তাই গড়টি সিলিং লুকায়। ড্যাশবোর্ড গেজের বদলে প্রতি-কোর ও softirq সংখ্যা দেখুন।
mpstat -P ALL 1
top -H -p $(pgrep -f 'openvpn')
grep -o -m1 aes /proc/cpuinfo
সেই আউটপুটে তিনটি বিষয় গুরুত্বপূর্ণ। একটি কোর 100 শতাংশের কাছে আটকে থাকা আর বাকিগুলো নিষ্ক্রিয় থাকা প্রতি-সংযোগ সীমার দিকে ইশারা করে। ভারী %soft বা একটি প্রসেসরে ব্যস্ত ksoftirqd রিসিভ-সাইড প্যাকেট প্রসেসিংয়ের দিকে ইশারা করে যা কিউগুলোতে ছড়াচ্ছে না। আর aes ফ্ল্যাগ অনুপস্থিত থাকার অর্থ প্রসেসরে AES নির্দেশনা নেই, তাই সিমেট্রিক এনক্রিপশন সফটওয়্যারে চলে এবং প্রতি প্যাকেটে অনেক বেশি খরচ করে।
বাস্তবায়নও গুরুত্বপূর্ণ। প্রচলিত ইউজার-স্পেস OpenVPN ইনস্ট্যান্স একটি টানেলের প্যাকেট মূলত এক জায়গায় প্রসেস করে, তাই দ্রুত বহু-কোর বাক্স সেই টানেলের জন্য একক-কোরের মতো আচরণ করতে পারে। কার্নেলে WireGuard কাজটি CPU-গুলোতে ছড়ায়, আর OpenVPN-এর ডেটা চ্যানেল অফলোড প্যাকেট হ্যান্ডলিংও কার্নেলে নিয়ে যায়, কিন্তু কেবল সেই বিল্ড ও প্ল্যাটফর্মে যা এটি সমর্থন করে। মার্কেটিং পেজে হার্ডওয়্যার ত্বরণের দাবি এই প্রমাণ নয় যে আপনি যে কোড পথ চালাচ্ছেন তা এটি ব্যবহার করে।
ধাপ 5: কী বদলাবেন তা এই ক্রমেই ঠিক করুন
তালিকাটি নিচের দিকে কাজ করুন এবং সত্য প্রথম লাইনেই থামুন, কারণ তার নিচের কিছু বদলালে সংখ্যাটি নড়বে না।
1. তারযুক্ত সরাসরি থ্রুপুট আপনার দেওয়া টাকার চেয়ে কম: প্রোভাইডারের সাথে কথা বলুন, কারণ অ্যাক্সেস সার্কিট যা দেয় না তা টানেল তৈরি করতে পারে না। 2. তারযুক্ত সরাসরি ঠিক আছে কিন্তু টানেল পরীক্ষার সময় একটি কোর আটকে যায়: রাউটারের ক্রিপ্টো পথই সীমা। 3. প্রসেসর নিষ্ক্রিয় কিন্তু টানেল ধীর: MTU ও ফ্র্যাগমেন্টেশন দেখুন, তারপর দূরের এন্ডপয়েন্টের নিজের সক্ষমতা। 4. কেবল Wi-Fi ক্লায়েন্ট ধীর: ব্যান্ড বা চ্যানেল প্রস্থ বদলান, এবং মেনে নিন বিজ্ঞাপিত হার কখনোই VPN সংখ্যা ছিল না।
রাউটার সত্যিই সীমা হলে সৎ বিকল্পগুলো হলো AES নির্দেশনা ও দ্রুততর ফরওয়ার্ডিং পথযুক্ত ডিভাইস, ইউজার-স্পেসের বদলে WireGuard-এর মতো কার্নেল-সাইড টানেল, অথবা ক্লায়েন্টকে ডিভাইসেই সরিয়ে নেওয়া যাতে রাউটার এনক্রিপ্ট করা বন্ধ করে। বেঞ্চমার্ক জিততে প্রমাণিত এনক্রিপশন বন্ধ করা তাদের একটি নয়; এটি নিরাপত্তার একটি বৈশিষ্ট্যকে এমন সংখ্যার বিনিময়ে দেয় যা তবুও বাক্সের সাথে মিলবে না।
কিছু কেনার আগে একই সার্ভার ও সময়কালে নতুন ডিভাইসে ধাপ 2 ও 3 আবার চালান, তারপর শিখর নয়, অনুপাত তুলনা করুন।