A computer-implemented method for discovering the topology of a network, comprising: receiving a first list of node entries, each of the node entries comprising a unique node identifier representing a known node; performing hash operations on the unique node identifier of the node entries to generate a hash value, the hash value being used to partition the node entries into a plurality of node groups; assigning a node discovery agent to each of said plurality of node groups, each node discovery agent being operable to collect node information from a node in its assigned group; collecting node information from each node of each of said plurality of node groups using the assigned node discovery agent, the node information describing a connection between each node of each node group and one or more connected nodes; determining if the node identifier of each of the one or more connected nodes is listed in the first list; if not so listed, performing hash operations on the unique node identifier of each of the one or more connected nodes to generate a hash value, the hash value being used to determine its assignment to one of the plurality of node groups; appending each of the one or more connected nodes to the determined node group; appending the node information regarding each node of each node group and each of the one or more connected nodes to a second list of node entries; repeating the collecting step, determining step, performing step, and all appending steps for each of the one or more connected nodes and for discovered further connected node(s) until all node discovery agents have completed their operations on all known and discovered connected node(s); and processing the second list of node entries to generate a network topology. receiving a first list of node entries, each of the node entries comprising a unique node identifier representing a known node; performing hash operations on the unique node identifier of the node entries to generate a hash value, the hash value being used to partition the node entries into a plurality of node groups; assigning a node discovery agent to each of said plurality of node groups, each node discovery agent being operable to collect node information from a node in its assigned group; collecting node information from each node of each of said plurality of node groups using the assigned node discovery agent, the node information describing a connection between each node of each node group and one or more connected nodes; determining if the node identifier of each of the one or more connected nodes is listed in the first list; if not so listed, performing hash operations on the unique node identifier of each of the one or more connected nodes to generate a hash value, the hash value being used to determine its assignment to one of the plurality of node groups; appending each of the one or more connected nodes to the determined node group; appending the node information regarding each node of each node group and each of the one or more connected nodes to a second list of node entries; repeating the collecting step, determining step, performing step, and all appending steps for each of the one or more connected nodes and for discovered further connected node(s) until all node discovery agents have completed their operations on all known and discovered connected node(s); and processing the second list of node entries to generate a network topology.