1. A network controller comprising: a control unit; and one or more ports coupled to the control unit and configured to couple the network controller to one or more network switching devices of a network; the network controller being configured to: receive initiation messages from the network switching devices; receive configuration and status messages from the network switching devices; transmit discovery requests to the network switching devices; receive discovery responses from the network switching devices; determine a network topology of the network based on information associated with the initiation messages, the configuration and status messages, and the discovery responses; apply heuristic rules to the network topology; and select a base topology based on results of the applied heuristic rules.