ორმა ინტერნეტ ხაზმა შეიძლება VPN უფრო ხელმისაწვდომი გახადოს და ზოგიერთი დატვირთვისთვის უფრო სწრაფიც, მაგრამ მექანიზმი წყვეტს, ამ ორიდან რომელი მოხდება. ორი ნაგულისხმევი მარშრუტის მქონე მარშრუტიზატორი გაერთიანებული არ არის, და ათასობით შიდა კავშირის მატარებელი გვირაბი კვლავ ერთი გარე ნაკადია. დაპირების პირველად დასახელება განსხვავებაა პროექტსა და ძვირ იმედგაცრუებას შორის. ქვემოთ მოცემული ცხრილი ყოფს ვარიანტებს იმის მიხედვით, თუ რა სჭირდება თითოეულს შორეულ ბოლოში და რას უშვებს ბმულის დაკარგვა გადაცემას.

სამი დაპირება, და მხოლოდ ერთს სჭირდება პარტნიორი

მარცხისას გადართვა ინახავს გზას ხელმისაწვდომს, როცა სასურველი ბმული ქრება. ნაკადის ჰეშით განაწილება დამოუკიდებელ ნაკადებს ორივე აღმავალ არხზე აფანტავს. ერთი ნაკადის გაერთიანება ერთ გადაცემას საშუალებას აძლევს ერთდროულად გამოიყენოს ორივე ბმული. ეს სხვადასხვა მოთხოვნის მქონე სხვადასხვა პროდუქტია, და მხოლოდ უკანასკნელს სჭირდება თქვენი მარშრუტიზატორის გარეთ რაღაცის თანამშრომლობა.

MechanismFar-end requirementEffect on one transferWhat breaks under a link loss
Packet-spraying overlayA cooperating endpoint that reassembles the streamPackets can spread across both linksReordering and buffering on the surviving path; its own recovery logic decides what continues
MPTCP subflowsA peer or proxy that accepts subflowsSubflows can share one connectionSurviving subflows continue if the peer keeps them alive
Flow-hash balancingNothing new; the existing tunnel endpoint is enoughOne outer flow still follows one linkFlows hashed onto the dead link move; established sessions break
Link failoverNothing newOne path at a time; the second link sits idleThe session stalls or restarts on the other link

ამ ცხრილში არაფერია მეორე ხაზის ყიდვის მიზეზი. ის აკეთებს სხვა რამეს: ხელს უშლის გადართვის პროექტის შეფასებას ისე, თითქოს გაერთიანება იყოს.

რატომ ჩანს გვირაბი მარშრუტიზატორისთვის ერთ ნაკადად

დატვირთვის გამანაწილებელი მარშრუტიზატორი ჰეშავს წყაროსა და დანიშნულების მისამართებს პორტებთან ერთად, შემდეგ მთელ ნაკადს აგზავნის იქ, სადაც ჰეში მიუთითებს. VPN გვირაბი მარშრუტიზატორის თვალსაზრისით ერთი ასეთი ნაკადია, რაც არ უნდა მუშაობდეს მის შიგნით. შიდა კავშირები არასდროს აღწევენ ჰეშის გადაწყვეტილებამდე, რადგან გარე სათაურმა უკვე განსაზღვრა გზა. ამიტომ მეორე აღმავალ არხს შეუძლია გააორმაგოს საერთო სიმძლავრე ბევრი მომხმარებლისთვის და არაფერი შეცვალოს ერთი მომხმარებლის დიდ გადაცემაში.

ორ ცალკეულ გვირაბს შეუძლია ორი კანდიდატი მოგცეთ, მაგრამ მათ მაინც სჭირდებათ განზრახ პოლიტიკა, რომელიც ტრაფიკს ანაწილებს და პასუხებს იმ გზაზე ინახავს, რომელმაც მოთხოვნა გაატარა. ასიმეტრიული მარშრუტიზაცია ამ ნაბიჯის გამოტოვების ჩვეულებრივი შედეგია. მინიმუმია პოლიტიკა, რომელიც ასახელებს ნაკადს, სასურველ ბმულს და სარეზერვო ბმულს.

Ethernet-ის გაერთიანება არ გადაკვეთს დაუკავშირებელ პროვაიდერებს, რადგან შორეულმა ბოლომ უნდა მიიღოს მონაწილეობა აგრეგაციის პროტოკოლში. ორ ინტერნეტ პროვაიდერს შორის გაერთიანება კვლევითი პროექტია, თუ არ არსებობს თანამშრომლობითი ბოლო წერტილი.

რა სჭირდება მრავალგზა TCP-ს ორივე ბოლოში

Linux-ის Multipath TCP დოკუმენტაცია აღწერს ერთ კავშირს კუთვნილ რამდენიმე ქვენაკადს. ერთ ბოლოში ბირთვის მხარდაჭერა თავისთავად არაფერს ცვლის, რადგან პარტნიორმაც უნდა მიიღოს ეს ქვენაკადები. შორეულ მხარეს პროქსი მეორე ჩვეულებრივი გზაა, და ის ხდება კომპონენტი საკუთარი სიმძლავრითა და ხელმისაწვდომობით, რომლებიც უნდა დაიგეგმოს. იგივე ლოგიკა გამორიცხავს მარტივ პასუხს WireGuard-ისთვის, რომლის ტრანსპორტი UDP-ია: MPTCP ზრდის TCP ქვენაკადებს და ვერ გააერთიანებს ამ გვირაბს პროექტში სხვა რამის გარეშე.

შეამოწმეთ, ჩართულია თუ არა ბირთვის ფუნქცია, სანამ მის გარშემო დააპროექტებთ, რადგან ბევრი დისტრიბუტივი მას გამორთულს აწვდის. ეს სამი ბრძანება ამას წუთში გიპასუხებთ.

sysctl net.mptcp.enabled
ss -M | head
ip mptcp limits show

აირჩიეთ დატვირთვის მიხედვით, არა ბროშურის

თუ დატვირთვა ბევრი დამოუკიდებელი სესიაა, ნაკადის ჰეშით განაწილებას შეუძლია სიმძლავრის დამატება შორეული ბოლოს თანამშრომლობის გარეშე. თუ ერთი დიდი გადაცემაა, მხოლოდ აგრეგაციის პროექტი დაეხმარება, და მას თანამშრომლობითი პარტნიორი სჭირდება. თუ მოთხოვნაა, რომ სამუშაო გაგრძელდეს ბმულის სიკვდილისას, პასუხი გადართვაა და ერთი გადაცემის გამტარუნარიანობას მნიშვნელობა არ აქვს.

ჩაწერეთ მოთხოვნა ერთ წინადადებაში ზმნით: ერთი სარეზერვო ასლი ორჯერ უფრო სწრაფად სრულდება, ან ჩამოვარდნილი ბმული სესიას არ ამთავრებს. ბუნდოვანი მიზნები წარმოქმნის პროექტებს, რომლებსაც ვერავინ მიიღებს ან უარყოფს. შემდეგ გადაწყვიტეთ, რა შეიძლება იყოს შორეული ბოლო, რადგან ყველაზე იაფი ვარიანტი ხშირად ისაა, რომელიც იქ არაფერ ახალს არ მოითხოვს. ეს შეზღუდვა შლის ბროშურის კლაიმების უმეტესობას პირველ შეხვედრამდე.

შეინახეთ სამი დაპირება ცალ-ცალკე მოთხოვნების დოკუმენტში. პროექტი, რომელიც სამივეს აცხადებს, ჩვეულებრივ ერთს აწვდის და დანარჩენებს ჩუმად ვარაუდობს. შემდეგი ნაწილი ამოწმებს, რომელი მიეწოდება სინამდვილეში.

გამოსცადეთ ერთი გადაცემა და ბევრი, შემდეგ გამორთეთ ბმული

შეადარეთ ერთი უწყვეტი გადაცემა იმავე დანიშნულებისკენ რამდენიმე პარალელურ გადაცემას, და ჩაწერეთ დანაკარგი, შეყოვნება და თითოეული ბმულის გამოყენება. მოგება მხოლოდ პარალელური სესიებით ნაკადების განაწილებაზე მიუთითებს, არა ერთი ნაკადის გაერთიანებაზე. ცალკე გამოსცადეთ ერთი აღმავალი არხის დაკარგვა, რადგან სიმძლავრე, სანამ ორივე ბმული მუშაობს, არაფერს ამბობს დამკვიდრებული სესიის გადართვაზე. ჩაწერეთ მარშრუტი, სოკეტი და ხელახალი გაგზავნის მთვლელები ყოველი ტესტის წინ და შემდეგ.

ip route show default
ip route get 10.80.0.5
mtr -n -c 20 -r 10.80.0.5

როცა ერთადერთი გადაცემა კვლავ ერთ აღმავალ არხს იყენებს, პროექტი აკეთებს ზუსტად იმას, რასაც ნაკადის ჰეში გულისხმობს. როცა პარალელური გადაცემები ორივეზე ნაწილდება, განაწილება მუშაობს და გაერთიანება არა. ჩაწერეთ, სამი დაპირებიდან რომელს იცავს პროექტი სინამდვილეში, და სიმძლავრის შემდეგი საუბარი მტკიცებულებებიდან დაიწყება, არა გამყიდველის კლაიმიდან.

დაკავშირებული სტატიები