====== Трансляция VLAN ====== {{indexmenu_n>9}} В СКАТ 9.4 добавлена возможность трансляции VLAN: входящий VLAN пакета заменяется на заданный исходящий VLAN. Трансляция VLAN задается в текстовом файле ''/etc/dpi/vlan_translation.txt'', имеющем следующую структуру: # subs VLAN inet VLAN 123 1123 124 1124 125 1125 # и так далее Каждая строка файла задает соответствие входящего и исходящего VLAN. Строка, начинающаяся с ''#'', является комментарием. Начальные пробелы/табуляции строки игнорируются. Текстовый файл трансляций должен быть сконвертирован в бинарный ''/etc/dpi/vlan_translation.bin'' утилитой vlan2bin из состава dpiutils: cat vlan_translation.txt|vlan2bin /etc/dpi/vlan_translation.bin **[СКАТ v13+]** во входных файлах утилиты vlan2bin появилась возможность добавлять комментарии (#) и пустые линии. Обратная конвертация из бинарного вида в текстовый производится утилитой bin2vlan: bin2vlan /etc/dpi/vlan_translation.bin >vlan_translation.txt Режим трансляции VLAN включается просто наличием файла ''/etc/dpi/vlan_translation.bin'': если этот файл есть, режим трансляции включен. Отсутствие файла является признаком выключения режима трансляции VLAN. Содержимое файла трансляции можно менять в процессе работы: СКАТ периодически проверяет наличие файла и если он изменился, - перечитывает таблицу трансляции. Выключить режим трансляции на лету можно просто удалив или переименовав файл трансляций ''/etc/dpi/vlan_translation.bin''. Если трансляция VLAN включена, она применяется при любом режиме работы СКАТ, а не только в режиме BRAS. При включенном режиме трансляции VLAN СКАТ делает следующее: * пакет от абонента в интернет (subs -> inet): ищем в таблице трансляции входящий VLAN пакета (subs VLAN); если VLAN найден - заменяем его на исходящий inet VLAN. В примере выше subs VLAN=123 будет заменен на inet VLAN=1123. * пакет inet -> subs: ищем в таблице трансляций входящий VLAN пакета (inet VLAN); если VLAN найден - заменяем его на исходящий subs VLAN. В примере выше inet VLAN=1124 будет заменен на subs VLAN=124. * Если входящий VLAN не найден в таблице трансляций - он не изменяется (такая ситуация не является ошибкой). Таким образом, таблица трансляций не обязательно должна быть полной и перечислять все VLAN. * Для пакета passthrough (например, если для AS установлен признак pass) трансляция VLAN не применяется. Трансляция VLAN применяется только для пакетов с одним VLAN-тегом. Для QinQ трансляция не применяется. Если пакет не имеет VLAN-тега, трансляция также не применяется, - пакет отправляется "как есть", без изменений. Соответствие должно быть взаимно-однозначным; следующее задание недопустимо: # subs VLAN inet VLAN # Ошибка: два subs VLAN (64 и 65) транслируются в один VLAN=200 64 200 65 200 # Аналогичная ошибка: inet VLAN 202 и 203 транслируются в один subs VLAN=2067 2067 202 2067 203 # ... В конце файла можно добавить записи трансляции по умолчанию: # subs VLAN inet VLAN 123 1123 124 1124 125 1125 # далее перечисляем все прочие трансляции ... # Запись "все прочие subs VLAN на пути subs->inet транслировать в inet VLAN 4012" # В файле может быть только одна такая запись! * 4012 # Запись "все прочие inet VLAN на пути inet->subs транслировать в subs VLAN 2089" # В файле может быть только одна такая запись! 2089 * # конец файла трансляций ==== Совместимость с режимом L2 BRAS ==== {{anchor:l2_bras_compat}} Трансляция VLAN применяется также в режиме L2 BRAS, но с учетом того, что L2 BRAS СКАТ уже умеет выполнять [[dpi:bras_bng:bras_l2_vlan_term|замену VLAN-тегов]], немного по другим правилам. Таблица трансляций VLAN применяется в L2 BRAS при терминации трафика sub->inet в следующих случаях: - если абонент не является L2-абонентом (то есть для абонента неизвестны [[dpi:bras_bng:cli:bras_l2_vlan_ctl|L2-свойства]]); - если терминация VLAN отключена (то есть ''bras_vlan_terminate=0''); - в режиме [[dpi:bras_bng:bras_l2_vlan_term:bras_l2_vlan_term_zero|подмены]] ''bras_vlan_terminate=2'': если абонент не имеет свойства [[dpi:bras_bng:bras_l2_vlan_term#outvlan|outVLAN]] и есть запись трансляции для VLAN-тега пакета; - в режиме [[dpi:bras_bng:bras_l2_vlan_term:bras_l2_vlan_term_trans|трансформации VLAN]] ''bras_vlan_terminate=3'': если абонент не имеет свойства outVLAN и есть запись трансляции для VLAN-тега пакета. Проще говоря, в режимах ''bras_vlan_terminate''=2 или 3 наивысший приоритет при терминации трафика subs->inet имеет свойство outVLAN абонента, далее (если абонент не имеет свойства outVLAN и если пакет имеет только один VLAN-тег) следует поиск в таблице трансляций VLAN, далее, если трансляции не найдено, применяются конфигурационные параметры, как описано в режимах ''bras_vlan_terminate'' (см. ссылки выше). При приземлении трафика inet->subs таблица трансляций VLAN в режиме L2 BRAS применяется только для неизвестных абонентов, то есть когда СКАТ не находит L2-свойства абонента. ==== CLI-команды ==== {{anchor:cli}} Имеется несколько [[dpi:bras_bng:cli|CLI-команд]] для работы с таблицей трансляций VLAN. fdpi_cli vlan translation Выводит текущие таблицы трансляций subs->inet и inet->subs. В выводе этой команды записи "по умолчанию" вида ''* N'' и ''N *'' развернуты. Если трансляций нет, команда сообщит об этом. fdpi_cli vlan translation reload Немедленная загрузка файла ''/etc/dpi/vlan_translation.bin''. Если файла нет - режим трансляции VLAN выключается. СКАТ периодически (раз в минуту) проверяет наличие и изменение файла ''/etc/dpi/vlan_translation.bin'', но этой командой можно принудительно заставить СКАТ перечитать этот файл немедленно. fdpi_cli vlan translation test [subs|inet] Проверка трансляции VLAN на указанном пути: * ''subs'' - трансляция subs-VLAN '''' * ''inet'' - трансляция inet-VLAN '''' Примеры: # в какой VLAN транслируется VLAN=123 на пути subs->inet fdpi_cli vlan translation test subs 123 # выхлоп команды: VLAN=123 translation subs->inet: 123 -> 1123 # в какой VLAN транслируется VLAN=1124 на пути inet->subs fdpi_cli vlan translation test inet 1124 # выхлоп команды: VLAN=1124 translation inet->subs: 1124 -> 124 # Если трансляции для указанного VLAN нет, команда ответи ошибкой вида: No translation for VLAN=666 for subs->inet