# VSTP

![Схема сети](/files/-MXXzOZJh8aYs2lf4TbC)

Тут всё аналогично. Можно сразу приступать к настройке. Отличие будет только в том, что для каждого 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://netlabs.gitbook.io/juniper/6-stp-rstp-vstp-mstp/vstp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
