Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Networking 为什么OpenFlow选择优先级较低的规则?_Networking_Network Programming_Sdn_Openflow_Openvswitch - Fatal编程技术网

Networking 为什么OpenFlow选择优先级较低的规则?

Networking 为什么OpenFlow选择优先级较低的规则?,networking,network-programming,sdn,openflow,openvswitch,Networking,Network Programming,Sdn,Openflow,Openvswitch,如果我在交换机上安装了这两条规则,那么根据OpenFlow交换机规范应该执行哪一条?OVS执行第一个,但第二个优先级较高: 第一条规则: cookie=0x20000002000000, duration=14647.575s, table=0, n_packets=1297621, n_bytes=145897910, idle_timeout=65535, priority=1, udp, in_port=3, dl_src=02:6d:f3:c1:b4:7b, dl_dst=02:54:a

如果我在交换机上安装了这两条规则,那么根据OpenFlow交换机规范应该执行哪一条?OVS执行第一个,但第二个优先级较高:

第一条规则:

cookie=0x20000002000000,
duration=14647.575s,
table=0,
n_packets=1297621,
n_bytes=145897910,
idle_timeout=65535,
priority=1,
udp,
in_port=3,
dl_src=02:6d:f3:c1:b4:7b,
dl_dst=02:54:ab:ce:ba:0f,
nw_src=10.10.10.6,
nw_dst=10.10.10.1,
tp_src=46329,
tp_dst=1000
actions=output:1
第二条规则:

cookie=0xa000004039d1ae,
duration=164.680s,
table=0,
n_packets=0,
n_bytes=0,
send_flow_rem
priority=9999,
udp,
in_port=ANY,
nw_src=10.10.10.6,
nw_dst=10.10.10.1,
tp_dst=1000
actions=set_field:10.10.10.6->ip_src,
output:1

尽管目前没有记录,但作为_port中的
值的
任何
应仅用于流量修改(删除)和流量统计请求
。要匹配不考虑端口的数据包,只需从OpenFlow规则中删除
in_port=ANY


这种行为是错误的,但源代码中有几个地方提到了它。首先,
OFPP\u ANY
是。提到它应该只用于匹配OpenFlow规则。最后,声明p_NONE的
表示
不与任何端口关联


我认为这应该得到适当的记录,或者当使用不当时,TCL的ovs应该拒绝该值。我将在ovs-dev邮件列表中提出这个问题,并根据答案更新此帖子。

如果在第二条规则中省略
in\u port=ANY
,您是否有相同的行为?我从来没有见过被用来匹配数据包,只是用来匹配规则(例如,在
ovs of ctl del flows
中)。你可能是对的!实际上,我有两个完全相同的其他规则,但in_port不是这些规则的“任何”,它们正确匹配。为什么“any”会导致这样的问题?@pchaigno,你是对的,我从in_端口删除了any,并用精确的端口号替换了它,现在它可以工作了!很高兴我能帮忙!我已经为其他遇到同样问题的用户提供了一个完整的答案。