इस प्रोजेक्ट के बारे में

पैकेज bgp, RFC 4271 और संबंधित RFC में वर्णित बॉर्डर गेटवे प्रोटोकॉल संस्करण 4 (BGP-4) को लागू करता है, जिसमें वायर प्रारूप, परिमित अवस्था मशीन और पीयरिंग जीवनचक्र शामिल हैं। यह MIT लाइसेंस प्राप्त है और Go में लिखा गया है। लाइब्रेरी परतों में व्यवस्थित है, प्रत्येक का उपयोग उसके ऊपर की परतों के बिना किया जा सकता है: - Open, Update और Notification जैसे संदेश प्रकार, उनके बाइनरी एन्कोडिंग के साथ। - Conn, जो एक कनेक्शन पर संदेशों को फ्रेम करता है। - FSM, जो एक Conn पर RFC 4271 परिमित अवस्था मशीन चलाता है: प्रति Connect कॉल एक सत्र प्रयास, हैंडलर को ज़ीरो-कॉपी उधार मान प्रदान करता है। - Peer, जो एक FSM को रीट्राई लूप और हैंडलर के साथ लपेटता है जिनके मान पूरी तरह से स्वामित्व में होते हैं। - Server, जो कई Peers का समन्वय करता है, साझा लिसनर पर कनेक्शन स्वीकार करता है। अधिकांश कॉलर से Peer या Server का उपयोग करने की अपेक्षा की जाती है; FSM उन कॉलर के लिए विशेषज्ञ परत है जिन्हें ज़ीरो-कॉपी डिलीवरी या कस्टम रीट्राई नीति चाहिए। README एक उदाहरण स्पीकर दिखाता है जो एक पड़ोसी को एक रूट की घोषणा करता है और प्राप्त रूट्स को लॉग करता है। Run कनेक्शन जीवनचक्र का स्वामी है: डायलिंग, OPEN एक्सचेंज, कीपअलाइव्स, और मृत सत्रों को तब तक रीट्राई करना जब तक कॉन्टेक्स्ट रद्द न हो जाए। कॉन्टेक्स्ट रद्द करने पर Cease / Administrative Shutdown भेजा जाता है। पैकेज उदाहरण मल्टीप्रोटोकॉल IPv6, डुअल स्टैक, पैसिव पीयर्स और एक हार्डन्ड इंटरनेट-फेसिंग कॉन्फ़िगरेशन को कवर करते हैं। दायरा जानबूझकर सीमित है: कोई रूटिंग टेबल नहीं है और कोई पॉलिसी इंजन नहीं है, स्थायी रूप से। एक स्थापित सत्र प्राप्त UPDATE संदेशों को कॉलर को सौंपता है, जो सभी रूटिंग निर्णयों का स्वामी है। एक RIB अपने हैंडलर के माध्यम से Peer परत पर प्लग इन होता है, प्रत्येक PeerConfig में विधियों को वायर करता है और अपने Adj-RIB-Out को सेंड पाथ के माध्यम से ड्रेन करता है। साथी परियोजनाएं जैसे BMP (RFC 7854) मॉनिटरिंग और BFD (RFC 5880) लाइवनेस उन्हीं सीमों पर बनती हैं और अलग रिपॉजिटरी में रहती हैं। प्लेटफ़ॉर्म समर्थन: संदेश, Conn, FSM, Peer और Server परतें पोर्टेबल Go हैं। एक प्रोडक्शन BGP स्पीकर को आवश्यक TCP सॉकेट विकल्प, जैसे TCP-MD5, GTSM और DSCP, केवल Linux पर समर्थित हैं; अन्यत्र उन्हें सेट करना errors.ErrUnsupported को रैप करने वाली त्रुटि के साथ विफल होता है। परीक्षण वास्तविक इंटरनेट रूटिंग डेटा और वास्तविक राउटर के विरुद्ध किया जाता है: कॉर्पस परीक्षण रूट कलेक्टर अभिलेखागार के प्रत्येक संदेश और पूर्ण इंटरनेट तालिका के प्रत्येक रूट को पार्स करते हैं, जिसके लिए बाइट-दर-बाइट मार्शल राउंड ट्रिप आवश्यक है; फ़ज़ लक्ष्य संदेश पार्सिंग, एट्रिब्यूट पार्सिंग और कनेक्शन फ्रेमिंग को कवर करते हैं, जो कॉर्पस से सीड किए जाते हैं; और एक इंटरऑप हार्नेस FRRouting के विरुद्ध लाइव सत्र चलाता है, जो स्थापना, क्षमता वार्ता, रूट एक्सचेंज, TCP-MD5 और GTSM को कवर करता है।