使用OpenDaylight界面下发流表(下)

简介: 使用OpenDaylight界面下发流表(下)

使用OpenDaylight界面下发流表(上)+https://developer.aliyun.com/article/1622540

步骤8 补全node id、table id和flow id的值。

其中node id参见之前查询到的Node Id。table id和flow id可以自定义。由于OpenFlow1.0协议只支持单流表,所以这里的table id设置为0,如下图所示。

步骤9 单击flow list后面的“+”,展开流表相关的参数。填写第一个框id,路径中的flow id也会随之同步,如下图所示。

步骤10 展开“match ——> ethernet-match ——> ethernet -type”,填写“type”为“0x0800”,如下图所示。

说明:由于使用IP地址进行匹配,所以需要设置以太网协议类型。

步骤11 填写匹配参数,在“layer-3-match”后面的下拉框中选择“ipv4-match”,使用IP匹配。

步骤12 展开“layer-3-match”,填写源IP地址和目的IP地址,如下图所示。

其中源地址填写主机1的IP地址,目的地址填写主机2的IP地址。

步骤13 展开“instructions”,并单击“instruction list”后面的“+”,在“instruction”后面下拉框中选择“apply-actions-case”,如下图所示。

步骤14 展开“apply-actions”,单击“action list”后面的“+”,在action后面的下拉框中选择“drop-action-case”,action order和instruction order都设置为0,如下图所示。

步骤15 设置“priority”为27,“idle-timeout”为0,“hard-timeout”为0,“cookie”为100000000,“table_id”为0,如下图所示。

说明:priority设置的比已有流表项的高,而idle-timeout和hardtimeout都设置为0则代表该流表项永远不会过期,除非被删除。

步骤16 向右滚动Actions栏,在路径后面有动作类型GET、PUT、POST、DELETE,下发流表则选择PUT动作,然后单击“Send”,如下图所示。

步骤17 如果下发成功会出现下面的提示,如果下发不成功则会弹出相应的错误信息。

步骤18 切换到交换机,执行如下命令查看流表,确保刚刚下发的流表已经下发到交换机。如下图所示。

$ ovs-ofctl dump-flows br-sw

步骤19 登录主机1,执行如下命令向主机2、主机3发送数据包,测试主机间的连通性。

`# scapy`

\>>> result,unanswered=sr(IP(dst=”10.0.0.10”,ttl=(3,10))/ICMP())

\>>> result,unanswered=sr(IP(dst=”10.0.0.14”,ttl=(3,10))/ICMP())

由上图可知,主机1与主机2之间不通,主机1与主机3通,新下发的流表项生效。

说明:如果主机之间通则能够收到answer,如果主机之间不通那么就无法收到answer,当主机之间不通时scapy就会一直发送数据包,如果需要停止可以使用Ctrl+c。

步骤20 切换到交换机,执行以下命令删除刚刚下发的流表项,并查看流表确保成功删除。

\# ovs-ofctl del-flows br-sw dl_type=0x0800,nw_src=10.0.0.9,nw_dst=10.0.0.10
\# ovs-ofctl dump-flows br-sw

步骤21 切换到主机1执行如下命令,测试主机1和主机2是否连通。

\>>> result,unanswered=sr(IP(dst=”10.0.0.10”,ttl=(3,10))/ICMP())

由上图可知,主机1与主机2之间就通了。

三、 *基于OpenFlow1.3协议下发流表*

****

步骤1 登录交换机,设置OpenFlow协议版本为1.3。执行以下命令:

# ovs-vsctl set bridge br-sw protocols=OpenFlow13

步骤2 与OpenFlow1.0下发流表的过程解基本一致。展开opendaylight-inventory rev.2013-08- 19,选择“config ——> nodes ——> node{id} ——> table{id} ——> flow{id}”。

步骤3 补全Actions栏中的路径,其中node id参见之前查询到的Node Id。table id和flow id可以自定义。由于OpenFlow1.3协议支持多级流表,所以这里的table id设置为2。

步骤4 单击flow list后面的“+”,流表相关的参数就会展开。设置id为1,路径中的flow id也会随之同步,如下图所示。

步骤5 展开“match ——> ethernet-match ——> ethernet -type”,填写“type”为0x0800,如下图所示。

步骤6 在“layer-3-match”后面的下拉框中选择“ipv4-match”。

步骤7 展开“layer-3-match”,填写源IP地址和目的IP地址。以主机1的IP为源IP,以主机3的IP为目的IP

步骤8 展开“instructions”,并单击“instruction list”后面的“+”,在“instruction”后面下拉框中选择“apply-actions-case”,

步骤9 展开“apply-actions”,单击“action list”后面的“+”,在“action”后面的下拉框中选择“drop-action-case”,“action order”和“instruction order”都设置为0,

步骤10 设置“priority”为25,“idle-timeout”为0,“hard-timeout”为0,“cookie”为10000000,“table_id”为2

步骤11 向右滚动Actions栏,选择“PUT”动作,然后单击“Send”下发流表。PUT成功就会弹出“Request sent successfully”,否则弹出错误信息。

步骤12 切换到主机1,执行如下命令,向主机3发送数据包,测试主机1和主机3的连通性。

>>> result,unanswered=sr(IP(dst=”10.0.0.14”,ttl=(3,10))/ICMP())

由上图可知,主机1与主机3之间是连通的,新下发的流表没有发挥作用。原因是数据包在table 0中能够匹配到相应流表就不会被转发到table2,想要table2的流表项发挥作用就需要向table0增加一条流表,将源IP为10.0.0.3,目的IP为10.0.0.2的数据包转发到table2中处理。

步骤13 选择“config ——> nodes ——> node{id} ——> table{id} ——> flow{i}”。node id参见之前查询到的Node Id、table id设为0、flow id设为1。

步骤14 展开“match ——> ethernet-match ——> ethernet -type”,填写“type”为0x0800。

步骤15 匹配参数保持不变,以主机1的IP为源IP,以主机3的IP为目的IP。

步骤16 展开“instructions”,并单击“instruction list”后面的“+”,在“instruction”后面下拉框中选择“go-to-table-case”,如下图所示。

步骤17 展开“go-to-table”,table_id填写为2,即将符合匹配条件的数据包根据table2中的流表项处理。instruction order依旧设为0,如下图所示。

步骤18 设“priority”置为23,“idle-timeout”为0,“hard-timeout”为0,“cookie”为1000000000,“table_id”为0,如下图所示。

步骤19 向右滚动Actions栏,选择“PUT”动作,然后单击“Send”下发流表。

步骤20 切换到交换机,执行以下命令查看新下发的流表项。

\# ovs-ofctl -O OpenFlow13 dump-flows br-sw

步骤21 切换到主机1,执行如下命令发送数据包,测试主机之间的连通性。

\>>> result,unanswered=sr(IP(dst=”10.0.0.10”,ttl=(3,10))/ICMP())
\>>> result,unanswered=sr(IP(dst=”10.0.0.14”,ttl=(3,10))/ICMP())

由上图可知,主机1与主机3之间不通,而主机1与主机2之间通,流表发挥作用。


目录
相关文章
|
3月前
|
测试技术 SDN 数据安全/隐私保护
使用OpenDaylight界面下发流表(上)
使用OpenDaylight界面下发流表(上)
135 0
|
5月前
|
编解码 网络协议 Android开发
Android平台GB28181设备接入模块实现后台service按需回传摄像头数据到国标平台侧
我们在做Android平台GB28181设备对接模块的时候,遇到这样的技术需求,开发者希望能以后台服务的形式运行程序,国标平台侧没有视频回传请求的时候,仅保持信令链接,有发起视频回传请求或语音广播时,打开摄像头,并实时回传音视频数据或接收处理国标平台侧发过来的语音广播数据。
|
5月前
|
监控 开发工具 Android开发
结合GB/T28181规范探讨Android平台设备接入模块心跳实现
本文介绍了GB28181标准中的状态信息报送机制,即心跳机制,用于监控设备与服务器间的连接状态。根据国标GB/T28181-2016,设备在异常时需立即发送状态信息,在正常状态下则按固定间隔(默认60秒)定期发送。若连续三次(默认值)未收到心跳,则视为离线。文章展示了在Android平台的GB28181设备接入模块(SmartGBD)中,如何调整心跳间隔为20秒及超时次数为3次,并给出了心跳消息的示例和异常处理代码片段。对于希望深入了解或遇到问题的开发者,作者提供了进一步交流的机会。
|
8月前
|
负载均衡 算法 网络虚拟化
ensp中链路聚合配置命令
链路聚合(Link Aggregation)是结合多条物理链路形成逻辑链路的技术,提升网络带宽、增强冗余性和优化负载均衡。在高带宽、高可靠性及负载均衡需求的场景如服务器集群、数据中心等中广泛应用。配置包括手动和自动模式,手动模式下,如LSW1和LSW2,通过`int eth-trunk`、`trunkport`等命令配置接口和成员链路。自动模式下,如SW3和LSW4,使用LACP协议动态聚合,通过`mode lacp-static`和`load-balance dst-mac`命令设置。配置后,使用`dis eth-trunk`检查聚合状态。
959 1
ensp中链路聚合配置命令
|
8月前
|
虚拟化 Windows
eNSP新建拓扑40报错
eNSP新建拓扑40报错
|
8月前
|
传感器
Omron欧姆龙 SRM1分布式I/O控制器 主终端和远程终端
Omron欧姆龙 SRM1分布式I/O控制器 主终端和远程终端
|
XML 网络协议 开发工具
Android平台GB28181设备接入侧如何实现SIP校时
Android平台GB28181设备接入侧如何实现SIP校时
132 0
ensp 链路聚合实现通信
ensp 链路聚合实现通信
232 0
ensp 链路聚合实现通信
|
网络协议 物联网
DFP 数据转发协议应用实例 2.LoRA 中继-使用群组码实现
DFP 是什么? 稳控科技编写的一套数据转发规则, 取自“自由转发协议 FFP(Free Forward Protocol)” ,或者 DFP(DoubleF Protocol), DF 也可以理解为 Datas Forward(数据转发)的缩写。DF 协议是与硬件接口无关的数据链路层协议,规定了数据流如何在不同设备之间、不同接口之间的传输方向。 DF 协议一般用于延长数字接口的传输距离(数据中继),它与硬件接口类型无关,可以基于 UART、 LoRA、TCP 等异步数据传输介质。
DFP 数据转发协议应用实例 2.LoRA 中继-使用群组码实现

热门文章

最新文章