# VSTP

![Схема сети](https://1953625668-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFMJhMiVjTLWfbfC-S4%2F-MXXz0f0uEnZ9G1Ikhwd%2F-MXXzOZJh8aYs2lf4TbC%2F%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png?alt=media\&token=c08f807d-6962-4377-be19-f8d67770139c)

Тут всё аналогично. Можно сразу приступать к настройке. Отличие будет только в том, что для каждого VLAN'а мы будем отдельно указывать Bridge-Priority.

{% code title="Earth" %}

```
protocols {
    vstp {
        bpdu-block-on-edge;
        vlan 100 {
            bridge-priority 0;
        }
        vlan 200 {
            bridge-priority 0;
        }
        vlan all {
            interface xe-0/0/2 {
                edge;
            }
            interface all;
        }
    }
}
```

{% endcode %}

Все настройки интерфейсов остаются такие же, как и в RSTP. Что тут нового? Ну первое, что мы видим, это настройка Bridge-Priority для каждого VLAN, для которого нужно. Также видно, что для всех вланов мы включили все интерфейсы, а xe-0/0/2 указали как Edge (Аналог PortFast в Cisco) и включили bpdu-block-on-edge (BPDU-Guard в Cisco). Также стоит заметить, что более точный конфиг переписывает менее точный. Например, для VLAN 100 и 200 Bridge-Priority меняется, а для остальных вланов остаётся стандартным.

Проверим как там обстоят дела с корневыми коммутаторами:

```
root@Earth# run show spanning-tree bridge detail vlan-id 100
STP bridge parameters
Routing instance name               : GLOBAL
Enabled protocol                    : RSTP

STP bridge parameters for VLAN 100
  Root ID                           : 100.02:05:86:71:d7:02
  Hello time                        : 2 seconds
  Maximum age                       : 20 seconds
  Forward delay                     : 15 seconds
  Message age                       : 0
  Number of topology changes        : 2
  Time since last topology change   : 692 seconds
  Local parameters
    Bridge ID                       : 100.02:05:86:71:d7:02
    Extended system ID              : 100
    Hello time                      : 2 seconds
    Maximum age                     : 20 seconds
    Forward delay                   : 15 seconds
    Path cost method                : 32 bit

{master:0}[edit]
root@Earth# run show spanning-tree bridge detail vlan-id 200
STP bridge parameters
Routing instance name               : GLOBAL
Enabled protocol                    : RSTP

STP bridge parameters for VLAN 200
  Root ID                           : 200.02:05:86:71:d7:02
  Hello time                        : 2 seconds
  Maximum age                       : 20 seconds
  Forward delay                     : 15 seconds
  Message age                       : 0
  Number of topology changes        : 3
  Time since last topology change   : 692 seconds
  Local parameters
    Bridge ID                       : 200.02:05:86:71:d7:02
    Extended system ID              : 200
    Hello time                      : 2 seconds
    Maximum age                     : 20 seconds
    Forward delay                   : 15 seconds
    Path cost method                : 32 bit
```

Сравниваем Bridge ID и Root-ID, видим, что для 100 и 200 VLAN он одинаковый, значит настройки верны. Может остаться вопрос: "Почему мы настраивали Bridge-Priority 0, а видим, что он равен 100 и 200 для соответствующих вланов?" Тут всё верно, VSTP добавляет к приоритету номер VLANа.

Теперь посмотрим порты:

```
root@Earth# run show spanning-tree interface xe-0/0/2 detail

Spanning tree interface parameters for VLAN 100

Interface name                 : xe-0/0/2
Port identifier                : 128.490
Designated port ID             : 128.490
Port cost                      : 2000
Port state                     : Forwarding
Designated bridge ID           : 100.02:05:86:71:d7:02
Port role                      : Designated
Link type                      : Pt-Pt/EDGE
Boundary port                  : NA
```

Тут тоже всё в порядке. Не смотря на то, что интерфейс включен для всех вланов. Так происходит из-за того, что на самом интерфейсе накинут только 100 VLAN.

Пинги:

```
root@Moon:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:50:00:00:09:00 brd ff:ff:ff:ff:ff:ff
    inet 7.7.7.7/24 brd 7.7.7.255 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::250:ff:fe00:900/64 scope link
       valid_lft forever preferred_lft forever
root@Moon:~# ping 7.7.7.8 -c 5
PING 7.7.7.8 (7.7.7.8) 56(84) bytes of data.
64 bytes from 7.7.7.8: icmp_seq=1 ttl=64 time=608 ms
64 bytes from 7.7.7.8: icmp_seq=2 ttl=64 time=117 ms
64 bytes from 7.7.7.8: icmp_seq=3 ttl=64 time=225 ms
64 bytes from 7.7.7.8: icmp_seq=4 ttl=64 time=104 ms
64 bytes from 7.7.7.8: icmp_seq=5 ttl=64 time=211 ms

--- 7.7.7.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4002ms
rtt min/avg/max/mdev = 104.146/253.347/608.262/184.011 ms
```

Основаная проблема VSTP состоит в том, что мы указываем каждый VLAN отдельно и под каждый VLAN нужно запускать отдельный RSTP-процесс. Если VLANов много, то начинаются проблемы. Всё это может помочь решить MSTP.
