OpenFlow 规则元数据
OpenFlow Rule Metadata
我想了解如何在开放流规则中计算元数据。
cookie=0x6900000,持续时间=228925.519s,table=17,n_packets=384,n_bytes=35436,优先级=10,元数据=0xf30000000000/0xffffff0000000000 动作=write_metadata:0xc000f30000000000/0xfffffffffffffffe,goto_table:211
示例:我有一个与此非常相似的流程。
元数据究竟是如何计算的。
以及如何解释元数据值和掩码
有人说
new_metadata = old_metadata & ~掩码 |值和掩码
老实说我不明白,谁能解释一下
write_metadata
操作中 value
和 metadata
字段的用途在 the Open vSwitch documentation:
中进行了解释
write_metadata:value[/mask]
Updates the metadata field for the flow. If mask is omit‐
ted, the metadata field is set exactly to value; if mask
is specified, then a 1-bit in mask indicates that the
corresponding bit in the metadata field will be replaced
with the corresponding bit from value. Both value and
mask are 64-bit values that are decimal by default; use a
0x prefix to specify them in hexadecimal.
前面的解释确实等同于:
new_metadata = (old_metadata & ~mask) | (value & mask)
换句话说,我们首先擦除在掩码 (old_metadata & ~mask
) 中设置为 1 的旧元数据值的位,然后将掩码中也设置为 1 的值的位设置为 1 (| (value & mask)
).
我想了解如何在开放流规则中计算元数据。
cookie=0x6900000,持续时间=228925.519s,table=17,n_packets=384,n_bytes=35436,优先级=10,元数据=0xf30000000000/0xffffff0000000000 动作=write_metadata:0xc000f30000000000/0xfffffffffffffffe,goto_table:211
示例:我有一个与此非常相似的流程。 元数据究竟是如何计算的。
以及如何解释元数据值和掩码
有人说 new_metadata = old_metadata & ~掩码 |值和掩码
老实说我不明白,谁能解释一下
write_metadata
操作中 value
和 metadata
字段的用途在 the Open vSwitch documentation:
write_metadata:value[/mask]
Updates the metadata field for the flow. If mask is omit‐
ted, the metadata field is set exactly to value; if mask
is specified, then a 1-bit in mask indicates that the
corresponding bit in the metadata field will be replaced
with the corresponding bit from value. Both value and
mask are 64-bit values that are decimal by default; use a
0x prefix to specify them in hexadecimal.
前面的解释确实等同于:
new_metadata = (old_metadata & ~mask) | (value & mask)
换句话说,我们首先擦除在掩码 (old_metadata & ~mask
) 中设置为 1 的旧元数据值的位,然后将掩码中也设置为 1 的值的位设置为 1 (| (value & mask)
).