三层网络拓扑可以使用snmp获取路由器的ipRouteTable,从而得到路由器与临近设备的连接信息。数据链路层拓扑是通过交换机的地址转发表获得交换机与交换机之间的连接状态。
一、定义
1、S[i]表示第i台交换机,S[i][j]表示第i台交换机的第j个端口
2、A[i][j]表示第i台交换机的地址转发表中通过j端口转发的mac地址的集合
3、T[i][j]表示第i台交换机的得至转发表中,除了j端口以外,其它端口转发的mac地址的集合,也就是说A[i][j]∪T[i][j]就是交换机S[i]的地址转发表里所有的mac地址
4、上行端口就是交换机连接父节点的端口,除上行接口以外的端口叫下行端口
二、定理
1、如果交换机的地址转发表是完整的(每台交换机的地址转发表中包含子网内其它所有与能其通信的交换机的mac),A[i][j]和A[k][l]互补(全集为所有交换机的mac),那么S[i][j]和S[k][l]直接相连。
2、如果交换机下行端口地址转发表完整的(交换机包的地址转发表包含其下行端口一下的所有交换机的mac),A[i][j]=T[k][l]∪S[k](S[k]为交换机k的mac),那么S[i][j]和S[k][l]直接相连
三、实现
通过定理一,可以获取交换机之间的直连信息,但是需要每台交换机的地址转发表是完整的,可以让每台交换机ping其它交换机,以获取完整的地址转发表,但是这个方法太复杂。定理二只需要下行端口的地址转发表