VLAN

VLAN (аббр. от англ. Virtual Local Area Network) — логическая («виртуальная») локальная компьютерная сеть, представляет собой группу хостов с общим набором требований, которые взаимодействуют так, как если бы они были подключены к широковещательному домену, независимо от их физического местонахождения. VLAN имеет те же свойства, что и физическая локальная сеть, но позволяет конечным станциям группироваться вместе, даже если они не находятся в одной физической сети. Такая реорганизация может быть сделана на основе программного обеспечения вместо физического перемещения устройств.

Обозначение членства в VLAN

Для этого существуют следующие решения:

Сети на базе портов

Это простейший вариант организации виртуальной ЛВС. VLAN на базе портов обеспечивают высочайший уровень управляемости и безопасности. Устройства связываются в виртуальные сети на основе портов коммутатора, к которым эти устройства физически подключены. VLAN на базе портов являются статическими и для внесения изменений требуется физическое переключение устройств.

Однако построенные на базе портов виртуальные сети имеют некоторые ограничения. Они очень просты в установке, но позволяют поддерживать для каждого порта только одну виртуальную ЛВС. Следовательно, такое решение малоприемлемо при использовании концентраторов или в сетях мощными серверами, к которым обращается много пользователей (сервер не удастся включить в разные VLAN). Кроме того, виртуальные сети на основе портов не позволяют вносить в сеть изменения достаточно простым путем, поскольку при каждом изменении требуется физическое переключение устройств.

 

Сети на базе MAC-адресов

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

Виртуальная сеть на базе MAC-адресов группирует устройства, а AutoTracker делает группу широковещательным доменом (VLAN). Сети на базе MAC-адресов являются одним из наиболее безопасных и управляемых типов VLAN. Для получения доступа в виртуальную сеть, устройство должно иметь MAC-адрес, известный программе AutoTracker.
 

Настройка виртуальной сети на основе MAC-адресов может отнять много времени - представьте себе, что вам потребуется связать с VLAN адреса 1000 устройств. Кроме того, MAC-адреса "наглухо зашиты" в оборудование и может потребоваться много времени на выяснение адресов устройств в большой, территориально распределенной сети. Однако программа управления сетью OmniVision корпорации Xylan позволяет собрать адреса в масштабе всей сети автоматически, избавляя администратора от рутинной работы. С помощью программы можно настроить виртуальные сети, используя вместо MAC-адресов связанные с ними имена станций.

VLAN на сетевом уровне

Виртуальные ЛВС сетевого уровня позволяют администратору связать трафик для того или иного протокола в соответствующей виртуальной сети.

Точно таким же способом создаются широковещательные домены в сетях на основе маршрутизаторов. Протокол может быть задан в форме IP-подсети или сетевого номера IPX. Можно, к примеру, объединить в виртуальную ЛВС всех пользователей подсети, которая была организована до использования коммутаторов.
 

Спектр возможностей коммутатора, на базе которого строится VLAN, чато определяет гибкость виртуальных сетей данного типа. Многие виртуальные ЛВС сетевого уровня поддерживают системы на базе нескольких коммутаторов, тогда как другие могут работать только с одним устройством. Помните, что этот тип виртуальных ЛВС почти не отличается от сетей на базе маршрутизаторов и некоторые коммутаторы неспособны обеспечить требуемую в данном случае производительность. Коммутаторы OmniSwitch хорошо справляются с задачами этого типа.

VLAN на базе протоколов

Этот тип виртуальных сетей строится на базе заданного в каждом кадре типа протокола.

 

После того, как правила загружены в коммутаторы OmniSwitch или PizzaSwitch, устройства сразу же позволяют начать работу с виртуальными сетями на основе заданных администратором правил.

Многоадресные (multicast) VLAN

Многоадресный (multicast) трафик отличается от широковещательного (broadcast), который передается во всю сеть, и одноадресного (unicast), обеспечивающего связь "точка-точка".

Многоадресный трафик представляет собой обмен "точка-многоточка" (один со многими) или многоточечный (многие со многими) и в последнее время становится все более популярным для различных сетевых приложений. Многоадресный режим может использоваться для видеоконференций, биржевых систем, новостей и т.п. систем, где одна и та же информация передается многочисленным пользователям.

Виртуальные ЛВС с многоадресным трафиком создаются динамически путем прослушивания IGMP (Internet Group Management Protocol). Когда пользователь открывает приложение, использующее режим multicast, он динамически включается в виртуальную сеть, связанную с данным приложением. По окончании работы с программой пользователь удаляется из соответствующей виртуальной сети.

 

Многоадресный трафик в общем случае является стабильным потоком с достаточно широкой полосой. Следовательно, такой трафик лучше всего зафиксировать в одной виртуальной сети для предотвращения лавинной маршрутизации (flooding).

VLAN на базе правил

Это наиболее мощная реализация VLAN, позволяющая администратору использовать любые комбинации критериев для создания виртуальных ЛВС. Для включения устройств в виртуальные ЛВС можно использовать все перечисленные выше способы при условии их поддержки установленными в сети коммутаторами. После того, как правила загружены во все коммутаторы, они обеспечивают организацию VLAN на основе заданных администратором критериев. Поскольку в таких сетях кадры постоянно просматриваются на предмет соответствия заданным критериям, принадлежность пользователей к виртуальным сетям может меняться в зависимости от текущей деятельности пользователей.

Виртуальные ЛВС на основе правил используют широкий набор критериев принадлежности к сети, включая все перечисленные выше варианты: MAC-адреса, адреса сетевого уровня, тип протокола и т.д. Возможно также использовать любые комбинации критериев для создания правил, наиболее точно соответствующих вашим задачам.

 

VLAN для уполномоченных пользователей

VLAN для уполномоченных пользователей обеспечивают высокий уровень безопасности в сети и предъявляют более строгие требования к пользователям для предоставления доступа к серверам или иным сетевым ресурсам. Например, сеть уполномоченных пользователей может быть создана для финансового отдела предприятия и сотрудники других подразделений не смогут получить доступ в эту сеть, не имея соответствующих полномочий. Для поддержки таких сетей в коммутаторах OmniSwitch и PizzaSwitch используются функции встроенных брандмауэров. Администратор может эффективно управлять доступом пользователей, задавая процедуру аутентификации. Хотя другие варианты VLAN обеспечивают некоторые средства безопасности, только сети уполномоченных пользователей делают это на достаточно высоком уровне.

 

Сравнительные характеристики различных типов AutoTracker VLAN

 

По портам

По MAC-адресам

Сетевой уровень

По протоколам

Многоадресные

На основе правил

Гибкость

-

Средняя

Средняя

Средняя

Средняя

Высокая

Простота связывания

+

-

Переменная

+

Переменная

+

Перенос устройств

-

+

+

+

+

Автоматически

Использование структуры сети

-

-

+

-

+

Автоматически

Несколько VLAN для одного порта (поддержка концентраторов и серверов)

-

+

+

+

+

Автоматически

Возможность включения устройства в несколько VLAN

-

Возможно

Возможно

Возможно

Возможно

Автоматически

Уровень

Высокий

Минимальный

Минимальный

Минимальный

Минимальный

Выбирается

 

Преимущества

IEEE 802.1Q

IEEE 802.1Q — открытый стандарт, который описывает процедуру тегирования трафика для передачи информации о принадлежности к VLAN.

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

802.1Q помещает внутрь фрейма тег, который передает информацию о принадлежности трафика к VLAN.

Размер тега — 4 байта. Он состоит из таких полей:

При использовании стандарта Ethernet II, 802.1Q вставляет тег перед полем «Тип протокола». Так как фрейм изменился, пересчитывается контрольная сумма.

В стандарте 802.1Q существует понятие Native VLAN. По умолчанию это VLAN 1. Трафик, передающийся в этом VLAN, не тегируется.

Формат кадра

 

Вставка тега 802.1Q в кадр Ethernet-II

 

Настройка VLAN в Linux

Необходима поддержка 802.1Q ядром Linux:

# modprobe 8021q

Выключить интерфейс:

# /sbin/ifconfig eth0 down

Теперь поднимем его, но уже без адреса:

# /sbin/ifconfig eth0 0.0.0.0 up

Затем говорим какие VID будем пропускать. Для этого используем программу vconfig. В результате будут созданы виртуальные интерфейсы с именами, содержащими VLAN ID по типу  интерфейс.VLAN-ID (напр. Eh0.20):

# /sbin/vconfig add eth0 2

# /sbin/vconfig add eth0 3

# /sbin/vconfig add eth0 4

# /sbin/vconfig add eth0 5

Далее, назначаем каждому интерфейсу свой IP-адрес:

# /sbin/ifconfig eth0.2 10.х.х.х netmask 255.255.255.0 up

# /sbin/ifconfig eth0.3 192.168.0.х netmask 255.255.255.0 up

# /sbin/ifconfig eth0.4 192.168.1.х netmask 255.255.255.0 up

# /sbin/ifconfig eth0.5 х.х.х.х netmask 255.255.255.224 up

Если маршрут по умолчанию смотрит в один из VLAN'ов, нужно его задать:

# /sbin/route add default gw 192.168.1.1

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

Для управления прохождением трафика между VLAN'ами можно использовать стандартные механизмы ядра Linux, такие как маршрутизация, iptables и QoS.

Просматривать информацию о VLAN-подынтерфейсах в Linux можно через /proc:

%# cat /proc/net/vlan/eth0.2

eth0.2  VID: 2      REORDER_HDR: 1  dev->priv_flags: 1

         total frames received:     53973265

          total bytes received:   1075877000

      Broadcast/Multicast Rcvd:       397878

 

      total frames transmitted:     41904604

       total bytes transmitted:   2333267429

            total headroom inc:            0

           total encap on xmit:     41904604

Device: eth0

INGRESS priority mappings: 0:0  1:0  2:0  3:0  4:0  5:0  6:0 7:0

EGRESSS priority Mappings:

VLAN Trunk

В случае, если надо объединить VLAN-сети, соединенные между собой через несколько коммутаторов, то необходимо их объединить:

 

Ethernet bonding

Ethernet bonding — это объединение двух или более физических сетевых интерфейсов в один виртуальный для обеспечения отказоустойчивости и повышения пропускной способности.

Опции драйвера bonding

Опции модуля могут быть заданы как аргументы командной строки или указаны в файлах конфигурации /etc/modules.conf или /etc/modprobe.conf.

Существуют два способа диагностирования (мониторинга) связанности:

miimon — определяет как часто производится мониторинг MII. 0 – мониторинг отключён (используется по-умолчанию). Рекомендуемое значение 100 мс.

arp_interval — с какой периодичностью в миллисекундах осуществлять ARP-мониторинг. Значение 0 — ARP-мониторинг выключен.

arp_ip_target — IP-адрес, по которому осуществлять ARP-мониторинг (в случае если значение arp_interval больше 0). Если с данного адреса нет ARP-ответов, значит канал, по которому посылались запросы, не работает.

downdelay — задержка в миллисекундах с момента, как было обнаружено, что связь утеряна, до момента, как данный канал перестанет быть активным. Задержка нужна, чтобы отфильтровывать кратковременные сбои. Например, после переключения кабеля. По-умолчанию используется значение 0 – нет задержки.

updelay — то же самое, что и downdelay, но определяет задержку по включению. На случай, когда сетевой коммутатор (switch) или концентратор (hub) "не до конца включились", напряжение на порт подано, а пакеты не принимаются.

max_bonds — определяет количество bond-интерфейсов, которые будут созданы при загрузке одного модуля. Значение по-умолчанию — 1.

primary — указывает подчинённый интерфейс (eth0, eth1 и прочие), который будет основным в связке. Указанный интерфейс всегда будет работать в активном режиме, когда это возможно. Особенно актуально это, когда скорость одного интерфейса больше других. Опция primary доступна только для режима active-backup.

primary_reselect — определяет условия выбора активного подчинённого интерфейса:

Параметр primary_reselect не учитывается в двух случаях:

Режимы bonding

( source XOR destination ) % n_slaves

где:

Интерфейс, отправляющий пакет зависит от MAC-адреса получателя, каждый физический сетевой интерфейс отправляет пакеты только определённой группе MAC-адресов, тем самым обеспечивая распределение нагрузки.

Необходимые условия выполнения:

Необходимые условия выполнения:

Загрузка модуля

# modprobe bonding max_bonds=1 mode=1 primary=eth0 miimon=100 downdelay=3000 updelay=1000

Со следующими параметрами:

Проверить, что модуль появился:

# lsmod | grep bonding

bonding               63220   0

Установка bonding в Slackware

В большинстве современных дистрибутивов, драйверы уже присутствуют в ядре Linux в качестве модулей и для удобной работы с Ethernet bonding, желательно установить утилиту управления ifenslave. Если таковой утилиты в дистрибутиве нет, то её можно собрать:

# cd /usr/src/linux/Documentation/networking

# gcc -Wall -O -I/usr/src/linux/include ifenslave.c -o ifenslave

# cp ifenslave /sbin/

 

Для автоматического запуска в Slackware можно добавить скрипт rc.bond:

#!/bin/sh

#

        case "$1" in

          'start')

            echo "start bond0"

            #modprobe bonding mode=balance-alb miimon=100

            modprobe bonding mode=balance-rr miimon=100

            modprobe tg3

            ifconfig bond0 up

            ifenslave bond0 eth0

            ifenslave bond0 eth1

            #TODO need to be changed

            ifconfig bond0 hw ether 00:16:3e:aa:aa:aa

          ;;

          'stop')

            ifconfig bond0 down

            rmmod bonding

            rmmod tg3

          ;;

          *)

            echo "Usage: $0 {start|stop}"

          ;;

        esac

И добавить строку запуска скрипта в файл rc.M после строки «# Initialize the networking hardware»:

# If script rc.bond is executeable then start it

if [ -x /etc/rc.d/rc.bond ]; then

  . /etc/rc.d/rc.bond start

fi

Надо учесть, что физические Ethernet-карты не должны иметь сетевых адресов:

IPADDR[0]=""

NETMASK[0]=""

USE_DHCP[0]=""

DHCP_HOSTNAME[4]=""

 

IPADDR[1]=""

NETMASK[1]=""

USE_DHCP[1]=""

DHCP_HOSTNAME[1]=""

В файл rc.inet1.conf перед строками настройки маршрута по-умолчании надо добавить следующее:

IFNAME[4]="bond0"

IPADDR[4]="XXX.XX.XX.XX"

NETMASK[4]="255.255.255.0"

USE_DHCP[4]=""

DHCP_HOSTNAME[4]=""

Посмотреть настройку можно в каталоге /proc:

# cat /proc/net/bonding/bond0

 

MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:e0:81:5e:9e:c4

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:e0:81:5e:9e:c5

 

Кроме этого можно воспользоваться программой mii-tool.