-
Notifications
You must be signed in to change notification settings - Fork 7
TopologyModule
| ModuleTypeID (hex) | 0x0006 |
|---|---|
| ModuleTypeID (decimal) | 6 |
| Distribution support | single instance |
| Dependencies |
SwitchRegistryModule LinkDiscoveryModule |
The TopologyModule combines the data provided by the SwitchRegistryModule and the LinkDiscoveryModule. This yields a datastructure representing the Topology of the whole network, including Switches and links between switches. Devices are NOT part of the Topology. Devices can be acquired from the DeviceModule. This module will publish changes in the Topology, and other modules can also request the current topology any time. The Topology is guaranteed to be consistent. This guarantee comprises:
-
All Switches currently known to the TopologyModule are included in the Topology. The SwitchRegistryModule dicates what Switches are currently in the network. Since the TopologyModule cannot account for SwitchEvents from the SwitchRegistryModule which it did not yet receive, the known Switches of the TopologyModule are only eventually consistent with the ones known by the SwitchRegistryModule.
-
All SwitchToSwitchLinks currently known to the TopologyModule are included in the Topology, given that both their AttachmentPoints map to Switches (and a valid SwitchPort in them) included in this Topology. The LinkDiscoveryModule dicates what SwitchToSwitchLinks are currently in the network. Since the TopologyModule cannot account for SwitchLinkEvents from the LinkDiscoveryModule which it did not yet receive, the known SwitchToSwitchLinks of the TopologyModule are only eventually consistent with the ones known by the LinkDiscoveryModule.
This results in a Topology which contains at most as much information as provided by the SwitchRegistryModule and the LinkDiscoveryModule. The exclusion of information guarantees that for each SwitchToSwitchLink, both endpoints (Switch) exist in Topology.
Queries the latest consistent topology from the TopologyModule.
| Request-MessageType | [[REQUEST.TOPOLOGY_MODULE.GET_TOPOLOGY |
| Request-Payload | [[Request-Container |
| Reply-MessageType | [[REPLY.TOPOLOGY_MODULE.GET_TOPOLOGY |
| Reply-Payload | [[Reply-Container |
This event is published when an updated consistent topology is available, which is different from the last published topology.
| From-MessageType | [[FROM.TOPOLOGY_MODULE.TOPOLOGY_CHANGED_EVENT |
| From-Payload | [[From-Container |
For a detailed list of all supported topics, see the TopologyModule.topics file.
Enabling:
On enabling this module subscribes itself to topics of the SwitchRegistryModule for SwitchEvents and to topics of the LinkDiscoveryModule for SwitchLinkEvents.
The information contained is used for building a Topology.
Additionally the TopologyModule initially requests all Switches from the SwitchRegistryModule and all Links between Switche from the LinkDiscoveryModule.
Building a stable Topology:
The TopologyModule ensures that it will only publish a stable (hence valid) Topology. Stable in this context means that the delivered Topology only contains Links between Switches that are already known by the TopologyModule. Therefore it is not possible that the returned Topology will contain any Links that lead to no Switch.
Request handling:
- Incoming requests are handled internally to the specific request type. According to these types the correct replies are generated and returned.
- If the given request type was unknown a reply with ReplyType NO_REPLY is returned.
MessageType: FROM.LINK_DISCOVERY_MODULE.SWITCH_LINK_EVENT.*
Comment: Update topology based on link events.
MessageType: FROM.SWITCH_REGISTRY_MODULE.SWITCH_EVENT.*
Comment: Update topology based on switch events.