如何使设备在OpenDaylight拓扑中显示?SDN部署故障咨询
解决OpenDaylight Dlux拓扑未显示设备的问题
我来帮你捋捋这个问题——既然所有设备都能ping通,说明数据平面是正常的,只是OpenDaylight的控制平面没把那两台设备的拓扑信息同步到Dlux界面里。下面是我碰到过的类似问题的排查思路,你一步步来:
1. 先检查未显示设备所在主机的OVS控制器配置
首先得确认那台没显示设备的Ubuntu主机上,OVS网桥已经正确连接到OpenDaylight控制器:
- 登录该主机,执行
ovs-vsctl show,查看输出里的Controller条目,应该能看到类似Controller "tcp://<ODL主机IP>:6633"的配置(6633是OpenFlow 1.0的默认端口,6653是OpenFlow 1.3的端口,看你用的版本) - 如果没有这个配置,手动添加控制器:
ovs-vsctl set-controller <你的网桥名称> tcp://<ODL主机IP>:6633 - 同时检查连接状态,输出里的
is_connected: true才是正常的,如果是false,先排查两台物理主机之间的网络:比如ODL主机的防火墙有没有放开6633/6653端口,或者两台主机的IP是否能互相ping通
2. 确认OpenFlow版本兼容性
OVS和ODL的OpenFlow版本不匹配也会导致拓扑发现失败:
- 查看OVS网桥的OpenFlow版本:
ovs-vsctl get bridge <你的网桥名称> protocols - 查看ODL支持的版本:登录ODL的Karaf控制台(执行
./bin/client),输入feature:list | grep odl-openflowplugin,确保安装了支持对应版本的插件(比如odl-openflowplugin-all支持多版本) - 如果版本不匹配,统一两者的版本,比如设置OVS用OpenFlow 1.3:
ovs-vsctl set bridge <你的网桥名称> protocols=OpenFlow13
3. 检查ODL的拓扑发现组件是否正常运行
有时候是ODL的拓扑相关插件没装或者出问题了:
- 登录Karaf控制台,执行
feature:list | grep odl-topology,确保odl-topology-api、odl-topology-impl、odl-topology-ui这几个特性都是Started状态 - 查看ODL的日志文件(路径一般是
data/log/karaf.log),搜索topology或者OpenFlow关键词,看看有没有设备连接失败的报错信息,比如认证问题或者协议错误
4. 确认KVM虚拟设备的网卡关联到OVS网桥
虚拟设备的网卡如果没连到OVS网桥,ODL也识别不到:
- 查看虚拟机的网卡配置:
virsh dumpxml <虚拟机名称>,找到<interface>部分,确认是type='bridge',且source bridge='<你的OVS网桥名称>' - 如果不是,修改配置:执行
virsh edit <虚拟机名称>,把网卡部分改成类似下面的内容:<interface type='bridge'> <source bridge='br0'/> <model type='virtio'/> </interface> - 重启虚拟机生效:
virsh reboot <虚拟机名称>
5. 最后检查Dlux界面的显示设置
有时候只是界面没刷新或者有过滤:
- 点击Dlux拓扑页面的刷新按钮,或者清空浏览器缓存后重新加载页面
- 检查页面上的过滤选项,确保没有把主机或者交换机类型的设备过滤掉
按照这些步骤排查下来,基本能解决拓扑不显示的问题。如果还是不行,可以把排查过程中的命令输出或者日志片段贴出来,我再帮你分析。
内容的提问来源于stack exchange,提问作者sweetpea




