À propos du projet

Le paquet bgp implémente le Border Gateway Protocol version 4 (BGP-4) tel que décrit dans la RFC 4271 et les RFC associées, couvrant le format de transmission, la machine à états finis et le cycle de vie de l'appairage. Il est sous licence MIT et écrit en Go. La bibliothèque est organisée en couches, chacune utilisable sans les couches supérieures : - Types de messages tels que Open, Update et Notification, avec leur encodage binaire. - Conn, qui assure le tramage des messages sur une connexion. - FSM, qui exécute la machine à états finis de la RFC 4271 sur un Conn : une tentative de session par appel à Connect, livrant aux gestionnaires des valeurs empruntées sans copie. - Peer, qui enveloppe une FSM avec une boucle de reconnexion et des gestionnaires dont les valeurs sont entièrement possédées. - Server, qui coordonne plusieurs Peer, en acceptant les connexions sur des écouteurs partagés. La plupart des appelants sont censés utiliser Peer ou Server ; FSM est la couche experte pour les appelants ayant besoin d'une livraison sans copie ou d'une politique de reconnexion personnalisée. Le README montre un exemple de speaker qui annonce une route à un voisin et journalise les routes reçues. Run gère le cycle de vie de la connexion : numérotation, échange OPEN, keepalives et reconnexion des sessions mortes jusqu'à l'annulation du contexte. L'annulation du contexte envoie Cease / Administrative Shutdown. Les exemples du paquet couvrent le multiprotocole IPv6, le double pile, les pairs passifs et une configuration durcie exposée à Internet. La portée est délibérément limitée : il n'y a pas de table de routage et pas de moteur de politiques, de façon permanente. Une session établie remet les messages UPDATE reçus à l'appelant, qui possède toutes les décisions de routage. Une RIB se branche au niveau de la couche Peer via ses gestionnaires, en câblant des méthodes dans chaque PeerConfig et en vidant son Adj-RIB-Out par le chemin d'envoi. Des projets compagnons tels que la surveillance BMP (RFC 7854) et la vivacité BFD (RFC 5880) s'appuient sur les mêmes interfaces et résident dans des dépôts séparés. Prise en charge des plateformes : les couches message, Conn, FSM, Peer et Server sont du Go portable. Les options de socket TCP dont un speaker BGP de production a besoin, telles que TCP-MD5, GTSM et DSCP, ne sont prises en charge que sous Linux ; ailleurs, leur définition échoue avec une erreur enveloppant errors.ErrUnsupported. Les tests sont effectués sur de vraies données de routage Internet et de vrais routeurs : les tests de corpus analysent chaque message des archives de collecteurs de routes et chaque route d'une table Internet complète, exigeant un aller-retour de marshaling octet par octet ; les cibles de fuzzing couvrent l'analyse des messages, l'analyse des attributs et le tramage des connexions, avec des graines issues du corpus ; et un harnais d'interopérabilité exécute des sessions en direct contre FRRouting, couvrant l'établissement, la négociation des capacités, l'échange de routes, TCP-MD5 et GTSM.