实验目的:添加流表,使得两个host之间无法ping通,即host1 ping host6失败。
实现方法:由控制器向switch3 发一条流表,流表项中匹配域的入端口是3,源MAC是host1,目的MAC是host6。仅仅这一条流表项无法实现实验目的,因为分组还可以经由switch2到switch3发送给host6,所以还要再添加一条流表项,这条流表项的匹配域与上一条唯一的改变就是入端口改为4。接着对所有匹配的数据包执行的action是drop。这里实现实验目的方法有很多种,该方法仅仅是练习流表的添加操作。
实验拓扑:自定义拓扑,由三个switch、六个host以及RemoteController构成。
拓扑图如下:
开始实验:
1)在一个虚拟机上运行ODL,在另一个装有mininet的虚拟机上运行拓扑脚本。保证各主机之间可以ping通,然后我们查看一下交换机(s3)中的流表。
查看交换机s3中的流表用命令:ovs-ofctl dump-flows s3
2)ODL下发流表,可以通过Yang UI也可以通过Postman实现。其中Postman安装以及操作网上有很多教程。那么我分别通过这两种方式展示流表的添加过程。
- Yang UI 添加
具体节点为:Yang UI—>API—>opendaylight-inventory—>config—>nodes—>node{id}—>table{id}—>flow{id}
这里注意要分别添加两条flow,id:1和id:2,填入正确的信息,选择PUT提交方式。
- Postman添加
with Json
首先输入Headers:
Content-type:application/json
Accept:application/json
Authorization:[方法如下]
第三项的Authorization中Username和password 默认都是admin,点击2处之后,第3处会自动生成一串密码字符。
在URL地址栏中输入如下命令:
http://[controllerIP]:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:3/flow-node-inventory