Skip to main content

Case 3 - sw1-b и sw2-b

Настройка sw1-b

# sw1-b и sw2-b базируются на операционной системе Linux
hostnamectl set-hostname sw1-b.notmy.domain.name; exec bash
# Указываем имя хоста в файле network задав параметр HOSTNAME
nano /etc/sysconfig/network
HOSTNAME=sw1-b.notmy.domain.name
# Проверяем что имя задалось верно
hostname -f
#----------------------------------------------
# Для установки пакетов openvswitch необходим доступ в сеть Интернет
# Временно зададим сетевые настройки (Убедитесь что ens18 это интерфейс в сторону rtr-b)
ip link add link ens18 name ens18.300 type vlan id 300
ip link set dev ens18.300 up
ip addr add 172.20.30.1/24 dev ens18.300
ip route add 0.0.0.0/0 via 172.20.30.254
echo "nameserver 77.88.8.8" > /etc/resolv.conf

# Устанавливаем пакет
apt-get update && apt-get install -y openvswitch
# Добавляем в автозагрузку
systemctl enable --now openvswitch

# Чтобы настройки openvswitch не удалялись:
sed -i "s/OVS_REMOVE=yes/OVS_REMOVE=no/g" /etc/net/ifaces/default/options
# Перезагрузить сервер, так быстрее сбросить временные сетевые настройки
reboot
#----------------------------------------------
# Допустим интерфейсы выглядят так:
ens18 - интерфейс в сторону rtr-b;
ens19 - интерфейс в строну dc-b;
ens20 - интерфейс в сторону sw2-b;
ens21 - интерфейс в сторону sw2-b;

# Интерфейсы нужно поднять. Интерфейсы управляются etcnet, файл по умолчанию выглядит так:
#СОдержимое файла options командой "cat /etc/net/ifaces/ens18/options"
TYPE=eth
BOOTPROTO=static
# Этот файл options и копируется в остальные интерфейсы, если у них нет этого конфига
cp -r /etc/net/ifaces/ens18 /etc/net/ifaces/ens19
cp -r /etc/net/ifaces/ens18 /etc/net/ifaces/ens20
cp -r /etc/net/ifaces/ens18 /etc/net/ifaces/ens21
# Перезагружаем сеть
systemctl restart network
# Чтобы на sw2-b можно было настроить сеть (ВРЕМЕННО) для установки openvswitch создадим виртуальный свитч:
ovs-vsctl add-br br0
ovs-vsctl add-port br0 ens18
ovs-vsctl add-port br0 ens20

Переходим к настройке sw2-b (шаг1)

Пояснение по STP

Два порта между свитчами не объединяются в мост (LACP/bond)

Два линка между свитчами = петля уровня 2 → кадры кружат бесконечно → шторм широковещательного трафика → сеть падает.

Работа при STP/RSTP: Один линк активен, второй заблокирован STP

  1. Свитчи обмениваются служебными пакетами (BPDU).
    2. Выбирается корневой мост (например sw1-b с приоритетом 0).
    3. Один из двух линков блокируется (статус blocking).
    4. Если активный линк падает — заблокированный включается за 1-2 сек (RSTP).

Целью является показать работу STP/RSTP: где один линк активен, второй заблокирован для предотвращения петель. Обычно такие линки объединяют в LACP-агрегацию для отказоустойчивости без блокировок.

 

# Удаляем временный виртуальный свич
ovs-vsctl del-br br0
#----------------------------------------------
# Создадим коммутатор с именем sw1-b
ovs-vsctl add-br sw1-b
# Добавим интерфейс, направленный в сторону dc-a (ens19) в созданный коммутатор и назначим его в качестве порта доступа (access), указав принадлежность к VLAN 100
ovs-vsctl add-port sw1-b ens19 tag=100
# Интерфейс в сторону rtr-b (ens18) добавляем в созданный коммутатор, но настраиваем как магистральный (trunk) порт
ovs-vsctl add-port sw1-ab ens18 trunk=100,200,300
# Интерфейсы в стороны sw2-b (ens20, ens21) добавляем в созданный коммутатор, но настраиваем как магистральный (trunk) порт
ovs-vsctl add-port sw1-ab ens20 trunk=100,200,300
ovs-vsctl add-port sw1-ab ens21 trunk=100,200,300
# Проверить
ovs-vsctl show
# Включаем модуль ядра отвечающий за тегированный трафик (802.1Q)
modprobe 8021q
echo "8021q" | tee -a /etc/modules

# Запускаем STP на коммутаторе
ovs-vsctl set bridge sw1-ab rstp_enable=true
ovs-vsctl set bridge sw1-ab other_config:stp-protocol=rstp
ovs-vsctl set bridge sw1-ab other_config:rstp-priority=0

# Сетевая подсистема etcnet будет взаимодействовать с openvswitch, для того чтобы корректно можно было назначить  IP-адрес на  интерфейс управления создаём каталог для management интерфейса с именем mgmt
mkdir /etc/net/ifaces/mgmt
nano /etc/net/ifaces/mgmt/options
# Содержимое файла:
TYPE=ovsport
BOOTPROTO=static
CONFIG_IPV4=yes
BRIDGE=sw1-b
VID=300
OVS_EXTRA="set port mgmt vlan_mode=native-untagged tag=300"

# Прописываем адрес и маршрут
echo "172.20.30.1/24" > /etc/net/ifaces/mgmt/ipv4address
echo "default via 172.20.30.254" > /etc/net/ifaces/mgmt/ipv4route
systemctl restart network

Настройка sw2-b

# sw1-b и sw2-b базируются на операционной системе Linux
hostnamectl set-hostname sw2-b.notmy.domain.name; exec bash
# Указываем имя хоста в файле network задав параметр HOSTNAME
nano /etc/sysconfig/network
HOSTNAME=sw2-b.notmy.domain.name
# Проверяем что имя задалось верно
hostname -f

# Временно задаем сетевые настройки для доступа в интернет
ip link add link ens18 name ens18.300 type vlan id 300
ip link set dev ens18.300 up
ip addr add 172.20.30.2/24 dev ens18.300
ip route add 0.0.0.0/0 via 172.20.30.254
echo "nameserver 77.88.8.8" > /etc/resolv.conf

# Установка openvswitch
apt-get update && apt-get install -y openvswitch
systemctl enable --now openvswitch
sed -i "s/OVS_REMOVE=yes/OVS_REMOVE=no/g" /etc/net/ifaces/default/options
reboot

Переходим к настройке sw1-b (шаг2)

# Допустим интерфейсы выглядят так:
ens18 - интерфейс в сторону sw1-b;
ens19 - интерфейс в строну sw1-b;
ens20 - интерфейс в сторону cli2-b;
ens21 - интерфейс в сторону cli1-b;
# Интерфейсы нужно поднять. Интерфейсы управляются etcnet, файл по умолчанию выглядит так:
# /etc/net/ifaces/ens18/options
TYPE=eth
BOOTPROTO=static
# Этот файл options и копируется в остальные интерфейсы, если у них нет этого конфига
cp -r /etc/net/ifaces/ens18 /etc/net/ifaces/ens19
cp -r /etc/net/ifaces/ens18 /etc/net/ifaces/ens20
cp -r /etc/net/ifaces/ens18 /etc/net/ifaces/ens21
# Перезагружаем сеть
systemctl restart network

# Создаем коммутатор
ovs-vsctl add-br sw2-b
# Интерфейс, направленный в сторону cli2-b (ens20)
ovs-vsctl add-port sw2-b ens20 tag=200
# Интерфейс, направленный в сторону cli1-b (ens21)
ovs-vsctl add-port sw2-b ens21 tag=200
# Интерфейсы в стороны sw1-ab (ens18, ens19)
ovs-vsctl add-port sw1-ab ens18 trunk=100,200,300
ovs-vsctl add-port sw1-ab ens19 trunk=100,200,300

modprobe 8021q
echo "8021q" | tee -a /etc/modules

ovs-vsctl set bridge sw2-b rstp_enable=true
ovs-vsctl set bridge sw2-b other_config:stp-protocol=rstp

# Сетевая подсистема etcnet будет взаимодействовать с openvswitch, для того чтобы корректно можно было назначить  IP-адрес на  интерфейс управления создаём каталог для management интерфейса с именем mgmt
mkdir /etc/net/ifaces/mgmt
nano /etc/net/ifaces/mgmt/options
# Содержимое файла:
TYPE=ovsport
BOOTPROTO=static
CONFIG_IPV4=yes
BRIDGE=sw2-b
VID=300
OVS_EXTRA="set port mgmt vlan_mode=native-untagged tag=300"

# Прописываем адрес и маршрут
echo "172.20.30.2/24" > /etc/net/ifaces/mgmt/ipv4address
echo "default via 172.20.30.254" > /etc/net/ifaces/mgmt/ipv4route
systemctl restart network