自动从设备获取mac/ip地址表(arp和ipv6邻居),并构建mac地址到bgp对等asn映射。
mactopeer的Python项目详细描述
mac到peer
自动从设备获取mac/ip地址表(arp和ipv6邻居),并构建mac地址到bgp对等asn映射。
特别关注构建pmacct'sbgp_peer_src_as_mapfile。
router1#show ip arp Protocol Address Age (min) Hardware Addr Type Interface Internet 192.0.2.1 101 0000.5E00.5300 ARPA TenGigabitEthernet0/0/0 router1#show bgp ipv4 unicast neighbors 192.0.2.1 BGP neighbor is 192.0.2.1, remote AS 65536, internal link ...
需要:00:00:5e:00:53:00->;AS65536
json输出格式:
$ mactopeer -u pierky -p - --hostname router1.example.com Enter password: { "router1.example.com": { "00:00:5E:00:53:00": { "ifaces": [ "TenGigabitEthernet0/0/0" ], "ip_addrs": [ "192.0.2.1" ], "peer_asns": { "65536": { "description": "my-peer", "ip_addrs": [ "192.0.2.1" ] } } } } }
pmacct输出格式:
$ mactopeer -u pierky -p - --devices device.json -f pmacct Enter password: id=65536 ip=203.0.113.1 src_mac=00:00:5E:00:53:00
安装和依赖项
使用pip安装程序:
pip install mactopeer
脚本使用NAPALM库连接到网络设备并从中获取数据:必须安装整个库…
pip install napalm
…或至少连接到实际需要的设备所需的网络驱动程序子集:
pip install napalm-ios napalm-junos
有关更多详细信息,网络驱动程序及其依赖项的完整列表请参见官方的NAPALM documentation。
使用和功能
--help显示该程序提供的所有选项。见its output in USAGE.rst
可以使用输入json文件提供设备列表:有关其架构的详细信息,请运行mactopeer --help-devices。见its output in USAGE.rst
过滤器可以设置为根据其mac地址、ip地址或生成的对等asn跳过条目。用于排除ibgp会话或处理异常。
还支持多线程同时从多个设备获取信息
受支持设备的列表可以在凝固汽油弹文档网站的Supported Devices部分找到所有实现get_arp_table和get_bgp_neighbors方法的人都应该工作:在编写时,它们是EOS、IOS、IOSX-R、JunOS、NXOS和VyOS
与PeeringDB集成
参数--use-peeringdb可用于从peeringdb中获取缺少的对等方的asn,例如在多边对等的情况下(例如ixps上的路由服务器)。在这种情况下,路由器在IP地址和BGP邻居之间没有一个直接的映射,因此IP地址被用来查找PeeringDB记录以找到使用它的网络
注意事项
- 目前缺少VRF支持,主要是因为它还没有包含在凝固汽油弹中。
- 只有使用尚未发布的凝固汽油弹版本(即包含this pull request)时,才能获取IPv6邻居表。若要避免WARNING - Skipping IPv6 neighbors table消息,请使用--arp-only参数。
更改日志
v0.3.0
- 改进:使use_peeringdb成为设备声明的属性。
- 改进:一些修复
此外,该工具现在可以用作库
v0.2.0
- 新:基于IP的过滤器也扩展到前缀的使用。
- 新的:--use-peeringdb参数,用于从PeeringDB获取丢失的对等方的asn(例如,在IXPs上进行多边对等时)
v0.1.0
第一次释放。