![思科交换机 - 通过 SNMP 查找父级/上行链路](https://linux22.com/image/538727/%E6%80%9D%E7%A7%91%E4%BA%A4%E6%8D%A2%E6%9C%BA%20-%20%E9%80%9A%E8%BF%87%20SNMP%20%E6%9F%A5%E6%89%BE%E7%88%B6%E7%BA%A7%2F%E4%B8%8A%E8%A1%8C%E9%93%BE%E8%B7%AF.png)
有人知道如何通过 SNMP 映射基于 Cisco 的网络吗?我可以通过 SNMP 访问所有交换机(显然),并且拥有所有主机名的列表。由此,我需要能够构建网络图(或者至少找到哪个交换机是另一个交换机的父交换机)。SNMP 几乎是唯一的选择,因为 CLI 登录是神秘的。
我可以通过 SNMP 获取 CDP 邻居,但我不太清楚如何确定它们来自哪个接口,或者哪个接口是上行链路。
我最初的样本是 360 台设备,之后我必须处理剩余的 1,900 台。它是 IOS 和 CatOS 的混合体,从运行 8.3(2)GLX 的 2948 到运行 12.2 的 3750。
任何建议将不胜感激。
答案1
Cisco CDP mib此处的 OID包括应映射到本地物理接口的 cdpInterfaceIfIndex。(ifmib)
建立“上行链路”可能比较棘手,但有时您可以从相对流量比率推断出哪些设备是其他设备的“上游”,有时可以从生成树推断出哪些设备是其他设备的“上游”。
还可以将此视为标准化命名约定的机会,使设备在层次结构中的位置更加明显。(使用思科的说法是“访问”、“分发”、“核心”——您的层次结构可能略有不同)
答案2
你应该看看网络迪斯科。它确实满足了您的要求。
答案3
使用 CDP 无法轻松区分“上行链路”和“到交换机上行链路的下行链路”,这纯粹是“本地知识”。如果您拥有完整的 CDP 信息,那么应该有关于另一端的数据(设备型号、设备主机名和一个 IP,通常是设备的管理 IP)。
通过将 LAN 路由器端口的 MAC 地址与 MAC 转发数据库关联起来,您应该能够确定哪个端口(或哪些端口)面向本地默认网关。我相信 MAC fdb 是通过 SNMP 公开的。
过去,我曾使用 python 程序 telnet 到设备,抓取“sh cdp neighbour”的输出来大致完成这件事,发现这是相当可行的。