在大概了解了ovs的一些理论知识之后,我开始了实践之旅。采用的是kvm+ovs+ryu,因为ryu采用的是python,我之前算是勉强了解过一点python相关的知识,所以就直接开始了我的碰壁之行,在这里算是记录一下实验过程以及一些有帮助的博客吧,以后说不定还有用到的时候:
- 使用vnc viewer远程连接服务器
- 实验过程
- 创建Bridge:s1、s2、s3:
sudo ovs-vsctl add-br s1 sudo ovs-vsctl add-br s2 sudo ovs-vsctl add-br s3
- 在各个bridge中创建port
sudo ovs-vsctl add-port s1 s1p2 sudo ovs-vsctl add-port s2 s2p1 sudo ovs-vsctl add-port s2 s2p2 sudo ovs-vsctl add-port s3 s2p1
- 更改s1p2 s2p1 s2p2 s3p1的接口类型为patch
sudo ovs-vsctl set interface s1p2 type=patch sudo ovs-vsctl set interface s2p1 type=patch sudo ovs-vsctl set interface s2p2 type=patch sudo ovs-vsctl set interface s3p1 type=patch
- 创建ovs中的链路
sudo ovs-vsctl set interface s1p2 options:peer=s2p1 sudo ovs-vsctl set interface s2p1 options:peer=s1p2 sudo ovs-vsctl set interface s2p2 options:peer=s3p1 sudo ovs-vsctl set interface s3p1 options:peer=s2p2
- 将服务器的网卡绑定到ovs的bridge接口上,在s1和s2上创建和VM网卡名称一致的接口
sudo ovs-vsctl add-port s1 eth1 sudo ovs-vsctl add-port s3 eth2
- 配置s1 s2 s3支持OpenFlow1.3协议
sudo ovs-vsctl set Bridge s1 protocols=OpenFlow13 sudo ovs-vsctl set Bridge s2 protocols=OpenFlow13 sudo ovs-vsctl set Bridge s3 protocols=OpenFlow13
- 配置s1 s2 s3和Ryu控制器相连接
sudo ovs-vsctl set-controller s1 tcp:172.16.28.5:6633 sudo ovs-vsctl set-controller s2 tcp:172.16.28.5:6633 sudo ovs-vsctl set-controller s3 tcp:172.16.28.5:6633
- 启动Ryu路由功能
sudo ryu-manager ryu.app.rest_router
- 查看各路由器的相关信息,以switch_id区分各Bridge
curl http://localhost:8080/router/all/all
以上步骤好像都没有出现问题,但因为没办法接触各节点,所以采用mininet来模拟各节点之间的通信情况