OpenFlow规则元数据

时间:2018-12-13 22:33:54

标签: opendaylight openvswitch

我想了解如何在开放流规则中计算元数据。

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和〜mask |值和掩码

老实说我听不懂,有人可以解释一下

1 个答案:

答案 0 :(得分:0)

the Open vSwitch documentation中说明了value操作中metadatawrite_metadata字段的用途:

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}}。