【SDN】Ryu网络拓扑可视化app使用简介

在使用SDN的过程中,经常会遇到网络拓扑可视化的需求,而目前主流的SDN控制器也都提供了相应的功能。这篇博文将简单介绍一下当你选用Ryu作为控制器时,如何实现网络拓扑的可视化。


Ryu自带了网络拓扑可视化的app,名称为gui_topology.py,路径为:ryu安装目录/ryu/app/gui_topology/gui_topology.py。既然它是一个app,要使用它便十分方便:

ryu-manager Path/to/gui_topology.py
或者
ryu run Path/to/gui_topology.py
即可

启动成功后,将交换机连接到Ryu,用浏览器访问http://ryu运行的主机ip:8080即可看到当前的网络拓扑。
比如,我用mininet模拟了一个深度为3的树状网络拓扑,并连接到ryu,命令如下:

sudo mn --controller remote --topo tree,depth=3

连接成功后,访问http://localhost:8080(我的ryu和mininet均运行在本机),即可看到如下界面:
【SDN】Ryu网络拓扑可视化app使用简介_第1张图片

可以发现,我们能看到所有的交换机,但它们之间的连接却看不到,想要看到交换机之间的连接,需要在启动ryu时加上
–observe-links参数,表示我们想要看到交换机之间的连接,即

ryu-manager Path/to/gui_topology.py --observe-links
或者
ryu run Path/to/gui_topology.py --observe-links

带上–observe-links启动ryu之后,再用相同的命令启动mininet,这时再访问http://localhost:8080,我们看到的界面如下:

【SDN】Ryu网络拓扑可视化app使用简介_第2张图片

不仅有交换机,他们之间的连接也都显示出来了。同时,在这个界面,我们还可以点击某个交换机来查看当中的流表项,还是比较方便的:

【SDN】Ryu网络拓扑可视化app使用简介_第3张图片


几点说明:

  1. 若你在启动Ryu时使用了–observe-links参数,则Ryu会收到非常大量的包含LLDP协议报文的PacketIn消息,如果不对这一PacketIn消息进行特殊处理的话,很容易导致Ryu奔溃,无法正常工作!!!所以,为了避免这一问题,当你计划使用–observe-links启动Ryu时,在你处理PacketIn消息的函数开头,建议包含如下代码,即可解决问题:

     if eth.ethertype == ether_types.ETH_TYPE_LLDP:
     	# ignore lldp packet
     	return
    
  2. Ryu是支持同时启用多个app的,也就是说,启用gui_topology.py这个app并不影响你启用你自己写的控制逻辑app, 即你可以使用如下命令来启用多个app:

    ryu-manager Path/to/gui_topology.py Path/to/yourApp.py Path/to/yourApp1.py 
    
  3. gui_topology.py这个app只支持查看交换机与交换机之间的连接,但无法查看主机以及他们与交换机之间的连接,目前我也没有发现能查看到这一信息的app,如果发现了我将即使更新在这篇博客中。如果希望查看到包含主机在内的完整网络拓扑,推荐使用ONOS控制器。

你可能感兴趣的:(【SDN】Ryu网络拓扑可视化app使用简介)