#bgp #监控 #路由 #信息 #路由 #协议 #历史

app bgpexplorer

这是一个具有查看路由变更历史记录功能的RIB(路由信息数据库)BGP路由探索器。

10个版本

0.3.3 2023年1月17日
0.3.2 2023年1月17日
0.3.0 2022年10月8日
0.2.1 2021年8月1日
0.1.1 2021年5月23日

#16#历史

每月 34次下载

MIT/Apache

325KB
7K SLoC

bgpexplorer

描述

这是一个RIB(路由信息数据库)BGP路由探索器,具有查看路由变更历史记录的功能。它可以作为一个BGP发言人(仅限监听)或BMP监控站。bgpexplorer支持多种NLRI类型和路径属性,旨在替代looking glass和"show route"。它是旧BGPHist(https://sourceforge.net/projects/bgphist/)的替代品。bgpexplorer因为将RIB及其历史存储在RAM中而速度更快。RIB可以通过http协议以JSON格式访问。为了方便,bgpexplorer提供了捆绑文件以提供基本网络服务,该服务可以用作具有AAA的前端网络服务器的后端(例如nginx或apache)。所有json端点位于/api/ URI下。

快速入门

首先,您至少需要一个BGP路由器来监控(:-)。以及一些Linux/FreeBSD的PC(尽管Windows或Mac也可以,我希望)。

其次,您应该配置您的路由器以从您的PC接受BGP连接。例如,您的路由器具有IP 10.0.0.1,AS 65535。运行bgpexplorer的PC具有IP 10.1.1.1。在Cisco方言中,它将类似于

router bgp 65535
 ! create a neighbor with your own AS, so it will be IBGP
 neighbor 10.1.1.1 remote-as 65535
 ! specify source IP
 neighbor 10.1.1.1 update-source Loopback0
 ! do not attempt to connect from router to PC, only from PC to router
 neighbor 10.1.1.1 transport connection-mode passive
 address-family ipv4
 ! it has ipv4 unicast address family
  neighbor 10.1.1.1 activate
 ! send all routing information to PC
  neighbor 10.1.1.1 route-reflector-client
 ! activate ipv4 labeled-unicast address family
  neighbor 10.1.1.1 send-label
 address-family vpnv4
 ! activate vpnv4 unicast address family
  neighbor 10.1.1.1 activate
  neighbor 10.1.1.1 send-community extended

现在在Linux或FreeBSD的PC上

$ git clone https://github.com/wladwm/bgpexplorer
... git messages
$ cd bgpexplorer
$ cargo build
... cargo messages
$ cat > bgpexplorer.ini <<EOF
[main]
httplisten=0.0.0.0:8080
httproot=contrib
whoisjsonconfig=whois.json
snapshot=snapshot.bgp

[s0]
mode=bgpactive
peer=10.0.0.1
peeras=65535
EOF

$ cargo run

之后,您应该看到以下内容

Listening on http://0.0.0.0:8080
BGP trying 10.0.0.1:179
Connected to 10.0.0.1:179

之后,您可以使用您喜欢的浏览器并指向http://10.1.1.1:8080/ - 您应该看到bgpexplorer的基本界面。

例如,查看ipv4单播: 替代文本

或vpnv4单播: 替代文本

配置

bgpexplorer在当前目录中的bgpexplorer.ini文件中查找配置。此文件应包含[main]部分和具有任何其他名称的peer部分

  • httplisten - 内部http服务器的绑定地址和端口,默认为0.0.0.0:8080。
  • httproot - http服务器文件的根路径,默认为"./contrib/"。
  • whoisjsonconfig - whois服务的json配置,默认为whois.json。
  • whoisdb - Whois缓存数据库的存储路径,默认为whoiscache.db。
  • historydepth - 每个路由应保留多少历史记录。默认为10。
  • historymode - differ/every。differ - 只有当某些属性发生变化时才记录历史事件。every - 无论何种情况都记录历史事件。
  • purge_after_withdraws - 在指定数量的撤回后进行垃圾回收。0 - 关闭,此设置默认开启。
  • purge_every - 每 N 秒进行一次垃圾回收。默认设置为5分钟。

服务部分参数

  • mode - 协议模式,可以是bgpactive、bgppassive、bmpactive或bmppassive。bgp或bmp表示协议,active或passive决定哪一侧将启动会话。
  • bgppeer - bgp active模式的bgp对等地址。可以是IP地址或IP:端口号。bgpexplorer将尝试连接到指定的BGP发言人。
  • bmppeer - bgp active模式的bmp对等地址。可以是IP:端口号或仅IP地址 - 然后使用默认端口号632。bgpexplorer将尝试连接到指定的支持BMP的路由器。
  • protolisten - bgp/bmp passived模式的TCP端点。应为IP:端口号形式。请注意,如果您不是root用户且没有特殊技巧,则无法在*nix OS上运行监听端口小于1024的进程。
  • routerid - BGP路由器ID,如果没有指定,则使用默认值1.1.1.1。
  • peeras - bgpactive的BGP AS号码。
  • filter_rd - 与BMP会话一起使用时,此参数将过滤匹配此RD的BGP会话。默认为0:0(全局vrf)。

顺便说一句,内置的whois代理允许您查看有关AS和主机的某些信息: 替代文本

API端点

  • /api/statistics
    • 参数:无
    • 返回:RIB统计对象示例:{ // 存储使用情况 "stores":{"clusters":0,"pathes":20,"comms":7,"attrs":25,"lcomms":1,"extcomms":1}, // 每个RIB的路由计数 "ribs":{"ipv4m":0,"fs4u":0,"l2vpls":0,"vpnv4u":0,"ipv4u":70,"vpnv4m":0,"mvpn":0,"ipv6u":0,"vpnv6m":0,"ipv6lu":0,"vpnv6u":0,"ipv4lu":0,"evpn":0}, // 更新/撤回的计数器 "counters":{"updates":70,"withdraws":0} }
  • /api/json/?...
    • RIB - ipv4u, ipv4m ... URL参数
    • limit - 响应中最大项目数
    • skip - 分页时跳过的项目数
    • filter - 文本过滤器
  • /api/whois/?query= Whois公共服务查询
    • ObjectType - 要从公共whois查询的对象类型
    • as - 自治系统编号
    • route - 路由对象
    • route6 - route6对象
  • /api/dns/ 反向DNS查找

Crates.io

https://crates.io/crates/bgpexplorer

文档

https://docs.rs/bgpexplorer

许可证

MIT OR Apache-2.0

依赖项

~16–29MB
~426K SLoC