1

目前,我正在 Ryu(开源 OpenFlow 控制器)之上编写一个应用程序。

要创建 OF-Config 连接(或 OVSDB 连接),我想我必须获取连接到 Ryu 控制器的每个交换机的 IP 地址。但是,我找不到将数据路径对象或数据路径 ID 转换为交换机 IP 地址的 API。

所以,如果有这样的API,我想知道它。如果没有,我期待收到一些关于在没有 IP 地址的情况下建立连接的方法的评论。

4

3 回答 3

1

Byungjoon 你在用 mininet 吗?

如果你是,所有的交换机都使用 localhost ip 地址进行实例化(这是 mininet 的默认行为)。控制器使用 tcp 端口区分交换机。

据我所知,您只需要知道交换机的 dpid 即可发送 OF 消息。这是示例 l2-learning 开关正在做的事情:https ://github.com/osrg/ryu/blob/master/ryu/app/simple_switch_13.py

我也尝试使用 Ryu 控制器与交换机通信。我使用上面的示例作为我的基本代码并在其之上添加。它还没有完成(所以你可能会看到一些错误),但这是一个很好的起点。这是链接:https ://github.com/Ehsan70/RyuApps/blob/master/l2.py

于 2015-06-29T20:42:58.350 回答
1
@set_ev_cls(event.EventSwitchEnter)
def switch_features_handler(self, ev):
    address = ev.switch.dp.address
    dpid = ev.switch.dp.id

“address”是 (ip_address, port) 的元组,“dpid”是数据路径 ID。

于 2015-12-21T10:28:26.090 回答
1

对于最新版本的 ryu,您应该使用以下代码。

@set_ev_cls(ofp_event.EventOFPSwitchFeatures, CONFIG_DISPATCHER)
def _switch_features_handler(self, ev):
    print(ev.msg.datapath.address)
于 2017-05-23T09:29:41.567 回答