True Internet Channel Summation - OpenMPTCPRouter

True Internet Channel Summation - OpenMPTCPRouter

Posible bang pagsamahin ang ilang mga channel sa Internet sa isa? Maraming maling kuru-kuro at mito sa paksang ito; kahit na ang mga nakaranas na network engineer ay madalas na hindi alam na posible ito. Sa karamihan ng mga kaso, ang pagsasama-sama ng link ay maling tinatawag na pagbabalanse sa antas ng NAT o failover. Ngunit ang tunay na pagsusuma ay nagpapahintulot ilunsad ang isang solong koneksyon sa TCP nang sabay-sabay sa lahat ng mga channel sa Internet, halimbawa, pagsasahimpapawid ng video upang kung ang alinman sa mga channel sa Internet ay maaantala, ang pagsasahimpapawid ay hindi maaantala.

May mga mamahaling komersyal na solusyon para sa mga video broadcast, ngunit ang mga naturang device ay nagkakahalaga ng maraming kilobucks. Inilalarawan ng artikulo kung paano i-configure ang libre, open-source na OpenMPTCPRouter package at tinutugunan ang mga sikat na alamat tungkol sa pagbubuod ng channel.

Mga alamat tungkol sa pagbubuod ng channel

Maraming mga home router na sumusuporta sa Multi-WAN function. Minsan tinatawag ng mga tagagawa ang channel na ito na summing, na hindi ganap na totoo. Maraming networkers ang naniniwala na bukod sa LACP at pagsusuma sa antas ng L2, walang ibang channel na pagsasama-sama ang umiiral. Madalas kong narinig na ito ay karaniwang imposible mula sa mga taong nagtatrabaho sa telecom. Samakatuwid, subukan nating maunawaan ang mga tanyag na alamat.

Pagbabalanse sa antas ng koneksyon sa IP

Ito ang pinaka-abot-kayang at tanyag na paraan upang magamit ang ilang mga channel sa Internet nang sabay-sabay. Para sa pagiging simple, isipin natin na mayroon kang tatlong Internet provider, bawat isa ay nagbibigay sa iyo ng totoong IP address mula sa kanilang network. Ang lahat ng provider na ito ay konektado sa isang router na sumusuporta sa Multi-WAN function. Ito ay maaaring OpenWRT na may mwan3 package, mikrotik, ubiquiti, o anumang iba pang router ng sambahayan, dahil ang ganitong opsyon ay hindi na karaniwan.

Para gayahin ang sitwasyon, isipin natin na ibinigay sa atin ng mga provider ang mga sumusunod na address:

WAN1 β€” 11.11.11.11
WAN2 β€” 22.22.22.22
WAN2 β€” 33.33.33.33

Iyon ay, pagkonekta sa isang malayuang server example.com Sa pamamagitan ng bawat isa sa mga provider, makikita ng remote server ang tatlong independiyenteng source na IP client. Binibigyang-daan ka ng pagbabalanse na hatiin ang load sa mga channel at gamitin ang tatlo sa mga ito nang sabay-sabay. Para sa pagiging simple, isipin natin na hinahati natin nang pantay ang load sa lahat ng channel. Bilang resulta, kapag ang isang kliyente ay nagbukas ng isang site na may tatlong larawan, dina-download niya ang bawat larawan sa pamamagitan ng isang hiwalay na provider. Sa gilid ng site, mukhang mga koneksyon mula sa tatlong magkakaibang IP.

True Internet Channel Summation - OpenMPTCPRouter
Kapag nagbabalanse sa antas ng koneksyon, ang bawat koneksyon sa TCP ay dumadaan sa isang hiwalay na provider.

Ang pagbabalanse mode na ito ay kadalasang nagdudulot ng mga problema para sa mga user. Halimbawa, maraming mga site ang mahigpit na nagbubuklod ng cookies at mga token sa IP address ng kliyente, at kung bigla itong magbago, ang kahilingan ay tatanggihan o ang kliyente ay naka-log out sa site. Madalas itong i-reproduce sa mga client-bank system at iba pang mga site na may mahigpit na mga panuntunan sa session ng user. Narito ang isang simpleng halimbawa ng paglalarawan: ang mga file ng musika sa VK.com ay magagamit lamang gamit ang isang wastong session key, na nakatali sa isang IP, at ang mga kliyenteng gumagamit ng naturang pagbabalanse ay kadalasang hindi naglalaro ng audio dahil ang kahilingan ay hindi dumaan sa provider kung saan ang session ay nakatali.

True Internet Channel Summation - OpenMPTCPRouter
Kapag nagda-download ng mga torrents, ang pagbabalanse sa antas ng koneksyon ay nagbubuod sa bandwidth ng lahat ng mga channel

Binibigyang-daan ka ng pagbabalanse na ito na makuha ang kabuuan ng bilis ng channel sa Internet kapag gumagamit ng maraming koneksyon. Halimbawa, kung ang bawat isa sa tatlong provider ay may bilis na 100 Megabits, kung gayon kapag nagda-download ng torrents ay makakakuha tayo ng 300 Megabits. Dahil ang isang torrent ay nagbubukas ng maraming koneksyon, na ipinamamahagi sa lahat ng mga provider at sa huli ay ginagamit ang buong channel.

Mahalagang maunawaan na ang isang solong koneksyon sa TCP ay palaging dadaan sa isang provider lamang. Iyon ay, kung magda-download kami ng isang malaking file sa pamamagitan ng HTTP, ang koneksyon na ito ay gagawin sa pamamagitan ng isa sa mga provider, at kung nasira ang koneksyon sa provider na ito, masisira din ang pag-download.

True Internet Channel Summation - OpenMPTCPRouter
Ang isang koneksyon ay palaging gagamit lamang ng isang channel sa Internet

Totoo rin ito para sa mga video broadcast. Kung nagbo-broadcast ka ng streaming na video sa ilang uri ng conditional Twitch, ang pagbabalanse sa antas ng mga koneksyon sa IP ay hindi magbibigay ng anumang partikular na benepisyo, dahil ang video stream ay mai-broadcast sa loob ng isang koneksyon sa IP. Sa kasong ito, kung ang provider ng WAN 3 ay nagsimulang magkaroon ng mga problema sa komunikasyon, tulad ng pagkawala ng packet o pinababang bilis, hindi ka agad makakalipat sa ibang provider. Ang broadcast ay kailangang ihinto at muling ikonekta.

True channel summing

Ginagawang posible ng real channel summing na magpatakbo ng isang koneksyon sa isang conditional Twitch sa lahat ng provider nang sabay-sabay sa paraang kung masira ang alinman sa mga provider, hindi maaantala ang koneksyon. Ito ay isang nakakagulat na mahirap na problema na wala pa ring pinakamainam na solusyon. Hindi alam ng maraming tao na posible ito!

Mula sa mga nakaraang larawan, natatandaan namin na ang conditional Twitch server ay maaaring makatanggap ng video stream mula sa amin mula sa isang source IP address lamang, na nangangahulugang dapat itong palaging pare-pareho para sa amin, hindi alintana kung aling mga provider ang bumagsak at kung alin ang gumagana. Upang makamit ito, kailangan namin ng summing server na magwawakas sa lahat ng aming mga koneksyon at pagsasama-samahin ang mga ito sa isa.

True Internet Channel Summation - OpenMPTCPRouter
Pinagsasama-sama ng summing server ang lahat ng channel sa isang tunnel. Ang lahat ng koneksyon ay nagmula sa summing server address

Sa scheme na ito, ginagamit ang lahat ng provider, at hindi magiging sanhi ng pagkawala ng komunikasyon sa Twitch server ang pag-disable sa alinman sa mga ito. Mahalaga, ito ay isang espesyal na VPN tunnel, sa ilalim ng hood kung saan mayroong ilang mga channel sa Internet nang sabay-sabay. Ang pangunahing gawain ng naturang pamamaraan ay upang makuha ang pinakamataas na kalidad ng channel ng komunikasyon. Kung ang isa sa mga provider ay nagsimulang magkaroon ng mga problema, pagkawala ng mga packet, pagtaas ng mga pagkaantala, kung gayon hindi ito dapat makaapekto sa kalidad ng komunikasyon sa anumang paraan, dahil ang load ay awtomatikong ipapamahagi sa iba, mas mahusay na mga channel na magagamit.

Mga Komersyal na Solusyon

Ang problemang ito ay matagal nang bumabagabag sa mga nagbo-broadcast ng mga live na kaganapan at walang access sa mataas na kalidad na Internet. Para sa mga naturang gawain, mayroong ilang mga komersyal na solusyon, halimbawa, ang kumpanya na Teradek ay gumagawa ng mga napakapangit na router kung saan ipinasok ang mga pack ng USB modem:

True Internet Channel Summation - OpenMPTCPRouter
Router para sa mga video broadcast na may channel summing function

Ang mga naturang device ay karaniwang may built-in na video signal capture sa pamamagitan ng HDMI o SDI. Kasama ng router, ang isang subscription sa channel summing service ay ibinebenta, pati na rin ang pagpoproseso ng video stream, transcoding ito at pag-relay nito nang higit pa. Ang presyo ng mga naturang device ay nagsisimula sa $2k na may isang set ng mga modem, kasama ang isang hiwalay na subscription sa serbisyo.

Minsan mukhang nakakatakot:

True Internet Channel Summation - OpenMPTCPRouter

Pagse-set up ng OpenMPTCPRouter

Protocol MP-TCP (MultiPath TCP) ay naimbento upang makakonekta sa pamamagitan ng ilang mga channel nang sabay-sabay. Halimbawa, ang kanyang sumusuporta sa iOS at maaaring sabay na kumonekta sa isang malayong server sa pamamagitan ng WiFi at sa pamamagitan ng isang cellular network. Mahalagang maunawaan na ang mga ito ay hindi dalawang magkahiwalay na koneksyon sa TCP, ngunit sa halip ay isang koneksyon na itinatag sa dalawang channel nang sabay-sabay. Para gumana ito, dapat ding suportahan ng remote server ang MPTCP.

OpenMPTCPROuter ay isang open source software router project na nagbibigay-daan para sa totoong channel summarization. Sinasabi ng mga may-akda na ang proyekto ay nasa alpha version status, ngunit maaari na itong magamit. Binubuo ito ng dalawang bahagi - isang summing server, na matatagpuan sa Internet at isang router, kung saan nakakonekta ang ilang mga Internet provider at ang mga device ng kliyente: mga computer, mga telepono. Ang custom na router ay maaaring isang Raspberry Pi, ilang WiFi router, o isang regular na computer. Mayroong mga handa na pagtitipon para sa iba't ibang mga platform, na napaka-maginhawa.

True Internet Channel Summation - OpenMPTCPRouter
Paano gumagana ang OpenMPTCPRouter

Pagse-set up ng server ng pagbubuod

Ang summing server ay matatagpuan sa Internet at tinatapos ang mga koneksyon mula sa lahat ng channel ng client router sa isa. Ang IP address ng server na ito ay magiging panlabas na address kapag ina-access ang Internet sa pamamagitan ng OpenMPTCPRouter.

Para sa gawaing ito gagamit kami ng VPS server sa Debian 10.

Mga kinakailangan para sa summing server:

  • Hindi gumagana ang MPTCP sa virtualization ng OpenVZ
  • Posibleng mag-install ng sarili mong Linux kernel

Ang server ay na-deploy sa pamamagitan ng pagsasagawa ng isang utos. Ang script ay mag-i-install ng kernel na may suporta sa mptcp at lahat ng kinakailangang mga pakete. Available ang mga script sa pag-install para sa Ubuntu at Debian.

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

Ang resulta ng matagumpay na pag-install ng server.

True Internet Channel Summation - OpenMPTCPRouter

Ise-save namin ang mga password, kakailanganin namin ang mga ito upang i-configure ang client router, at i-reboot. Mahalagang tandaan na pagkatapos ng pag-install, magiging available ang SSH sa port 65222. Pagkatapos mag-reboot, kailangan nating tiyakin na nag-boot tayo gamit ang bagong kernel

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

Nakikita namin ang inskripsyon na mptcp sa tabi ng numero ng bersyon, na nangangahulugang na-install nang tama ang kernel.

Pagse-set up ng client router

Sa website ng proyekto Available ang mga ready-made build para sa ilang platform, tulad ng Raspberry Pi, Banana Pi, Lynksys router at virtual machine.
Ang bahaging ito ng openmptcprouter ay batay sa OpenWRT, gamit ang LuCI bilang isang interface, pamilyar sa sinumang nakatagpo ng OpenWRT. Ang pamamahagi ay tumitimbang ng halos 50MB!

True Internet Channel Summation - OpenMPTCPRouter

Bilang test bench, gagamit ako ng Raspberry Pi at ilang USB modem na may iba't ibang operator: MTS at Megafon. Sa palagay ko hindi ko kailangang sabihin sa iyo kung paano magsulat ng isang imahe sa isang SD card.

Sa una, ang Ethernet port sa Raspberry Pi ay na-configure bilang lan na may static na IP address 192.168.100.1. Upang maiwasan ang kalikot sa mga wire sa desk, ikinonekta ko ang Raspberry Pi sa isang WiFi access point at itinakda ang WiFi adapter ng computer sa isang static na address 192.168.100.2. Ang DHCP server ay hindi pinagana bilang default, kaya dapat kang gumamit ng mga static na address.

Ngayon ay maaari kang mag-log in sa web interface 192.168.100.1

Kapag nag-log in ka sa unang pagkakataon, hihilingin sa iyo ng system na magtakda ng root password; Magiging available ang SSH gamit ang parehong password.

True Internet Channel Summation - OpenMPTCPRouter
Sa mga setting ng LAN, maaari mong itakda ang nais na subnet at paganahin ang DHCP server.

Gumagamit ako ng mga modem na tinukoy bilang mga interface ng USB Ethernet na may hiwalay na DHCP server, kaya kailangan nitong i-install karagdagang mga pakete. Ang pamamaraan ay kapareho ng pag-set up ng mga modem sa regular na OpenWRT, kaya hindi ko ito sasaklawin dito.

Susunod na kailangan mong i-configure ang mga interface ng WAN. Sa una, lumikha ang system ng dalawang virtual na interface na WAN1 at WAN2. Kailangan silang magtalaga ng isang pisikal na aparato, sa aking kaso ito ang mga pangalan ng mga interface ng USB modem.

Upang maiwasan ang pagkalito sa mga pangalan ng interface, inirerekomenda kong tingnan ang mga mensahe ng dmesg habang kumokonekta sa pamamagitan ng SSH.

Dahil ang aking mga modem mismo ay kumikilos bilang mga router, at ang kanilang mga sarili ay may isang DHCP server, kailangan kong baguhin ang mga setting ng kanilang mga panloob na hanay ng network at huwag paganahin ang DHCP server, dahil sa una ang parehong mga modem ay naglalabas ng mga address mula sa parehong network, at ito ay nagdudulot ng salungatan.

Kinakailangan ng OpenMPTCPRouter na maging static ang mga address ng interface ng WAN, kaya gumawa kami ng mga subnet para sa mga modem at i-configure ang mga ito sa system β†’ openmptcprouter β†’ menu ng mga setting ng interface. Dito kailangan mong tukuyin ang IP address at server key na nakuha sa panahon ng pag-install ng summing server.

True Internet Channel Summation - OpenMPTCPRouter

Kung matagumpay ang pag-setup, dapat lumitaw ang isang katulad na larawan sa page ng status. Makikita na ang router ay nakarating sa summing server at ang parehong mga channel ay gumagana nang normal.

True Internet Channel Summation - OpenMPTCPRouter

Ang default na mode ay shadowsocks + mptcp. Ito ay isang proxy na bumabalot sa lahat ng koneksyon sa loob nito. Una itong na-configure upang iproseso lamang ang TCP, ngunit maaari ding paganahin ang UDP.

True Internet Channel Summation - OpenMPTCPRouter

Kung walang mga error sa page ng status, maaaring ituring na kumpleto ang setup.
Sa ilang provider, maaaring magkaroon ng sitwasyon kapag naputol ang bandila ng mptcp sa daanan ng trapiko, pagkatapos ay lalabas ang sumusunod na error:

True Internet Channel Summation - OpenMPTCPRouter

Sa kasong ito, maaari kang gumamit ng ibang operating mode, nang hindi gumagamit ng MPTCP, higit pa tungkol dito dito.

Konklusyon

Ang proyekto ng OpenMPTCPRouter ay lubhang kawili-wili at mahalaga, dahil ito ay marahil ang tanging bukas na komprehensibong solusyon sa problema sa pagsusuma ng channel. Ang lahat ng iba ay alinman sa mahigpit na sarado at pagmamay-ari, o simpleng hiwalay na mga module na hindi maintindihan ng isang ordinaryong tao. Sa kasalukuyang yugto ng pag-unlad, ang proyekto ay medyo krudo pa rin, ang dokumentasyon ay napakahirap, maraming bagay ang hindi inilarawan. Ngunit sa parehong oras ito ay gumagana pa rin. Umaasa ako na patuloy itong bubuo, at makakakuha tayo ng mga router ng sambahayan na magagawang maayos na pagsamahin ang mga channel sa labas ng kahon.

True Internet Channel Summation - OpenMPTCPRouter

Sundin ang aming developer sa Instagram

True Internet Channel Summation - OpenMPTCPRouter

Pinagmulan: www.habr.com

Magdagdag ng komento