Формирование имен структур LSP при конвертировании

При конвертировании Cisco-like конфигурации в LSP конфигурацию имена структур LSP формируются из имен и индексов объектов Cisco-like конфигурации. При этом следует учитывать ряд ограничений:

·       В объектах Cisco-like конфигурации разных типов могут использоваться одинаковые имена. В LSP имя объекта должно быть уникальным.

·       Могут использоваться цифровые индексы. В LSP требуется задавать идентификаторы, начинающиеся с буквы.

·       Как правило, синтаксис Cisco-like имен более свободный (например, допускаются символы, которые нельзя использовать в идентификаторах LSP).

·       В некоторых случаях требуется формировать имя структуры LSP из группы объектов Cisco-like конфигурации.

·       Один объект Cisco-like конфигурации (или группа объектов) может порождать несколько LSP объектов (каждый из которых должен обладать уникальным именем).

Общие сведения по формированию имен:

·       Сначала готовится прототип имени объекта. Для этого прототипа нет каких-то специальных требований: например это может быть имя объекта Cisco-like конфигурации, константная строка, сочетание префикса и имен нескольких объектов и т.п.

·       Основные административные принципы формирования имени:

·       В имени структуры LSP используются имена и/или числовые идентификаторы объектов Cisco-like конфигурации (далее для простоты “Cisco-объект”), порождающих данную структуру.

·       Если существует однозначная связь между Cisco-объектом и структурой LSP:

·       Если Cisco-объект идентифицируется по имени, то напрямую используется данное имя.

·       Если Cisco-объект идентифицируется числом или набором разрозненных параметров, то в качестве имени структуры LSP используется команда IOS, создающая данный Cisco-объект, в которой пробелы заменены на символ “:” (двоеточие).

·       Если Cisco-объект может породить несколько структур LSP строго одного типа в зависимости от дополнительных объектов, начало имени порождается аналогично предыдущему пункту, а затем через двоеточие перечисляются идентификаторых дополнительных объектов.

·       Если структура LSP порождается из нескольких Cisco-объектов: Cisco-объект порождает несколько структур LSP или если существуют какие-то иные неоднозначности (например, один и тот же ACL может порождать разные структуры LSP одного и того же типа FilterChain), то в начало имени структуры добавляется префикс, описывающий ролевую принадлежность данной структуры и заканчивающийся на двоеточие.

·       В некоторых случаях в качестве префикса может использоваться тип структуры LSP. 

·       Если Cisco-объект идентифицируется несколькими параметрами (например, имя и индекс), то они в имени LSP-структуры разделяются символом “:” (двоеточие).

·       Если LSP-структура порождается несколькими разнотипными объектами, образующими вместе некоторую законченную группу, то их идентификаторы также разделяются двоеточием.

·       Если LSP-структура порождается несколькими однотипными объектами или несколькими замкнутыми группами разнотипных объектов, то группы идентификаторов разделяются символом “$” (доллар).

·       Например, пусть в Cisco-like конфигурации присутствуют некоторые объекты:

obj_type_1 abc 15

obj_type_2 1000

obj_type_1 def 20

obj_type_2 2000

·       Возможный вариант порождаемого имени:

SomePrefix:abc:15:1000$def:20:2000    

·       Важный частный случай: когда объект порождается из конкретной crypto map, действуют следующие правила для идентификации crypto map:

·       Если объект порождается из статической crypto map, то в имени объекта присутствуют имя и индекс данной crypto map, разделенные двоеточием. Например:

cmap:10

·       Если объект порождается из конкретной записи динамического crypto map template, то в имени объекта присутствуют следующие части: имя и индекс динамической crypto map, а также имя динамического crypto map template и индекс конкретной записи в нем. Например, фрагмент конфигурации:

crypto dynamic-map dmap 20

...

crypto map cmap 5 ipsec-isakmp dynamic dmap

 

порождает объект, в имени которого присутствует:

 

cmap:5:dmap:20

·       Если имя получается слишком длинным, часть объектов, порождающих данную структуру, может отсутствовать в сформированном имени. В этом случае к имени добавляется суффикс $$etc. Например:

IKERule:cmap-1:10:dmap-1:10$cmap-1:20:dmap-2:10$$etc

 

·       Далее производится нормализация имени:

·       Все символы, кроме букв латинского алфавита, цифр и символов “-“ (минус), “$” (доллар) и “:” (двоеточие), преобразуются к символу подчеркивания.

·       Если имя начинается с цифры или иного символа, отличного от букв латинского алфавита и подчеркивания, перед ним ставится буква n.

·       Далее производится поиск полученного имени среди уже сформированных (для обеспечения уникальности):

·       Если имя не найдено, считаем его окончательно сформированным.

·       Если имя найдено, добавляем к нему последовательно суффиксы $$1, $$2 и т.д. до тех пор, пока не будет найдено имя, которое еще не использовалось.

·       Полученное имя записывается в конфигурацию и запоминается для того, чтобы оно не было использовано для другого объекта.

 

Далее описываются конкретные правила формирования прототипов имен объектов:

Имя структуры Native LSP

Вариант использования

Правило формирования

Примеры

IKETransform

 

Конкатенация префикса “crypto:isakmp:policy:” и индекса ISAKMP policy (команда crypto isakmp policy)

crypto:isakmp:policy:10

AHProposal

 

Конкатенация имени transform-set и суффикса “:AH” (команда crypto ipsec transform-set)

trset1:AH

ESPProposal

 

Конкатенация имени transform-set и суффикса “:ESP” (команда crypto ipsec transform-set)

trset1:ESP

IKERule

Статическая crypto map

Конкатенация “IKERule:” и обозначения crypto map (см. важный частный случай).

Если объект порожден из нескольких crypto maps, то их обозначения перечисляются через знак доллара $

IKERule:cmap:1

IKERule:cmap:2:dmap:10

IKERule:cmap-1:1:dmap:1$cmap-2:1:dmap:10

AuthMethodRSASign

 

RSA:Sign

RSA:Sign

AuthMethodDSSSign

 

DSS:Sign

DSS:Sign

AuthMethodGOSTSign

 

GOST:Sign

GOST:Sign

AuthMethodPreshared

 

Конкатенация “Preshared:” и идентификатора ключа – в зависимости от типа: IP-адрес или hostname (точки заменяются на знак подчеркивания).

Если значение данного ключа подходит для нескольких идентификаторов, то эти идентификаторы перечисляются через двоеточие (действует правило по отсечению слишком длинных имен (см. слишком длинные имена)

Preshared:192_168_1_2

Preshared:host1_example_com

Preshared:host1_example_com:192_168_1_2:192_168_1_3

CertDescription

 

CA:RSA

CA:DSS

CA:GOST

CA:GOST

IPsecAction

 

Конкатенация префикса “IPsecAction:” и обозначения crypto map (см. важный частный случай).

Если объект порожден из нескольких crypto maps, то их обозначения перечисляются через знак доллара $.

IPsecAction:cmap:1

IPsecAction:cmap:5:dmap:20

IPsecAction:cmap-1:1:dmap-1:1$cmap-2:1:dmap-1:1

AddressPool

Используется команда “crypto isakmp client configuration address-pool local…” или команда “set pool…”, в которой не задана маска подсети.

Имя pool (команда ip local pool)

pool1

FilterChain

Фильтр

Конкатенация “FilterChain:” и имени ACL

FilterChain:101

FilterChain:acl1

Inspection (только при отсутствии фильтрующего ACL; в противном случае – часть фильтрующего ACL)

Конкатенация “InspectChain:” и имени inspection, заданного командой ip inspect name

InspectChain:inspect1

Классификация трафика (QoS):

Конкатенация “ClassificationChain:” и имени policy map (команда policy-map).

ClassificationChain:pmap1

Clear-Text фильтрация внутри защищенного соединения.

Конкатенация “ClearText:” и имени ACL, заданного командой set ip access-group (режим конфигурирования crypto map)

ClearText:clear-text-acl

ClearText:15

Правила защиты (IPsec policy)

Конкатенация “IPsecPolicy:” и имени crypto map set

IPsecPolicy:cmap

IdentityEntry

 

Имя identity (команда crypto identity)

id1