#SDN--RYU 下发根据 ip 匹配的流表项以及删除流表命令时的一些坑和注意事项

本文介绍了在RYU控制器中下发和删除基于IP匹配的OpenFlow流表时遇到的问题及解决方法。在下发流表时,错误地匹配IPv4字段导致报错,通过查阅OVS官方文档,了解到正确匹配应包含`eth_type`字段。在删除流表时,使用`OFPFC_DELETE`命令,需注意填入完整匹配条件。
摘要由CSDN通过智能技术生成

#SDN--RYU 下发根据 ip 匹配的流表项以及删除流表命令时的一些坑和注意事项

引言

        RYU 官方文档 很重要,耐心一点绝大多数情况下的问题都可以在官方文档处找到解决方案。
        但官方文档也不是包含了所有说明,因此再次记录一下 RYU 在下发根据 ip 匹配的流表项以及删除流表命令时的一些坑和注意事项。


下发流表

        下发根据以太网卡地址进行匹配转发的程序官方有提供,笔者在尝试将其修改为根据 ip 地址进行匹配转发,但当 RYU 下发时报错:unknown error xid …

        原因:这是由于下发的流表不符合 OVS 规范导致,以下为笔者原来的代码。

# 根据 mac_to_port 构建 ip_to_port 表进行自学习,获得 ip_src、ip_dst
match = parser.OFPMatch(in_port=in_port, ipv4_src=ip_src, ipv4_dst=ip_dst)
actions = [parser.OFPActionOutput(out_port)]
self.add_flow(datapath, 1, match, actions)

        经过查阅 OVS 官方文档后得知,正确的 ipv4 匹配域应该有如下字段:

# 根据 mac_to_port 构建 ip_to_port 表进行自学习,获得 ip_src、ip_dst
match = parser.OFPMatch(in_port=in_port, ipv4_src=(ip_src, '255.0.0.0'), ipv4_dst=ip_dst,
                                                   eth_type=0x0800)
actions = [parser.OFPActionOutput(out_port)]
self.add_flow(datapath, 1, match, actions)

        OVS 官方文档只需要在 mininet 中输入 man 7 ovs-fields 即可。如果需要根据 tcp 或者 udp 等运输层协议进行匹配转发时,也需要先查一下需要那些匹配字段。


删除流表

        RYU 可通过 OFPFlowMod 中的 command 字段下发删除流表命令。建议使用 command=OFPFC_DELETE,其删除要求偏高,如果使用 OFPFC_DELETE_STRICT 其删除要求最严格,基本上添加的是什么样,就要填什么样。这里只介绍 OFPFC_DELETE 方式。
        首先 OFPFlowMod 中除 instructions 字段外全部需要填写。

mod = parser.OFPFlowMod(datapath, 0, 0, 0, ofproto.OFPFC_DELETE, 0, 0, 2,
                        ofproto.OFP_NO_BUFFER, out_port, ofproto.OFPG_ANY,
                        ofproto.OFPFF_SEND_FLOW_REM, match=match)

        其次 match 域尽可能详细。

match = parser.OFPMatch(in_port=in_port, ipv4_src=(ip_src, '255.0.0.0'),
                        eth_type=0x0800, ipv4_dst=ip_dst)
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值