جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter

آیا می توان چندین کانال اینترنتی را در یک کانال ترکیب کرد؟ تصورات غلط و افسانه های زیادی در مورد این موضوع وجود دارد، حتی مهندسان شبکه با تجربه اغلب نمی دانند که این امکان پذیر است. در بیشتر موارد، تجمع پیوندها به اشتباه به عنوان تعادل NAT یا Failover نامیده می شود. اما جمع واقعی اجازه می دهد یک اتصال TCP را به طور همزمان روی تمام کانال های اینترنت اجرا کنیدبه عنوان مثال پخش ویدئو به طوری که در صورت قطع شدن هر یک از کانال های اینترنتی، پخش قطع نشود.

راه حل های تجاری گران قیمتی برای پخش ویدیو وجود دارد، اما چنین دستگاه هایی هزینه زیادی دارند. این مقاله پیکربندی بسته آزاد و باز OpenMPTCPRouter را شرح می‌دهد و به افسانه‌های رایج در مورد جمع‌بندی کانال می‌پردازد.

افسانه ها در مورد کانال های جمع بندی

بسیاری از روترهای خانگی وجود دارند که از عملکرد Multi-WAN پشتیبانی می کنند. گاهی اوقات سازندگان این کانال را جمع بندی می نامند که کاملاً درست نیست. بسیاری از نتورکرها معتقدند که علاوه بر LACP و مجموع در لایه L2، هیچ تجمع کانال دیگری وجود ندارد. من اغلب شنیده ام که این به طور کلی از افرادی که در مخابرات کار می کنند غیرممکن است. بنابراین، بیایید سعی کنیم اسطوره های رایج را درک کنیم.

ایجاد تعادل در سطح اتصالات 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 مختلف به نظر می رسد.

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter
هنگام تعادل در سطح اتصال، هر اتصال TCP از یک ارائه دهنده جداگانه عبور می کند.

این حالت متعادل کننده اغلب برای کاربران مشکلاتی ایجاد می کند. برای مثال، بسیاری از سایت‌ها کوکی‌ها و توکن‌ها را به آدرس IP مشتری متصل می‌کنند و اگر ناگهان تغییر کند، درخواست حذف می‌شود یا کلاینت از سایت خارج می‌شود. این اغلب در سیستم های مشتری-بانک و سایت های دیگر با قوانین جلسه کاربر سختگیرانه بازتولید می شود. در اینجا یک مثال ساده توضیحی آورده شده است: فایل‌های موسیقی در VK.com فقط با یک کلید جلسه معتبر که به IP متصل است در دسترس هستند، و کلاینت‌هایی که از چنین تعادلی استفاده می‌کنند اغلب صدا را پخش نمی‌کنند، زیرا درخواست از طریق ارائه‌دهنده‌ای که جلسه به آن محدود شده است انجام نشده است.

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter
هنگام دانلود تورنت، تعادل در سطح اتصال، پهنای باند همه کانال ها را جمع می کند.

چنین تعادلی به شما این امکان را می دهد که در هنگام استفاده از چندین اتصال، جمع بندی سرعت کانال اینترنت را بدست آورید. به عنوان مثال، اگر هر یک از سه ارائه دهنده سرعت 100 مگابیت داشته باشد، در هنگام دانلود تورنت، ما 300 مگابیت خواهیم داشت. زیرا تورنت تعداد زیادی اتصال را باز می کند که بین همه ارائه دهندگان توزیع شده و در نهایت از کل کانال استفاده می شود.

درک این نکته مهم است که یک اتصال TCP تنها همیشه از طریق یک ارائه دهنده انجام می شود. یعنی اگر یک فایل حجیم را از طریق HTTP دانلود کنیم، این ارتباط از طریق یکی از ارائه دهنده ها برقرار می شود و اگر ارتباط با این ارائه دهنده قطع شود، دانلود نیز قطع می شود.

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter
یک اتصال همیشه فقط از یک کانال اینترنتی استفاده می کند

این در مورد پخش ویدیویی نیز صادق است. اگر پخش جریانی ویدیو را در برخی Twitch مشروط پخش کنید، تعادل در سطح اتصالات IP هیچ مزیت خاصی را به همراه نخواهد داشت، زیرا جریان ویدیو در یک اتصال IP پخش می شود. در این حالت، اگر ارائه دهنده WAN 3 شروع به مشکلات ارتباطی مانند از دست دادن بسته یا کاهش سرعت کند، نمی توانید بلافاصله به ارائه دهنده دیگری سوئیچ کنید. پخش باید متوقف شود و دوباره وصل شود.

جمع بندی واقعی کانال

مجموع واقعی کانال ها باعث می شود که یک اتصال به Twitch شرطی از طریق همه ارائه دهندگان به طور همزمان شروع شود به گونه ای که در صورت قطع شدن هر یک از ارائه دهندگان، اتصال قطع نشود. این یک مشکل شگفت آور دشوار است که هنوز راه حل بهینه ای ندارد. بسیاری حتی نمی دانند که این امکان پذیر است!

از تصاویر قبلی، به یاد می‌آوریم که سرور Twitch شرطی می‌تواند یک جریان ویدیویی را از ما فقط از یک آدرس IP منبع دریافت کند، به این معنی که همیشه باید با ما ثابت باشد، صرف نظر از اینکه کدام ارائه‌دهنده از کار افتاده و کدام یک کار می‌کنند. برای رسیدن به این هدف، ما به یک سرور جمع بندی نیاز داریم که تمام اتصالات ما را خاتمه داده و آنها را در یک ادغام کند.

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter
سرور جمع بندی تمام کانال ها را در یک تونل جمع می کند. همه اتصالات از آدرس سرور جمع منشا می گیرند

این طرح از همه ارائه دهندگان استفاده می کند و غیرفعال کردن هر یک از آنها باعث قطع ارتباط با سرور Twitch نمی شود. در واقع این یک تونل VPN ویژه است که در زیر کاپوت آن چندین کانال اینترنتی به طور همزمان وجود دارد. وظیفه اصلی چنین طرحی به دست آوردن کانال ارتباطی با بالاترین کیفیت است. اگر مشکلات از یکی از ارائه دهندگان شروع شود، از دست دادن بسته، افزایش تاخیر، پس این به هیچ وجه نباید بر کیفیت ارتباط تأثیر بگذارد، زیرا بار به طور خودکار بر روی کانال های دیگر و بهتری که در دسترس هستند توزیع می شود.

راه حل های تجاری

این مشکل مدتهاست که برای کسانی که رویدادها را به صورت زنده پخش می کنند و به اینترنت باکیفیت دسترسی ندارند، نگران کننده بوده است. برای چنین کارهایی، چندین راه حل تجاری وجود دارد، به عنوان مثال، Teradek چنین روترهای هیولایی می سازد که بسته های مودم USB در آنها قرار می گیرد:

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter
روتر پخش ویدئو با عملکرد جمع کانال

چنین دستگاه هایی معمولاً قابلیت فیلم برداری از طریق HDMI یا SDI را دارند. همراه با روتر، اشتراک سرویس جمع بندی کانال و همچنین پردازش جریان ویدئو، رمزگذاری آن و ارسال مجدد آن به فروش می رسد. قیمت چنین دستگاه هایی از 2 دلار با مجموعه ای از مودم ها به علاوه اشتراک جداگانه در این سرویس شروع می شود.

گاهی اوقات بسیار ترسناک به نظر می رسد:

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter

راه اندازی OpenMPTCPRouter

پروتکل MP-TCP (MultiPath TCP) برای توانایی اتصال در چندین کانال به طور همزمان اختراع شد. مثلا او iOS را پشتیبانی می کند و می تواند به طور همزمان از طریق WiFi و از طریق شبکه تلفن همراه به یک سرور راه دور متصل شود. درک این نکته مهم است که اینها دو اتصال TCP مجزا نیستند، بلکه یک اتصال هستند که همزمان از طریق دو کانال برقرار شده است. برای این کار، سرور راه دور باید از MPTCP نیز پشتیبانی کند.

OpenMPTCPRouter یک پروژه روتر نرم افزار منبع باز است که به شما امکان می دهد کانال ها را واقعاً جمع کنید. نویسندگان بیان می کنند که پروژه در وضعیت نسخه آلفا است، اما می توان از آن استفاده کرد. این شامل دو بخش است - یک سرور جمع بندی که در اینترنت قرار دارد و یک روتر که چندین ارائه دهنده اینترنت و خود دستگاه های مشتری به آن متصل هستند: رایانه ها، تلفن ها. یک روتر سفارشی می تواند Raspberry Pi، برخی از روترهای WiFi یا یک کامپیوتر معمولی باشد. مجموعه های آماده ای برای پلتفرم های مختلف وجود دارد که بسیار راحت است.

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter
نحوه عملکرد OpenMPTCPRouter

تنظیم سرور خلاصه

سرور جمع بر روی اینترنت قرار دارد و اتصالات را از تمام کانال های روتر مشتری به یک کانال خاتمه می دهد. آدرس IP این سرور در هنگام دسترسی به اینترنت از طریق OpenMPTCPRouter آدرس خارجی خواهد بود.

برای این کار از سرور VPS در دبیان 10 استفاده می کنیم.

الزامات سرور جمع بندی:

  • MPTCP در مجازی سازی OpenVZ کار نمی کند
  • باید امکان نصب هسته لینوکس خود را داشته باشید

سرور با اجرای یک دستور مستقر می شود. اسکریپت هسته دارای mptcp و تمام بسته های مورد نیاز را نصب می کند. اسکریپت های نصب برای اوبونتو و دبیان در دسترس هستند.

wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh

نتیجه نصب موفقیت آمیز سرور.

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter

ما رمزهای عبور را ذخیره می کنیم، به آنها برای پیکربندی روتر مشتری و راه اندازی مجدد نیاز داریم. مهم است که در نظر داشته باشید که پس از نصب، SSH در پورت 65222 در دسترس خواهد بود. پس از راه اندازی مجدد، باید مطمئن شویم که با هسته جدید بوت می شویم.

uname -a 
Linux test-server.local 4.19.67-mptcp

ما کتیبه mptcp را در کنار شماره نسخه می بینیم که به این معنی است که هسته به درستی نصب شده است.

راه اندازی روتر مشتری

بر وب سایت پروژه ساخت‌های آماده برای برخی پلتفرم‌ها مانند Raspberry Pi، Banana Pi، روترهای Lynksys و ماشین‌های مجازی در دسترس هستند.
این بخش از openmptcprouter مبتنی بر OpenWRT است و از LuCI به عنوان یک رابط استفاده می کند که برای هر کسی که تا به حال با OpenWRT روبرو شده است آشنا است. کیت توزیع حدود 50 مگابایت وزن دارد!

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter

به عنوان یک میز تست، من از Raspberry Pi و چندین مودم USB با اپراتورهای مختلف استفاده خواهم کرد: MTS و Megafon. من حدس می زنم که چگونه یک تصویر را روی کارت SD بنویسیم، نیازی به گفتن نیست.

در ابتدا، پورت اترنت در Raspberry Pi به صورت lan با یک آدرس IP ثابت پیکربندی می شود. 192.168.100.1. برای اینکه با سیم های روی میز مشکلی نداشته باشم، Raspberry Pi را به یک نقطه دسترسی WiFi وصل کردم و یک آدرس ثابت را روی آداپتور WiFi رایانه تنظیم کردم. 192.168.100.2. سرور DHCP به طور پیش فرض فعال نیست، بنابراین باید از آدرس های ثابت استفاده شود.

اکنون می توانید به رابط وب بروید 192.168.100.1

هنگامی که برای اولین بار وارد سیستم می شوید، سیستم از شما می خواهد رمز عبور root را تنظیم کنید، SSH با همان رمز عبور در دسترس خواهد بود.

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter
در تنظیمات LAN می توانید زیر شبکه مورد نظر را تنظیم کرده و سرور DHCP را فعال کنید.

من از مودم هایی استفاده می کنم که به عنوان رابط های اترنت USB با یک سرور DHCP جداگانه تعریف شده اند، بنابراین این نیاز به نصب دارد بسته های اضافی. این روش مشابه پیکربندی مودم ها در OpenWRT معمولی است، بنابراین در اینجا به آن نمی پردازم.

بعد، باید رابط های WAN را پیکربندی کنید. در ابتدا دو رابط مجازی WAN1 و WAN2 در سیستم ایجاد شد. آنها باید یک دستگاه فیزیکی اختصاص دهند، در مورد من، اینها نام رابط های مودم USB هستند.

برای اینکه در نام های رابط گیج نشوید، به شما توصیه می کنم هنگام اتصال از طریق SSH پیام های dmesg را تماشا کنید.

از آنجایی که مودم های من خودشان به عنوان روتر عمل می کنند و خودشان سرور DHCP دارند، مجبور شدم تنظیمات محدوده شبکه داخلی آنها را تغییر دهم و سرور DHCP را غیرفعال کنم، زیرا در ابتدا هر دو مودم آدرس های یک شبکه را صادر می کنند و این باعث تضاد می شود.

OpenMPTCPRouter نیاز دارد که آدرس های رابط WAN ثابت باشد، بنابراین ما زیرشبکه هایی را برای مودم ها ارائه می کنیم و آنها را در منوی تنظیمات → openmptcprouter → سیستم پیکربندی می کنیم. در اینجا باید آدرس IP و کلید سرور بدست آمده در هنگام نصب سرور جمع بندی را نیز مشخص کنید.

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter

در صورت راه اندازی موفقیت آمیز، یک تصویر مشابه باید در صفحه وضعیت ظاهر شود. مشاهده می شود که روتر توانسته به سرور جمع بندی برسد و هر دو کانال به درستی کار می کنند.

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter

حالت پیش فرض shadowsocks + mptcp است. این چنین پروکسی است که تمام اتصالات را در خود پیچیده می کند. در ابتدا، پیکربندی شده است تا فقط TCP را کنترل کند، اما می توانید UDP را نیز فعال کنید.

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter

اگر هیچ خطایی در صفحه وضعیت وجود نداشته باشد، می توان راه اندازی را کامل در نظر گرفت.
در برخی از ارائه دهندگان، زمانی که پرچم mptcp در طول مسیر ترافیک کوتاه شده است، ممکن است وضعیتی ایجاد شود، چنین خطایی وجود خواهد داشت:

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter

در این مورد، می توانید از حالت دیگری استفاده کنید، بدون استفاده از MPTCP، بیشتر در این مورد اینجا.

نتیجه

پروژه OpenMPTCPRouter بسیار جالب و مهم است، زیرا شاید تنها راه حل پیچیده باز برای مسئله جمع بندی کانال باشد. همه چیز دیگر یا کاملاً بسته و اختصاصی است یا فقط ماژول های جداگانه ای است که یک فرد معمولی نمی تواند با آنها مقابله کند. در مرحله فعلی توسعه، پروژه هنوز کاملاً خام است، اسناد بسیار ضعیف است، بسیاری از چیزها به سادگی توضیح داده نمی شوند. اما در عین حال، هنوز هم کار می کند. من امیدوارم که به توسعه خود ادامه دهد و ما روترهای خانگی به دست آوریم که می توانند کانال ها را به طور معمول از جعبه ترکیب کنند.

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter

توسعه دهنده ما را در اینستاگرام دنبال کنید

جمع بندی واقعی کانال های اینترنتی - OpenMPTCPRouter

منبع: www.habr.com

اضافه کردن نظر