snmp网络发现识别连接到路由器的设备的mac地址

时间:2014-01-06 05:17:39

标签: snmp

我正在开发一个网络发现程序,该程序使用snmp来发现网络中的设备。我的程序将router-ip作为输入,扫描iprotetable(iprouttenext hop),以确定是否有任何其他路由器连接到它。对于非路由器设备(如交换机),算法会扫描路由器的arptable(ipnettomediatable),但除非我从交换机ping到路由器,否则无法找到连接的交换机。有什么方法可以确定直接连接到路由器的设备..?

2 个答案:

答案 0 :(得分:2)

将设备连接到路由器或交换机并非易事。交换机通常维护一个MAC转发数据库,​​它存储哪个MAC地址在哪个交换机端口上。使用网桥MIB可以轻松读取此表。不幸的是,有几个问题要处理:

  1. 当交换机的设备已关闭或根本没有通信时,这些条目会再次消失。通常,MAC转发表中的条目会在5分钟左右后老化。
  2. 在交换机端口上看到MAC地址的事实并不意味着具有mac地址的设备直接连接到该端口。中间可能有任意数量的其他交换机,路由器或集线器。
  3. 思科或惠普等制造商使用自己的协议来确定网络拓扑。有几种协议(通常也可通过SNMP MIB获得该区域):

    1. CDP(思科发现协议):这是思科开发的专有协议,用于公开网络拓扑信息。一些供应商许可了这项技术并在其产品中实施了该协议。
    2. LLDP(链路层发现协议):类似于CDP的标准,但不支付思科许可费: - )
    3. 还有更多。我知道Extreme Networks有自己的协议,我很确定其他供应商也有它们。
    4. 这些协议的问题在于您拥有混合环境。谈论CDP的思科交换机不了解Extremen Network的协议,反之亦然。

      如果您的目标是找到要发现的IP地址,那么您可以使用路由器的ARP缓存。扫描交换机的ARP缓存没有任何意义,因为它们在第2层上运行。

答案 1 :(得分:0)

我正在使用broadcast消息作为我的java snmp代理