首先简单解释本文的几个名词
第一个SDN,就是软件定义的网络,通过控制层与数据转发层分析,实现可编程的网络
ryu,这个是日本人写的一个sdn控制器,这个翻译是龙的意思,大概和网络流量flow管理有某种关系
ovs是一个软交换机,支持openflow协议
mininet是一个网络模拟器,屌丝玩SDN没有那么多机器,那么mininet是个很好的模拟器,功能很强大
ok
下面开始环境搭建
1.ovs安装
如果ubuntu直接apt-get install安装即可
centos如如果想安装最新版,源码安装是个好办法
# 编译openvswitch源码
yum install -y openssl-devel rpm-build
wget http://openvswitch.org/releases/openvswitch-2.5.0.tar.gz
mkdir -p ~/rpmbuild/SOURCES
cp openvswitch-2.5.0.tar.gz ~/rpmbuild/SOURCES/
tar xzf openvswitch-2.5.0.tar.gz
rpmbuild -bb --without check openvswitch-2.5.0/rhel/openvswitch.spec
# 安装生成的软件包
yum localinstall -y rpmbuild/RPMS/x86_64/openvswitch-2.5.0-1.x86_64.rpm
/etc/init.d/openvswitch start
2.mininet安装
sudo apt-get install mininet
3.安装ryu,
你可以通过pip install直接安装ryu (pip install ryu)
也可以通过源码安装,python setup.py install
当一切都安装好了之后调试环境
启动mn
sudo mn --controller remote,ip=192.168.56.102,port=6633
启动mn创建默认拓扑,并把sdn控制器指向自己ryu,这里我们测试OpenFlow13
设置openflow协议,默认是openflow11,我们用现在最流行的13
sudo ovs-vsctl set Bridge s1 protocols=OpenFlow13
最后启动我们的app,如下图所示:
sudo ryu-manager --verbose simple_switch_13.py
此时,交换机上面还没有任何流表
sudo ovs-ofctl -O Openflow13 dump-flows s1
但当我们在网络中发包以后sdn控制器就开始下发流表了
如下图所示:
此时流表如下所示:
这个流表的内容很简单,就不赘述,再看一下app里面记录的日志
从日志可以看出,交换机第一次不知如何操作的时候就发送packet-in询问ryu控制器。至此sdn的开发环境搭建完成。