安装ryu
环境: ubuntu-20.04.3-desktop-amd64
sudo apt-get update
#sudo pip install --upgrade pip #更新pip
sudo git clone https://ghproxy.com/https://github.com/osrg/ryu.git #下载RYU源码代理加速
cd ryu #进入ryu
sudo pip install -r tools/pip-requires #安装ryu所需要的依赖软件
sudo python3 setup.py install #使用python3运行setup.py文件,安装ryu
ryu --version #查看ryu版本
ryu-manager #运行ryu
安装 mininet
git clone https://ghproxy.com/https://github.com/mininet/mininet.git #获取Mininet的源码 代理加速 原网址 https://github.com/mininet/mininet.git
cd mininet
cd util
sudo ./install.sh -n3v
sudo mn --test pingall ##测试是否成功
- -n 安装Mininet依赖和核心文件
- -3 安装OpenFlow 1.3版本
- -v 安装Open vswitch
- -a 默认的安装全部特性 i.e., sudo ./install.sh -a 通常失败
mininet 常用命令
- help 打印帮助信息
- nodes 查看全部节点信息
- xterm 打开xterm窗口 i.e., xterm h1/s1
- net 查看网络拓扑信息
- ping h1 ping h2 ,测试连通性
- dump 输出节点信息
- iperf 指定节点间TCP测试 i.e., iperf h1 h2
- iperdudp 指定节点间UDP测试,可指定发送速率
- py 运行python语句
- sh 执行shell脚本
- host cmd 在主机中执行命令,例:h1 ifconfig exit/quit 退出Mininet
创建topology
网络创建启动参数
--topo #内部topo i.e., tree linear single
--custom ##自定义(custom)拓扑 sudo mn --custom file.py --toop mytopo
#Python编写文件file.py ,执行此脚本即可创建定义的拓扑,–custom与–topo联用
--switch #定义mininet要使用的交换机(默认使用ovsk,即OpenVSwitch交换机)
--controller #定义要使用的控制器,如果没有指定使用mininet中默认的控制器 sudo mn --controller=remote,--ip=[controller IP],--port =[port]
--mac #自动设置设备的mac地址
#让MAC地址易读,即 设置交换机的MAC、主机的MAC及IP地址从小到大排序,且设置简单唯一,不仅让机器容易##获取,也容易让肉眼很容易识别其ID。
1)树形拓扑,后面的参数“2”表示2层交换机,“3”表示每个节点连接的下一层的节点数目。
sudo mn --topo=tree,2,3 --controller=remote
(2)线性拓扑 每一个交换价链接一个主机,下面 有5个相连的交换机,没挂一个主机
sudo mn --topo=linear,5 --controller=remote #//(h1,s1)(h2,s2)(h3,s3)(h4,s4)
单一交换机拓扑
sudo mn --topo=single,5 --controller=remote
外部运行参数
-c 清除配置信息 # mn -c
-h 帮助
py help(s1)
py help(h1)
py dir(s1) //查看有哪些函数是可以使用的
py h1.setIP('10.0.0.5',24) // 给h1设置IP地址
ryu 常用命令
- 内部控制器程序在 /ryu/ryu/app 进入目录执行相应的控制器程序
ryu-manager simple_switch_13.py ofctl_rest.py
- simple_switch_13.py —> openflow1.3 交换机实现
- ofctl_rest.py—> rest api
启动参数
ryu-manager 启动ryu, 如果不加任何参数,则默认启动ofphandler模块。
ryu-manager –h 查看帮助信息
--verbose 打印详细debug信息
--version 显示程序的版本号并退出
--observe-links 自动下发LLDP,用于拓扑发现
--ofp-tcp-listen-port 修改ryu的openflow tcp监听端口
说明:若在启动RYU时使用了–observe-links参数,则RYU会收到非常大量的包含LLDP协议报文的PacketIn消息如果不对这一PacketIn消息进行特殊处理的话,很容易导致Ryu奔溃,无法正常工作!!!所以,为了避免这一问题,当你计划使用–observe-links启动Ryu时,在你处理PacketIn消息的函数开头,建议包含如下代码,即可解决问题:
if eth.ethertype == ether_types.ETH_TYPE_LLDP:
# ignore lldp packet
return
更多ryu使用介绍参考 https://blog.csdn.net/weixin_42094589/article/details/104160571