Жинхэнэ интернет сувгийн хураангуй - OpenMPTCPRouter

Жинхэнэ интернет сувгийн хураангуй - OpenMPTCPRouter

Интернэтийн хэд хэдэн сувгийг нэг суваг болгон нэгтгэх боломжтой юу? Энэ сэдвийн эргэн тойронд маш олон буруу ойлголт, домог байдаг бөгөөд туршлагатай сүлжээний инженерүүд ч үүнийг хийх боломжтой гэдгийг мэддэггүй. Ихэнх тохиолдолд холбоосыг нэгтгэхийг NAT түвшинд тэнцвэржүүлэх эсвэл шилжүүлэлт гэж андуурдаг. Гэхдээ бодит нийлбэрийг зөвшөөрдөг бүх интернет сувгуудаар нэгэн зэрэг нэг TCP холболтыг эхлүүлэхжишээлбэл, интернетийн аль нэг суваг тасалдсан бол цацалт тасалдахгүй байхын тулд видео нэвтрүүлэг.

Видео нэвтрүүлгийн арилжааны үнэтэй шийдлүүд байдаг ч ийм төхөөрөмжүүд нь олон килобак үнэтэй байдаг. Энэхүү нийтлэлд үнэгүй, нээлттэй эхийн OpenMPTCPRouter багцыг хэрхэн тохируулах талаар тайлбарлаж, сувгийн нийлбэрийн талаарх түгээмэл домогуудыг авч үзэх болно.

Сувгийг нэгтгэх тухай домог

Multi-WAN функцийг дэмждэг олон гэрийн чиглүүлэгчид байдаг. Заримдаа үйлдвэрлэгчид энэ сувгийн нийлбэр гэж нэрлэдэг бөгөөд энэ нь бүхэлдээ үнэн биш юм. Олон сүлжээнийхэн үүнээс гадна гэдэгт итгэдэг LACP болон L2 түвшний нийлбэр, өөр сувгийн нэгтгэл байхгүй. Энэ нь ерөнхийдөө боломжгүй зүйл гэдгийг харилцаа холбооны салбарт ажилладаг хүмүүсээс олонтаа сонссон. Тиймээс алдартай домогуудыг ойлгохыг хичээцгээе.

IP холболтын түвшинд тэнцвэржүүлэх

Энэ нь хэд хэдэн интернет сувгийг нэгэн зэрэг ашиглах хамгийн боломжийн бөгөөд түгээмэл арга юм. Энгийн байхын тулд танд гурван интернет үйлчилгээ үзүүлэгч байгаа бөгөөд тус бүр нь сүлжээнээсээ жинхэнэ IP хаяг өгдөг гэж төсөөлье. Эдгээр бүх үйлчилгээ үзүүлэгч нь Multi-WAN функцийг дэмждэг чиглүүлэгчид холбогдсон байна. Энэ нь mwan3 багц, mikrotik, ubiquiti эсвэл бусад гэр ахуйн чиглүүлэгчтэй OpenWRT байж болно, учир нь ийм сонголт нь ховор байхаа больсон.

Нөхцөл байдлыг загварчлахын тулд үйлчилгээ үзүүлэгчид бидэнд дараах хаягуудыг өгсөн гэж төсөөлье.

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33

Энэ нь алсын серверт холбогдох явдал юм example.com Үйлчилгээ үзүүлэгч тус бүрээр дамжуулан алсын сервер гурван бие даасан эх сурвалжийн IP үйлчлүүлэгчийг харах болно. Тэнцвэржүүлэх нь ачааллыг сувгуудаар хувааж, гурвыг нь нэгэн зэрэг ашиглах боломжийг олгодог. Энгийн байхын тулд ачааллыг бүх сувгийн хооронд тэнцүү хуваана гэж төсөөлье. Үүний үр дүнд үйлчлүүлэгч гурван зурагтай сайтыг нээхэд зураг бүрийг тусдаа үйлчилгээ үзүүлэгчээр дамжуулан татаж авдаг. Сайтын тал дээр гурван өөр 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-ээр Интернэтэд холбогдох үед гадаад хаяг байх болно.

Энэ ажилд бид Debian 10 дээрх VPS серверийг ашиглах болно.

Дүгнэх серверт тавигдах шаардлага:

  • MPTCP нь OpenVZ виртуалчлал дээр ажилладаггүй
  • Энэ нь өөрийн Linux цөмийг суулгах боломжтой байх ёстой

Серверийг нэг тушаалыг гүйцэтгэх замаар байрлуулна. Скрипт нь mptcp дэмжлэгтэй цөм болон шаардлагатай бүх багцуудыг суулгах болно. Суулгах скриптийг Ubuntu болон Debian-д ашиглах боломжтой.

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 болон MTS болон Megafon гэсэн өөр өөр оператортой хэд хэдэн USB модем ашиглах болно. Би SD карт руу хэрхэн зураг бичихийг танд хэлэх шаардлагагүй гэж бодож байна.

Эхлээд Raspberry Pi дахь Ethernet портыг статик IP хаягтай lan болгон тохируулсан. 192.168.100.1. Ширээн дээрх утастай хутгалдахаас зайлсхийхийн тулд би Raspberry Pi-г WiFi хандалтын цэгт холбож, компьютерийн WiFi адаптерийг статик хаягаар тохируулсан. 192.168.100.2. DHCP сервер нь анхдагчаар идэвхжээгүй тул та статик хаягийг ашиглах ёстой.

Одоо та вэб интерфэйс рүү нэвтэрч болно 192.168.100.1

Таныг анх удаа нэвтрэх үед систем танаас root нууц үг оруулахыг хүсэх бөгөөд SSH нь ижил нууц үгээр ашиглах боломжтой болно.

Жинхэнэ интернет сувгийн хураангуй - OpenMPTCPRouter
LAN тохиргоонд та хүссэн дэд сүлжээгээ тохируулж, DHCP серверийг идэвхжүүлж болно.

Би тусдаа DHCP сервертэй USB Ethernet интерфэйс гэж тодорхойлсон модемуудыг ашигладаг тул суулгах шаардлагатай нэмэлт багцууд. Уг процедур нь ердийн 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

Манай хөгжүүлэгчийг Instagram дээр дага

Жинхэнэ интернет сувгийн хураангуй - OpenMPTCPRouter

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх