یک شکلدهنده tc بهتنهایی هر کلاینت VPN را محدود نمیکند
محدودیت برای هر کلاینت به هویت شمارش، دو جهت و یک نقطه طبقهبندی نیاز دارد. یک شکلدهنده روی تونل به معنای یک سهمیه برای هر کاربر نیست.
دستور کامل به نظر میرسد: هر کلاینت VPN را به 20 Mbit/s محدود کن. اما کامل نیست، و یک نظم صفبندی روی رابط تونل آن را فراهم نمیکند. «برای هر کلاینت» میتواند به معنای هر نشانی تونل، هر دستگاه یا هر حساب باشد، و هر انتخاب بستهها را به شکلی متفاوت طبقهبندی میکند. پیش از نوشتن هر قاعده، مشخص کن که الزام در واقع کدام یک را نام میبرد.
همه چیز در ادامه درباره فاصله میان آن جمله و چیزی است که کار میکند.
«برای هر کلاینت» نخست باید چه معنایی داشته باشد
نشانی تونل آسان طبقهبندی میشود و آسان بازیافت. دستگاه سختتر است، چون یک حساب میتواند چند دستگاه داشته باشد و یک دستگاه میتواند چند نشانی داشته باشد، بهویژه با IPv6. برای یک سیاست انصاف، حساب معنادارترین واحد است و سختترین برای دیدن در سرآیند بسته. هر تعریف کلید شمارش خودش را ایجاب میکند، پس سیاستی که میان آنها سرگردان باشد کاری را که توصیف ادعا میکند انجام نمیدهد.
جهت دومین واژه غایب است. بارگذاری، بارگیری و ترکیبی سه الزام متفاوتاند، و یک قاعده خروجی روی یک رابط بهندرت هر دو مسیر را پوشش میدهد.
نقطهای را انتخاب کن که کلاینت هنوز در آن دیده میشود
هر جهت نسبت به یک رابط تعریف میشود. آنچه از تونل سرور به سوی کلاینت دوردست بیرون میرود برای آن کلاینت بارگیری شمرده میشود؛ آنچه کلاینت میفرستد وارد تونل میشود و سپس به سوی مقصدش بیرون میرود. برای هر جهت یک نقطه زمانبندی انتخاب کن و بپرس چه فیلدهایی آنجا وجود دارد. پیش از NAT مبدأ، بارگذاری هنوز نشانی درونی کلاینت را حمل میکند؛ پس از ترجمه، یک تطابق ساده مبدأ ممکن است دیگر آن را شناسایی نکند.
در مسیر رمزنگاریشده سرآیندها از آنِ انتقال VPN هستند، پس فیلتری که نشانیهای درونی را تطبیق میدهد چیزی برای تطبیق ندارد. یک طراحی میتواند زودتر طبقهبندی کند و نشانهای را به زمانبند بعدی بسپارد، اما این سپردن باید آگاهانه باشد: نشانههای بسته، نشانههای اتصال و کلاسهای زمانبند وضعیت متفاوتی هستند، نه یک مقدار که به جلو داده میشود.
سبدها خودبهخود ظاهر نمیشوند
سبد نشانهای که به یک رابط بسته شده هر ترافیکی را که از آن استفاده کند شکل میدهد؛ برای هر نشانی مبدأ سبد تازهای نمیسازد. طراحی مبتنی بر کلاس در عوض ترافیک انتخابشده را در کلاسها دستهبندی میکند، فیلترها عضویت را تعیین میکنند، و راهنمای HTB نرخ یک کلاس را از سقف آن جدا میکند وقتی والد پهنای باند مازاد دارد. اگر منظور سقف سخت است، سقف را بگذار و رفتار قرضگیری را آگاهانه تعیین کن؛ هر رقم نرخ را بیشینه مطلق نپندار.
وقتی الزام برای هر کلاینت است، دو انتقال همزمان باید یک سهمیه را تقسیم کنند. دادن نرخ کامل به هر جریان سیاست دیگری است، و از هر آزمونی که فقط یک بارگیری را ببیند جان سالم به در میبرد.
دو دستگاه، یک حساب، یک سهمیه؟
محدود کردن دو نشانی دستگاه بهطور جداگانه هرگز به یک سهمیه در سطح حساب جمع نمیشود، حتی وقتی هر دو دستگاه بهعنوان یک شخص وارد میشوند. همین برای یک LAN کامل که پشت یک همتا ترجمه میشود، یا برای نشانیهای IPv6 افزودهای که طبقهبند هرگز انتظارش را نداشت، صادق است. پیوند نشانی با هویت را بهروز نگه دار، و به یاد داشته باش که نشانی پایدار نقشه را ساده میکند بیآنکه مالکش را احراز هویت کند.
رفتار انفجار و صف را هم تعریف کن. سبدهای نشانه انفجارهای کوتاه بالاتر از میانگین را مجاز میکنند، و بافر کردن تأخیر میافزاید؛ پلیس کردن مازاد و صف کردن آن برای بعد تصمیمهای متفاوتی با نشانههای متفاوت هستند.
برای اعتبارسنجی، دو انتقال از یک کلاینت اجرا کن، کلاینت دومی اضافه کن، و شمارندههای کلاس را در هر جهت بخوان.