1. 使用RYU做mininet的控制器
1.1 RYU介绍与安装
RYU是一款基于python的控制器,你可用Ryu实现各种想要实现的网络功能,它可以下发或接收流表进行各种路由运算。
- 建议使用高版本的Ubuntu系统安装ryu,否则会有各种错误,安装过程比较简单,如下:
apt install gcc libffi-dev libssl-dev libxml2-dev libxslt1-dev zlib1g-dev
pip3 install ryu
- 安装完成之后查看版本号:
ryu --version
如果正确输出版本信息,则说明安装成功。
.
1.2 使用RYU做mininet的控制器
- 先启动mininet,设置为远程控制器,配置IP和端口:
sudo mn --controller=remote,ip=127.0.0.1,port=6653
注:从OpenFlow 1.3.3 (EXT-133)版本以后,IANA 分配给 OpenFlow 的端口号是 6653,但有些应用仍然使用6633,所以设置监听端口为6653和6633都行
- 进入ryu/ryu/app目录,然后启动相应模块,
ryu-manager --verbose simple_switch_13.py ofctl_rest.py rest_topology.py
simple_switch_13.py模块是一个简单的交换机,是openflow1.3的交换机。后面的两个文件是为了进行restapi的调用加载的,方便直接用浏览器查看。
在浏览器中调用ryu的api
- 得到某台交换机状态信息
http://127.0.0.1:8080/stats/desc/1
{
"1":(DPID)
{
"dp_desc": "None",(datapath的描述信息)
"sw_desc": "2.0.2",(软件机的描述信息)
"hw_desc": "Open vSwitch",(交换机描述信息)
"serial_num": "None",(序列号)
"mfr_desc": "Nicira, Inc."(生产商信息)
}
}
- 查看交换机当前的流表:
http://127.0.0.1:8080/stats/flow/1
"1": [
{
"actions": [ "OUTPUT:3" ],(动作,转发到3 号端口)
"idle_timeout": 0,(空闲后存活时间)
"cookie": 0,
"packet_count": 2,(包计数)
"hard_timeout":