SDN GUI配置?

出于配置GUI界面后能够更方便的查看网络拓扑以及流表项变化的原因,便尝试开始配置GUI的作死之路,直到结束也没有连接上拓扑。

一.GUI介绍

网上查资料了解到,目前的GUI APP大致有三种,都是基于Web的应用:
1.暂时称其为SDN HUB CONTROLLER,介绍链接为:http://sdnhub.org/releases/sdn-starter-kit-ryu/
2.暂时称其为Ryu Topology Viewer,介绍链接为:https://ryu.readthedocs.io/en/latest/gui.html
3.暂时称其为Ryu Topology Discovery,没找到相关介绍,尴尬。

二.SDN HUB CONTROLLER配置及调试

配置步骤按照配置步骤进行,之后运行自己的mininet建立拓扑,连接到相应控制器(bash脚本启动的过程中会自动创建控制器),此处的mininet拓扑为python脚本创建,mininet提供一个GUI界面方便建立拓扑以及配置,并可以保存以后再次使用,有关内容参考这篇教程。拓扑代码如下:

#!/usr/bin/python

from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSController
from mininet.node import CPULimitedHost, Host, Node
from mininet.node import OVSKernelSwitch, UserSwitch
from mininet.node import IVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import TCLink, Intf
from subprocess import call

def myNetwork():

    net = Mininet( topo=None,
                   build=False,
                   ipBase='10.0.0.0/8')

    info( '*** Adding controller\n' )
    c0=net.addController(name='c0',
                      controller=RemoteController,
                      ip='127.0.0.1',
                      protocol='tcp',
                      port=6633)

    info( '*** Add switches\n')
    s2 = net.addSwitch('s2', cls=OVSKernelSwitch, dpid='0000000000000002')
    s1 = net.addSwitch('s1', cls=OVSKernelSwitch, dpid='0000000000000001')

    info( '*** Add hosts\n')
    h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)
    h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
    h3 = net.addHost('h3', cls=Host, ip='10.0.0.3', defaultRoute=None)

    info( '*** Add links\n')
    net.addLink(h1, s1)
    net.addLink(h2, s1)
    net.addLink(h3, s2)
    net.addLink(s1, s2)

    info( '*** Starting network\n')
    net.build()
    info( '*** Starting controllers\n')
    for controller in net.controllers:
        controller.start()

    info( '*** Starting switches\n')
    net.get('s2').start([c0])
    net.get('s1').start([c0])

    info( '*** Post configure switches and hosts\n')

    CLI(net)
    net.stop()

if __name__ == '__main__':
    setLogLevel( 'info' )
    myNetwork()

连接到控制器后,浏览器访问相对应地址 http://ip-address-of-controller:8080/。

主界面左侧为具体的功能栏,分为拓扑结构,端口以及流表状态,分路器管理,负载均衡。
遇到问题以及调试方法:
1.因某些JS而导致的内容没有加载完全,尝试更换浏览器或在主机访问(官方截图介绍中可以展示交换机,主机),更换3次浏览器后仅能正确显示交换机。
2.在浏览器访问完毕拓扑后进行更改拓扑,再度访问GUI查看更新后的拓扑,可能会出现两次重叠等显示bug,可尝试清除sdnhub_apps目录下所生成的全部pyc文件。清除pyc的bash脚本:

#!/bin/bash
find . -name "*.pyc" -type f -print -exec rm -rf {} \;

三.Ryu Topology Viewer及Ryu Topology Discovery配置及调试

Ryu Topology Viewer配置步骤按照配置步骤进行,此项配置较为简单,且没有出什么问题。
在这里插入图片描述
配置完成后可正常显示交换机之间的连线,但是网络并没有和控制器连接,此时主机之间无法访问。后来发现在此gui_topology.py脚本中并没有启动控制器,但是占用了控制器的端口号,需要尝试其他控制器脚本,然后使用Ryu Topology Discovery连接到控制器。
同时启动gui和控制器两个app:

root@lxx-ubuntu16:~/ryu/ryu/app/gui_topology# ryu run --observe-links gui_topology.py ../simple_switch_13.py

按照步骤配置配置Ryu Topology Discovery并启动controller.py,完成之后浏览器访问http://ip-address-of-controller:8000,之后便显示unconnected,终端中查看error发现为引用错误。
在这里插入图片描述

2019-09-23 18:14:39,636 [DEBUG] WebSocket request accepted, switching protocols
2019-09-23 18:14:39,718 [ERROR] ImportError (views.websocket)
2019-09-23 18:14:39,722 [DEBUG] Closed WebSocket
2019-09-23 18:14:39,722 [DEBUG] Failed to write closing frame -> closing socket
2019-09-23 18:14:39,722 [DEBUG] Closed WebSocket

网上查阅发现有介绍类似Unconnected处理方法,欣喜之,遂阅,而后心态大蹦。
为了得到更多信息,建立一个只引用views.websocket的python文件。

root@lxx-ubuntu16:~# python
Python 2.7.12 (default, Aug 22 2019, 16:36:40) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import views.websocket
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/views.py", line 43
    f"'{objtype.__name__}' object is not "
                                         ^
SyntaxError: invalid syntax

详细错误显示为源文件view.py语法缩进问题,???我服啦。看到有些文章中说Ryu3.19及版本以上不支持GUI。???对文章进行留言后考虑到还有其他任务需要处理,暂且(永久)放弃GUI配置的实验。

四.总结

此次GUI配置的整个过程中,进一步锻炼了体力以及心态,深知科研尝试乃一项费力费时之行为艺术。虽然收效甚微,但对linux的操作愈发娴熟。题外话:期待一波晚上的S9抽签仪式,祝愿LPL S9取得好成绩!!!

五.参考文献

许多配置过程中参考到的文章正文中已经给出连接,在此贴出其他参考链接:
https://www.sdnlab.com/11010.html
https://www.cnblogs.com/zxqstrong/p/4780307.html
https://blog.csdn.net/qq_41854763/article/details/84639001

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值