我正在开发一个网络发现程序,该程序使用snmp来发现网络中的设备。我的程序将router-ip作为输入,扫描iprotetable(iprouttenext hop),以确定是否有任何其他路由器连接到它。对于非路由器设备(如交换机),算法会扫描路由器的arptable(ipnettomediatable),但除非我从交换机ping到路由器,否则无法找到连接的交换机。有什么方法可以确定直接连接到路由器的设备..?
答案 0 :(得分:2)
将设备连接到路由器或交换机并非易事。交换机通常维护一个MAC转发数据库,它存储哪个MAC地址在哪个交换机端口上。使用网桥MIB可以轻松读取此表。不幸的是,有几个问题要处理:
思科或惠普等制造商使用自己的协议来确定网络拓扑。有几种协议(通常也可通过SNMP MIB获得该区域):
这些协议的问题在于您拥有混合环境。谈论CDP的思科交换机不了解Extremen Network的协议,反之亦然。
如果您的目标是找到要发现的IP地址,那么您可以使用路由器的ARP缓存。扫描交换机的ARP缓存没有任何意义,因为它们在第2层上运行。
答案 1 :(得分:0)
我正在使用broadcast消息作为我的java snmp代理