ObjectSNMP是一个面向对象的SNMP开发组件,与关系数据库流行的O-R Mapping技术类似,实现了Object到SNMP MIB的操作映射(简称O-M Mapping),系统提供了Java/SNMP网关、RMI/SNMP网关 、Web Service/SNMP网关服务、代理SNMP网关、 网络拓扑发现、物理拓扑发现、网络自动搜索发现 、设备连接关系发现、设备类型发现、网络漫游搜索、以及定义好的可管理各种设备的MIB数据等高级功能。
     

      ObjectSNMP网络自动发现功能如下:

      全网设备发现:可以按网络号、IP范围、多个网络范围内,自动搜索发现设备,获取设备的基本信息、设备类型(交换、路由、路由交换、终端设备、厂商特有类型等)、MAC地址、ARP表、交换机端口、路由器接口、路由表、交换机转发表、主机IP地址等信息。

网络漫游发现:给定少数几个已知的网络号、IP范围,按用户指定的漫游深度和漫游广度,进行全网漫游发现。

网络拓扑自动发现:可以发现交换机与交换机、交换机与PC机、交换机与终端设备、交换机与路由器、路由交换机与路由交换机之间 的连接关系。连接关系可以定位到具体的设备端口、设备接口上。支持在任意指定的设备之间发现它们的所有连接,在全网范围内发现连接关系。

ObjectSNMP的物理拓扑自动发现采用了全新的技术:即支持单一Cisco、华为网络,也支持各种厂商设备混合网络。支持模糊连接定位,在数据不全或设备缺失的情况下,尽可能发现连接关系。可在任意的网络环境中工作,不需要用户对网络做任何假设(如路由器假设、根交换机假设、上/下行端口假设、边缘设备假设等)。

资源发现:搜索发现设备的网络接口、板卡、硬件设施、磁盘、内存、CPU、软件服务等。

网络自动发现性能参考:对于100人到500人左右的中小型企业网络,1-3分钟内发现所有的设备、设备信息、设备连接关系、设备资源。对于50个C网、1万多个IP、500台交换机、2000多台主机的大型平面交换的高校网络,20-30分钟内发现所有的设备、设备信息、设备连接关系、设备资源。

 

 

自动搜索发现的典型API如下:
1.根据网络号和一系列SNMP参数搜索设备
public List<DeviceInfo> searchDevice(String subNetIP,List<SNMPTarget> snmpTargetList, boolean isUseICMP)

2.通过多个网络号和一系列SNMP参数(端口号、读共同体),搜索设备
public List<DeviceInfo> searchDeviceByNetList(List<String> subNetIPList,List snmpTargetList, boolean isUseICMP)

3.通过IP范围,和一系列SNMP参数(端口号、读共同体),搜索设备
public List<DeviceInfo> searchDevice(String startIP, String endIP,List snmpTargetList, boolean isUseICMP)

4.从一个或多个已知的网络,按漫游深度和漫游广度,漫游搜索到其他设备
public List<DeviceInfo> searchDeviceByIPRoaming(List<String> subNetIPList,List<SNMPTarget> snmpTargetList, boolean isUseICMP,int depth,int maxDevice)

5.从路由器上搜索设备
public List<DeviceInfo> searchDeviceByRouterNet(String subNetIP,List snmpTargetList, boolean isUseICMP)

6.获取设备的资源信息
public List<ResourceInfo> searchDeviceResource(DeviceInfo deviceInfo)

7.发现任意网络设备之间的连接关系
public List<LinkInfo> searchLinkInfo(List<DeviceInfo> allDeviceList)

一个典型搜索网络设备信息、设备类型、设备连接关系的代码如下:List<DeviceInfo> deviceList = discove

rAPI.searchDevice("192.168.1.0-92.168.10.0","public,ciscopublic");
 
 
for (DeviceInfo device : deviceList)
{
    System.out.println("



 

设备基础信息:" + device);

System.out.println("设备类型:" + device.getDeviceType());
    System.out.println("主MAC地址:" + device.getDeviceMAC());
    System.out.println("网管协议:" + device.getDeviceProtocol()); }
for (String mac : device.getDeviceMacList())
{
    System.out.println("设备的MAC地址:" + mac);
}
for (MibIfEntry mibIf : device.getIfTableList())
{
    System.out.println("设备的网络接口:"+mibIf);
}
for (MibMacIP mibMacIP : device.getMibMacIPList())
{
    System.out.println("设备的MAC-IP地址学习表,ARP:"+mibMacIP);
}
//打印更多设备信息......
}
List<LinkInfo> linkList = discoverAPI.searchLinkInfo(deviceList);//获取连接关系
for (LinkInfo link : linkList)
{
    System.out.println("发现的连接关系:"+link);
}