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

На схеме изображен виртуальный коммутатор switch A, к которому подключены физический и внутренний (сервисный) интерфейсы вычислительного узла.   
Основные объекты сетевой подсистемы
Виртуальные коммутаторы
Виртуальные коммутаторы представляют собой виртуальные изолированные сетевые устройства на уровне ОС вычислительного узла. Используются для подключения к ним интерфейсов всех типов для построения сетевой инфраструктуры SpaceVM.
Виртуальные коммутаторы могут быть трех типов:
- «uplink»: к виртуальному коммутатору этого типа можно подключать только физические или агрегированные интерфейсы;
- «mixed»: к виртуальному коммутатору этого типа можно подключать любые интерфейсы, кроме интерфейсов виртуальных машин;
- «virtual»: к виртуальному коммутатору этого типа можно подключать только сетевые интерфейсы виртуальных машин.
Тип коммутаторов virtual
Виртуальные коммутаторы типа «virtual» создаются автоматически и только при создании и в составе виртуальной сети.
STP
На виртуальных коммутаторах типов «uplink» и «mixed» протоколы 
семейства STP(Spanning Tree Protocol) выключены, а также происходит 
фильтрация транзита пакетов BPDU (Bridge Protocol Data Units).
Для проверки необходимо из CLI-интерфейса вычислительного узла 
выполнить команду: tcpdump -i "интерфейс" stp -direction='out', 
где "интерфейс" - это имя физического интерфейса узла в состоянии UP.
В выводе на экран не должно быть уведомлений о пакетах STP. 
Это означает отсутствие исходящих BPDU с портов 
виртуальных коммутаторов.
Коммутаторы по-умолчанию
- Коммутатор default типа «mixed» -- это коммутатор СУ SpaceVM. К нему подключены физический интерфейс и виртуальный сетевой интерфейс управления mgmt.
- Коммутатор blackhole типа «mixed» - это коммутатор -- заглушка. Не имеет никаких подключений. В некоторых случаях используется для подключения к нему сетевых интерфейсов виртуальных машин.
Создать виртуальный коммутатор можно двумя способами:
1. перейти в раздел Сети -- Сетевые настройки основного меню и далее выполнить:
    - выбрать нужную подсеть управления;
    - выбрать пункт меню Виртуальные коммутаторы;
    - выбрать целевой вычислительный узел и в открывшемся окне 
      нажать кнопку Добавить виртуальный коммутатор;
2. перейти в раздел Серверы основного меню и далее выполнить:
    - выбрать целевой сервер; 
    - выбрать пункт меню Сети -- Виртуальные коммутаторы и 
      в открывшемся окне нажать на кнопку Добавить 
      виртуальный коммутатор.
Группы портов
Представляют собой объекты для группировки интерфейсов по совокупности параметров VLAN и MTU (для внутренних интерфейсов и интерфейсов виртуальных машин) и привязываются к виртуальным коммутаторам.
Порт-группы могут быть четырех типов:
- «internal»: предназначены для внутренних интерфейсов;
- «uplink»: предназначены для физических и агрегированных интерфейсов;
- «kernel»: предназначены для внутренних интерфейсов;
- «virtual»: предназначены для интерфейсов виртуальных машин.
Примечания
- Порт-группы типа «kernel» создаются автоматически. Их нельзя создать или удалить. Помимо этого, в порт-группы типа «kernel» нельзя подключить интерфейсы, созданные пользователем.
- Порт-группы типа «virtual» создаются автоматически при создании виртуальных сетей.
При создании или изменении параметров порт-группы доступны следующие режимы VLAN:
- none;
- access;
- trunk;
- native-tagged;
- native-untagged.
Также предоставлена возможность привязки порт-группы к нескольким виртуальным коммутаторам. Создание порт-групп производится из окна информации виртуального коммутатора с помощью кнопки Добавить порт-группу.
Физические интерфейсы
Данный вид интерфейсов в SpaceVM является представлением физических сетевых интерфейсов сервера. Объекты этого типа нельзя создать или удалить, используя Web-интерфейс или интерфейс командной строки. Информация о существующих физических интерфейсах собирается автоматически на этапе добавления вычислительного узла и хранится на протяжении всего времени существования объекта вычислительного узла. Собираемая информация включает в себя сведения о производителе сетевой карты, используемом драйвере, максимальной поддерживаемой величине MTU, скорости соединения (при условии, что сетевой интерфейс подключен) и др.
Однако, пользователю предоставляется возможность настройки некоторых параметров и состояния физических интерфейсов:
- изменение величины MTU интерфейса;
- включение/выключение «promiscuous» (неразборчивого) режима интерфейса;
- включение/выключение интерфейса (перевод в состояние UP/DOWN);
- включение/выключение SR-IOV интерфейса (при условии, что сетевой адаптер поддерживает эту функцию).
Подключение физических интерфейсов может быть осуществлено двумя способами:
1. открыть окно информации о целевом виртуальном коммутаторе -- нажать кнопку Подключить интерфейс -- выбрать тип интерфейса «physical»;
2. открыть окно информации о целевом физическом интерфейсе -- нажать кнопку 
Подключение -- выбрать целевые виртуальный коммутатор и порт-группу.
Агрегированные интерфейсы
Данный вид интерфейсов в SpaceVM является представлением объединенных с целью:
- объединения пропускной способности;
- резервирования физических интерфейсов.
Объекты этого типа можно создать, удалить или модифицировать используя Web-интерфейс.
Создание агрегированного интерфейса может быть осуществлено 
двумя способами:
1. открыть окно информации о целевом виртуальном коммутаторе -- нажать кнопку Подключить интерфейс -- выбрать тип интерфейса «aggregated» -- следовать шагам 
мастера добавления интерфейса;
2. на целевом сервере перейти в пункт меню Сети -- Агрегированные 
интерфейсы -- нажать кнопку Добавить.   
При создании или модификации параметров агрегированного интерфейса предоставляется выбор следующих режимов агрегации:
- «active-backup»: используется для резервирования подключения, в этом режиме работает один из физических интерфейсов, включенных в агрегацию, а остальные будут задействованы в случае отказа активного;
- «balance-slb»: используется для объединения пропускной способности нескольких физических интерфейсов и балансировки нагрузки на них;
- «balance-tcp»: используется для объединения пропускной способности нескольких физических интерфейсов и балансировки нагрузки на них, однако, в отличие от «balance-slb», использует протокол LACP для отслеживания состояния подключения.
Внимание
Для работы агрегации в режиме «balance-tcp» необходима настройка порт-групп со стороны 
физического коммутатора.
Для работы агрегации в режимах «active-backup» и «balance-slb» порты физического 
коммутатора не должны быть объединены в порт-группу.  
Внутренние (сервисные) интерфейсы
Данный вид интерфейсов в SpaceVM представляет собой виртуальное сетевое устройство, используется для обеспечения доступности вычислительных узлов на сетевом уровне: этим интерфейсам назначаются IP-адреса. При создании внутреннего интерфейса выбирается виртуальный коммутатор, в который интерфейс будет подключен, параметры интерфейса:
- режим получения адреса: динамический или статический;
- IP-адрес;
- маска подсети;
- MAC-адрес;
- порт-группа, которой будет принадлежать интерфейс.
Внимание
При выборе динамического режима получения адреса интерфейсом, необходимо убедиться, 
что к выбранному для подключения виртуальному коммутатору также подключен физический 
или агрегированный интерфейс. В противном случае созданный внутренний интерфейс не 
будет иметь доступ к сети и, как следствие, не сможет получить IP-адрес от 
DHCP-сервера.
Также необходимо убедиться, что настройки VLAN выбранной порт-группы и настройки VLAN 
порт-группы, к которой относится физический или агрегированный интерфейс, указанный 
выше, не будут препятствовать прохождению сетевого трафика, порождаемого создаваемым 
внутренним интерфейсом.
Создание внутреннего интерфейса может быть осуществлено двумя способами:
- открыть окно информации о целевом виртуальном коммутаторе -- нажать кнопку Подключить интерфейс -- выбрать тип интерфейса «internal» -- следовать шагам мастера добавления интерфейса
- на целевом сервере перейти в пункт меню Сети -- Внутренние интерфейсы -- нажать кнопку Добавить.
MAC-адреса
Первые 3 октета генерируемых MAC-адресов (Organizational Unique Identifier (OUI)) контроллером SpaceVM 
для виртуальных и внутренних интерфейсов везде одни и те же: 02:ff:f0.
4 октет в десятичной системе счисления генерируется случайно от 0 до 127 при установке контроллера и доступен для изменения пользователем. При генерации он переводится в шестнадцатеричную систему счисления.
Примеры
- 4 октет 0: генерируемый MAC-адрес 02:ff:f0:00:68:33;
- 4 октет 22: генерируемый MAC-адрес 02:ff:f0:16:b4:82;
- 4 октет 99: генерируемый MAC-адрес 02:ff:f0:63:6a:b0.
Командой controller macs в CLI можно увидеть все имена и MAC-адреса внутренних интерфейсов,
физических интерфейсов, виртуальных интерфейсов, виртуальных функций.
Файл hosts (локальная база данных доменных имен)
Активный контроллер SpaceVM управляет записями в /etc/hosts по всей инфраструктуре, то есть для каждого
внутреннего интерфейса каждого узла генерируется отдельный файл в каталоге /etc/hosts.d, и результирующе 
на их основе (плюс файлы в каталоге /etc/hosts.d.local, плюс текущему hostname узла) генерируется целевой файл /etc/hosts. Контроллер циклично копирует файлы из каталога /etc/hosts.d
по всем узлам, на каждом из них при изменении генерируется целевой файл /etc/hosts.
Команда hosts в CLI выводит все записи в /etc/hosts.
Команда net hosts update в CLI правит все записи в /etc/hosts согласно списку файлов в /etc/hosts.d и текущему
hostname узла.
Также есть возможность добавить/удалить свои записи командой net hosts (это тоже будут отдельные файлы, 
но в каталоге /etc/hosts.d.local). С контроллера можно добавить записи сразу на всех узлах, используя 
стандартную команду node nodes cli, например, node nodes_cli 'net hosts add myhostname 192.168.11.107'.
На контроллере есть дополнительная команда CLI controller repair_hosts (проверяет и обновляет соответствия файла 
/etc/hosts таблице внутренних интерфейсов базы данных контроллера).
Описание параметров вывода команды "net show bonds"
- Name- имя интерфейса.
- Bond mode- режим работы бонда.
Возможные режимы описаны в Агрегированных интерфейсах:
- balance-tcp;
- balance-slb;
- active-backup.
- 
Lacp- отображает поведение протокола управления агрегацией каналов (LACP). Только некоторые коммутаторы поддерживают LACP. Если ваш коммутатор не поддерживает LACP, то используйте bond_mode=balance-slb или bond_mode=active-backup. Возможны варианты:- active;
- passive;
- off.
 
- 
Lacp time- устанавливает период проверки работоспособности (heartbeat) к 1 секунде (fast) или 30 секундам (slow). По умолчанию - slow. Возможны варианты:- fast;
- slow.
 
- 
Fallback- определяет поведение бонда openvswitch в режиме LACP. Если коммутатор не поддерживает LACP, то установка этого параметра в значение true позволяет вернуться к active-backup режиму работы. Если для параметра установлено значение false, бонд будет отключён. В обоих случаях, когда коммутатор настроен на использование режима LACP, бонд будет использовать LACP протокол. Возможны варианты:- true;
- false.
 
- 
Members- имена интерфейсов, входящих в бонд.
- 
Connected to- виртуальный коммутатор, которому принадлежит бонд.
- 
Updelay- количество миллисекунд, в течении которых соединение должно быть активным, перед тем как будет принято решение, что интерфейс поднят.
- 
Downdelay- количество миллисекунд, в течении которых соединение находится в выключенном состоянии, перед тем как будет принято решение, что интерфейс выключен. Значение "0" отключает интерфейс немедленно.
- 
Lacp_status- отображает состояние протокола LACP. Сконфигурирован или нет.
- 
Active member mac- MAC-адрес и имя активного интерфейса в бонде.
- 
Bond member- имя интерфейса, участвующего в бонде.
- 
State- состояние интерфейса (включен/выключен).
- 
Status- статус интерфейса (активный/неактивный член бонда).
- 
May_enable- статус возможности включения интерфейса.

