Match labels
При задачах классификации часто возникает необходимость осуществлять проверку совпадения с предопределенными множествами значений. Наиболее типовые из них - VC Filter и Prefix Filter. Задача также может быть сведена к анализу меток
Match Labels
Для простоты предположим, что у нас есть транковый порт, на котором поднято несколько vlan'ов, назовем их множеством V
.
У нас также есть набор VC Filter'ов F_i
.
Тогда для каждого i
возможен один из 5 исходов:
-
V \cap F_i = \emptyset
. Нет пересечений -
V = F_i
. Полное совпадение -
V \subset F
.V
- полностью содержится вF_i
-
V \supset F
.F_i
- полностью содержится вV
-
V \cap F_i \neq \emptyset
- частичное передечение.
Для обозначения совпадений вводятся дополнительные группы меток - match labels:
-
noc::<категория>::<имя>::=
- полное совпадение -
noc::<категория>::<имя>::>
- полностью содержится во множестве -
noc::<категория>::<имя>::<
- полностью содержит множество -
noc::<категория>::<имя>::&
- пересечения
<категория>
:
vcfilter
prefixfilter
<name>
- нормализованное имя категории.
Пример
На интерфейсе настроены vlan 1,5-7. В системе заданы фильтры
Имя | Фильтр | Результат |
---|---|---|
default | 1 | noc::vcfilter::default::> |
vlan2 | 2 | |
cust | 5-7 | noc::vcfilter::cust::> |
defined | 5-15 | noc::vcfilter::defined::& |
large | 1,5-15` | noc::vcfilter::large::< |
test | 1,5-7 | noc::vcfilter::large::= |
Таким образом, результирующий набор меток будет: noc::vcfilter::default::>
, noc::vcfilter::cust::>
, noc::vcfilter::defined::&
, noc::vcfilter::large::<
, noc::vcfilter::large::=
Автосоздание match labels
Если модель может использоваться для матчинга, при сохранении необходимо создать полный набор match labels. Предлагается реализовать его
в декораторе @Label.match_labels
@Label.match_labels
class VCFilter(Model):
...
Примечание
Match labels существенно расширяют возможности классификации и поиска. Например, представляется разумным реализовать отдельный ui для
просмотра сетевых интерфейсов и сабов. Например, задав в критерии поиска метку noc::vcfilter::cust::<
мы моментально увидим все порты,
с заданными vlan'ами 5, 6 или 7.
Также существенно упрощается скриптование, так как вместо сложных условий можно просто проверять набор меток. Как вишенка на торте -- при реализации GMX Label Routing можно использовать match labels как критерии для маршрутизации.