解析Floodlight之TopologyManager模块

Floodlight的拓扑管理模块主要由TopologyManager 类来实现。TopologyManager监听LinkDiscoverManager的更新信息,一旦有链路更新了,就会实例化拓扑计算模块TopologyInstance,并运行函数compute()重新计算路径,并为转发模块Forwarding提供路径转发服务。模块启动后会间隔500ms运行一次线程UpdateTopologyWorker

UpdateTopologyWorker

UpdateTopologyWorker线程中只运行了一个方法updateTopology(),该方法大致的流程:

  • Step1:首先调用applyUpdates()方法获取拓扑更新,如果链路有更新如新增链路就执行addOrUpdateLink(),如果链路down掉了,就执行删除removeLink()
  • Step2:然后调用createNewInstance()方法创建一个TopologyInstance实例,并运行方法compute()计算路径;
  • Step3:lastUpdateTime用于记录上一次更新的时间,informListeners()向所有需要监听拓扑信息的模块传递拓扑更新信息。

个人分析,欢迎指正,若转载请注明出处!