ईव ऑनलाइन एक मजेदार खेल है। यह उन कुछ MMO में से एक है जिसमें प्रवेश के लिए केवल एक "सर्वर" है, जिसका अर्थ है कि हर कोई एक ही तार्किक दुनिया में खेलता है। उसके पास खेल के अंदर होने वाली घटनाओं का एक रोमांचक सेट था, और वह बहुत ही आकर्षक खेल भी बनी हुई है:
एक व्यापक विश्व मानचित्र भी है, जिस पर ये सभी खिलाड़ी फिट हो सकते हैं। अपने चरम पर, EvE के पास लोकप्रियता के चरम पर 500,000 पंजीकृत सशुल्क सब्सक्रिप्शन के साथ एक दुनिया में 63,000 ऑनलाइन खिलाड़ी थे, और हालांकि यह संख्या हर साल छोटी होती जा रही है, लेकिन दुनिया अविश्वसनीय रूप से बड़ी है। इसका अर्थ है कि एक तरफ से दूसरे स्थान पर संक्रमण एक महत्वपूर्ण मात्रा है (साथ ही खिलाड़ी के अंश पर निर्भरता के कारण जोखिम भी)।
अनुवाद EDISON सॉफ्टवेयर , एक पेशेवर सुरक्षा कंपनी द्वारा समर्थित था, और इलेक्ट्रॉनिक मेडिकल सत्यापन प्रणाली भी विकसित कर रहा है ।आप ताना मोड (एक ही सिस्टम के भीतर) का उपयोग करके विभिन्न क्षेत्रों की यात्रा करते हैं, या अलग-अलग सिस्टमों से कूदते हुए गेट्स का उपयोग करते हैं:

और ये सभी प्रणालियाँ सुंदरता और जटिलता का नक्शा बनाने के लिए गठबंधन करती हैं:

मैंने हमेशा इस कार्ड को एक नेटवर्क के रूप में माना है, यह सिस्टम का एक बड़ा नेटवर्क है जो एक दूसरे से जुड़ता है ताकि लोग इनके माध्यम से जा सकें, और अधिकांश प्रणालियों में दो से अधिक हॉटिंग गेट हैं। इसने मुझे यह सोचने पर मजबूर कर दिया कि यदि आप सचमुच एक नेटवर्क के रूप में मानचित्र का विचार लेते हैं तो क्या होगा? EvE इंटरनेट सिस्टम कैसा दिखेगा?
ऐसा करने के लिए, हमें यह समझने की आवश्यकता है कि वास्तविक इंटरनेट कैसे काम करता है। इंटरनेट इंटरनेट प्रदाताओं का एक बड़ा संग्रह है जो सभी को एक मानकीकृत और अद्वितीय इंटरनेट प्रदाता नंबर का उपयोग करके पहचाना जाता है, जिसे ऑटोनॉमस सिस्टम नंबर या एएसएन (या छोटे संस्करण के लिए एएस) कहा जाता है। इन एएस को एक-दूसरे के साथ मार्गों का आदान-प्रदान करने के लिए एक मार्ग की आवश्यकता होती है, क्योंकि वे आईपी पते की श्रेणी के मालिक होंगे, और उन्हें अन्य इंटरनेट प्रदाताओं को यह बताने का तरीका चाहिए कि उनके राउटर इन आईपी पते को रूट कर सकते हैं। ऐसा करने के लिए, दुनिया सीमा गेटवे प्रोटोकॉल या बीजीपी पर बंद हो गई।
बीजीपी अन्य मार्गों के रूप में (एक मेजबान के रूप में जाना जाता है) "बता" द्वारा काम करता है:

बीजीपी का मानक व्यवहार जब इसे एक मेजबान से मार्ग प्राप्त होता है, तो इसे अन्य सभी मेजबानों पर पारित करना होता है, जिनसे यह जुड़ा भी है। इसका मतलब है कि नोड्स अपने रूटिंग टेबल को स्वचालित रूप से एक दूसरे के साथ साझा करेंगे।

हालांकि, यह व्यवहार केवल तभी उपयोगी है जब आप बीजीपी का उपयोग आंतरिक राउटरों को भेजने के लिए करते हैं, क्योंकि आधुनिक इंटरनेट के एक-दूसरे के साथ अलग-अलग तार्किक संबंध हैं। नेटवर्क के बजाय, आधुनिक इंटरनेट कुछ इस तरह दिखता है:

हालांकि, भविष्य में ईवे ऑनलाइन स्थापित है। कौन जानता है कि अगर इंटरनेट लाभ के लिए इस मार्ग योजना पर निर्भर करता है। आइए कल्पना करें कि यह ऐसा नहीं है कि हम बड़े नेटवर्क में बीजीपी को कैसे देख सकते हैं।
ऐसा करने के लिए, हमें बीजीपी राउटर के वास्तविक व्यवहार और कनेक्शन को अनुकरण करने की आवश्यकता है। यह देखते हुए कि ईवीई में अपेक्षाकृत कम 8000 ~ संख्या प्रणाली है, और उनके बीच 13.8 हजार लिंक हैं। मैंने सुझाव दिया कि वास्तविक बीजीपी और एक नेटवर्क के साथ 8000 ~ आभासी मशीनों को चलाना वास्तव में असंभव होगा, यह पता लगाने के लिए कि ये वास्तविक सिस्टम कैसे दिखते हैं जब वे एक नेटवर्क के रूप में एक साथ कार्य करते हैं।

हालांकि, हमारे पास असीमित संसाधन नहीं हैं, इसलिए हमें डिस्क स्थान का उपयोग करते समय और मेमोरी का उपयोग करते समय सबसे छोटी लिनक्स छवि बनाने का एक तरीका खोजना होगा। इसके लिए, मैंने एम्बेडेड सिस्टम पर ध्यान आकर्षित किया, क्योंकि एम्बेडेड सिस्टम को अक्सर बहुत कम स्तर के संसाधनों के साथ वातावरण में काम करना पड़ता है। मैं
बिल्डरोट के पार आया, और कुछ घंटों के बाद मेरे पास एक छोटी लिनक्स छवि थी जिसमें केवल इस परियोजना के काम करने के लिए मेरी आवश्यकता थी।
$ ls -alh total 17M drwxrwxr-x 2 ben ben 4.0K Jan 22 22:46 . drwxrwxr-x 6 ben ben 4.0K Jan 22 22:45 .. -rw-r--r-- 1 ben ben 7.0M Jan 22 22:46 bzImage -rw-r--r-- 1 ben ben 10M Jan 22 22:46 rootfs.ext2
इस चित्र में बूट लाइनक्स है, जिसमें यह भी है: *
बर्ड 2 बीजीपी डेमॉन * नेटवर्क डिबगिंग के लिए
tcpdump और My Traceroute (mtr) * बेस शेल और सिस्टम उपयोगिताओं के लिए
बिजीबॉक्सइस छवि को कुछ विकल्पों के साथ आसानी से qemu में चलाया जा सकता है:
qemu-system-i386 -kernel ../bzImage \ -hda rootfs.ext2 \ -hdb fat:./30045343/ \ -append "root=/dev/sda rw" \ -m 64
नेटवर्क पर काम करने के लिए, मैंने qemu (मेरे संस्करण में) से एक अनडॉस्मेंटेड फ़ंक्शन का उपयोग करने का निर्णय लिया, जिसमें आप दो qemu प्रक्रियाओं को एक-दूसरे को निर्देशित कर सकते हैं और उनके बीच डेटा स्थानांतरित करने के लिए UDP सॉकेट्स का उपयोग कर सकते हैं। यह सुविधाजनक है, क्योंकि हम बड़ी संख्या में लिंक प्रदान करने की योजना बनाते हैं, इसलिए सामान्य
TUN / TAP एडेप्टर विधि का उपयोग करने से भ्रम की स्थिति पैदा हो सकती है।
चूंकि यह सुविधा आंशिक रूप से अनिर्धारित है, इसलिए इसके संचालन में कुछ समस्याएं थीं। मुझे यह समझने में लंबा समय लगा कि कमांड लाइन पर नेटवर्क का नाम कनेक्शन के दोनों किनारों के लिए समान होना चाहिए। बाद में यह पता चला कि यह फ़ंक्शन पहले से ही अच्छी तरह से प्रलेखित है, जैसा कि आमतौर पर होता है। वितरण के पुराने संस्करणों को प्राप्त करने में समय लगता है।
जैसे ही यह काम करता है, हमें कुछ आभासी मशीनें मिलीं जो एक-दूसरे को पैकेट भेज सकती हैं, और हाइपरवाइजर उन्हें यूडीपी डेटाग्राम के रूप में भेजता है। चूंकि हम बड़ी संख्या में ऐसी प्रणालियों को लॉन्च करेंगे, इसलिए हमें पहले से बनाए गए कॉन्फ़िगरेशन का उपयोग करके उन्हें कॉन्फ़िगर करने के लिए त्वरित तरीके की आवश्यकता होगी। ऐसा करने के लिए, हम सुविधाजनक qemu फ़ंक्शन का उपयोग कर सकते हैं, जो आपको हाइपरविज़र पर एक निर्देशिका लेने और इसे FAT32 वर्चुअल फ़ाइल सिस्टम में बदलने की अनुमति देता है। यह उपयोगी है क्योंकि यह हमें प्रत्येक प्रणाली के लिए एक निर्देशिका बनाने की अनुमति देता है जिसे हम शुरू करने की योजना बनाते हैं, और प्रत्येक qemu प्रक्रिया इस निर्देशिका को इंगित करती है, जिसका अर्थ है कि हम क्लस्टर में सभी वर्चुअल मशीनों के लिए एक ही बूट छवि का उपयोग कर सकते हैं।
चूंकि प्रत्येक सिस्टम में 64 एमबी रैम है, और हम 8000 ~ वीएम का उपयोग करने की योजना बनाते हैं, इसलिए हमें निश्चित रूप से एक अच्छी मात्रा में रैम की आवश्यकता होगी। इसके लिए, मैंने packet.net के साथ 3 m2.xlarge.x86 का उपयोग किया, क्योंकि वे 2x Xeon Gold 5120 के साथ 256 जीबी रैम की पेशकश करते हैं, जिसका अर्थ है कि उनके पास समर्थन का एक सभ्य राशि है।

मैंने JSON के रूप में एक ईवई मैप बनाने के लिए एक
और ओपन सोर्स प्रोजेक्ट का उपयोग किया, और फिर इस डेटा के आधार पर एक कस्टम कॉन्फ़िगरेशन प्रोग्राम बनाया। केवल कुछ प्रणालियों के कई परीक्षण रन आयोजित करने के बाद, मैंने साबित किया कि वे VFAT से कॉन्फ़िगरेशन ले सकते हैं और इस बारे में एक दूसरे के साथ बीजीपी सत्र स्थापित कर सकते हैं।

इसलिए, मैंने ब्रह्मांड को लोड करने की दिशा में निर्णायक कदम उठाया:

सबसे पहले मैंने एक बड़ी घटना में सभी प्रणालियों को शुरू करने की कोशिश की, लेकिन, दुर्भाग्य से, इसने सिस्टम को लोड करने के मामले में एक बड़ा विस्फोट किया, इसलिए इसके बाद मैंने हर 2.5 सेकंड में सिस्टम को शुरू करने के लिए स्विच किया और अंततः 48 सिस्टम कोर ने इस पर ध्यान दिया।

बूट प्रक्रिया के दौरान, मुझे पता चला कि आपको सभी वर्चुअल मशीनों पर CPU उपयोग के बड़े "विस्फोट" दिखाई देंगे, बाद में मुझे पता चला कि ये ब्रह्मांड के बड़े हिस्से एक-दूसरे से जुड़ रहे थे, इस प्रकार बड़ी संख्या में नए आभासी दोनों तरफ बड़ी मात्रा में BGP ट्रैफ़िक होता था मशीनों।

root@evehyper1:~/147.75.81.189# ifstat -i bond0,lo bond0 lo KB/s in KB/s out KB/s in KB/s out 690.46 157.37 11568.95 11568.95 352.62 392.74 20413.64 20413.64 468.95 424.58 21983.50 21983.50
अंत में, हमने कुछ अद्भुत अद्भुत बीजीपी पथों को देखा, क्योंकि प्रत्येक प्रणाली विज्ञापन / 48 आईपीवी 6 पतों को देती है, आप प्रत्येक सिस्टम और अन्य सभी प्रणालियों के मार्गों को देख सकते हैं कि उन्हें वहां पहुंचने के लिए गुजरना होगा।
$ birdc6 s ro all 2a07:1500:b4f::/48 unicast [session0 18:13:15.471] * (100) [AS2895i] via 2a07:1500:d45::2215 on eth0 Type: BGP univ BGP.origin: IGP BGP.as_path: 3397 3396 3394 3385 3386 3387 2049 2051 2721 2720 2719 2692 2645 2644 2643 145 144 146 2755 1381 1385 1386 1446 1448 849 847 862 867 863 854 861 859 1262 1263 1264 1266 1267 2890 2892 2895 BGP.next_hop: 2a07:1500:d45::2215 fe80::5054:ff:fe6e:5068 BGP.local_pref: 100
मैंने ब्रह्मांड में प्रत्येक राउटर पर राउटिंग टेबल का एक स्नैपशॉट लिया, और फिर अन्य प्रणालियों का उपयोग करने के लिए आमतौर पर उपयोग किए जाने वाले सिस्टम का चित्रण किया, हालांकि यह छवि बहुत बड़ी है। प्रकाशन में इसका एक छोटा संस्करण दिया गया है, यदि आप किसी छवि पर क्लिक करते हैं, तो ध्यान रखें
कि यह छवि आपके डिवाइस को स्मृति से बाहर चलाने की सबसे अधिक संभावना होगी।
उसके बाद, मैंने सोचा, आप बीजीपी रूट किए गए नेटवर्क के लिए और क्या मैप कर सकते हैं? क्या आप परीक्षण करने के लिए एक छोटे मॉडल का उपयोग कर सकते हैं कि बड़े नेटवर्क पर रूटिंग कॉन्फ़िगरेशन कैसे काम करता है?
मैंने एक फाइल तैयार की, जिसने इसे सत्यापित करने के लिए लंदन अंडरग्राउंड सिस्टम प्रदर्शित किया :

TFL सिस्टम बहुत छोटा है और इसमें कई और जंपर्स हैं जिनकी केवल एक ही दिशा है, क्योंकि अधिकांश स्टेशनों में परिवहन की केवल एक "लाइन" है, हालांकि हम इससे एक बात सीख सकते हैं, हम इसका उपयोग
BGP MED के साथ सुरक्षित रूप से खेलने के लिए कर सकते हैं।
हालाँकि, एक समस्या है जब हम एक टीएफएल कार्ड को बीजीपी नेटवर्क के रूप में मानते हैं, वास्तविक दुनिया में प्रत्येक स्टॉप के बीच का समय / देरी समान नहीं है, और इसलिए, यदि हमने इस देरी का अनुकरण किया, तो हम सिस्टम में उतनी तेजी से नहीं जाएंगे जितना हम कर सकते हैं। जैसा कि हम रास्ता तय करने के लिए सबसे कम संख्या वाले स्टेशनों को देखते हैं।

हालांकि, सूचना की स्वतंत्रता अधिनियम (एफओआईए) के लिए धन्यवाद,
टीएफएल को भेजे गए अनुरोध ने हमें एक स्टेशन से दूसरे स्टेशन पर जाने के लिए आवश्यक समय प्रदान किया। वे बीजीपी राउटर कॉन्फ़िगरेशन में उत्पन्न हुए थे, उदाहरण के लिए:
protocol bgp session1 { neighbor 2a07:1500:34::62 as 1337; source address 2a07:1500:34::63; local as 1337; enable extended messages; enable route refresh; ipv6 { import filter{ bgp_med = bgp_med + 162; accept; }; export all; }; } protocol bgp session2 { neighbor 2a07:1500:1a::b3 as 1337; source address 2a07:1500:1a::b2; local as 1337; enable extended messages; enable route refresh; ipv6 { import filter{ bgp_med = bgp_med + 486; accept; }; export all; }; }
session1
1 में
session1
दो स्टेशनों के बीच
session1
समय अंतराल 1.6 मिनट है, इस स्टेशन से दूसरा रास्ता 4.86 मिनट है। यह नंबर प्रत्येक स्टेशन / राउटर के लिए मार्ग में जोड़ा जाता है जिसके माध्यम से यह गुजरता है। इसका मतलब है कि नेटवर्क पर प्रत्येक राउटर / स्टेशन जानता है कि प्रत्येक मार्ग के माध्यम से प्रत्येक स्टेशन पर पहुंचने का समय है:

इसका मतलब यह है कि ट्रेसरआउट यह निर्धारित करता है कि आप लंदन के चारों ओर कैसे यात्रा कर सकते हैं, उदाहरण के लिए, मेरे पैडिंगटन स्टेशन के लिए:

वाटरलू स्टेशन पर रखरखाव या किसी घटना का अनुकरण करके हम बीजीपी के साथ मज़े कर सकते हैं:

और जैसा कि पूरा नेटवर्क तुरन्त अगले सबसे तेज मार्ग को चुनता है, न कि कम से कम गुजरने वाले स्टेशनों को।

और यह रूटिंग में बीजीपी मेड का जादू है!
इस सब के लिए कोड पहले से ही उपलब्ध है। आप काफी सरल JSON योजना के साथ अपनी खुद की नेटवर्क संरचना बना सकते हैं या केवल ईवे ऑनलाइन या टीएफएल का उपयोग कर सकते हैं, क्योंकि वे पहले से ही भंडार में हैं।
आप इसके लिए सभी कोड यहां पा सकते हैं