Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Register
  • Sign in
  • N noc
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 450
    • Issues 450
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
    • Requirements
  • Merge requests 27
    • Merge requests 27
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • External wiki
    • External wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • noc
  • noc
  • Issues
  • #1565
Closed
Open
Issue created Apr 14, 2021 by Dmitry Volodin@dvOwner

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 как критерии для маршрутизации.

Edited Apr 14, 2021 by Dmitry Volodin
Assignee
Assign to
Time tracking