项目七 使用ODL Yang UI操作流表
一、 Yang UI介绍
ODL YangUI是OpenDaylight控制器中基于DLUX框架的北向接口可视化工具,主要用于动态封装和调用YANG模型,通过REST API生成交互式界面,简化SDN应用的开发与测试流程.
1. 核心特性与功能
动态接口生成:基于YANG模型自动生成UI界面,支持开发者通过API请求获取交换机信息并以JSON格式展示1。
流表下发控制:支持通过可视化界面下发OpenFlow流表(支持OpenFlow 1.0单流表和1.3多级流表协议),实现对主机间连通性的控制1。
协议兼容性:
OpenFlow 1.0:仅支持单流表匹配,数据包未匹配时默认交由控制器处理。
OpenFlow 1.3:支持多级流表流水线处理,匹配成功后可执行指令集(如更新动作集、修改报文字段),并支持组表功能1。
2. 访问方式
访问地址:启动OpenDaylight控制器后,在浏览器输入 http://<控制器IP>:8181/index.html#/yangui/index(默认端口8181)。
二、使用Yang UI查看流表
1. 开启控制器
mininet@mininet-vm:~/ODL$ sudo bin/karaf

2.创建拓扑连接控制器
2.1 创建深度为2,扇出为2的树形拓扑
mininet@mininet-vm:~$ sudo mn --topo tree,2,2 --controller=remote,ip=127.0.0.1,port=6653

2.2 在浏览器中查看拓扑
浏览器访问:http://192.168.153.130:8181/index.html#/topology
(192.168.153.130为控制器IP)
用户名密码默认均为admin

从图中可知,s1(openflow:1)为根节点,1接口和2接口分别连接着s2(openflow:2)与s3(openflow:3)。
2.3 pingall测试

3. 查看流表
3.1 使用命令查看流表
mininet@mininet-vm:~$ sudo ovs-ofctl dump-flows s1

3.2 在YANG UI中查看流表
查看s1的流表:
3.2.1. 在浏览器中找到Nodes标签,查看交换机的Node Id

3.2.2. Yang UI->API-> opendaylight-inventory rev.2013-08-19 -> operational-> nodes-> node {id}-> table {id}
node {id}处填写s1的Node Id,table id处填写0,请求方法GET(可以看到此处只有GET方法,说明只能查询),点击send,即会出现s1的流表内容

三、操作流表
1. 删除流表
mininet@mininet-vm:~$ sudo ovs-ofctl del-flows s1
mininet@mininet-vm:~$ sudo ovs-ofctl dump-flows s1

2. pingall测试
只有s2下连的h1与h2互通,s3下连的h3与h4互通
但h1、h2与h3、h4之间不能互通,因为s1的流表被清空了
3. 为s1添加流表,使所有主机再次通信
Yang UI->API-> opendaylight-inventory rev.2013-08-19 -> config-> nodes-> node {id}-> table {id}
在tablelist两个A后面,其实有个加号(凭空消失术,可能ODL版本不同,我安装的这几版ODL,都没有图标),会有提示语。



凡是有箭头的虚空的地方都需要点击一下,框选的部分需要填写,从1号接口进入的数据,从2号接口发出去。
这一次,我们是下发指令,而不是查询,所以要使用put方法,点击send,如果返回的结果是request sent successfully,证明参数没有问题。

4.查看流表

可以看到已经有从1接口进入从2接口发出的流表,考虑到数据的双向性,再添加一条从2接口进入从1接口发出的流表,步骤略。也可以两条流表一起添加,只需要再增加一个flow1。

5.pingall测试

