Команда vlan batch на коммутаторах Huawei позволяет создать непрерывный диапазон VLAN-идентификаторов одной инструкцией, избегая ручного ввода каждого номера. Эта функция доступна в системном представлении (system-view) и критически важна при первичной настройке крупных сетевых инфраструктур, где требуется завести сотни виртуальных локальных сетей. Использование пакетного режима сокращает время конфигурации на порядки и исключает ошибки опечаток при последовательном добавлении.
В отличие от классической команды vlan id, которая переводит CLI в представление конкретного VLAN для детальной настройки описания или имени, пакетный вариант лишь резервирует идентификаторы в базе данных коммутатора. После выполнения vlan batch 10 to 20 устройство создает VLAN 10, 11, 12... 20 со значениями по умолчанию, не входя в контекст каждого из них. Это поведение отличается от некоторых конкурентов, где batch-режим может не поддерживаться или требовать дополнительных ключей.
Синтаксис и режимы выполнения
Базовый синтаксис выглядит как vlan batch { start-vlan-id to end-vlan-id }<1-10>, где можно указать до десяти диапазонов в одной строке. Аргументы start-vlan-id и end-vlan-id должны находиться в пределах от 1 до 4094, при этом VLAN 1 создается по умолчанию и не удаляется. Команда выполняется исключительно в системном представлении; попытка ввести её в интерфейсном или VLAN-представлении вернет ошибку Error: The command exists in system view only.
Поддерживается также обратный порядок: vlan batch 100 to 90 корректно обработается и создаст диапазон 90–100. Однако перекрывающиеся диапазоны в одной команде (например, vlan batch 10 to 20 15 to 25) приведут к предупреждению о дублировании, хотя уже созданные VLAN останутся активными. На стеках коммутаторов (Stack/iStack) команда реплицируется на все члены стека автоматически.
- 🔧 Диапазон указывается через ключевое слово
to - 📦 До 10 диапазонов в одной команде
- 🚫 VLAN 1 и зарезервированные (4095+) не создаются
- ⚡ Мгновенное применение без
commit(в режиме немедленного исполнения)
☑️ Проверка перед запуском vlan batch
⚠️ Внимание: На моделях серии S5700/S6700 с устаревшими версиями VRP (до V200R010) максимальное количество VLAN в одной batch-команде может быть ограничено 500 идентификаторами. При превышении лимита выполнение прервется с ошибкой ресурса.
Практическое сравнение: одиночное vs пакетное создание
При настройке 200 VLAN ручной способ требует 200 отдельных команд vlan id и столько же выходов из подрежима (quit), что занимает 15–20 минут при вводе вручную. Пакетная команда vlan batch 100 to 299 выполняется за 1–2 секунды. Разница в производительности CLI очевидна, но есть нюанс: пакетное создание не позволяет сразу задать description или name для каждого VLAN — это придется делать вторым проходом или скриптом.
Для автоматизации часто комбинируют подходы: сначала vlan batch для резервации ID, затем Python-скрипт или Expect-сценарий для наполнения атрибутов. В CloudEngine серии (CE6800, CE12800) также поддерживается NETCONF/YANG для массовой загрузки конфигурации, что предпочтительнее CLI для CI/CD пайплайнов.
| Параметр | Одиночный vlan id | Пакетный vlan batch |
|---|---|---|
| Скорость создания 100 VLAN | ~5–10 мин | <1 сек |
| Задание description/name | Сразу в контексте | Требует повторного входа |
| Риск ошибки ввода | Высокий | Минимален |
| Поддержка в VRP | Все версии | V200R001+ |
Используйте команду `display vlan summary` сразу после batch-создания — она покажет общее количество активных VLAN и подтвердит, что диапазон заведен полностью.
Типичные ошибки и диагностика
Частая ошибка новичков — попытка создать VLAN с ID, уже занятым под vlanif интерфейс или встроенные протоколы (например, VLAN 4094 для Fabric на дата-центровых моделях). Система выдаст Error: VLAN 4094 is reserved и пропустит только конфликтующий ID, создав остальные. Проверку занятости можно сделать командой display vlan id или display vlan all до запуска batch.
Другая ловушка — превышение лицензионного лимита Max VLAN Number на конкретной лицензии (Base/Advanced). На некоторых коробочных версиях лимит может быть 256 или 512 VLAN. Команда display license покажет текущий предел. Если batch-попытка упрется в лимит, создадутся только первые доступные ID, а остальные игнорируются без критической ошибки, что может остаться незамеченным.
⚠️ Внимание: При работе с MUX VLAN или Voice VLAN функции могут неявно резервировать дополнительные ID внутри указанного диапазона. Проверяйте `display vlan all` на наличие статуса `Reserved` перед массовым добавлением.
Нюансы на VRP V8 (CloudEngine)
В VRP V8 (CE серий) команда `vlan batch` создает VLAN в состоянии `UP` по умолчанию, в отличие от VRP V5 (S-серий), где они создаются `DOWN` до привязки интерфейса. Это влияет на расход MAC-адресов в таблице FDB.
Верификация результата и откат изменений
После выполнения команды обязательно проверяйте вывод display vlan batch-status (доступно на V200R019+) или классический display vlan summary. Ищите строку Total VLANs: N и убедитесь, что счетчик увеличился на ожидаемое количество. Для аудита удобно перенаправить вывод в файл: display vlan summary > flash:/vlan_audit.txt.
Откат выполняется командой undo vlan batch { start to end }. Она удаляет только те VLAN из диапазона, которые не имеют привязанных интерфейсов, IP-адресов на VLANIF или настроенных фич (VRRP, DHCP Snooping и др.). Если VLAN «загрязнен» конфигурацией, undo вернет ошибку VLAN has active configuration — потребуется чистить вручную или через reset vlan id с осторожностью.
- ✅ `display vlan summary` — быстрая сводка
- 📋 `display vlan id` — детали конкретного VLAN
- 🗑 `undo vlan batch ...` — массовое удаление
- 💾 `save` — фиксация в startup-config
Главное правило: vlan batch — только для резервации ID. Настройку атрибутов (name, description, mtu) делайте отдельно, лучше скриптами.
Интеграция с Ansible и NetConf
В современных практиках Infrastructure as Code (IaC) прямое ручное ввод CLI считается антипаттерном. Для Huawei существует коллекция huawei.vrp в Ansible Galaxy, где модуль vlan_batch инкапсулирует идемпотентное создание диапазонов. Плейбук выглядит лаконично: vlan_batch: ranges: \"10-20, 30-40\". Модуль сам проверяет текущее состояние через NETCONF и применяет изменения только при дельте.
Если NETCONF недоступен, используется cli_command с vlan batch ..., но теряется идемпотентность — при повторном запуске плейбук будет пытаться создать уже существующие VLAN, что безопасно, но засоряет логи. Рекомендуется включить display vlan summary в задачу проверки (register + failed_when) для контроля.
⚠️ Внимание: На коммутаторах с включенным configuration exclusive (монопольный доступ к конфигу) параллельный запуск Ansible и ручного CLI приведет к блокировке сессии. Планируйте окна обслуживания.
Лайфхаки для крупных развертываний
При развертывании Campus-сети с 2000+ VLAN удобно разбить batch на логические блоки: vlan batch 100 to 199 (Access), vlan batch 200 to 299 (Servers), vlan batch 300 to 399 (Management). Это упрощает последующую навигацию в display vlan и назначение политик QoS/ACL по маске диапазона. Не забывайте про vlan id name Prefix_id в цикле для автогенерации понятных имен.
На стеках (iStack/SVf) команда выполняется на Master-устройстве и синхронизируется. Однако при разрыве стека (split-brain) VLAN-база может рассинхронизироваться. После восстановления стека запускайте display vlan summary на всех членах и при необходимости повторно применяйте batch на Slave-перешедшем-в-Master.
Пример генерации имен через Python для batch VLAN
```python
for v in range(100, 200):
print(f\"vlan {v}\n name ACCESS_{v}\n quit\")
```
Вставьте вывод в терминал через Terminal Emulator с задержкой 50ms/строку.
Часто задаваемые вопросы (FAQ)
Можно ли использовать vlan batch для несплошных ID (например, 10, 20, 30)?
Нет, команда поддерживает только непрерывные диапазоны через to. Для разрозненных ID используйте скрипт или перечислите несколько диапазонов: vlan batch 10 to 10 20 to 20 30 to 30 (работает, но выглядит неэстетично).
Создает ли vlan batch интерфейсы VLANIF автоматически?
Нет. Создаются только L2-объекты VLAN. L3-интерфейсы interface Vlanifid нужно создавать отдельно командой interface Vlanif id в system-view.
Как удалить один VLAN из созданного batch-диапазона?
Командой undo vlan id для конкретного номера. Остальные VLAN диапазона сохраняются. Пакетное удаление части диапазона: undo vlan batch 15 to 18.
Работает ли команда на роутерах серии AR (AR6000)?
Да, функционал идентичен коммутаторам серии S/CE на соответствующих версиях VRP. Проверяйте `display version` для подтверждения поддержки.
Почему после vlan batch некоторые VLAN имеют статус Inactive?
Статус Inactive означает, что в VLAN нет активных физических интерфейсов (up/up). Это нормально для только что созданных VLAN. Статус сменится на Active после добавления портов командой port trunk allow-pass vlan id или port default vlan id и поднятия линка.