ovs中"write metadata"和"set metadata"有什么区别?

what is the differences between "write metadata" and "set metadata" in ovs?

我的意思是,write metadata是通过openflow中的指令实现的,另一方面,set field in action也可以设置metadata,它们有什么区别?

据我所知,WRITE_METADATA and SET_FIELD for metadata 在 Open vSwitch 中执行相同的操作。

我猜这两者都由 Open vSwitch 公开以尽可能遵循 OpenFlow 规范。 OpenFlow 在操作和指令之间有明确的区别(参见 OpenFlow v1.5.1 的第 5.5 和 5.6 节):指令附加到规则并在每个 table 的末尾应用,而操作附加到数据包(使用Write-Actions 指令)并应用在流水线的末尾(或者在执行 Apply-Actions 指令之前)。在 Open vSwitch 中,区别不那么明显:操作可以附加到数据包和规则。

因此,虽然 WRITE_METADATA 与 OpenFlow 规范中的 SET_FIELD 不同,因为第一个是指令,第二个是动作,您可以使用与 WRITE_METADATA 相同的操作SET_FIELD动作。