Mininet交换机与ONOS 2.7.0控制器连接后断开问题求助
问题分析与解决方法
从日志中no dpid in channelHandler registered for disconnected switch的警告可以看出,核心问题是交换机的DPID未被ONOS正确识别注册,大概率是OpenFlow版本不匹配、ONOS核心应用未激活或端口/防火墙配置问题导致的。以下是针对性解决步骤:
1. 强制匹配OpenFlow版本
ONOS 2.7.0默认优先支持OpenFlow 1.3,而Mininet默认可能使用OpenFlow 1.0启动交换机,版本不兼容会导致连接后立即断开。启动Mininet时明确指定OpenFlow 1.3:
sudo mn --controller remote,ip=127.0.0.1,port=6653 --switch ovsk,protocols=OpenFlow13
2. 确认ONOS激活完整的OpenFlow核心应用
仅激活forwarding和openflow不够,还需要确保以下核心OpenFlow应用处于激活状态:
- 进入ONOS CLI(
onos localhost),执行:apps -a | grep openflow - 若
org.onosproject.openflow-base、org.onosproject.openflow-switch未激活,执行激活命令:app activate org.onosproject.openflow-base app activate org.onosproject.openflow-switch - 同时确认
org.onosproject.fwd(转发应用)已激活:app activate org.onosproject.fwd
3. 检查ONOS的OpenFlow端口占用
确保ONOS确实在监听6653端口(默认OpenFlow端口):
netstat -tulpn | grep 6653
若端口未被ONOS占用,重启ONOS服务:
# 若通过systemd安装 sudo systemctl restart onos # 若手动部署,进入ONOS目录执行 ./bin/onos-service restart
4. 放行OpenFlow端口或关闭防火墙
Ubuntu默认的ufw防火墙可能拦截6653端口,临时关闭防火墙测试:
sudo ufw disable
若测试有效,可永久放行端口:
sudo ufw allow 6653/tcp sudo ufw reload
5. 手动指定交换机DPID
部分情况下Mininet自动生成的DPID格式不被ONOS识别,启动Mininet时手动指定DPID:
sudo mn --controller remote,ip=127.0.0.1 --switch ovsk,dpid=0000000000000001 --protocols=OpenFlow13
启动后在ONOS CLI执行devices命令,确认是否识别到DPID为0000000000000001的交换机。
内容的提问来源于stack exchange,提问作者harsh bijwe
相关产品推荐
相关产品推荐

