You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 16.04部署OpenDaylight与Mininet后交换机未显示问题

排查OpenDaylight与Mininet连接后GUI不显示交换机的问题

我来帮你一步步拆解这个问题——毕竟在物理机上搭SDN环境,ODL和Mininet的连接经常会遇到各种细节坑。下面是我整理的排查步骤,从基础到进阶:

1. 先确认ODL的OpenFlow插件状态

首先得确保你装的OpenFlow插件真的在运行:

  • 打开ODL的Karaf控制台,执行命令:
    ./bin/client
    
    进入后输入:
    feature:list | grep openflow
    
    检查odl-openflowplugin-all这一项的状态是不是Started。如果是Installed但未启动,手动执行:
    feature:install odl-openflowplugin-all
    
  • 再检查ODL是否在默认的OpenFlow端口(6633)监听:
    sudo netstat -tulpn | grep 6633
    
    输出里要能看到java进程绑定了这个端口,而且监听的是0.0.0.0或者你的物理机IP,别只局限于127.0.0.1——物理机环境下通常需要绑定所有网卡。

2. 验证Mininet的连接参数是否正确

你用的127.0.0.1在物理机上可能有局限,试试这些调整:

  • 换成物理机的实际IP(比如192.168.1.100)启动Mininet:
    sudo mn --controller=remote,ip=你的物理机实际IP,port=6633
    
    因为如果ODL绑定的是物理网卡而非lo接口,用127.0.0.1可能连不上控制器。
  • 启动Mininet后,在控制台输入:
    dpctl show
    
    看输出里有没有controller connection相关的信息,如果显示connection refused,说明网络连通性有问题;如果显示connected,那说明交换机已经连上控制器,问题可能出在GUI层面。

3. 用RESTCONF验证控制器是否收到交换机信息

有时候GUI会有缓存,但RESTCONF能直接反映控制器的真实状态:

  • 执行curl命令(默认用户名密码都是admin):
    curl -u admin:admin http://localhost:8181/restconf/config/opendaylight-inventory:nodes
    
    如果返回的JSON里包含node节点信息,说明控制器已经识别到交换机,只是GUI没更新——这时候清空浏览器缓存,或者在Karaf里重启dlux特性:
    feature:restart odl-dlux-all
    
    如果返回的是空的,那说明交换机根本没连上控制器,回到前面的网络排查步骤。

4. 物理机环境的特殊检查

Ubuntu 16.04的物理机可能有防火墙或者网络命名空间的限制:

  • 检查ufw防火墙是否开启,若开启则放行6633端口:
    sudo ufw allow 6633/tcp
    
  • 验证Mininet的网络命名空间能否访问控制器:进入交换机的命名空间测试连通性:
    sudo ip netns exec s0 ping 你的物理机IP
    
    如果ping不通,说明网络命名空间和主机之间的路由有问题,可能需要调整Mininet的网络配置。

5. 日志排查定位深层问题

如果前面的步骤都没解决,看日志找线索:

  • 查看ODL的Karaf日志:
    cat ./data/log/karaf.log | grep -i "openflow\|connection"
    
    找有没有handshake failedconnection reset这类报错,这些能直接告诉你连接失败的原因(比如版本不兼容、认证问题)。
  • 启动Mininet时加--verbose参数看详细日志:
    sudo mn --controller=remote,ip=你的物理机IP --verbose
    
    观察交换机发送的OpenFlow消息是否被控制器接收,有没有报错信息。

内容的提问来源于stack exchange,提问作者Chen Xu

火山引擎 最新活动