我们正在开发一款基于 Linux 的以太网交换机,该交换机有 6 个端口。我们已经完成了 CDP 协议。我已将 Cisco 设备连接到端口 2。当我查询 Cisco 设备时,我得到的答复不是 lan1(端口 1 - lan0 .. 端口 6 = lan5),而是始终将接口名称设为 eth0。所有端口都是如此。需要进行哪些更改才能获得正确的接口名称?我将非常感谢这些信息。快照数据包在文件“linux._2.6.XX/net/802/psnap.c”中的例程 snap_rcv() 中接收;
问候,苏拉杰。
答案1
以下是一个例子show cdp neigh
:
Device ID Local Intrfce Holdtme Capability Platform Port ID
akira2 Eth 0/0 142 [redacted Eth 0/1
在这个例子中,自称 akira2 的路由器连接到本地路由器;它在本地路由器上连接的端口是en0/0
,它在远程路由器上连接的端口是en0/1
。在这种情况下,CDP 数据包提供了端口 ID(从标记为类型 0x3 的字段中),并且在接收数据包时推断出本地接口。
它默认以这种方式工作,因此如果您获得明显错误的数据,您应该更新固件和/或致电思科支持。
思科设备上的端口名称通常不以 lanN 命名;通常,如果它们是 100baseT 端口,则它们的前缀为 fe,而千兆以太网端口的前缀为 ge。如果您发现设备始终报告 en0(或 Ethernet 0 或 Eth 0),则很可能该设备被实现为路由器,其前面有一个集线器(非托管)将端口分开。