VLAN

Введение

VLAN (от англ. Virtual Local Area Network) – логическая («виртуальная») локальная компьютерная сеть, имеющая те же свойства, что и физическая локальная сеть.

Проще говоря, VLAN – это логический канал внутри физического.

Данная технология позволяет выполнять две противоположные задачи:

1) группировать устройства на канальном уровне (т.е. устройства, находящиеся в одном VLAN’е), хотя физически при этом они могут быть подключены к разным сетевым коммутаторам (расположенным, к примеру, географически отдаленно);

2) разграничивать устройства (находящиеся в разных VLAN’ах), подключенные к одному коммутатору.

Иначе говоря, VLAN ‘ы позволяют создавать отдельные широковещательные домены. Сеть любого крупного предприятия, а уж тем более провайдера, не может функционировать без применения VLAN’ов.

Применение данной технологии дает нам следующие преимущества:

  • группировка устройств (к примеру, серверов) по функционалу;
  • уменьшение количества широковещательного трафика в сети, т.к. каждый VLAN — это отдельный широковещательный домен;
  • увеличение безопасности и управляемости сети (как следствие первых двух преимуществ).

Приведу простой пример: допустим, есть хосты, включенные в коммутатор, который, в свою очередь, подсоединен к маршрутизатору (рис. 1). Предположим, у нас есть две локальные сети, соединенные одним коммутатором и выходящие в интернет через один роутер. Если не разграничить сети по VLAN’ам, то, во-первых, сетевой шторм в одной сети будет оказывать влияние на вторую сеть, во-вторых, с каждой сети можно будет «вылавливать» трафик другой сети. Теперь же, разбив сеть на VLAN’ы, мы фактически получили две отдельные сети, связанные между собой роутером, то есть L3 (сетевым уровнем). Весь трафик проходит из одной сети в другую через роутер, а доступ теперь работает только на уровне L3, что значительно облегчает работу администратора.

Тегирование

Тегирование – процесс добавления метки VLAN’a (он же тег) к фреймам трафика.

Как правило, конечные хосты не тегируют трафик (например, компьютеры пользователей). Этим занимаются коммутаторы, стоящие в сети. Более того, конечные хосты и не подозревают о том, что они находятся в таком-то VLAN’е. Строго говоря, трафик в разных VLAN’ах чем-то особенным не отличается.

Если через порт коммутатора может прийти трафик разных VLAN’ов, то коммутатор должен его как-то различать. Для этого каждый кадр должен быть помечен какой-либо меткой.

Наибольшее распространение получила технология, описанная в спецификации  IEEE 802.1Q. Также существую и другие проприетарные протоколы (спецификации).

802.1q

802.1q – это открытый стандарт, описывающий процедуру тегирования трафика.

Для этого в тело фрейма помещается тег (рис.2), содержащий информацию о принадлежности к VLAN’у. Т.к. тег помещается в тело, а не в заголовок фрейма, то устройства, не поддерживающие VLAN’ы, пропускают трафик прозрачно, то есть без учета его привязки к VLAN’у.

Размер метки (тега) всего 4 байта. Состоит из 4-х полей (рис.3):

  • Tag Protocol Identifier (TPID, идентификатор протокола тегирования). Размер поля — 16 бит. Указывает на то, какой протокол используется для тегирования. Для 802.1Q используется значение 0x8100.
  • Priority (приоритет). Размер поля — 3 бита. Используется стандартом IEEE 802.1p для задания приоритета передаваемого трафика.
  • Canonical Format Indicator (CFI, индикатор канонического формата). Размер поля — 1 бит. Указывает на формат MAC-адреса. 0 — канонический, 1 — не канонический. CFI используется для совместимости между сетями Ethernet и Token Ring.
  • VLAN Identifier (VID, идентификатор VLAN). Размер поля — 12 бит. Указывает на то, какому VLAN принадлежит фрейм. Диапазон возможных значений — от 0 до 4095.

Если трафик теггируется, или наоборот — метка убирается, то контрольная сумма фрейма пересчитывается(CRC).

Native VLAN(нативный VLAN)

Стандарт 802.1q также предусматривает обозначение VLAN’ом трафика, идущего без тега, т.е. не тегированного. Этот VLAN называется нативный VLAN, по умолчанию это VLAN 1. Это позволяет считать тегированным трафик, который в реальности тегированным не является.

802.1ad

802.1ad это открытый стандарт (аналогично  802.1q), описывающий двойной тег (рис.4). Также известен как Q-in-Q, или Stacked VLANs. Основное отличие от предыдущего стандарта — это наличие двух VLAN’ов — внешнего  и внутреннего, что позволяет разбивать сеть не на 4095 VLAN’ов, а на 4095х4095.

Так же наличие двух меток позволяет организовывать более гибкие и сложные сети оператора. Так же, бывают случаи, когда оператору нужно организовать L2 соединение для двух разных клиентов в двух разных городах, но трафик клиенты посылают трафик с одним и тем же тегом(рис.5).

Клиент-1 и клиент-2 имеют филиалы в городе А и Б, где имеется сеть одного провайдера. Обоим клиентам необходимо связать свои филиалы в двух разных городах. Кроме того, для своих нужд каждый клиент тегирует трафик 1051 VLAN’ом. Соответственно, если провайдер будет пропускать трафик обоих клиентов через себя в одном единственном VLAN’е, авария у одного клиента может отразиться на втором клиенте. Более того, трафик одного клиента сможет перехватить другой клиент. Для того, чтобы изолировать трафик клиентов, оператору проще всего использовать Q-in-Q. Добавив дополнительный тег к каждому отдельному клиенту (например, 3083 к клиенту-1 и 3082 к клиенту-2), оператор изолирует клиентов друг от друга, и клиентам не придется менять тег.

Состояние портов

Порты коммутатора, в зависимости от выполняемой операции с VLAN’ами, делятся на два вида:

  • тегированный (он же транковый порт, trunk, в терминалогии cisco) — порт, который пропускает трафик только с определенным тегом;
  • нетегированный (он же аксесный, access, в терминалогии cisco) — входя в данный порт, нетегированный трафик «обертывается» в тег.

По назначению порта в определённый VLAN существует два подхода:

  • Статическое назначение — когда принадлежность порта VLAN’у задаётся администратором;
  • Динамическое назначение — когда принадлежность порта VLAN’у определяется в ходе работы коммутатора с помощью процедур, описанных в специальных стандартах, таких, например, как 802.1X.

Таблица коммутации

Таблица коммутации при использовании VLAN’ов выглядит следующим образом (ниже приведена таблица коммутации коммутатора, не поддерживающего работу во VLAN’ах):

Порт MAC-адрес
1 A
2 B
3 C

Если же коммутатор поддерживает VLAN’ы, то таблица коммутации будет выглядеть следующим образом:

Порт VLAN MAC-адрес
1 345 A
2 879 B
3 default C

где default — native vlan.

Протоколы, работаю с VLAN

GVRP( его аналог у cisco — VTP)  — протокол, работающий на канальном уровне,  работа которого сводиться к обмену информации об имеющихся VLAN’ах.

MSTP(PVSTP, PVSTP++ у cisco) — протокол, модификация протокола STP, позволяющее строить «дерево» с учетом различных VLAN’ов.

LLDP(CDP, у cisco) — протокол, служащий для обмена описательной информацией о сети, в целом, кроме информации о VLAN’ах также распространяет информацию и о других настройках.