Метаданные правила OpenFlow - PullRequest
0 голосов
/ 14 декабря 2018

Я хотел бы понять, как метаданные рассчитываются в правиле Open Flow.

cookie = 0x6900000, длительность = 228925.519 с, таблица = 17, n_packets = 384, n_bytes = 35436, приоритет = 10,metadata = 0xf30000000000 / 0xffffff0000000000 actions = write_metadata: 0xc000f30000000000 / 0xfffffffffffffffe, goto_table: 211

Пример: у меня есть поток, очень похожий на этот.Как именно рассчитываются метаданные.

И как интерпретировать значения метаданных и маску

Некоторые говорят, что new_metadata = old_metadata & ~ mask |значение и маска

Честно говоря, я не понимаю, кто-нибудь может объяснить это

1 Ответ

0 голосов
/ 16 декабря 2018

Назначение полей value и metadata в действии write_metadata объяснено в документации Open vSwitch :

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.

Предыдущее объяснение действительно эквивалентноto:

new_metadata = (old_metadata & ~mask) | (value & mask)

Другими словами, мы сначала удаляем биты старого значения метаданных, равного 1 в маске (old_metadata & ~mask), а затем устанавливаем в 1 биты значения, которые также установлены в1 в маске (| (value & mask)).

...