Интернэтийн хэд хэдэн сувгийг нэг суваг болгон нэгтгэх боломжтой юу? Энэ сэдвийн эргэн тойронд маш олон буруу ойлголт, домог байдаг бөгөөд туршлагатай сүлжээний инженерүүд ч үүнийг хийх боломжтой гэдгийг мэддэггүй. Ихэнх тохиолдолд холбоосыг нэгтгэхийг NAT түвшинд тэнцвэржүүлэх эсвэл шилжүүлэлт гэж андуурдаг. Гэхдээ бодит нийлбэрийг зөвшөөрдөг бүх интернет сувгуудаар нэгэн зэрэг нэг TCP холболтыг эхлүүлэхжишээлбэл, интернетийн аль нэг суваг тасалдсан бол цацалт тасалдахгүй байхын тулд видео нэвтрүүлэг.
Видео нэвтрүүлгийн арилжааны үнэтэй шийдлүүд байдаг ч ийм төхөөрөмжүүд нь олон килобак үнэтэй байдаг. Энэхүү нийтлэлд үнэгүй, нээлттэй эхийн OpenMPTCPRouter багцыг хэрхэн тохируулах талаар тайлбарлаж, сувгийн нийлбэрийн талаарх түгээмэл домогуудыг авч үзэх болно.
Сувгийг нэгтгэх тухай домог
Multi-WAN функцийг дэмждэг олон гэрийн чиглүүлэгчид байдаг. Заримдаа үйлдвэрлэгчид энэ сувгийн нийлбэр гэж нэрлэдэг бөгөөд энэ нь бүхэлдээ үнэн биш юм. Олон сүлжээнийхэн үүнээс гадна гэдэгт итгэдэг
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-ийн холболтууд шиг харагдаж байна.
Холболтын түвшинд тэнцвэржүүлэх үед 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-ээр Интернэтэд холбогдох үед гадаад хаяг байх болно.
Энэ ажилд бид Debian 10 дээрх VPS серверийг ашиглах болно.
Дүгнэх серверт тавигдах шаардлага:
- MPTCP нь OpenVZ виртуалчлал дээр ажилладаггүй
- Энэ нь өөрийн Linux цөмийг суулгах боломжтой байх ёстой
Серверийг нэг тушаалыг гүйцэтгэх замаар байрлуулна. Скрипт нь mptcp дэмжлэгтэй цөм болон шаардлагатай бүх багцуудыг суулгах болно. Суулгах скриптийг Ubuntu болон Debian-д ашиглах боломжтой.
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 болон MTS болон Megafon гэсэн өөр өөр оператортой хэд хэдэн USB модем ашиглах болно. Би SD карт руу хэрхэн зураг бичихийг танд хэлэх шаардлагагүй гэж бодож байна.
Эхлээд Raspberry Pi дахь Ethernet портыг статик IP хаягтай lan болгон тохируулсан. 192.168.100.1. Ширээн дээрх утастай хутгалдахаас зайлсхийхийн тулд би Raspberry Pi-г WiFi хандалтын цэгт холбож, компьютерийн WiFi адаптерийг статик хаягаар тохируулсан. 192.168.100.2. DHCP сервер нь анхдагчаар идэвхжээгүй тул та статик хаягийг ашиглах ёстой.
Одоо та вэб интерфэйс рүү нэвтэрч болно
Таныг анх удаа нэвтрэх үед систем танаас root нууц үг оруулахыг хүсэх бөгөөд SSH нь ижил нууц үгээр ашиглах боломжтой болно.
LAN тохиргоонд та хүссэн дэд сүлжээгээ тохируулж, DHCP серверийг идэвхжүүлж болно.
Би тусдаа DHCP сервертэй USB Ethernet интерфэйс гэж тодорхойлсон модемуудыг ашигладаг тул суулгах шаардлагатай
Дараа нь та WAN интерфейсийг тохируулах хэрэгтэй. Эхэндээ систем нь WAN1 ба WAN2 гэсэн хоёр виртуал интерфейс үүсгэсэн. Тэдэнд физик төхөөрөмж хуваарилах хэрэгтэй, миний хувьд эдгээр нь USB модемийн интерфейсүүдийн нэр юм.
Интерфейсийн нэрсийг төөрөгдүүлэхгүйн тулд SSH-ээр холбогдож байхдаа dmesg мессежийг үзэхийг зөвлөж байна.
Миний модемууд өөрөө чиглүүлэгчийн үүрэг гүйцэтгэдэг бөгөөд өөрсдөө DHCP сервертэй байдаг тул би дотоод сүлжээний хүрээний тохиргоог өөрчилж, DHCP серверийг идэвхгүй болгох шаардлагатай болсон, учир нь эхэндээ хоёр модем нь нэг сүлжээнээс хаяг гаргадаг бөгөөд энэ нь зөрчил үүсгэдэг.
OpenMPTCPRouter нь WAN интерфейсийн хаягууд нь статик байхыг шаарддаг тул бид модемуудын дэд сүлжээг гаргаж, тэдгээрийг систем → openmptcprouter → интерфэйсийн тохиргооны цэсэнд тохируулдаг. Энд та нийлбэр серверийг суулгах явцад олж авсан IP хаяг болон серверийн түлхүүрийг зааж өгөх хэрэгтэй.
Хэрэв тохиргоо амжилттай бол статусын хуудсан дээр ижил төстэй зураг гарч ирнэ. Чиглүүлэгч нь нийлбэрийн серверт хүрч чадсан бөгөөд хоёр суваг хэвийн ажиллаж байгааг харж болно.
Өгөгдмөл горим нь shadowsocks + mptcp юм. Энэ бол бүх холболтыг өөртөө багтаасан прокси юм. Энэ нь эхлээд зөвхөн TCP-г боловсруулахаар тохируулагдсан боловч UDP-г бас идэвхжүүлж болно.
Хэрэв статусын хуудсан дээр алдаа байхгүй бол тохиргоог бүрэн гүйцэд гэж үзэж болно.
Зарим үйлчилгээ үзүүлэгчийн хувьд замын хөдөлгөөний дагуу mptcp тугийг таслах үед дараах алдаа гарч болзошгүй.
Энэ тохиолдолд та MPTCP-г ашиглахгүйгээр өөр үйлдлийн горим ашиглаж болно, энэ талаар дэлгэрэнгүй
дүгнэлт
OpenMPTCPRouter төсөл нь маш сонирхолтой бөгөөд чухал, учир нь энэ нь сувгийн нийлбэрийн асуудлыг шийдвэрлэх цорын ганц нээлттэй цогц шийдэл байж магадгүй юм. Бусад бүх зүйл нь нягт хаалттай, өмчлөлд байдаг, эсвэл энгийн хүн ойлгох боломжгүй тусдаа модулиуд юм. Хөгжлийн өнөөгийн шатанд төсөл нь нэлээд бүдүүлэг, баримт бичиг нь маш муу, олон зүйлийг зүгээр л тайлбарлаагүй байна. Гэхдээ үүнтэй зэрэгцэн ажиллаж байна. Цаашид хөгжиж, сувгуудыг зөв хослуулах чадвартай өрхийн чиглүүлэгчийг хайрцагнаас гаргана гэж найдаж байна.
Манай хөгжүүлэгчийг Instagram дээр дага
Эх сурвалж: www.habr.com