You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:35:13