SDN第六次作业

实验内容

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的匹配数据有增长,证明另一条链路启用

原文地址:https://www.cnblogs.com/yoz425/p/8215681.html