Ryu:将数据路径转换为切换 IP 地址

Ryu: convert datapath to switch IP address

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

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

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

Byungjoon 你在用 mininet 吗?

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

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

我也在尝试使用 Ryu 控制器与开关通信。我使用上面的示例作为我的基本代码并在其之上添加。它尚未完成(因此您可能会看到一些错误)但它是一个很好的起点。这是link:https://github.com/Ehsan70/RyuApps/blob/master/l2.py

@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。

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

@set_ev_cls(ofp_event.EventOFPSwitchFeatures, CONFIG_DISPATCHER)
def _switch_features_handler(self, ev):
    print(ev.msg.datapath.address)