关于SDN流表匹配顺序问题

关于SDN流表匹配顺序问题

参考博文:https://blog.csdn.net/weixin_40610952/article/details/80509378

简单地说,流表的匹配遵循两条原则:

(1)优先级不同情况下,优先级高的先匹配,优先级低的后匹配,优先级的范围0~66535,数字越大则优先级越高;

(2)优先级相同情况下,当流表项具有相同的优先级,相同的actions,不同的匹配域粒度的情况下,按照流表项添加的先后顺序匹配,最先添加的流表项,数据流优先匹配,即按照添加的先后顺序进行匹配。

 

一个猜想:

在OpenFlow1.3中,使用Mininet构建虚拟拓扑网络,交换机中会预设一条Table-Miss流表,优先级最低,即为0,用作未匹配任何流表项的数据包的处理,即当交换机从自身端口收到一个数据包,但是未匹配任何流表项,则把这个数据包通过Packet-in向上转发给控制器。

如下图,在交换机S1、S2、S3中,每个交换机都有一条priority=0的流表

给S3设置一条流表,sh ovs-ofctl add-flow s3 priority=0,in_port=1,action=2

现在,S3中有两条优先级为0的流表,我们可以断言,当S3收到一个数据包的时候,首先会匹配下面用红线圈出来的流表

原因解释一下,因为在优先级为0的情况下,action=CONTROLLER:66535这条流表是最早添加的,按照优先级相同,先添加先匹配的原则,因此,优先级为0的流表不管有多少条,永远是action=CONTROLLER:66535这条流表最先被匹配。

备注:注意一点,有时最初始的这条流表会被覆盖,如设置流表sh ovs-ofctl add-flow s3 priority=0,action=2,添加后,会发现action=CONTROLLER:66535这条流表被覆盖而消失,这应该是流表冲突的问题,暂时还没仔细研究。如下图,action=CONTROLLER:66535这条流表被覆盖了。

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值