经过对揭阳数据的研究,我终于找到问题的根源。
1. 对路由的发现,以前的代码有点问题。又找出以前的论文,明确一下算法。
2. 揭阳设备路由表的nextHop全是VLAN。所以,这不是H3C或Cisco的问题。如果cisco这样设置,如果没有CDP,目前的程序一样得不出正确的结果。
3. 比较吃惊或者奇怪的是,H3C的设备有支持Bridge.mib,有的支持Q-brideg.mib,而有的二者都有。
4. 另一个,H3C的设备比较奇怪的是,它的bridge-mac不会出现在任何交换机的fdb表。因此,通用的二层链路发现算法无法运用。
5. 因为4,所以我只能从路由表进行发现,对于nextHop是VLAN,必须转成物理接口,然后用排除法(这个算法与通用二层链路算法有点类似,只是不用依赖bridge-mac)判断这条链路是否是真实的物理链路。
6. 根据5,修改了发现程序,对现在数据进行“发现”,得到了正确结果!