View on GitHub

Network Technologies Labolatories

Practical materials for learning Network Technologies

Лабораторная работа №6 — Работа с протоколом STP


Быстрый поиск


Цель лабораторной — познакомить изучающего с основами протокола STP

Задачи лабораторной:


Протокол STP

Протокол STP (Spanning Tree Protocol) предназначен для устранения петель в топологиях с избыточными соединениями на интерфейсном (канальном, L2) уровне путём построения полного связного дерева. Из подзадач протокола можно выделить определение корневого коммутатора сети и приоритетное отключение избыточных каналов связи.

Метрикой выбора канала между узлами в STP является стоимость пути (path cost), которая рассчитывается на основе пропускной способности канала

Кратко работу протокола можно описать следующей последовательностью действий:


Пример настройки STP

Рассмотрим систему из двух коммутаторов, объединённых двумя каналами связи, и изучим на ней возможности работы с протоколом:

Для работы создайте 2 клона согласно топологии сети. Для создания соединений между машинами необходимо в VirtualBox настроить сетевые интерфейсы (описание настройки подключения находится в разделе настройки сетевых подключений):


Настройка коммутаторов

📍 1. С помощью команд управления интерфейсами создайте на коммутаторах first и second интерфейсы типа bridge и свяжите с ними все используемые физические интерфейсы

@first

[root@first ~]# ip link add br0 type bridge
[root@first ~]# ip link set eth1 master br0
[root@first ~]# ip link set eth2 master br0
[root@first ~]#

@second

[root@second ~]# ip link add br0 type bridge
[root@second ~]# ip link set eth1 master br0
[root@second ~]# ip link set eth2 master br0
[root@second ~]#

📍 2. C помощью команд управления интерфейсами включите на коммутаторах все используемые интерфейсы

@first

[root@first ~]# ip link set br0 up
[root@first ~]# ip link set eth1 up
[root@first ~]# ip link set eth2 up
[root@first ~]#

@second

[root@second ~]# ip link set br0 up
[root@second ~]# ip link set eth1 up
[root@second ~]# ip link set eth2 up
[root@second ~]#

Параметры сетевого моста

📍 1. С помощью команды управления интерфейсами на first выведите подробную информацию об интерфейсе br0

@first

[root@first ~]# ip -d link show br0
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default ql
en 1000
   link/ether 08:00:27:26:29:ce brd ff:ff:ff:ff:ff:ff promiscuity 0 allmulti 0 minmtu 68 maxmtu 65535
   bridge forward_delay 1500 hello_time 200 max_age 2000 ageing_time 30000 stp_state 0 priority 32768
   vlan_filtering 0 vlan_protocol 802.1Q bridge_id 8000.8:0:27:26:29:ce designated_root 8000.8:0:27:26:29:ce
   root_port 0 root_path_cost 5 topology_change 0 topology_change_detected 0 hello_timer 0.00 tcn_timer 0.00
   topology_change_timer 0.00 gc_timer 31.90 fdb_n_learned 2 fdb_max_learned 0 vlan_default_pvid 1
   vlan_stats_enabled 0 vlan_stats_per_port 0 group_fwd_mask 0 group_address 01:80:c2:00:00:00 mcast_snooping 1
   no_linklocal_learn 0 mcast_vlan_snooping 0 mst_enabled 0 mcast_router 1 mcast_query_use_ifaddr 0
   mcast_querier 0 mcast_hash_elasticity 16 mcast_hash_max 4096 mcast_last_member_count 2 mcast_startup_query_count 2
   mcast_last_member_interval 100 mcast_membership_interval 26000 mcast_querier_interval 25500
   mcast_query_interval 12500 mcast_query_response_interval 1000 mcast_startup_query_interval 3125
   mcast_stats_enabled 0 mcast_igmp_version 2 mcast_mld_version 1 nf_call_iptables 0 nf_call_ip6tables 0
   nf_call_arptables 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 65536
   tso_max_segs 65535 gro_max_size 65536 gso_ipv4_max_size 65536 gro_ipv4_max_size 65536
[root@first ~]#

ℹ В работе протокола STP учитываются несколько параметров данного сетевого моста:

ℹ Работа протокола подразумевает постоянную передачу служебных сообщений между коммутаторами (BPDU) для синхронизации состояний. За скорость синхронизации отвечают параметры:


Работа с STP

ℹ На данный момент в настраиваемых нами системах протокол STP отключён. Оба коммутатора считают себя единственными (и потому корневыми) коммутаторами в системе.

📍 1. С помощью команды bridge link на коммутаторах выведите параметры всех связанных с сетевым мостом интерфейсов

@first

[root@first ~]# bridge link
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 5
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 5
[root@first ~]#

@second

[root@second ~]# bridge link
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 5
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 5
[root@second ~]#

📍 2. С помощью команды управления интерфейсами выведите информацию о параметрах сетевого моста. Обратите внимание на параметры stp_state, priority, bridge_id, designated_port, root_port

@first

[root@first ~]# ip -d link show br0 | grep root
   bridge <...> stp_state 0 priority 32768 <...>
   bridge_id 8000.8:0:27:26:29:ce designated_root 8000.8:0:27:26:29:ce root_port 0 <...>
[root@first ~]#

@second

[root@second ~]# ip -d link show br0 | grep root
   bridge <...> stp_state 0 priority 32768 <...>
   bridge_id 8000.8:0:27:5a:86:5c designated_root 8000.8:0:27:5a:86:5c root_port 0 <...>
[root@second ~]#

📍 3. С помощью команды изменения параметров интерфейса :new: ip link set dev br0 type bridge stp_state 1 на коммутаторах включите протокол STP. С помощью команд управления интерфейсами и сетевым мостом выведите параметры интерфейсов и моста:

@first

[root@first ~]# ip link set dev br0 type bridge stp_state 1
<Some time later>

[root@first ~]# ip -d link show br0 | grep root
   bridge <...> stp_state 1 priority 32768 <...>
   bridge_id 8000.8:0:27:26:29:ce designated_root 8000.8:0:27:26:29:ce root_port 0 <...>

[root@first ~]# bridge link
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 5
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 5
[root@first ~]#

@second

[root@second ~]# ip link set dev br0 type bridge stp_state 1
<Some time later>

[root@second ~]# ip -d link show br0 | grep root
   bridge <...> stp_state 1 priority 32768 <...>
   bridge_id 8000.8:0:27:5a:86:5c designated_root 8000.8:0:27:26:29:ce root_port 1 <...>

[root@second ~]# bridge link
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 5
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state blocking priority 32 cost 5
[root@second ~]#

ℹ Поскольку приоритеты коммутаторов одинаковы, корневым автоматически становится коммутатор с меньшим bridge_id. У зависимого коммутатора при этом меняются значения designated_root и root_port.

:warining: ВАЖНО: поскольку MAC-адреса созданных клонов могут отличаться от представленных в лабораторной, внимательно следите за обозначениями виртуальных машин, для которых выполняются команды. Для удобства в тексте далее будут использоваться обозначения «корневой коммутатор» и «зависимый коммутатор».

ℹ Для смены корневого коммутатора можно изменить приоритет.

📍 4. С помощью команды изменения параметров интерфейса на зависимом коммутаторе установите новое значение приоритета моста.

@second

[root@second ~]# ip link set dev br0 type bridge priority 4096
[root@second ~]# ip -d link show br0 | grep priority
   bridge <...> priority 4096 <...>
   bridge_id 1000.8:0:27:5a:86:5c designated_root 1000.8:0:27:5a:86:5c root_port 0 <...>
[root@second ~]# bridge link
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 5
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state listening priority 32 cost 5
<Some time later>
[root@second ~]# bridge link
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 5
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 5

@first

<Some time later>
[root@first ~]# ip -d link show br0 | grep priority
   bridge <...> priority 32768 <...>
   bridge_id 8000.8:0:27:26:29:ce designated_root 1000.8:0:27:5a:86:5c root_port 1 <...>
[root@first ~]# bridge link
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 5
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state blocking priority 32 cost 5
[root@first ~]#

ℹ После синхронизации первый коммутатор стал корневым, а второй — зависимым.

ℹ Для управления каналами передачи данных используются настройки приоритета портов и «стоимости» каналов.

📍 5. С помощью команды изменения параметров интерфейса на корневом коммутаторе установите новое значение приоритета связанного порта eth1.

@second

[root@second ~]# bridge link set dev eth1 priority 63
[root@second ~]# bridge link
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 63 cost 5
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 5
[root@second ~]#

ℹ На зависимом коммутаторе поменяются статусы каналов, активным станет канал с меньшим значением priority у соседа.

@first

<Some time later>
[root@first ~]# ip -d link show br0 | grep priority
   bridge <...> priority 32768 <...>
   bridge_id 8000.8:0:27:26:29:ce designated_root 1000.8:0:27:5a:86:5c root_port 2 <...>
[root@first ~]# bridge link
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state blocking priority 32 cost 5
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state listening priority 32 cost 5
[root@first ~]#

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

ℹ Статусы каналов вновь поменяются, использоваться будет канал с меньшей стоимостью

@first

[root@first ~]# bridge link set dev eth2 cost 20000
[root@first ~]# bridge link
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state listening priority 32 cost 5
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state blocking priority 32 cost 20000
<Some time later>
[root@first ~]# bridge link
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 5
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state blocking priority 32 cost 20000
[root@first ~]#

Самостоятельная работа

📍 Для работы необходимо 5 клонов согласно топологии сети. Для создания соединений между машинами необходимо в VirtualBox настроить сетевые интерфейсы (описание настройки подключения находится в разделе настройки сетевых подключений):


Варианты заданий

Группа Задание
1 Настроить устройства (см. топологию) так, чтобы корневым коммутатором было устройство R1, а корневым портом на R5 был eth1
2 Настроить устройства (см. топологию) так, чтобы корневым коммутатором было устройство R2, а корневым портом на R4 был eth3
3 Настроить устройства (см. топологию) так, чтобы корневым коммутатором было устройство R3, а корневым портом на R5 был eth2
4 Настроить устройства (см. топологию) так, чтобы корневым коммутатором было устройство R4, а корневым портом на R1 был eth3
5 Настроить устройства (см. топологию) так, чтобы корневым коммутатором было устройство R5, а корневым портом на R3 был eth1

📍 Запустить отчёты на каждой машине и выполнить соответствующие команды:

📍 Полученные отчёты report.06.r1, report.06.r2, report.06.r3, report.06.r4, report.06.r5 перенести из виртуальной машины и прислать преподавателю с подписью выполненного варианта.