目前,我正在开源OpenFlow控制器Ryu之上编写应用程序 .
要创建OF-Config连接(或OVSDB连接),我想我必须获取连接到Ryu控制器的每个交换机的IP地址 . 但是,我找不到将Datapath对象或datapath id转换为交换机IP地址的API .
所以,如果有这样的API,我想了解它 . 如果没有,我期待收到一些关于如何在没有IP地址的情况下 Build 连接的评论 .
@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 .
Byungjoon你用mininet吗?
如果是,所有交换机都使用localhost ip地址进行实例化(这是mininet的默认行为) . 控制器使用tcp端口区分交换机 .
据我所知,您只需知道交换机的dpid即可发送OF消息 . 这就是示例l2学习开关正在做的事情:https://github.com/osrg/ryu/blob/master/ryu/app/simple_switch_13.py
我也尝试使用Ryu控制器与交换机通信 . 我使用上面的示例作为我的基本代码并添加它 . 它还没有完成(所以你可能会看到一些错误),但这是一个很好的起点 . 这是链接:https://github.com/Ehsan70/RyuApps/blob/master/l2.py
对于ryu的最新版本,您应该使用以下代码 .
@set_ev_cls(ofp_event.EventOFPSwitchFeatures, CONFIG_DISPATCHER) def _switch_features_handler(self, ev): print(ev.msg.datapath.address)
3 回答
“address”是(ip_address,port)的元组,“dpid”是数据路径id .
Byungjoon你用mininet吗?
如果是,所有交换机都使用localhost ip地址进行实例化(这是mininet的默认行为) . 控制器使用tcp端口区分交换机 .
据我所知,您只需知道交换机的dpid即可发送OF消息 . 这就是示例l2学习开关正在做的事情:https://github.com/osrg/ryu/blob/master/ryu/app/simple_switch_13.py
我也尝试使用Ryu控制器与交换机通信 . 我使用上面的示例作为我的基本代码并添加它 . 它还没有完成(所以你可能会看到一些错误),但这是一个很好的起点 . 这是链接:https://github.com/Ehsan70/RyuApps/blob/master/l2.py
对于ryu的最新版本,您应该使用以下代码 .