SDN:使用Postman控制ODL查看和下发流表

所谓流表,其实可被视作是SDN对网络设备的数据转发功能的一种抽象。在传统网络设备中,交换机和路由器的数据转发需要依赖设备中保存的二层MAC地址转发表或者三层的IP地址路由表,SDN交换机中使用的流表也是如此,不过在它的表项中整合了网络中各个层次的网络配置信息,从而在进行数据转发时可以使用更丰富的规则。其流表中的每个表项结果如下图所示:

OpenFlow1.3流表的每个表项由6部分组成:

1、匹配域:匹配域即OpenFlow1.0流表中的包头域,用于对交换机接收到的数据包的包头内容进行匹配。在OpenFlow1.0中,流表的包头域中包括了12个元组(Tuple),相关内容如下图所示:

入端口

目的MAC地址

以太网类型

VLAN ID

VLAN 优先级

源IP地址

目的IP地址

IP协议

IP TOS位

TCP/UDP源端口

TCP/UDP目的端口

Ingress Port

Ehter Des

Ether Type

VLAN ID

VLAN Priority

IP Src

IP Dst

IP Proto

IP TOS bits

TCP/UDP Src Port

TCP/UDP Dst Port

如上图所示,匹配域中用于和交换机接收到的数据包进行匹配的元组涵盖了ISO网络模型中的第二至第四层的网络配置信息。每一个元组中的数值可以是一个确定的值或者是“ANY”以支持对任意值的匹配。另外,如果交换机能够在IP地址相关元组上支持子网掩码的话,将有助于实现更精确的匹配。

2、优先级:流表项的匹配次序。

3、计数器:计数器可以针对交换机中每条流表、每个数据流、每个设备端口、每个转发队列进行维护,用于统计数据流表的相关信息。

4、Instructions指令集:每个流表项都包含一组指令,当一个数据包匹配表项时指令会被执行。这些指令可以更改数据包,动作集或者流表处理。

5、超时:最大时间计数或流有效时间

6、cookie:由控制器选择的不透明数据值。控制器用来过滤流统计数据、流改变和流删除。但处理数据包时不能使用。

一、准备工作

1. 在使用sudo ./karaf 命令启动ODL控制器以后

2. 登录ODL,http://192.168.116.130:8080/index.html, 

3 . 使用ifconfig查看控制器ip地址,此处我的控制器ip地址为192.168.116.130注意:只有mininet连接ODL用到127.0.0.1,其他都是用另一个地址(192.168.116.130)

4. Mininet连接ODL,使用下面的命令

sudo mn --topo=single,2 --controller=remote,ip=192.168.116.130,port=6633 --switch ovsk,protocols=OpenFlow13

查看拓扑结构

二、查看流表

目标:匹配源MAC为62:b9:e9:db:c5:60的流量,目的MAC为76:ae:0d:50:d7:ad,出端口为2,优先级为300

1.启动Postman以后,在地址栏输入http://192.168.116.130:8080/restconf/operational/network-topology:network-topology

为GET请求,填好下面的信息以后,点击Send

会得到以下交换机信息

三、下发流表 

1. 完成下图圈中的内容,其中url栏填http://192.168.116.130:8080/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/107其中Body的xml格式的代码如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<flow xmlns="urn:opendaylight:flow:inventory">
<priority>300</priority>
<flow-name>Foo1</flow-name>
<idle-timeout>0</idle-timeout>
<hard-timeout>0</hard-timeout>
<match>
<ethernet-match>
<ethernet-source>
<address>62:b9:e9:db:c5:60</address>
</ethernet-source>
<ethernet-destination>
<address>56:8f:c6:9e:5f:81</address>
</ethernet-destination>
</ethernet-match>
</match>
<id>107</id>
<table_id>0</table_id>
<instructions>
<instruction>
<order>0</order>
<apply-actions>
<action>
<order>0</order>
<output-action>
<output-node-connector>2</output-node-connector>
</output-action>
</action>
</apply-actions>
</instruction>
</instructions>
</flow>

注意源mac地址要与拓扑图里面的mac地址对应2. 点击Send以后,使用下面命令,在mininet上查看流表是否增加了一条优先级为300的流表

sh ovs-ofctl dump-flows s1 -O openflow13

成功!

 参考:OpenDayLight+Mininet+Postman下发流表实验-优快云博客

Postman下发流表至Opendaylight_使用postman下发流表-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值