Cisco IOS Internal VLANs

от автора

Небольшая заметка о том, что происходит "под капотом" MLS (Multi Layer Switch) Cisco при создании routed интерфейсов.

В MLS интерфейс может находиться в одном из двух режимов:

  • "switchport"
  • "routed interface" или "no switchport"

При переводе интерфейса в последний, коммутатор позволяет присвоить ip address непосредственно порту и использовать его как интерфейс маршрутизатора.

Однако это всего лишь абстракция. Вот что происходит "под капотом" MLS при переводе интерфейса в режим "no switchport":

  • коммутатор создает VLAN
  • коммутатор добавляет интерфейс в этот VLAN в режиме access. Это будет единственный интерфейс, принадлежащий данному VLAN
  • коммутатор создает SVI (Switch Virtual Interface) для выбранного VLAN и присваивает указанный ip address данному SVI

Фактически следующие две конфигурации почти идентичны*:

interface Ethernet0/0  no switchport  ip address 10.0.0.1 255.255.255.0

interface Ethernet0/0  switchport mode access  switchport access vlan 100  interface Vlan 100  ip address 10.0.0.1 255.255.255.0

*если у коммутатора больше нет ни одного access интерфейса, принадлежащего VLAN 100, и VLAN 100 не разрешен ни на одном из  trunk интерфейсов.


Возьмем в качестве примера коммутатор с минимальной стартовой конфигурацией. Все интерфейсы находятся в режиме switchport и принадлежат VLAN 1:

SW1#sh interfaces status  Port      Name               Status       Vlan       Duplex  Speed Type Et0/0                        connected    1            auto   auto unknown Et0/1                        connected    1            auto   auto unknown Et0/2                        connected    1            auto   auto unknown Et0/3                        connected    1            auto   auto unknown  SW1#sho vlan brief VLAN Name                             Status    Ports ---- -------------------------------- --------- ------------------------------- 1    default                          active    Et0/0, Et0/1, Et0/2, Et0/3 1002 fddi-default                     act/unsup 1003 token-ring-default               act/unsup 1004 fddinet-default                  act/unsup 1005 trnet-default                    act/unsup

Переведем интерфейс Ethernet 0/0 в routed режим:

SW1#conf t Enter configuration commands, one per line.  End with CNTL/Z. SW1(config)#interface ethernet 0/0 SW1(config-if)#no switchport SW1(config-if)#end  SW1#show running-config interface ethernet 0/0 Building configuration... Current configuration : 59 bytes ! interface Ethernet0/0  no switchport  no ip address end

VLAN, который создается при переводе интерфейса в routed режим не виден в обычной БД VLAN:

SW1#sho vlan brief  VLAN Name                             Status    Ports ---- -------------------------------- --------- ------------------------------- 1    default                          active    Et0/0, Et0/1, Et0/2, Et0/3 1002 fddi-default                     act/unsup 1003 token-ring-default               act/unsup 1004 fddinet-default                  act/unsup 1005 trnet-default                    act/unsup

Но его можно увидеть среди "Internal VLANs":

SW1#show vlan internal usage  VLAN Usage ---- -------------------- 1006 Ethernet0/0

Потенциальная проблема такого поведения коммутатора

Поскольку теперь VLAN ID 1006 занят под Internal VLAN для интерфейса Ethernet0/0, не получится создать VLAN с таким же ID, а значит SW1 не сможет коммутировать трафик в этом VLAN:

SW1#conf t Enter configuration commands, one per line.  End with CNTL/Z. SW1(config)#vlan 1006 SW1(config-vlan)# SW1(config-vlan)#exit % Failed to create VLANs 1006 VLAN(s) not available in Port Manager. %Failed to commit extended VLAN(s) changes.  *Jan  5 17:34:31.407: %PM-4-EXT_VLAN_INUSE: VLAN 1006 currently in use by Ethernet0/0 *Jan  5 17:34:31.407: %SW_VLAN-4-VLAN_CREATE_FAIL: Failed to create VLANs 1006: VLAN(s) not available in Port Manager

Однако у этой проблемы есть довольно простое решение:

  • нужно выключить L3-интерфейс (shutdown), при этом Internal VLAN ID освободится
  • далее создаем VLAN с нужным ID
  • включаем L3-интерфейс ( no shutdown), коммутатор займет следующий свободный VLAN ID из Extended диапазона

SW1#conf t Enter configuration commands, one per line.  End with CNTL/Z. SW1(config)#inter ethernet 0/0 SW1(config-if)#shutdown        <- выключаем интерфейс, чтобы освободить VLAN ID 1006  SW1(config-if)#do show vlan internal usage VLAN Usage ---- -------------------- SW1(config-if)#  SW1(config-if)#vlan 1006      <- создаем обычный VLAN с ID 1006 SW1(config-vlan)#exit SW1(config)#interface ethernet 0/0 SW1(config-if)#no shutdown      <- снова включаем routed интерфейс SW1(config-if)#end  SW1#sho vlan brief VLAN Name                             Status    Ports ---- -------------------------------- --------- ------------------------------- 1    default                          active 1002 fddi-default                     act/unsup 1003 token-ring-default               act/unsup 1004 fddinet-default                  act/unsup 1005 trnet-default                    act/unsup 1006 VLAN1006                         active  SW1#show vlan internal usage VLAN Usage ---- -------------------- 1007 Ethernet0/0

Как выбирается VLAN ID для L3 интерфейса

В стартовой конфигурации любого коммутатора есть следующая строка:

! vlan internal allocation policy ascending !

Это означает, что коммутатор использует первый свободный VLAN ID из Extended диапазона: 1006 — 4094.

Поскольку в нашем примере VLAN ID 1006 занят, а VLAN 1007 используется для L3 интерфейса Ethernet0/0, то если перевести еще один интерфейс в режим routed, коммутатор выделит для него VLAN ID 1008:

SW1#conf t Enter configuration commands, one per line.  End with CNTL/Z. SW1(config)#inter ethernet 0/3 SW1(config-if)#no switchport SW1(config-if)#end  SW1#show vlan internal usage  VLAN Usage ---- -------------------- 1007 Ethernet0/0 1008 Ethernet0/3

Теперь создадим VLAN 1009, и после этого переведем еще один интерфейс в routed режим, поскольку VLAN 1009 занят, коммутатор использует следующий свободный VLAN для L3 интерфейса — 1010:

SW1#conf t Enter configuration commands, one per line.  End with CNTL/Z. SW1(config)#vlan 1009 SW1(config-vlan)#end  W1#sho vlan brief  VLAN Name                             Status    Ports ---- -------------------------------- --------- ------------------------------- 1    default                          active    Et0/2 1002 fddi-default                     act/unsup 1003 token-ring-default               act/unsup 1004 fddinet-default                  act/unsup 1005 trnet-default                    act/unsup 1006 VLAN1006                         active 1009 VLAN1009                         active  SW1#conf t Enter configuration commands, one per line.  End with CNTL/Z. SW1(config)#inter ethernet 0/2 SW1(config-if)#no sw SW1(config-if)#no switchport SW1(config-if)#end  SW1#sho vlan internal usage  VLAN Usage ---- -------------------- 1007 Ethernet0/0 1008 Ethernet0/3 1010 Ethernet0/2

Некоторые платформы позволяют изменить политику выбора номеров для Internal VLAN, хотя большинство устройств поддерживают только один вариант — ascending:

SW1(config)#vlan internal allocation policy ?   ascending   Allocate internal VLAN in ascending order     <- начиная с 1006 и по возрастающей   descending  Allocate internal VLAN in descending order   <- начиная с 4094 и по убывающей

Что происходит при создании L3 Port-channel

Для каждого member интерфейса выделяется свой Internal VLAN ID, для самого Port-channel интерфейса выделяется еще один Internal VLAN ID:

Вернем коммутатор в стартовую конфигурацию:  SW1#sho inter status  Port      Name               Status       Vlan       Duplex  Speed Type Et0/0                        connected    1            auto   auto unknown Et0/1                        connected    1            auto   auto unknown Et0/2                        connected    1            auto   auto unknown Et0/3                        connected    1            auto   auto unknown SW1#sho vlan inter SW1#sho vlan internal usa SW1#sho vlan internal usage  VLAN Usage ---- -------------------- SW1#  SW1(config)#inter range ethernet 0/0 - 1 SW1(config-if-range)#no switchport SW1(config-if-range)#do show vlan internal usage  VLAN Usage ---- -------------------- 1006 Ethernet0/0 1007 Ethernet0/1  SW1(config-if-range)#channel-group 1 mode active Creating a port-channel interface Port-channel 1  SW1(config-if-range)#do show vlan internal usage  VLAN Usage ---- -------------------- 1006 Ethernet0/0 1007 Ethernet0/1 1008 Port-channel1

Если после этого выключить и заново включить Port-channel интерфейс (при этом то же самое происходит и со всеми member интерфейсами), то соответствие интерфейсов и Internal VLAN ID может измениться:

SW1(config-if-range)#inter po1 SW1(config-if)#shutdown SW1(config-if)#do show vlan internal usage  VLAN Usage ---- --------------------  SW1(config-if)#no shutdown SW1(config-if)#do show vlan internal usage  VLAN Usage ---- -------------------- 1006 Port-channel1 1007 Ethernet0/0 1008 Ethernet0/1


P.S.

При создании Loopback интерфейсов Internal VLAN не создается.

ссылка на оригинал статьи https://habr.com/ru/post/565312/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *