Организация виртуальной сети (VLAN) на программном коммутаторе Open vSwitch
VLAN - это функция в роутерах и коммутаторах, позволяющая на одном физическом сетевом интерфейсе создать несколько виртуальных локальных сетей.
В документации Open vSwitch предложен самый простой способ добавления существующего порта во VLAN, для этого присваиваем для порта тег (tag) с номером нужного нам VLAN.
ovs-vsctl set port <porn_name> tag=2010 |
И все бы хорошо, но у этого способа есть несколько минусов.
Во-первых, после выключения виртуального сервера, порт и соответствующие ему настройки автоматически удаляются. Во-вторых, определить соотношение порта к виртуальному серверу, при большом их количестве, становится проблемой. В-третьих, даже если мы создадим для каждого виртуального сервера статический порт и присвоим нужные теги, способа подключить виртуальный сервер к существующему порту при использовании KVM и libvirt, нет.
Включим в нужный VLAN не отдельный порт, а весь коммутатор. Наш главный, родительский (ovs-br0) мы не изменяем, а создаем необходимо количество других в нужных нам VLAN-ах и подключаем их к главному, как порты.
# ovs-vsctl add-br <новый_дочерний_мост> <родительский_мост> <VLAN ID> |
Данная команда создает виртуальный коммутатор ovs-vlan2010
, подключает к основному, как порт и помещает его в VLAN с номером 2010
.
Команда ovs-vsctl show
дополнительно будет показывать теги каждого порта, определяя тем самым его принадлежность к VLAN.
Посмотреть в каком VLAN-е находится конкретный коммутатор:
# ovs-vsctl br-to-vlan <имя_коммутатора> |
Посмотреть имя родительского коммутатора:
# ovs-vsctl br-to-parent <имя_коммутатора> |
Подключаем новую суть через libvirtd
Создаем xml-файл с конфигурацией новой сети ovs-network.xml
:
<network> |
Создаем сеть.
virsh net-define ovs-network.xml |
Добавляем в автозапуск.
virsh net-autostart ovs-network |
Запускаем сеть.
virsh net-start ovs-network |
Для того, чтобы перевести тот или иной виртуальный сервер в нужный нам VLAN, добавляем например portgroup='Vlan2010'
в XML:
<interface type='network'> |