آیا می توان چندین کانال اینترنتی را در یک کانال ترکیب کرد؟ تصورات غلط و افسانه های زیادی در مورد این موضوع وجود دارد، حتی مهندسان شبکه با تجربه اغلب نمی دانند که این امکان پذیر است. در بیشتر موارد، تجمع پیوندها به اشتباه به عنوان تعادل NAT یا Failover نامیده می شود. اما جمع واقعی اجازه می دهد یک اتصال TCP را به طور همزمان روی تمام کانال های اینترنت اجرا کنیدبه عنوان مثال پخش ویدئو به طوری که در صورت قطع شدن هر یک از کانال های اینترنتی، پخش قطع نشود.
راه حل های تجاری گران قیمتی برای پخش ویدیو وجود دارد، اما چنین دستگاه هایی هزینه زیادی دارند. این مقاله پیکربندی بسته آزاد و باز OpenMPTCPRouter را شرح میدهد و به افسانههای رایج در مورد جمعبندی کانال میپردازد.
افسانه ها در مورد کانال های جمع بندی
بسیاری از روترهای خانگی وجود دارند که از عملکرد Multi-WAN پشتیبانی می کنند. گاهی اوقات سازندگان این کانال را جمع بندی می نامند که کاملاً درست نیست. بسیاری از نتورکرها معتقدند که علاوه بر
ایجاد تعادل در سطح اتصالات IP
این مقرون به صرفه ترین و محبوب ترین راه برای استفاده همزمان از چندین کانال اینترنتی است. برای سادگی، بیایید تصور کنیم که شما سه ISP دارید که هر کدام یک آدرس IP واقعی از شبکه خود به شما می دهند. همه این ارائه دهندگان به یک روتر با پشتیبانی از عملکرد Multi-WAN متصل هستند. این می تواند OpenWRT با بسته mwan3، mikrotik، ubiquiti یا هر روتر خانگی دیگری باشد، زیرا اکنون این گزینه دیگر غیر معمول نیست.
برای شبیه سازی وضعیت، تصور کنید که ارائه دهندگان آدرس های زیر را به ما داده اند:
WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33
یعنی اتصال به سرور راه دور example.com از طریق هر یک از ارائه دهندگان، سرور راه دور سه آی پی منبع مستقل مشتری را مشاهده خواهد کرد. تعادل به شما امکان می دهد بار را بین کانال ها تقسیم کنید و از هر سه آنها به طور همزمان استفاده کنید. برای سادگی، بیایید تصور کنیم که بار را بین همه کانال ها به طور مساوی تقسیم می کنیم. در نتیجه، هنگامی که مشتری یک سایت با سه تصویر را به صورت مشروط باز می کند، هر تصویر را از طریق یک ارائه دهنده جداگانه دانلود می کند. در سمت سایت، مانند اتصالات از سه IP مختلف به نظر می رسد.
هنگام تعادل در سطح اتصال، هر اتصال TCP از یک ارائه دهنده جداگانه عبور می کند.
این حالت متعادل کننده اغلب برای کاربران مشکلاتی ایجاد می کند. برای مثال، بسیاری از سایتها کوکیها و توکنها را به آدرس IP مشتری متصل میکنند و اگر ناگهان تغییر کند، درخواست حذف میشود یا کلاینت از سایت خارج میشود. این اغلب در سیستم های مشتری-بانک و سایت های دیگر با قوانین جلسه کاربر سختگیرانه بازتولید می شود. در اینجا یک مثال ساده توضیحی آورده شده است: فایلهای موسیقی در VK.com فقط با یک کلید جلسه معتبر که به IP متصل است در دسترس هستند، و کلاینتهایی که از چنین تعادلی استفاده میکنند اغلب صدا را پخش نمیکنند، زیرا درخواست از طریق ارائهدهندهای که جلسه به آن محدود شده است انجام نشده است.
هنگام دانلود تورنت، تعادل در سطح اتصال، پهنای باند همه کانال ها را جمع می کند.
چنین تعادلی به شما این امکان را می دهد که در هنگام استفاده از چندین اتصال، جمع بندی سرعت کانال اینترنت را بدست آورید. به عنوان مثال، اگر هر یک از سه ارائه دهنده سرعت 100 مگابیت داشته باشد، در هنگام دانلود تورنت، ما 300 مگابیت خواهیم داشت. زیرا تورنت تعداد زیادی اتصال را باز می کند که بین همه ارائه دهندگان توزیع شده و در نهایت از کل کانال استفاده می شود.
درک این نکته مهم است که یک اتصال TCP تنها همیشه از طریق یک ارائه دهنده انجام می شود. یعنی اگر یک فایل حجیم را از طریق HTTP دانلود کنیم، این ارتباط از طریق یکی از ارائه دهنده ها برقرار می شود و اگر ارتباط با این ارائه دهنده قطع شود، دانلود نیز قطع می شود.
یک اتصال همیشه فقط از یک کانال اینترنتی استفاده می کند
این در مورد پخش ویدیویی نیز صادق است. اگر پخش جریانی ویدیو را در برخی Twitch مشروط پخش کنید، تعادل در سطح اتصالات IP هیچ مزیت خاصی را به همراه نخواهد داشت، زیرا جریان ویدیو در یک اتصال IP پخش می شود. در این حالت، اگر ارائه دهنده WAN 3 شروع به مشکلات ارتباطی مانند از دست دادن بسته یا کاهش سرعت کند، نمی توانید بلافاصله به ارائه دهنده دیگری سوئیچ کنید. پخش باید متوقف شود و دوباره وصل شود.
جمع بندی واقعی کانال
مجموع واقعی کانال ها باعث می شود که یک اتصال به Twitch شرطی از طریق همه ارائه دهندگان به طور همزمان شروع شود به گونه ای که در صورت قطع شدن هر یک از ارائه دهندگان، اتصال قطع نشود. این یک مشکل شگفت آور دشوار است که هنوز راه حل بهینه ای ندارد. بسیاری حتی نمی دانند که این امکان پذیر است!
از تصاویر قبلی، به یاد میآوریم که سرور Twitch شرطی میتواند یک جریان ویدیویی را از ما فقط از یک آدرس IP منبع دریافت کند، به این معنی که همیشه باید با ما ثابت باشد، صرف نظر از اینکه کدام ارائهدهنده از کار افتاده و کدام یک کار میکنند. برای رسیدن به این هدف، ما به یک سرور جمع بندی نیاز داریم که تمام اتصالات ما را خاتمه داده و آنها را در یک ادغام کند.
سرور جمع بندی تمام کانال ها را در یک تونل جمع می کند. همه اتصالات از آدرس سرور جمع منشا می گیرند
این طرح از همه ارائه دهندگان استفاده می کند و غیرفعال کردن هر یک از آنها باعث قطع ارتباط با سرور Twitch نمی شود. در واقع این یک تونل VPN ویژه است که در زیر کاپوت آن چندین کانال اینترنتی به طور همزمان وجود دارد. وظیفه اصلی چنین طرحی به دست آوردن کانال ارتباطی با بالاترین کیفیت است. اگر مشکلات از یکی از ارائه دهندگان شروع شود، از دست دادن بسته، افزایش تاخیر، پس این به هیچ وجه نباید بر کیفیت ارتباط تأثیر بگذارد، زیرا بار به طور خودکار بر روی کانال های دیگر و بهتری که در دسترس هستند توزیع می شود.
راه حل های تجاری
این مشکل مدتهاست که برای کسانی که رویدادها را به صورت زنده پخش می کنند و به اینترنت باکیفیت دسترسی ندارند، نگران کننده بوده است. برای چنین کارهایی، چندین راه حل تجاری وجود دارد، به عنوان مثال، Teradek چنین روترهای هیولایی می سازد که بسته های مودم USB در آنها قرار می گیرد:
روتر پخش ویدئو با عملکرد جمع کانال
چنین دستگاه هایی معمولاً قابلیت فیلم برداری از طریق HDMI یا SDI را دارند. همراه با روتر، اشتراک سرویس جمع بندی کانال و همچنین پردازش جریان ویدئو، رمزگذاری آن و ارسال مجدد آن به فروش می رسد. قیمت چنین دستگاه هایی از 2 دلار با مجموعه ای از مودم ها به علاوه اشتراک جداگانه در این سرویس شروع می شود.
گاهی اوقات بسیار ترسناک به نظر می رسد:
راه اندازی OpenMPTCPRouter
پروتکل
نحوه عملکرد OpenMPTCPRouter
تنظیم سرور خلاصه
سرور جمع بر روی اینترنت قرار دارد و اتصالات را از تمام کانال های روتر مشتری به یک کانال خاتمه می دهد. آدرس IP این سرور در هنگام دسترسی به اینترنت از طریق OpenMPTCPRouter آدرس خارجی خواهد بود.
برای این کار از سرور VPS در دبیان 10 استفاده می کنیم.
الزامات سرور جمع بندی:
- MPTCP در مجازی سازی OpenVZ کار نمی کند
- باید امکان نصب هسته لینوکس خود را داشته باشید
سرور با اجرای یک دستور مستقر می شود. اسکریپت هسته دارای mptcp و تمام بسته های مورد نیاز را نصب می کند. اسکریپت های نصب برای اوبونتو و دبیان در دسترس هستند.
wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh
نتیجه نصب موفقیت آمیز سرور.
ما رمزهای عبور را ذخیره می کنیم، به آنها برای پیکربندی روتر مشتری و راه اندازی مجدد نیاز داریم. مهم است که در نظر داشته باشید که پس از نصب، SSH در پورت 65222 در دسترس خواهد بود. پس از راه اندازی مجدد، باید مطمئن شویم که با هسته جدید بوت می شویم.
uname -a
Linux test-server.local 4.19.67-mptcp
ما کتیبه mptcp را در کنار شماره نسخه می بینیم که به این معنی است که هسته به درستی نصب شده است.
راه اندازی روتر مشتری
بر
این بخش از openmptcprouter مبتنی بر OpenWRT است و از LuCI به عنوان یک رابط استفاده می کند که برای هر کسی که تا به حال با OpenWRT روبرو شده است آشنا است. کیت توزیع حدود 50 مگابایت وزن دارد!
به عنوان یک میز تست، من از Raspberry Pi و چندین مودم USB با اپراتورهای مختلف استفاده خواهم کرد: MTS و Megafon. من حدس می زنم که چگونه یک تصویر را روی کارت SD بنویسیم، نیازی به گفتن نیست.
در ابتدا، پورت اترنت در Raspberry Pi به صورت lan با یک آدرس IP ثابت پیکربندی می شود. 192.168.100.1. برای اینکه با سیم های روی میز مشکلی نداشته باشم، Raspberry Pi را به یک نقطه دسترسی WiFi وصل کردم و یک آدرس ثابت را روی آداپتور WiFi رایانه تنظیم کردم. 192.168.100.2. سرور DHCP به طور پیش فرض فعال نیست، بنابراین باید از آدرس های ثابت استفاده شود.
اکنون می توانید به رابط وب بروید
هنگامی که برای اولین بار وارد سیستم می شوید، سیستم از شما می خواهد رمز عبور root را تنظیم کنید، SSH با همان رمز عبور در دسترس خواهد بود.
در تنظیمات LAN می توانید زیر شبکه مورد نظر را تنظیم کرده و سرور DHCP را فعال کنید.
من از مودم هایی استفاده می کنم که به عنوان رابط های اترنت USB با یک سرور DHCP جداگانه تعریف شده اند، بنابراین این نیاز به نصب دارد
بعد، باید رابط های WAN را پیکربندی کنید. در ابتدا دو رابط مجازی WAN1 و WAN2 در سیستم ایجاد شد. آنها باید یک دستگاه فیزیکی اختصاص دهند، در مورد من، اینها نام رابط های مودم USB هستند.
برای اینکه در نام های رابط گیج نشوید، به شما توصیه می کنم هنگام اتصال از طریق SSH پیام های dmesg را تماشا کنید.
از آنجایی که مودم های من خودشان به عنوان روتر عمل می کنند و خودشان سرور DHCP دارند، مجبور شدم تنظیمات محدوده شبکه داخلی آنها را تغییر دهم و سرور DHCP را غیرفعال کنم، زیرا در ابتدا هر دو مودم آدرس های یک شبکه را صادر می کنند و این باعث تضاد می شود.
OpenMPTCPRouter نیاز دارد که آدرس های رابط WAN ثابت باشد، بنابراین ما زیرشبکه هایی را برای مودم ها ارائه می کنیم و آنها را در منوی تنظیمات → openmptcprouter → سیستم پیکربندی می کنیم. در اینجا باید آدرس IP و کلید سرور بدست آمده در هنگام نصب سرور جمع بندی را نیز مشخص کنید.
در صورت راه اندازی موفقیت آمیز، یک تصویر مشابه باید در صفحه وضعیت ظاهر شود. مشاهده می شود که روتر توانسته به سرور جمع بندی برسد و هر دو کانال به درستی کار می کنند.
حالت پیش فرض shadowsocks + mptcp است. این چنین پروکسی است که تمام اتصالات را در خود پیچیده می کند. در ابتدا، پیکربندی شده است تا فقط TCP را کنترل کند، اما می توانید UDP را نیز فعال کنید.
اگر هیچ خطایی در صفحه وضعیت وجود نداشته باشد، می توان راه اندازی را کامل در نظر گرفت.
در برخی از ارائه دهندگان، زمانی که پرچم mptcp در طول مسیر ترافیک کوتاه شده است، ممکن است وضعیتی ایجاد شود، چنین خطایی وجود خواهد داشت:
در این مورد، می توانید از حالت دیگری استفاده کنید، بدون استفاده از MPTCP، بیشتر در این مورد
نتیجه
پروژه OpenMPTCPRouter بسیار جالب و مهم است، زیرا شاید تنها راه حل پیچیده باز برای مسئله جمع بندی کانال باشد. همه چیز دیگر یا کاملاً بسته و اختصاصی است یا فقط ماژول های جداگانه ای است که یک فرد معمولی نمی تواند با آنها مقابله کند. در مرحله فعلی توسعه، پروژه هنوز کاملاً خام است، اسناد بسیار ضعیف است، بسیاری از چیزها به سادگی توضیح داده نمی شوند. اما در عین حال، هنوز هم کار می کند. من امیدوارم که به توسعه خود ادامه دهد و ما روترهای خانگی به دست آوریم که می توانند کانال ها را به طور معمول از جعبه ترکیب کنند.
توسعه دهنده ما را در اینستاگرام دنبال کنید
منبع: www.habr.com