VLAN и коммутация
VLAN — логическое деление одного физического коммутатора на несколько независимых сетей с помощью тега 802.1Q в кадре.
Что такое VLAN и коммутация
Коммутатор (switch) соединяет устройства внутри сегмента и пересылает кадры по MAC-адресам, запоминая, за каким портом какой адрес живёт. По умолчанию все его порты — одна общая сеть: широковещательный запрос от любого узла слышат все.
VLAN (Virtual LAN) ломает это правило. Порты размечаются номерами, и коммутатор перестаёт пропускать кадры между разными номерами — на одном железе получается несколько независимых сетей. Устройства в VLAN 10 не видят VLAN 20 вообще, как будто их включили в разные коммутаторы. Чтобы трафик пошёл между ними, нужен маршрутизатор — и там его можно фильтровать.
Зачем это нужно: изоляция без покупки железа и без лишних проводов. Гостевой Wi-Fi, сеть управления серверами, продакшен и офисная сеть живут на одном коммутаторе, но не пересекаются.
Тег 802.1Q
Разметка переносится прямо в кадре: стандарт 802.1Q добавляет 4 байта с номером VLAN (VID).
Обычный кадр: [ MAC dst | MAC src | тип | данные ]
С тегом 802.1Q:[ MAC dst | MAC src | 802.1Q VID | тип | данные ]
↑
12 бит → 1–4094 доступных VLAN
Отсюда два типа портов, и это главное, что нужно понимать при настройке:
| Access-порт | Trunk-порт | |
|---|---|---|
| Сколько VLAN | один | много |
| Тег в кадре | снимается, устройство о VLAN не знает | сохраняется |
| Куда включают | сервер, телефон, ПК | другой коммутатор, гипервизор |
Тег добавляет 4 байта, поэтому кадр разрастается до 1522 байт. На пути тегированного трафика MTU должен это учитывать — иначе полноразмерные пакеты начнут молча пропадать.
Настройка в Linux
Хосту-гипервизору обычно приходит trunk, а он уже разбирает VLAN по виртуальным машинам:
# поднять интерфейс для VLAN 10 поверх физического eth0
$ sudo ip link add link eth0 name eth0.10 type vlan id 10
$ sudo ip addr add 10.0.10.5/24 dev eth0.10
$ sudo ip link set eth0.10 up
$ ip -d link show eth0.10
eth0.10@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
vlan protocol 802.1Q id 10 <REORDER_HDR>
Имя вида eth0.10 — общепринятое соглашение: физический интерфейс и номер VLAN.
QinQ
QinQ (802.1ad, «стек VLAN») навешивает на кадр второй тег: внешний — провайдера, внутренний — клиента.
Задача, которую он решает, — прозрачный транспорт. Провайдер хочет провезти клиентский трафик между площадками, не разбирая его и не согласовывая номера. Клиент пользуется своими VLAN 1–4094 как ему угодно, провайдер видит только свой внешний тег. Побочный эффект — снятие лимита в 4094 VLAN, критичного для операторов.
Ценой идут ещё 4 байта к кадру — про MTU здесь забывают особенно часто.
MLAG
MLAG (Multi-Chassis Link Aggregation) — агрегация линков, идущих на два разных коммутатора.
Обычный LACP объединяет несколько кабелей от сервера в один логический канал: полоса складывается, обрыв провода не рвёт связность. Но если оба кабеля воткнуты в один коммутатор, он и остаётся точкой отказа. MLAG позволяет двум коммутаторам притвориться одним: сервер видит обычный bond, а физически линки идут в разные железки.
┌── Коммутатор A ──┐
Сервер ─┤ ├─ ядро сети
└── Коммутатор B ──┘
один bond на сервере, два независимых коммутатора
Выигрыш прямой: коммутатор можно перезагрузить для обновления прошивки, и сервер этого не заметит. Для стоек с серверами, к которым предъявляются требования по SLA, это стандартная схема. Реализация проприетарная и у каждого вендора называется по-своему.
Что помнить на практике
- Native VLAN на trunk ходит без тега. Несовпадение native на двух концах — источник трафика, утекающего не в ту сеть.
- Сеть управления — отдельный VLAN.IPMI и интерфейсы гипервизоров в интернете быть не должны.
- Jumbo frames включают на всём сегменте. Один порт с MTU 1500 в середине ломает картину.
- VLAN — не защита. Это изоляция широковещательного домена; фильтрацией занимается файрвол, а маршрутизатор между VLAN пропустит всё, что вы ему не запретили.
Связанные термины
- Компьютерные сети — где VLAN один из способов сегментации
- Сетевой адаптер — на нём поднимают VLAN-интерфейсы
- MTU и MSS — теги съедают байты кадра
- Модель OSI — коммутация это второй уровень
- VPC — та же идея изоляции, но в облаке
- SLA и отказоустойчивость — ради чего строят MLAG
Готовы запустить GPU-задачу?
Запустить GPU-сервер