实验内容
1、搭建如下拓扑并连接控制器
2、下发相关流表和组表实现链路的故障恢复
实验步骤
1.建立以下拓扑,并连接上ODL控制器。
ODL拓扑界面截图:
2.利用ODL下发组表、流表,实现链路的故障恢复
- 利用sudo ovs-ofctl dump-flows s2(s3) -O OpenFlow13查看s2和s3的流表的截图:
可以发现s2的所在链路是通的。而s3的数据包被drop。
- 对s1下发组表后,再下发流表使组表生效,按照下发组表到s1的方法下发组表至s4,这是为了让数据回来的时候能够自动切换到s3所在链路,而不是继续往s2所在链路上发送,同样需要再发一条流表使它生效。在OVS内确认组表下发成功。
查看s1和s4的组表的截图:
-
对s3上下发两条流表覆盖drop动作,port1转发到port2,port2转发到port1,然后查询s3的流表。
截图:
-
在s4上下发流表使s3所在链路进入的数据包转发至h2所在端口。
截图:
-
进行h1 ping h2,通过sudo ovs-ofctl dump-group-stats s1 -O OPenFlow13查看流表匹配状态,可以看到只有bucket0 生效,即所有数据包都通过s2所在路径传输。
截图:
-
将s2所在链路的端口set down,通过命令将s1的2端口关闭,s4的1端口关闭。目的是为了s1和s4上的组表生效
sudo ovs-ofctl -O OpenFlow13 mod-port s1 2 down
sudo ovs-ofctl -O OpenFlow13 mod-port s4 1 down
进行h1 ping h2操作,通过sudo ovs-ofctl dump-group-stats s4 -O OPenFlow13查看组表状态,可以看到另一个bucket的匹配数据有增长,证明另一条链路启用