Sobre el proyecto

El paquete bgp implementa el Protocolo de Frontera versión 4 (BGP-4) según RFC 4271 y RFC relacionados, cubriendo el formato de cable, la máquina de estados finitos y el ciclo de vida del emparejamiento. Está licenciado bajo MIT y escrito en Go. La biblioteca está organizada en capas, cada una utilizable sin las capas superiores: - Tipos de mensaje como Open, Update y Notification, con su codificación binaria. - Conn, que enmarca mensajes sobre una conexión. - FSM, que ejecuta la máquina de estados finitos RFC 4271 sobre una Conn: un intento de sesión por llamada Connect, entregando valores prestados sin copia a los manejadores. - Peer, que envuelve un FSM con un bucle de reintento y manejadores cuyos valores son totalmente propiedad. - Server, que coordina muchos Peers, aceptando conexiones en listeners compartidos. Se espera que la mayoría de los llamadores usen Peer o Server; FSM es la capa experta para llamadores que necesitan entrega sin copia o una política de reintento personalizada. El README muestra un ejemplo de hablante que anuncia una ruta a un vecino y registra rutas recibidas. Run posee el ciclo de vida de la conexión: marcado, intercambio OPEN, keepalives y reintento de sesiones muertas hasta que el contexto se cancele. Cancelar el contexto envía Cease / Administrative Shutdown. Los ejemplos del paquete cubren IPv6 multiprotocolo, doble pila, pares pasivos y una configuración endurecida orientada a internet. El alcance está deliberadamente limitado: no hay tabla de enrutamiento ni motor de políticas, permanentemente. Una sesión establecida entrega mensajes UPDATE recibidos al llamador, quien posee todas las decisiones de enrutamiento. Una RIB se conecta en la capa Peer a través de sus manejadores, enlazando métodos en cada PeerConfig y drenando su Adj-RIB-Out a través de la ruta de envío. Proyectos complementarios como monitoreo BMP (RFC 7854) y vivacidad BFD (RFC 5880) se basan en las mismas costuras y viven en repositorios separados. Soporte de plataforma: las capas de mensaje, Conn, FSM, Peer y Server son Go portátil. Las opciones de socket TCP que un hablante BGP de producción necesita, como TCP-MD5, GTSM y DSCP, solo se admiten en Linux; en otros lugares, configurarlas falla con un error que envuelve errors.ErrUnsupported. Las pruebas se realizan contra datos de enrutamiento de internet reales y routers reales: las pruebas de corpus analizan cada mensaje de archivos de colectores de rutas y cada ruta de una tabla de internet completa, requiriendo un viaje de ida y vuelta de marshal byte por byte; los objetivos de fuzz cubren análisis de mensajes, análisis de atributos y enmarcado de conexión, sembrados desde el corpus; y un arnés de interoperabilidad ejecuta sesiones en vivo contra FRRouting, cubriendo establecimiento, negociación de capacidades, intercambio de rutas, TCP-MD5 y GTSM.