OpenVPN მულტიკასტს ყველა კლიენტს უგზავნის, არა გამომწერებს
მომხმარებლის სივრცის სერვერი ჯგუფურ პაკეტს თითო კლიენტზე აკოპირებს, არა თითო გამომწერზე. დაგეგმეთ განაწილება, დაამტკიცეთ გვირაბის მრიცხველებით და შემდეგ შეზღუდეთ დიზაინის მასშტაბი.
„მულტიკასტს მხარს უჭერს“ პროტოკოლის კითხვას პასუხობს და სიმძლავრის კითხვას ხელუხლებელს ტოვებს. ოპერაციულად მნიშვნელოვანია, რამდენ ასლს აგზავნის სერვერი ერთი ჯგუფური პაკეტისთვის და რომელი გვირაბები ატარებენ მათ. ნაკადის მიმღები ერთი გამომწერი აპლიკაცია მხოლოდ იმას ამტკიცებს, რომ მიწოდება სადღაც მუშაობს. ის არ ამტკიცებს, რომ არადაინტერესებულ კლიენტებს გამტარობა დაეზოგათ.
სამი კითხვა ერთი ფუნქციის მტკიცებაში
ჯგუფური წევრობა კითხულობს, შეუერთდა თუ არა მიმღები ჯგუფს. გვირაბით მიწოდება კითხულობს, გადაკვეთა თუ არა პაკეტმა გვირაბი საერთოდ. დუბლირების პოლიტიკა კითხულობს, რამდენი ასლი შექმნა სერვერმა და ვისთვის. მომწოდებლის განცხადება შეიძლება მართალი იყოს პირველზე და ჩუმად იყოს მესამეზე, და სწორედ იქ ცხოვრობს ხარჯი.
გამოყავით ისინი, როცა არხის ზომას განსაზღვრავთ. მხოლოდ მესამე კითხვა ადგენს გამავალ ბიუჯეტს სერვერის მხარეს.
რას აკეთებს მომხმარებლის სივრცის სერვერი ჯგუფურ პაკეტთან
OpenVPN 2.6-ის ტრადიციულ მომხმარებლის სივრცის სერვერში შემომავალი broadcast ან multicast პაკეტი TUN/TAP-ის შემავალ გზაზე კლასიფიცირდება და გადაეცემა broadcast-ის გავრცობის რუტინას და არა ჯგუფობრივ ძებნას. ეს რუტინა გადის კლიენტის ინსტანციებზე, გამოტოვებს გამომგზავნს და ნებისმიერ გაჩერებულ ინსტანციას, იყენებს VLAN-ის შემოწმებას სადაც ის კონფიგურირებულია, და რიგში აყენებს ასლს ყოველი დარჩენილი კლიენტისთვის. ამ ციკლში არც ერთი ნაბიჯი არ ეკითხება წევრობის ცხრილს. ეს არის broadcast-ის სტილის დუბლირება და ეს არის მთელი მექანიზმი.
განიხილეთ ეს როგორც ამ კოდის გზის თვისება, არა როგორც საყოველთაო კანონი. დაჩქარებული მონაცემთა გზები, სხვა იმპლემენტაციები და სხვადასხვა ვერსია შეიძლება სხვაგვარად მოიქცეს, და ამათგან არც ერთი TAP-ს მოთხოვნად ან შეკეთებად არ აქცევს.
დაბიუჯეტეთ ასლები სანამ რამეს გაზომავთ
აიღეთ დატვირთვის სიჩქარე და გაამრავლეთ შესაბამისი კლიენტების რაოდენობაზე. ნაკადი, რომელიც წამში ერთ მეგაბიტს უგზავნის ოც კლიენტს, წარმოქმნის წამში ოცი მეგაბიტის დატვირთვას, რომელიც ტოვებს სერვერს, ინკაფსულაციამდე, ხელახალი გაგზავნისა და თითო კლიენტზე ნებისმიერი დანახარჯის წინ. ეს არითმეტიკა ბიუჯეტია, არა თქვენი განლაგების გაზომვა.
ip -s link show tun0წაიკითხეთ გაგზავნილი ბაიტების მრიცხველი ფიქსირებულ ინტერვალამდე და მის შემდეგ ერთი ცნობილი აქტიური გამომგზავნით. გაყავით ინტერვალზე და შეადარეთ დატვირთვის სიჩქარეს გამრავლებულს კლიენტების რაოდენობაზე. ერთი ნაკადის სიჩქარესთან ახლო რიცხვი ნიშნავს, რომ დუბლირება შეზღუდულია; გამრავლებულ სიჩქარესთან ახლო რიცხვი ნიშნავს, რომ ყველა კლიენტი იღებს ასლს.
მრიცხველი მოიცავს თქვენივე გვირაბის ტრაფიკსაც, ამიტომ ტესტის ფანჯარა მოკლე და ჰოსტი დანარჩენ დროს მშვიდი შეინარჩუნეთ. სიზუსტეს ნაკლები მნიშვნელობა აქვს, ვიდრე სიდიდის რიგს, და ეს არის ყველაფერი, რაც გჭირდებათ ერთი ასლის ოცისგან გასარჩევად.
ორი კლიენტის ტესტი, რომელიც წყვეტს მასშტაბის კითხვას
დააკავშირეთ ერთი კლიენტი, რომელმაც ნაკადი უნდა მიიღოს და მეორე, რომელმაც არ უნდა. გაუშვით გამომგზავნი, შემდეგ დააკვირდით მეორე კლიენტის გვირაბის მრიცხველებს იმავე ინტერვალისთვის. ზრდა მეორე კლიენტზე ფართო დუბლირების პირდაპირი მტკიცებულებაა, რაც არ უნდა ეთქვა ფუნქციების სიას.
გაფილტრეთ ჩაწერა ჯგუფის მისამართზე, რომ დაუკავშირებელი ტრაფიკი არ წაიკითხოთ, და შემოიფარგლეთ გვირაბის ინტერფეისით. დატვირთულ ჰოსტზე ფიზიკური ინტერფეისის ჩაწერა ქმნის ფაილს, რომლის ინტერპრეტაციას ვერავინ შეძლებს და შეიძლება შეინახოს მომხმარებლის მონაცემები, რომელთა შეგროვებასაც არ აპირებდით.
შემდეგ შეცვალეთ როლები. თუ შედეგი ჯგუფს კი არა, მიმღებს მიჰყვება, თქვენ წევრობის გათვალისწინებულ რაღაცას უყურებთ, და წინა ვარაუდი თქვენს სასარგებლოდ მცდარი იყო.
შეზღუდული დიზაინის არჩევა შეზღუდვების მოხსნის ნაცვლად
როცა გავრცობა ძალიან ფართოა, გამოსწორება მხარდაჭერილი შეზღუდული განაწილების მოწყობაა და არა ყველა თქვენი კონტროლის წაშლა. ვარიანტები მოიცავს განაწილების წერტილის მიმღებებთან მიახლოებას, წყაროსთვის სპეციფიკური გამოწერის მოდელის გამოყენებას, რომელიც წყაროს იდენტობას ჯგუფთან ერთად ატარებს, ან ნაკადის გაყოფას, რომ არადაინტერესებული ადგილები არასოდეს იჯდეს იმავე განაწილების საზღვარზე.
წყაროსა და ჯგუფის იდენტობა გამოაცალკევეთ იმ შიშველი ფაქტისგან, რომ დანიშნულება multicast-ია. მიმღები, რომელიც ჯგუფს ცნობს, მაგრამ წყაროს არა, სხვა გამომწერია, ვიდრე ის, ვინც კონკრეტული არხი მოითხოვა. ორივეს შერევა შემდგომ სიმძლავრის დაგეგმვას ვარაუდად აქცევს.
წყაროსთვის სპეციფიკური multicast არხის მოდელი ამ განსხვავების მითითებაა. რომელი დიზაინიც არ უნდა აირჩიოთ, ჩაწერეთ შესაბამისი პირების ნაკრები, დუბლირების მფლობელი და მრიცხველი, რომელსაც შემდეგ ჯერზე წაიკითხავთ; სწორედ ეს ჩანაწერი აქცევს გამტარობის სიურპრიზს ცნობილ ხარჯად.