首页 文章

opendaylight:如何在不同的交换机上部署不同的应用程序?

提问于
浏览
0

我正在使用Oendaylight(碳)来开发一个SDN应用程序,该应用程序由连接到控制器的多个开关组成 . 我希望能够在连接时在不同的交换机上部署不同的应用程序 . 我怎么指定这个?例如,当openflow:1连接时,我想在其上部署L2交换机,当openflow:2连接时,我想在其上部署不同的应用程序 . 谢谢 .

1 回答

  • 0

    首先,您不要在交换机上部署应用程序 . 应用程序在控制器上运行,您可以添加仅对所选开关进行编程的逻辑 .

    你最本想做的是反应式编程;等待事件并采取相应行动 . 这可以通过将事件侦听器挂钩到应用程序的YANG模型中的节点来轻松实现 . 然后,这些节点中的任何更改都将通知您的应用程序,然后可以执行选择性网络编程 .

    在上面提到的示例中,您将需要使用“InstanceIdentifier”对象来标识您有兴趣收听哪些数据模型的事件 .

    InstanceIdentifier<Node> nodeID = InstanceIdentifier.builder(Nodes.class).child(Node.class, new NodeKey(node.getId()))                        .augmentation(FlowCapableNode.class)
    .build();
    

    现在只需使用DataBroker对象的registerDataChangeListener方法将侦听器注册到此IID .

    db.registerDataChangeListener(LogicalDatastoreType.CONFIGURATION, nodeID, this, AsyncDataBroker.DataChangeScope.SUBTREE);
    

    此时,您将收到有关已注册的交换机的任何更新(添加/修改/删除)的通知 .

    最后要捕获事件使用/覆盖DataChangeListener接口的onDataChanged方法并添加你的花哨逻辑 .

    类似的逻辑可以细粒度地监听交换机上特定流表,流规则等上的活动 .

相关问题