5

clipboard.png

开源项目名称:YABGP
开源项目负责人:@SmartBGP
开源项目简介:另一种 BGP 协议的 Python 实现
开源项目类型:团队开源项目
项目创建时间:2019 年
GitHub 数据:166 Star,54 Fork
GitHub 地址:https://github.com/smartbgp/y...

YABGP 是什么?

YABGP 是另一种 BGP 协议的 Python 实现。它可以和各种路由器(包括 Cisco/华为/Juniper 的真实设备和一些模拟路由器比如GNS3)建立 BGP 连接, 接收解析 BGP messages 以供将来分析。

支持通过 RESTful API 发送 BGP messages(route refresh/update) 到其对等体。YABGP 不能自主地发送任何 BGP update messages, 它只是一个代理,一个控制器可以控制多个代理。

我们严格遵循 RFCs 文档的约定开发此项目。此软件可应用于 Linux/Unix,Mac OS 和 Windows 系统。

功能

  • 它可以通过 IPv4 地址以主动模式(作为 TCP 客户端)建立 BGP 会话连接。
  • 支持 TCP的 MD5 认证(只有 IPv4 并且不支持 Wndows 系统)
  • BGP capabilities 支持:4 字节的 ASN,Route Refresh(Cisco Route Refresh),添加发送/接收路径;
  • 地址族支持:

    • IPv4/IPv6 Unicast
    • IPv4/IPv6 Labeled Unicast
    • IPv4 Flowspec(有限支持)
    • IPv4 SR Policy(draft-previdi-idr-segment-routing-te-policy-07)
    • IPv4/IPv6 MPLSVPN
    • EVPN (部分支持)
  • 解析所有 BGP messages 为 json 格式并写入本地文件(可配置);
  • 支持通过基本的 RESTFUL API 获取对等体运行信息或者发送 BGP messages。

思否推荐

是否好奇 BGP 是什么?BGP 全称是 Border Gateway Protocol, 对应中文是边界网关协议,是互联网上一个核心的去中心化自治路由协议。它通过维护 IP 路由表或‘前缀’表来实现自治系统(AS)之间的可达性,属于矢量路由协议。BGP 不使用传统的内部网关协议(IGP)的指标,而使用基于路径、网络策略或规则集来决定路由。因此,它更适合被称为矢量性协议,而不是路由协议。

听起来很绕?举个例子,网通、电信、移动、联通、教育网、科技网、卫通等网络是互相独立的,如何将这些网络之间进行链接,就需要 BGP 来帮忙。

过往的 BGP 实现用的都是用的比较偏的语言比如 perl 中的 Net :: BGP 库吗,其他语言系下的开发者使用 BGP 来实现不可能重学一门新的语言。而现在 YABGP 作为另一种 BGP 协议的 Python 实现,让 Python 开发者也可以方便的使用 BGP 协议。同时,此软件可应用于 Linux/Unix,Mac OS 和 Windows 系统。


clipboard.png

该项目已入选「SFOSSP - 思否开源项目支持计划」,我们希望借助社区的资源对开源项目进行相关的宣传推广,并作为一个长期项目助力开源事业的发展,与广大开发者共建开源新生态。

有意向的开源项目负责人或团队成员,可通过邮箱提供相应的信息(开源项目地址、项目介绍、团队介绍、联系方式等),以便提升交流的效率。

联系邮箱:pr@segmentfault.com

clipboard.png


阿遂
10k 声望907 粉丝

老编辑,深夜撰稿者。